[ 
https://issues.apache.org/jira/browse/SOLR-4048?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shawn Heisey resolved SOLR-4048.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 5.0
    
> Add a "findRecursive" method to NamedList
> -----------------------------------------
>
>                 Key: SOLR-4048
>                 URL: https://issues.apache.org/jira/browse/SOLR-4048
>             Project: Solr
>          Issue Type: New Feature
>    Affects Versions: 4.0
>            Reporter: Shawn Heisey
>            Assignee: Shawn Heisey
>            Priority: Minor
>             Fix For: 5.0, 4.4
>
>         Attachments: SOLR-4048-cleanup.patch, SOLR-4048.patch, 
> SOLR-4048.patch, SOLR-4048.patch, SOLR-4048.patch, SOLR-4048.patch, 
> SOLR-4048.patch, SOLR-4048.patch
>
>
> Most of the time when accessing data from a NamedList, what you'll be doing 
> is using get() to retrieve another NamedList, and doing so over and over 
> until you reach the final level, where you'll actually retrieve the value you 
> want.
> I propose adding a method to NamedList which would do all that heavy lifting 
> for you.  I created the following method for my own code.  It could be 
> adapted fairly easily for inclusion into NamedList itself.  The only reason I 
> did not include it as a patch is because I figure you'll want to ensure it 
> meets all your particular coding guidelines, and that the JavaDoc is much 
> better than I have done here:
> {code}
>       /**
>        * Recursively parse a NamedList and return the value at the last level,
>        * assuming that the object found at each level is also a NamedList. For
>        * example, if "response" is the NamedList response from the Solr4 mbean
>        * handler, the following code makes sense:
>        * 
>        * String coreName = (String) getRecursiveFromResponse(response, new
>        * String[] { "solr-mbeans", "CORE", "core", "stats", "coreName" });
>        * 
>        * 
>        * @param namedList the NamedList to parse
>        * @param args A list of values to recursively request
>        * @return the object at the last level.
>        * @throws SolrServerException
>        */
>       @SuppressWarnings("unchecked")
>       private final Object getRecursiveFromResponse(
>                       NamedList<Object> namedList, String[] args)
>                       throws SolrServerException
>       {
>               NamedList<Object> list = null;
>               Object value = null;
>               try
>               {
>                       for (String key : args)
>                       {
>                               if (list == null)
>                               {
>                                       list = namedList;
>                               }
>                               else
>                               {
>                                       list = (NamedList<Object>) value;
>                               }
>                               value = list.get(key);
>                       }
>                       return value;
>               }
>               catch (Exception e)
>               {
>                       throw new SolrServerException(
>                                       "Failed to recursively parse 
> NamedList", e);
>               }
>       }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to