/** * Register any {@link org.apache.solr.core.SolrInfoMBean}s * @param infoRegistry The Info Registry */ public void inform(Map<String, SolrInfoMBean> infoRegistry) { for (SolrInfoMBean bean : infoMBeans) { infoRegistry.put(bean.getName(), bean); } } /**
for (Map.Entry<String,SolrInfoMBean> entry : reg.entrySet()) { SolrInfoMBean m = entry.getValue(); if (m.getCategory() != cat) continue; category.add( entry.getKey(), info ); info.add( "name", (m.getName() !=null ? m.getName() : na) ); info.add( "version", (m.getVersion() !=null ? m.getVersion() : na) ); info.add( "description", (m.getDescription()!=null ? m.getDescription() : na) ); info.add( "sourceId", (m.getSourceId() !=null ? m.getSourceId() : na) ); info.add( "source", (m.getSource() !=null ? m.getSource() : na) ); URL[] urls = m.getDocs(); if ((urls != null) && (urls.length > 0)) { ArrayList<String> docs = new ArrayList<String>(urls.length); info.add( "stats", m.getStatistics() );
public MBeanInfo getMBeanInfo() { ArrayList<MBeanAttributeInfo> attrInfoList = new ArrayList<MBeanAttributeInfo>(); for (String stat : staticStats) { attrInfoList.add(new MBeanAttributeInfo(stat, String.class.getName(), null, true, false, false)); } try { NamedList dynamicStats = infoBean.getStatistics(); if (dynamicStats != null) { for (int i = 0; i < dynamicStats.size(); i++) { String name = dynamicStats.getName(i); if (!staticStats.contains(name)) attrInfoList.add(new MBeanAttributeInfo(dynamicStats.getName(i), String.class.getName(), null, true, false, false)); } } } catch (Exception e) { LOG.warn( "Could not getStatistics on info bean " + infoBean.getName(), e); } MBeanAttributeInfo[] attrInfoArr = attrInfoList .toArray(new MBeanAttributeInfo[attrInfoList.size()]); return new MBeanInfo(getClass().getName(), infoBean .getDescription(), attrInfoArr, null, null, null); }
public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException { Object val; if (staticStats.contains(attribute) && attribute != null && attribute.length() > 0) { try { String getter = "get" + attribute.substring(0, 1).toUpperCase() + attribute.substring(1); Method meth = infoBean.getClass().getMethod(getter); val = meth.invoke(infoBean); } catch (Exception e) { throw new AttributeNotFoundException(attribute); } } else { NamedList list = infoBean.getStatistics(); val = list.get(attribute); } if (val != null) return val.toString(); else return val; }
private ObjectName getObjectName(String key, SolrInfoMBean infoBean) throws MalformedObjectNameException { Hashtable<String, String> map = new Hashtable<String, String>(); map.put("type", key); if (infoBean.getName() != null && !"".equals(infoBean.getName())) { map.put("id", infoBean.getName()); } return ObjectName.getInstance(jmxRootName, map); }
private <T> void addIfNotPresent(Map<String ,T> registry, String name, Class<? extends T> c){ if(!registry.containsKey(name)){ T searchComp = (T) resourceLoader.newInstance(c.getName()); registry.put(name, searchComp); if (searchComp instanceof SolrInfoMBean){ infoRegistry.put(((SolrInfoMBean)searchComp).getName(), (SolrInfoMBean)searchComp); } } }
/** * Register any {@link org.apache.solr.core.SolrInfoMBean}s * @param infoRegistry The Info Registry */ public void inform(Map<String, SolrInfoMBean> infoRegistry) { // this can currently happen concurrently with requests starting and lazy components // loading. Make sure infoMBeans doesn't change. SolrInfoMBean[] arr; synchronized (infoMBeans) { arr = infoMBeans.toArray(new SolrInfoMBean[infoMBeans.size()]); waitingForResources.clear(); } for (SolrInfoMBean bean : arr) { try { infoRegistry.put(bean.getName(), bean); } catch (Throwable t) { log.warn("could not register MBean '" + bean.getName() + "'.", t); } } }