public List<PluginInfo> readPluginInfos(String tag, boolean requireName, boolean requireClass) { ArrayList<PluginInfo> result = new ArrayList<PluginInfo>(); NodeList nodes = (NodeList) evaluate(tag, XPathConstants.NODESET); for (int i=0; i<nodes.getLength(); i++) { PluginInfo pluginInfo = new PluginInfo(nodes.item(i), "[solrconfig.xml] " + tag, requireName, requireClass); if(pluginInfo.isEnabled()) result.add(pluginInfo); } return result; }
public void init(PluginInfo info) { List<UpdateRequestProcessorFactory> list = solrCore.initPlugins(info.getChildren("processor"),UpdateRequestProcessorFactory.class,null); if(list.isEmpty()){ throw new RuntimeException( "updateRequestProcessorChain require at least one processor"); } chain = list.toArray(new UpdateRequestProcessorFactory[list.size()]); }
public <T> T initPlugins(List<PluginInfo> pluginInfos, Map<String, T> registry, Class<T> type, String defClassName) { T def = null; for (PluginInfo info : pluginInfos) { T o = createInitInstance(info,type, type.getSimpleName(), defClassName); registry.put(info.name, o); if(info.isDefault()){ def = o; } } return def; }
public static NodeConfig buildTestNodeConfig(SolrResourceLoader loader) { CloudConfig cloudConfig = new CloudConfig.CloudConfigBuilder(System.getProperty("host"), Integer.getInteger("hostPort", 8983), System.getProperty("hostContext", "")) .setZkClientTimeout(Integer.getInteger("zkClientTimeout", 30000)) .build(); if (System.getProperty("zkHost") == null) cloudConfig = null; UpdateShardHandlerConfig updateShardHandlerConfig = new UpdateShardHandlerConfig( HttpClientUtil.DEFAULT_MAXCONNECTIONS, HttpClientUtil.DEFAULT_MAXCONNECTIONSPERHOST, 30000, 30000, UpdateShardHandlerConfig.DEFAULT_METRICNAMESTRATEGY, UpdateShardHandlerConfig.DEFAULT_MAXRECOVERYTHREADS); // universal default metric reporter Map<String,Object> attributes = new HashMap<>(); attributes.put("name", "default"); attributes.put("class", SolrJmxReporter.class.getName()); PluginInfo defaultPlugin = new PluginInfo("reporter", attributes); MetricsConfig metricsConfig = new MetricsConfig.MetricsConfigBuilder() .setMetricReporterPlugins(new PluginInfo[] {defaultPlugin}) .build(); return new NodeConfig.NodeConfigBuilder("testNode", loader) .setUseSchemaCache(Boolean.getBoolean("shareSchema")) .setCloudConfig(cloudConfig) .setUpdateShardHandlerConfig(updateShardHandlerConfig) .setMetricsConfig(metricsConfig) .build(); }
public PluginInfo(Node node, String err, boolean requireName, boolean requireClass) { type = node.getNodeName(); name = DOMUtil.getAttr(node, "name", requireName ? err : null); className = DOMUtil.getAttr(node, "class", requireClass ? err : null); initArgs = DOMUtil.childNodesToNamedList(node); attributes = unmodifiableMap(DOMUtil.toMap(node.getAttributes())); children = loadSubPlugins(node); }
Map<String,String> atrs = new HashMap<String, String>(); atrs.put("class",str.trim()); mergeSchedulerInfo = new PluginInfo("mergeScheduler",atrs,null,null); } else { mergeSchedulerInfo = getPluginInfo(prefix + "/mergeScheduler", solrConfig, def.mergeSchedulerInfo); Map<String,String> atrs = new HashMap<String, String>(); atrs.put("class",str.trim()); mergePolicyInfo = new PluginInfo("mergePolicy",atrs,null,null); } else { mergePolicyInfo = getPluginInfo(prefix + "/mergePolicy", solrConfig, def.mergePolicyInfo);
private List<PluginInfo> loadSubPlugins(Node node) { List<PluginInfo> children = null; try { //if there is another sub tag with a 'class' attribute that has to be another plugin NodeList nodes = (NodeList) Config.xpathFactory.newXPath().evaluate("*[@class]",node, XPathConstants.NODESET); if(nodes.getLength() > 0){ children = new ArrayList<PluginInfo>(nodes.getLength()); for (int i=0; i<nodes.getLength(); i++) { PluginInfo pluginInfo = new PluginInfo(nodes.item(i), null, false, false); if (pluginInfo.isEnabled()) children.add(pluginInfo); } } } catch (XPathExpressionException e) { } return children == null ? Collections.<PluginInfo>emptyList(): unmodifiableList(children); }
public void init(PluginInfo info) { formatters.clear(); fragmenters.clear(); SolrFragmenter frag = solrCore.initPlugins(info.getChildren("fragmenter") , fragmenters,SolrFragmenter.class,null); if (frag == null) frag = new GapFragmenter(); fragmenters.put("", frag); fragmenters.put(null, frag); // Load the formatters SolrFormatter fmt = solrCore.initPlugins(info.getChildren("formatter"), formatters,SolrFormatter.class,null); if (fmt == null) fmt = new HtmlFormatter(); formatters.put("", fmt); formatters.put(null, fmt); initialized = true; } //just for back-compat with the deprecated method
log.warn("Multiple requestHandler registered to the same name: " + info.name + " ignoring: " + old.getClass().getName()); if(info.isDefault()){ old = register("",requestHandler); if(old != null)