package org.apache.solr.handler.admin; import org.apache.solr.handler.RequestHandlerBase; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.core.SolrInfoMBean; import org.apache.solr.core.SolrCore; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.response.SolrQueryResponse; import java.util.Date; import java.util.Set; import java.util.Map; import java.util.HashSet; import java.util.HashMap; /** * A request handler that provides info about all * registered SolrInfoMBeans. */ public class SolrInfoMBeanHandler extends RequestHandlerBase { /** * Take an array of any type and generate a Set containing the toString. * Set is garunteed to never be null (but may be empty) */ private Set<String> arrayToSet(Object[] arr) { HashSet<String> r = new HashSet<String>(); if (null == arr) return r; for (Object o : arr) { if (null != o) r.add(o.toString()); } return r; } public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { SolrCore core = req.getCore(); NamedList cats = new NamedList(); rsp.add("solr-mbeans", cats); String[] requestedCats = req.getParams().getParams("cat"); if (null == requestedCats || 0 == requestedCats.length) { for (SolrInfoMBean.Category cat : SolrInfoMBean.Category.values()) { cats.add(cat.name(), new SimpleOrderedMap()); } } else { for (String catName : requestedCats) { cats.add(catName,new SimpleOrderedMap()); } } Set<String> requestedKeys = arrayToSet(req.getParams().getParams("key")); Map<String, SolrInfoMBean> reg = core.getInfoRegistry(); for (Map.Entry<String, SolrInfoMBean> entry : reg.entrySet()) { String key = entry.getKey(); SolrInfoMBean m = entry.getValue(); if ( ! ( requestedKeys.isEmpty() || requestedKeys.contains(key) ) ) continue; NamedList catInfo = (NamedList) cats.get(m.getCategory().name()); if ( null == catInfo ) continue; NamedList mBeanInfo = new SimpleOrderedMap(); mBeanInfo.add("class", m.getName()); mBeanInfo.add("version", m.getVersion()); mBeanInfo.add("description", m.getDescription()); mBeanInfo.add("srcId", m.getSourceId()); mBeanInfo.add("src", m.getSource()); mBeanInfo.add("docs", m.getDocs()); if (req.getParams().getFieldBool(key, "stats", false)) mBeanInfo.add("stats", m.getStatistics()); catInfo.add(key, mBeanInfo); } rsp.setHttpCaching(false); // never cache, no matter what init config looks like } public String getDescription() { return "Get Info (and statistics) about all registered SolrInfoMBeans"; } public String getSourceId() { return "$Id: SolrInfoMBeanHandler.java 953886 2010-06-11 21:46:58Z hossman $"; } public String getSource() { return "$URL: https://svn.apache.org/repos/asf/lucene/dev/trunk/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java $"; } public String getVersion() { return "$Revision: 953886 $"; } }