You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ds...@apache.org on 2025/06/02 04:53:15 UTC

(solr) branch main updated: SOLR-17625: Remove NamedList.findRecursive

This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new eebb3815309 SOLR-17625: Remove NamedList.findRecursive
eebb3815309 is described below

commit eebb3815309bf43a5c88079ff3ba1a111b995588
Author: David Smiley <ds...@apache.org>
AuthorDate: Mon Jun 2 00:53:05 2025 -0400

    SOLR-17625: Remove NamedList.findRecursive
    
    In 10x only -- was deprecated and unused.
---
 .../org/apache/solr/common/util/NamedList.java     | 64 ----------------------
 1 file changed, 64 deletions(-)

diff --git a/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java b/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
index b59d8c779a5..a56a2784cd0 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
@@ -328,70 +328,6 @@ public class NamedList<T>
     }
   }
 
-  /**
-   * Recursively parses the NamedList structure to arrive at a specific element. As you descend the
-   * NamedList tree, the last element can be any type, including NamedList, but the previous
-   * elements MUST be NamedList objects themselves. A null value is returned if the indicated
-   * hierarchy doesn't exist, but NamedList allows null values so that could be the actual value at
-   * the end of the path.
-   *
-   * <p>This method is particularly useful for parsing the response from Solr's /admin/mbeans
-   * handler, but it also works for any complex structure.
-   *
-   * <p>Explicitly casting the return value is recommended. An even safer option is to accept the
-   * return value as an object and then check its type.
-   *
-   * <p>Usage examples:
-   *
-   * <p>String coreName = (String) response.findRecursive ("solr-mbeans", "CORE", "core", "stats",
-   * "coreName"); long numDoc = (long) response.findRecursive ("solr-mbeans", "CORE", "searcher",
-   * "stats", "numDocs");
-   *
-   * @param args One or more strings specifying the tree to navigate.
-   * @return the last entry in the given path hierarchy, null if not found.
-   * @deprecated use {@link org.apache.solr.common.NavigableObject} methods instead
-   */
-  @Deprecated
-  public Object findRecursive(String... args) {
-    NamedList<?> currentList = null;
-    Object value = null;
-    for (int i = 0; i < args.length; i++) {
-      String key = args[i];
-      /*
-       * The first time through the loop, the current list is null, so we assign
-       * it to this list. Then we retrieve the first key from this list and
-       * assign it to value.
-       *
-       * On the next loop, we check whether the retrieved value is a NamedList.
-       * If it is, then we drop to that NamedList, grab the value of the
-       * next key, and start the loop over. If it is not a NamedList, then we
-       * assign the value to null and break out of the loop.
-       *
-       * Assigning the value to null and then breaking out of the loop seems
-       * like the wrong thing to do, but there's a very simple reason that it
-       * works: If we have reached the last key, then the loop ends naturally
-       * after we retrieve the value, and that code is never executed.
-       */
-      if (currentList == null) {
-        currentList = this;
-      } else {
-        if (value instanceof NamedList) {
-          currentList = (NamedList<?>) value;
-        } else {
-          value = null;
-          break;
-        }
-      }
-      /*
-       * We do not need to do a null check on currentList for the following
-       * assignment. The instanceof check above will fail if the current list is
-       * null, and if that happens, the loop will end before this point.
-       */
-      value = currentList.get(key, 0);
-    }
-    return value;
-  }
-
   @Override
   public String toString() {
     StringBuilder sb = new StringBuilder();