package org.apache.solr.handler; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.response.SolrQueryResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AdsConfigHandler extends RequestHandlerBase { public static final Logger log = LoggerFactory .getLogger(AdsConfigHandler.class); private Map<String, SolrParams> components = new HashMap<String, SolrParams>(); private SolrParams emptyParams = null; @SuppressWarnings({ "rawtypes", "unchecked" }) public void init(NamedList args) { super.init(args); for (int i=0; i<args.size();i++) { String n = args.getName(i); Object v = args.getVal(i); if (v != null) { if (v instanceof NamedList) { components.put(n, SolrParams.toSolrParams((NamedList)v)); } else if(v instanceof String) { NamedList nl = new NamedList(); nl.add(n, v); components.put(n, SolrParams.toSolrParams(nl)); } else if (v instanceof List) { ArrayList<String> vv = (ArrayList<String>) v; NamedList nl = new NamedList(); for (int i1=0;i1<vv.size();i1++) { nl.add(Integer.toString(i1), vv.get(i1)); } components.put(n, SolrParams.toSolrParams(nl)); } } } emptyParams = SolrParams.toSolrParams(new NamedList()); } public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { SolrParams params = req.getParams(); String command = params.get("command","info"); if (command.equals("reopenSearcher")) { req.getCore().getSearcher(true, false, null, false); } } public boolean hasParams(String key) { return components.containsKey(key); } public SolrParams getParams(String key) { if (components.containsKey(key)) { return components.get(key); } return emptyParams; } @Override public String getDescription() { StringBuilder sb = new StringBuilder(); sb.append("Current config: "); if( components != null ) { for(String c : components.keySet()){ sb.append(components.get(c).toString()); sb.append(","); } } return sb.toString(); } @Override public String getSource() { return ""; } @Override public String getVersion() { return ""; } }