[jira] [Resolved] (SOLR-4048) Add a findRecursive method to NamedList

2013-05-20 Thread Shawn Heisey (JIRA)

 [ 
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(
   NamedListObject namedList, String[] args)
   throws SolrServerException
   {
   NamedListObject list = null;
   Object value = null;
   try
   {
   for (String key : args)
   {
   if (list == null)
   {
   list = namedList;
   }
   else
   {
   list = (NamedListObject) 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



[jira] [Resolved] (SOLR-4048) Add a findRecursive method to NamedList

2013-05-18 Thread Shawn Heisey (JIRA)

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

Shawn Heisey resolved SOLR-4048.


Resolution: Fixed
  Assignee: Shawn Heisey

Committed to trunk (r1484135) and branch_4x (r1484137).

 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: 4.4

 Attachments: 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(
   NamedListObject namedList, String[] args)
   throws SolrServerException
   {
   NamedListObject list = null;
   Object value = null;
   try
   {
   for (String key : args)
   {
   if (list == null)
   {
   list = namedList;
   }
   else
   {
   list = (NamedListObject) 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