You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2014/08/30 18:37:06 UTC
svn commit: r1621489 - in /lucene/dev/branches/branch_4x: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/core/
solr/core/src/java/org/apache/solr/handler/
solr/core/src/java/org/apache/solr/util/
solr/core/src/test-files/solr/collection1/conf/ ...
Author: noble
Date: Sat Aug 30 16:37:05 2014
New Revision: 1621489
URL: http://svn.apache.org/r1621489
Log:
SOLR-6365: specify appends, defaults, invariants outside of the request handler
Added:
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/ParamSet.java
- copied unchanged from r1621414, lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ParamSet.java
lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml
- copied unchanged from r1621414, lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml
lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestParamSet.java
- copied unchanged from r1621414, lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestParamSet.java
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/solr/ (props changed)
lucene/dev/branches/branch_4x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/solr/core/ (props changed)
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/PluginInfo.java
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrConfig.java
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
lucene/dev/branches/branch_4x/solr/solrj/ (props changed)
lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1621489&r1=1621488&r2=1621489&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Sat Aug 30 16:37:05 2014
@@ -39,6 +39,9 @@ New Features
* SOLR-4580: Support for protecting content in ZooKeeper. (Per Steffensen, Mark Miller)
+* SOLR-6365: specify appends, defaults, invariants outside of the request handler.
+ (Noble Paul, Erik Hatcher, shalin)
+
Bug Fixes
----------------------
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/PluginInfo.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/PluginInfo.java?rev=1621489&r1=1621488&r2=1621489&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/PluginInfo.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/PluginInfo.java Sat Aug 30 16:37:05 2014
@@ -111,4 +111,7 @@ public class PluginInfo {
"str",
"int","long",
"float","double"));
+ public static final String DEFAULTS = "defaults";
+ public static final String APPENDS = "appends";
+ public static final String INVARIANTS = "invariants";
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java?rev=1621489&r1=1621488&r2=1621489&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/RequestHandlers.java Sat Aug 30 16:37:05 2014
@@ -31,6 +31,7 @@ import org.apache.solr.common.SolrExcept
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.SolrQueryResponse;
@@ -178,8 +179,9 @@ public final class RequestHandlers {
for (Map.Entry<PluginInfo,SolrRequestHandler> entry : handlers.entrySet()) {
PluginInfo info = entry.getKey();
SolrRequestHandler requestHandler = entry.getValue();
+ info = applyParamSet(config, info);
if (requestHandler instanceof PluginInfoInitialized) {
- ((PluginInfoInitialized) requestHandler).init(info);
+ ((PluginInfoInitialized) requestHandler).init(info);
} else{
requestHandler.init(info.initArgs);
}
@@ -190,7 +192,28 @@ public final class RequestHandlers {
if(get("") == null)
log.warn("no default request handler is registered (either '/select' or 'standard')");
}
-
+
+ private PluginInfo applyParamSet(SolrConfig config, PluginInfo info) {
+ List<ParamSet> paramSets= new ArrayList<>();
+ String p = info.attributes.get("paramSet");
+ if(p!=null) {
+ for (String paramSet : StrUtils.splitSmart(p, ',')) {
+ if(config.getParamSets().containsKey(paramSet)) paramSets.add(config.getParamSets().get(paramSet));
+ else log.warn("INVALID paramSet {} in requestHandler {}", paramSet, info.toString());
+ }
+ }
+ for (ParamSet paramSet : config.getParamSets().values()) {
+ if(paramSet.matchPath(info.name)) paramSets.add(paramSet);
+ }
+ if(!paramSets.isEmpty()){
+ info = new PluginInfo(info.type, info.attributes, info.initArgs.clone(), info.children);
+ for (ParamSet paramSet : paramSets) {
+ paramSet.apply(info.initArgs);
+ }
+ }
+ return info;
+ }
+
/**
* The <code>LazyRequestHandlerWrapper</code> wraps any {@link SolrRequestHandler}.
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrConfig.java?rev=1621489&r1=1621488&r2=1621489&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrConfig.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrConfig.java Sat Aug 30 16:37:05 2014
@@ -23,6 +23,8 @@ import org.apache.lucene.search.BooleanQ
import org.apache.lucene.util.Version;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.StrUtils;
import org.apache.solr.handler.component.SearchComponent;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.QueryResponseWriter;
@@ -57,10 +59,13 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -81,7 +86,7 @@ public class SolrConfig extends Config {
public static final String DEFAULT_CONF_FILE = "solrconfig.xml";
- static enum PluginOpts {
+ static enum PluginOpts {
MULTI_OK,
REQUIRE_NAME,
REQUIRE_CLASS,
@@ -305,12 +310,27 @@ public class SolrConfig extends Config {
"requestDispatcher/@handleSelect", true );
addHttpRequestToContext = getBool(
- "requestDispatcher/requestParsers/@addHttpRequestToContext", false );
+ "requestDispatcher/requestParsers/@addHttpRequestToContext", false );
+
+ loadPluginInfo(ParamSet.class,ParamSet.TYPE);
+ List<PluginInfo> paramSetInfos = pluginStore.get(ParamSet.class.getName()) ;
+ if(paramSetInfos!=null){
+ Map<String,ParamSet> paramSets = new HashMap<>();
+ for (PluginInfo p : paramSetInfos) {
+ ParamSet paramSet = new ParamSet(p);
+ paramSets.put(paramSet.name == null ? String.valueOf(paramSet.hashCode()) : paramSet.name , paramSet );
+ }
+ this.paramSets = Collections.unmodifiableMap(paramSets);
+
+ }
solrRequestParsers = new SolrRequestParsers(this);
Config.log.info("Loaded SolrConfig: " + name);
}
-
+ private Map<String,ParamSet> paramSets = Collections.emptyMap();
+ public Map<String, ParamSet> getParamSets() {
+ return paramSets;
+ }
protected UpdateHandlerInfo loadUpdatehandlerInfo() {
return new UpdateHandlerInfo(get("updateHandler/@class",null),
getInt("updateHandler/autoCommit/maxDocs",-1),
@@ -607,4 +627,6 @@ public class SolrConfig extends Config {
public boolean isEnableRemoteStreams() {
return enableRemoteStreams;
}
+
+
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java?rev=1621489&r1=1621488&r2=1621489&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java Sat Aug 30 16:37:05 2014
@@ -35,6 +35,21 @@ public class DumpRequestHandler extends
{
// Show params
rsp.add( "params", req.getParams().toNamedList() );
+ String[] returnParams = req.getParams().getParams("param");
+ if(returnParams !=null) {
+ NamedList params = (NamedList) rsp.getValues().get("params");
+ for (String returnParam : returnParams) {
+ String[] vals = req.getParams().getParams(returnParam);
+ if(vals != null){
+ for (String val : vals) {
+ params.add(returnParam,val);
+ }
+ }
+
+ }
+ }
+
+ if(Boolean.TRUE.equals( req.getParams().getBool("initArgs"))) rsp.add("initArgs", initArgs);
// Write the streams...
if( req.getContentStreams() != null ) {
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java?rev=1621489&r1=1621488&r2=1621489&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java Sat Aug 30 16:37:05 2014
@@ -48,6 +48,7 @@ import org.apache.solr.common.params.Sol
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.StrUtils;
+import org.apache.solr.core.ParamSet;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.component.HighlightComponent;
import org.apache.solr.handler.component.ResponseBuilder;
@@ -124,6 +125,17 @@ public class SolrPluginUtils {
*/
public static void setDefaults(SolrQueryRequest req, SolrParams defaults,
SolrParams appends, SolrParams invariants) {
+ String paramSetNames = req.getParams().get(ParamSet.TYPE);
+ if(paramSetNames !=null){
+ for (String name : StrUtils.splitSmart(paramSetNames,',')) {
+ ParamSet paramSet = req.getCore().getSolrConfig().getParamSets().get(name);
+ if(paramSet!=null){
+ if(paramSet.defaults != null) defaults = SolrParams.wrapDefaults(SolrParams.toSolrParams(paramSet.defaults) , defaults);
+ if(paramSet.invariants != null) invariants = SolrParams.wrapDefaults(invariants, SolrParams.toSolrParams(paramSet.invariants));
+ if(paramSet.appends != null) appends = SolrParams.wrapAppended(appends, SolrParams.toSolrParams(paramSet.appends));
+ }
+ }
+ }
SolrParams p = req.getParams();
p = SolrParams.wrapDefaults(p, defaults);
Modified: lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java?rev=1621489&r1=1621488&r2=1621489&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java Sat Aug 30 16:37:05 2014
@@ -21,6 +21,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -384,6 +385,11 @@ public class NamedList<T> implements Clo
return sb.toString();
}
+ public NamedList getImmutableCopy() {
+ NamedList copy = clone();
+ return new NamedList<>( Collections.unmodifiableList(copy.nvPairs));
+ }
+
/**
*
* Helper class implementing Map.Entry<String, T> to store the key-value