@@ -233,12 +233,45 @@ public void setUntrackedFiles(Collection<File> files) {
233233 this .untrackedFiles = files ;
234234 }
235235
236+ private boolean isKeyUnused (String key , ObjectNode node ) {
237+ Iterator <Map .Entry <String , JsonNode >> fields = node .fields ();
238+ while (fields .hasNext ()) {
239+ Map .Entry <String , JsonNode > entry = fields .next ();
240+ String fieldName = entry .getKey ();
241+ if (fieldName .startsWith (key )) {
242+ return false ;
243+ }
244+ JsonNode value = entry .getValue ();
245+ if (value .isObject ()) {
246+ if (!isKeyUnused (key , (ObjectNode ) value )) {
247+ return false ;
248+ }
249+ } else if (value .isArray ()) {
250+ for (JsonNode element : value ) {
251+ if (element .isObject () && !isKeyUnused (key , (ObjectNode ) element )) {
252+ return false ;
253+ }
254+ }
255+ }
256+ }
257+ return true ;
258+ }
259+
260+ public boolean cleanupContext () {
261+ // TODO we are missing the relations between the pairs and the URL, in order to check if a URL can be removed.
262+ var contextUrls = this .metadataContext .getUrls ();
263+ var contextAllKeys = this .metadataContext .getKeys ();
264+ var contextExplicitKeys = this .metadataContext .getExplicitKeys ();
265+ }
266+
236267 @ Override
268+ @ Deprecated (forRemoval = true )
237269 public void deleteValuePairFromContext (String key ) {
238270 this .metadataContext .deleteValuePairFromContext (key );
239271 }
240272
241273 @ Override
274+ @ Deprecated (forRemoval = true )
242275 public void deleteUrlFromContext (String key ) {
243276 this .metadataContext .deleteUrlFromContext (key );
244277 }
0 commit comments