SOLR-2750: Make both "update.chain" and the deprecated "update.param" work consistently everywhere

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1171304 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jan Høydahl 2011-09-15 22:41:18 +00:00
parent b25b42ae2c
commit 90e0977c5a
5 changed files with 34 additions and 14 deletions

View File

@ -346,6 +346,9 @@ Bug Fixes
Other Changes Other Changes
---------------------- ----------------------
* SOLR-2750: Make both "update.chain" and the deprecated "update.param" work
consistently everywhere; see also SOLR-2105. (Mark Miller, janhoy)
* LUCENE-3410: Deprecated the WordDelimiterFilter constructors accepting multiple * LUCENE-3410: Deprecated the WordDelimiterFilter constructors accepting multiple
ints masquerading as booleans. Preferred constructor now accepts a single int ints masquerading as booleans. Preferred constructor now accepts a single int
bitfield (Chris Male) bitfield (Chris Male)

View File

@ -22,7 +22,6 @@ import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.common.util.ContentStreamBase;
import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.ContentStream;
@ -39,6 +38,7 @@ import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.update.processor.UpdateRequestProcessor; import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorChain; import org.apache.solr.update.processor.UpdateRequestProcessorChain;
import org.apache.solr.util.SolrPluginUtils;
import org.apache.solr.util.plugin.SolrCoreAware; import org.apache.solr.util.plugin.SolrCoreAware;
import java.util.*; import java.util.*;
@ -191,7 +191,7 @@ public class DataImportHandler extends RequestHandlerBase implements
IMPORT_CMD.equals(command)) { IMPORT_CMD.equals(command)) {
UpdateRequestProcessorChain processorChain = UpdateRequestProcessorChain processorChain =
req.getCore().getUpdateProcessingChain(params.get(UpdateParams.UPDATE_CHAIN)); req.getCore().getUpdateProcessingChain(SolrPluginUtils.resolveUpdateChainParam(params, LOG));
UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp); UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp);
SolrResourceLoader loader = req.getCore().getResourceLoader(); SolrResourceLoader loader = req.getCore().getResourceLoader();
SolrWriter sw = getSolrWriter(processor, loader, requestParams, req); SolrWriter sw = getSolrWriter(processor, loader, requestParams, req);

View File

@ -18,12 +18,12 @@ package org.apache.solr.handler;
import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.ContentStream;
import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.update.processor.UpdateRequestProcessor; import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorChain; import org.apache.solr.update.processor.UpdateRequestProcessorChain;
import org.apache.solr.util.SolrPluginUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -38,17 +38,8 @@ public abstract class ContentStreamHandlerBase extends RequestHandlerBase {
@Override @Override
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
SolrParams params = req.getParams(); SolrParams params = req.getParams();
String updateChainName = null;
if(params.get(UpdateParams.UPDATE_CHAIN_DEPRECATED) != null) {
log.warn("Use of deprecated update request parameter "+UpdateParams.UPDATE_CHAIN_DEPRECATED+
" detected. Please use the new parameter "+UpdateParams.UPDATE_CHAIN+" instead, as support"+
" for "+UpdateParams.UPDATE_CHAIN_DEPRECATED+" will be removed in a later version.");
updateChainName = params.get(UpdateParams.UPDATE_CHAIN_DEPRECATED);
} else {
updateChainName = params.get(UpdateParams.UPDATE_CHAIN);
}
UpdateRequestProcessorChain processorChain = UpdateRequestProcessorChain processorChain =
req.getCore().getUpdateProcessingChain(updateChainName); req.getCore().getUpdateProcessingChain(SolrPluginUtils.resolveUpdateChainParam(params, log));
UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp); UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp);

View File

@ -37,6 +37,7 @@ import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.NumberUtils; import org.apache.solr.util.NumberUtils;
import org.apache.solr.util.RefCounted; import org.apache.solr.util.RefCounted;
import org.apache.solr.util.SolrPluginUtils;
import org.apache.solr.update.MergeIndexesCommand; import org.apache.solr.update.MergeIndexesCommand;
import org.apache.solr.update.processor.UpdateRequestProcessor; import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorChain; import org.apache.solr.update.processor.UpdateRequestProcessorChain;
@ -231,7 +232,7 @@ public class CoreAdminHandler extends RequestHandlerBase {
} }
UpdateRequestProcessorChain processorChain = UpdateRequestProcessorChain processorChain =
core.getUpdateProcessingChain(params.get(UpdateParams.UPDATE_CHAIN)); core.getUpdateProcessingChain(SolrPluginUtils.resolveUpdateChainParam(params, log));
wrappedReq = new LocalSolrQueryRequest(core, req.getParams()); wrappedReq = new LocalSolrQueryRequest(core, req.getParams());
UpdateRequestProcessor processor = UpdateRequestProcessor processor =
processorChain.createProcessor(wrappedReq, rsp); processorChain.createProcessor(wrappedReq, rsp);

View File

@ -29,6 +29,7 @@ import org.apache.solr.common.params.AppendedSolrParams;
import org.apache.solr.common.params.DefaultSolrParams; import org.apache.solr.common.params.DefaultSolrParams;
import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.StrUtils; import org.apache.solr.common.util.StrUtils;
@ -42,6 +43,8 @@ import org.apache.solr.schema.IndexSchema;
import org.apache.solr.schema.SchemaField; import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.*; import org.apache.solr.search.*;
import org.apache.solr.update.DocumentBuilder; import org.apache.solr.update.DocumentBuilder;
import org.slf4j.Logger;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -856,6 +859,28 @@ public class SolrPluginUtils {
} }
} }
} }
/**
* This method helps resolve if the deprecated "update.processor" request parameter is used
* and logs a warning if it is. In a future version, this method will be removed and
* Solr will assume "update.chain" and not look for "update.processor"
* @param params an instance of SolrParams from the request
* @param log an instance of a slf4j logger to log a warning in case of deprecated param usage
* @return null if neither is specified, else the value of the param specified
* @deprecated
*/
public static String resolveUpdateChainParam(SolrParams params, Logger log) {
if(params.get(UpdateParams.UPDATE_CHAIN_DEPRECATED) != null && log != null) {
log.warn("Use of deprecated update request parameter "+UpdateParams.UPDATE_CHAIN_DEPRECATED+
" detected. Please use the new parameter "+UpdateParams.UPDATE_CHAIN+" instead, as support"+
" for "+UpdateParams.UPDATE_CHAIN_DEPRECATED+" will be removed in a later version.");
}
return (params.get(UpdateParams.UPDATE_CHAIN) != null)
? params.get(UpdateParams.UPDATE_CHAIN)
: params.get(UpdateParams.UPDATE_CHAIN_DEPRECATED);
}
} }