diff --git a/changelog/unreleased/SOLR-18038-v2.yml b/changelog/unreleased/SOLR-18038-v2.yml new file mode 100644 index 000000000000..694270d1ca58 --- /dev/null +++ b/changelog/unreleased/SOLR-18038-v2.yml @@ -0,0 +1,8 @@ +# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc +title: Remove deprecated LocalSolrQueryRequest in favour of SolrQueryRequestBase. +type: removed # added, changed, fixed, deprecated, removed, dependency_update, security, other +authors: + - name: Eric Pugh +links: + - name: SOLR-18038 + url: https://issues.apache.org/jira/browse/SOLR-18038 diff --git a/solr/core/src/java/org/apache/solr/api/Api.java b/solr/core/src/java/org/apache/solr/api/Api.java index 8e881b7f74ef..ce2b0376a30e 100644 --- a/solr/core/src/java/org/apache/solr/api/Api.java +++ b/solr/core/src/java/org/apache/solr/api/Api.java @@ -25,8 +25,8 @@ import org.apache.solr.response.SolrQueryResponse; /** - * Every version 2 API must extend the this class. It's mostly like a request handler but it has - * extra methods to provide the json schema of the end point + * Every version 2 API must extend this class. It's mostly like a request handler, but it has extra + * methods to provide the json schema of the end point */ public abstract class Api implements SpecProvider { protected SpecProvider spec; diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java index bf023d3cb090..64b288ab6add 100644 --- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java +++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java @@ -55,8 +55,8 @@ import org.apache.solr.core.DirectoryFactory.DirContext; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.ReplicationHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.update.CommitUpdateCommand; @@ -689,7 +689,7 @@ public final void doSyncOrReplicateRecovery(SolrCore core) throws Exception { syncSuccess = peerSyncWithLeader.sync(recentVersions).isSuccess(); } if (syncSuccess) { - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); // force open a new searcher core.getUpdateHandler().commit(new CommitUpdateCommand(req, false)); req.close(); @@ -850,7 +850,7 @@ private final Future replay(SolrCore core) } if (replicaType == Replica.Type.TLOG) { // roll over all updates during buffering to new tlog, make RTG available - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); core.getUpdateHandler() .getUpdateLog() .copyOverBufferingUpdates(new CommitUpdateCommand(req, false)); diff --git a/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java b/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java index 7cc932365e12..a6998fe38cb5 100644 --- a/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java +++ b/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java @@ -28,8 +28,8 @@ import org.apache.solr.handler.IndexFetcher; import org.apache.solr.handler.ReplicationHandler; import org.apache.solr.handler.admin.api.ReplicationAPIBase; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.update.CommitUpdateCommand; import org.apache.solr.update.SolrIndexWriter; import org.apache.solr.update.UpdateLog; @@ -101,7 +101,7 @@ public void startReplication(boolean switchTransactionLog) { if (commitVersion == null) return; if (Long.parseLong(commitVersion) == lastVersion) return; UpdateLog updateLog = solrCore.getUpdateHandler().getUpdateLog(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); CommitUpdateCommand cuc = new CommitUpdateCommand(req, false); cuc.setVersion(Long.parseLong(commitVersion)); updateLog.commitAndSwitchToNewTlog(cuc); diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java index 50dd516f5e39..f6bf1dfb36ab 100644 --- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java +++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java @@ -137,8 +137,8 @@ import org.apache.solr.metrics.SolrMetricsContext; import org.apache.solr.metrics.otel.OtelUnit; import org.apache.solr.pkg.SolrPackageLoader; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.search.CacheConfig; @@ -1977,7 +1977,7 @@ public void reload(String name, UUID coreId) { // force commit on old core if the new one is readOnly and prevent any new updates if (newCore.readOnly) { - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); core.getUpdateHandler().commit(CommitUpdateCommand.closeOnCommit(req, false)); } diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java index c9878048dbbc..d83c581a2c41 100644 --- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java +++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java @@ -117,8 +117,8 @@ import org.apache.solr.core.IndexDeletionPolicyWrapper; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.admin.api.ReplicationAPIBase; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.security.AllowListUrlChecker; import org.apache.solr.update.CommitUpdateCommand; @@ -540,7 +540,7 @@ IndexFetchResult fetchLatestIndex(boolean forceReplication, boolean forceCoreRel if (skipCommitOnLeaderVersionZero || solrCore.readOnly) { openNewSearcherAndUpdateCommitPoint(); } else { - SolrQueryRequest req = new LocalSolrQueryRequest(solrCore, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(solrCore, new ModifiableSolrParams()); solrCore.getUpdateHandler().commit(new CommitUpdateCommand(req, false)); } } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SplitOp.java b/solr/core/src/java/org/apache/solr/handler/admin/SplitOp.java index e244f3e25437..4631c7f62bed 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/SplitOp.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/SplitOp.java @@ -48,8 +48,8 @@ import org.apache.solr.common.params.CoreAdminParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.update.SolrIndexSplitter; import org.apache.solr.update.SplitIndexCommand; @@ -201,7 +201,7 @@ public void execute(CoreAdminHandler.CallInfo it) throws Exception { paths = Arrays.asList(pathsArr); } - req = new LocalSolrQueryRequest(parentCore, params); + req = new SolrQueryRequestBase(parentCore, params); SplitIndexCommand cmd = new SplitIndexCommand( diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexes.java b/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexes.java index 73194ddb9de6..cfdf6b210650 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexes.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexes.java @@ -39,8 +39,8 @@ import org.apache.solr.core.SolrCore; import org.apache.solr.handler.admin.CoreAdminHandler; import org.apache.solr.jersey.PermissionName; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.security.PermissionNameProvider; @@ -169,7 +169,7 @@ public SolrJerseyResponse mergeIndexes(String coreName, MergeIndexesRequestBody UpdateRequestProcessorChain processorChain = core.getUpdateProcessingChain(requestBody.updateChain); - wrappedReq = new LocalSolrQueryRequest(core, req.getParams()); + wrappedReq = new SolrQueryRequestBase(core, req.getParams()); UpdateRequestProcessor processor = processorChain.createProcessor(wrappedReq, rsp); processor.processMergeIndexes(new MergeIndexesCommand(readers, req)); } catch (Exception e) { diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/UpgradeCoreIndex.java b/solr/core/src/java/org/apache/solr/handler/admin/api/UpgradeCoreIndex.java index a525b0f75956..c91f107e9522 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/UpgradeCoreIndex.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/UpgradeCoreIndex.java @@ -50,8 +50,8 @@ import org.apache.solr.handler.RequestHandlerBase; import org.apache.solr.handler.admin.CoreAdminHandler; import org.apache.solr.index.LatestVersionMergePolicy; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.schema.IndexSchema; @@ -95,7 +95,7 @@ public class UpgradeCoreIndex extends CoreAdminAPIBase { public enum CoreIndexUpgradeStatus { UPGRADE_SUCCESSFUL, ERROR, - NO_UPGRADE_NEEDED; + NO_UPGRADE_NEEDED } private static final int RETRY_COUNT_FOR_SEGMENT_DELETION = 5; @@ -377,7 +377,7 @@ private boolean isIndexUpgraded(SolrCore core) throws IOException { } private void doCommit(SolrCore core) throws IOException { - try (LocalSolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams())) { + try (SolrQueryRequestBase req = new SolrQueryRequestBase(core, new ModifiableSolrParams())) { CommitUpdateCommand cmd = new CommitUpdateCommand(req, false); // optimize=false core.getUpdateHandler().commit(cmd); } catch (IOException ioEx) { @@ -404,8 +404,8 @@ private void processSegment( // Exclude copy field targets to avoid duplicating values on reindex Set nonStoredDVFields = docFetcher.getNonStoredDVsWithoutCopyTargets(); - try (LocalSolrQueryRequest solrRequest = - new LocalSolrQueryRequest(core, new ModifiableSolrParams())) { + try (SolrQueryRequestBase solrRequest = + new SolrQueryRequestBase(core, new ModifiableSolrParams())) { SolrQueryResponse rsp = new SolrQueryResponse(); UpdateRequestProcessor processor = processorChain.createProcessor(solrRequest, rsp); try { diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java index 282051235df7..1f78b41d5fdd 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java +++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java @@ -74,8 +74,8 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.StrUtils; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.ResultContext; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.response.transform.DocTransformer; @@ -859,7 +859,7 @@ private static SolrReturnFields makeReturnFields( if (resolution == Resolution.ROOT_WITH_CHILDREN && core.getLatestSchema().isUsableForChildDocs()) { SolrParams params = new ModifiableSolrParams().set("limit", "-1"); - try (LocalSolrQueryRequest req = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequestBase req = new SolrQueryRequestBase(core, params)) { docTransformer = core.getTransformerFactory("child").create(null, params, req); } } else { diff --git a/solr/core/src/java/org/apache/solr/handler/designer/DefaultSampleDocumentsLoader.java b/solr/core/src/java/org/apache/solr/handler/designer/DefaultSampleDocumentsLoader.java index e2ddb5ee051e..921c72bfcdc8 100644 --- a/solr/core/src/java/org/apache/solr/handler/designer/DefaultSampleDocumentsLoader.java +++ b/solr/core/src/java/org/apache/solr/handler/designer/DefaultSampleDocumentsLoader.java @@ -148,7 +148,8 @@ protected List loadCsvDocs( } else { stream = new ContentStreamBase.ByteArrayStream(streamBytes, source, "text/csv"); } - return (new SampleCSVLoader(new CSVRequest(params), maxDocsToLoad)).loadDocs(stream); + return (new SampleCSVLoader(new SolrQueryRequestBase(null, params), maxDocsToLoad)) + .loadDocs(stream); } @SuppressWarnings("unchecked") @@ -333,19 +334,13 @@ private static class NoOpUpdateRequestProcessor extends UpdateRequestProcessor { } } - private static class CSVRequest extends SolrQueryRequestBase { - CSVRequest(SolrParams params) { - super(null, params); - } - } - private static class SampleCSVLoader extends CSVLoaderBase { List docs = new ArrayList<>(); - CSVRequest req; + SolrQueryRequestBase req; int maxDocsToLoad; String multiValueDelimiter; - SampleCSVLoader(CSVRequest req, int maxDocsToLoad) { + SampleCSVLoader(SolrQueryRequestBase req, int maxDocsToLoad) { super(req, new NoOpUpdateRequestProcessor()); this.req = req; this.maxDocsToLoad = maxDocsToLoad; diff --git a/solr/core/src/java/org/apache/solr/request/LocalSolrQueryRequest.java b/solr/core/src/java/org/apache/solr/request/LocalSolrQueryRequest.java deleted file mode 100644 index b01021f03626..000000000000 --- a/solr/core/src/java/org/apache/solr/request/LocalSolrQueryRequest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.solr.request; - -import java.security.Principal; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Objects; -import org.apache.solr.common.params.CommonParams; -import org.apache.solr.common.params.MultiMapSolrParams; -import org.apache.solr.common.params.SolrParams; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.core.SolrCore; - -// With the addition of SolrParams, this class isn't needed for much anymore... it's currently -// retained more for backward compatibility. - -@Deprecated // use SolrQueryRequestBase -public class LocalSolrQueryRequest extends SolrQueryRequestBase { - public String userPrincipalName = null; - - protected static SolrParams makeParams( - String query, String qtype, int start, int limit, Map args) { - Map map = new HashMap<>(); - for (Iterator> iter = args.entrySet().iterator(); iter.hasNext(); ) { - Map.Entry e = iter.next(); - String k = e.getKey().toString(); - Object v = e.getValue(); - if (v instanceof String[]) map.put(k, (String[]) v); - else map.put(k, new String[] {v.toString()}); - } - if (query != null) map.put(CommonParams.Q, new String[] {query}); - if (qtype != null) map.put(CommonParams.QT, new String[] {qtype}); - map.put(CommonParams.START, new String[] {Integer.toString(start)}); - map.put(CommonParams.ROWS, new String[] {Integer.toString(limit)}); - return new MultiMapSolrParams(map); - } - - public LocalSolrQueryRequest( - SolrCore core, String query, String qtype, int start, int limit, Map args) { - super(core, makeParams(query, qtype, start, limit, args)); - } - - public LocalSolrQueryRequest(SolrCore core, NamedList args) { - super(core, args.toSolrParams()); - } - - public LocalSolrQueryRequest(SolrCore core, Map args) { - super(core, new MultiMapSolrParams(args)); - } - - public LocalSolrQueryRequest(SolrCore core, SolrParams args) { - super(core, args); - } - - @Override - public Principal getUserPrincipal() { - return new LocalPrincipal(this.userPrincipalName); - } - - /** - * Allows setting the 'name' of the User Principal for the purposes of creating local requests in - * a solr node when security is enabled. It is experiemental and subject to removal - * - * @see org.apache.solr.security.PKIAuthenticationPlugin#NODE_IS_USER - * @see #getUserPrincipal - * @lucene.internal - * @lucene.experimental - */ - public void setUserPrincipalName(String s) { - this.userPrincipalName = s; - } - - private static final class LocalPrincipal implements Principal { - private final String user; - - public LocalPrincipal(String user) { - this.user = user; - } - - @Override - public String getName() { - return user; - } - - @Override - public int hashCode() { - return Objects.hashCode(user); - } - - @Override - public boolean equals(Object other) { - return Objects.equals(this.getClass(), other.getClass()) - && Objects.equals(this.getName(), ((LocalPrincipal) other).getName()); - } - } -} diff --git a/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java b/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java index c4aecf0c47ed..dc9d9b38fdc4 100644 --- a/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java +++ b/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java @@ -47,7 +47,6 @@ public interface SolrQueryRequest extends AutoCloseable { /** This is the system property for {@link #ALLOW_PARTIAL_RESULTS_DEFAULT} */ String SOLR_ALLOW_PARTIAL_RESULTS_DEFAULT = "solr.allowPartialResultsDefault"; - // silly getBoolean doesn't take a default. /** * Users can set {@link SolrQueryRequest#SOLR_ALLOW_PARTIAL_RESULTS_DEFAULT} system property to * true, and solr will omit results when any shard fails due query execution limits (time, cpu @@ -122,13 +121,13 @@ static boolean disallowPartialResults(SolrParams params) { SolrCore getCore(); /** The schema snapshot from core.getLatestSchema() at request creation. */ - public IndexSchema getSchema(); + IndexSchema getSchema(); /** Replaces the current schema snapshot with the latest from the core. */ - public void updateSchemaToLatest(); + void updateSchemaToLatest(); /** Returns a string representing all the important parameters. Suitable for logging. */ - public String getParamString(); + String getParamString(); /** * Returns any associated JSON (or null if none) in deserialized generic form. Java classes used diff --git a/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java b/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java index 806a08e43e8f..975d9a288b3d 100644 --- a/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java +++ b/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java @@ -31,10 +31,10 @@ import org.apache.solr.common.util.JsonSchemaValidator; import org.apache.solr.common.util.ObjectReleaseTracker; import org.apache.solr.common.util.SuppressForbidden; -import org.apache.solr.common.util.ValidatingJsonMap; import org.apache.solr.core.SolrCore; import org.apache.solr.schema.IndexSchema; import org.apache.solr.search.SolrIndexSearcher; +import org.apache.solr.security.PKIAuthenticationPlugin; import org.apache.solr.util.RTimerTree; import org.apache.solr.util.RefCounted; @@ -45,7 +45,7 @@ *

The close() method must be called on any instance of this class once it is no * longer in use. */ -public abstract class SolrQueryRequestBase implements SolrQueryRequest, Closeable { +public class SolrQueryRequestBase implements SolrQueryRequest, Closeable { protected final SolrCore core; protected final SolrParams origParams; protected volatile IndexSchema schema; @@ -53,6 +53,7 @@ public abstract class SolrQueryRequestBase implements SolrQueryRequest, Closeabl protected Map context; protected Iterable streams; protected Map json; + protected String userPrincipalName = null; private final RTimerTree requestTimer; protected final long startTime; @@ -128,7 +129,7 @@ public SolrIndexSearcher getSearcher() { return searcherHolder.get(); } - // The solr core (coordinator, etc) associated with this request + // The solr core (coordinator, etc.) associated with this request @Override public SolrCore getCore() { return core; @@ -137,7 +138,6 @@ public SolrCore getCore() { // The index schema associated with this request @Override public IndexSchema getSchema() { - // a request for a core admin will no have a core return schema; } @@ -191,7 +191,22 @@ public void setJSON(Map json) { @Override public Principal getUserPrincipal() { - return null; + if (userPrincipalName == null) { + return null; + } + return new LocalPrincipal(userPrincipalName); + } + + /** + * Allows setting the 'name' of the User Principal for the purposes of creating local requests in + * a solr node when security is enabled. + * + * @see PKIAuthenticationPlugin#NODE_IS_USER + * @see #getUserPrincipal + * @lucene.internal + */ + public void setUserPrincipalName(String s) { + this.userPrincipalName = s; } List parsedCommands; @@ -209,11 +224,15 @@ public List getCommands(boolean validateInput) { return CommandOperation.clone(parsedCommands); } - protected ValidatingJsonMap getSpec() { - return null; - } - protected Map getValidators() { return Collections.emptyMap(); } + + private record LocalPrincipal(String user) implements Principal { + + @Override + public String getName() { + return user; + } + } } diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java index f0e4f2f49f94..1c2d3ad3d209 100644 --- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java +++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java @@ -74,7 +74,7 @@ import org.apache.solr.core.ConfigSetService; import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrResourceLoader; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SchemaXmlWriter; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.search.similarities.SchemaSimilarityFactory; @@ -452,7 +452,7 @@ void persist(Writer writer) throws IOException { final SolrQueryResponse response = new SolrQueryResponse(); response.add(IndexSchema.SCHEMA, getNamedPropertyValues()); final SolrParams args = (new ModifiableSolrParams()).set("indent", "on"); - final LocalSolrQueryRequest req = new LocalSolrQueryRequest(null, args); + final SolrQueryRequestBase req = new SolrQueryRequestBase(null, args); final SchemaXmlWriter schemaXmlWriter = new SchemaXmlWriter(writer, req, response); schemaXmlWriter.setEmitManagedSchemaDoNotEditWarning(true); schemaXmlWriter.writeResponse(); diff --git a/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java index 6bf843f8c300..b403c0c92a28 100644 --- a/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java @@ -27,8 +27,8 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.join.CrossCollectionJoinQParser; import org.apache.solr.search.join.ScoreJoinQParserPlugin; import org.apache.solr.util.RefCounted; @@ -170,7 +170,7 @@ JoinParams parseJoin(QParser qparser) throws SyntaxError { } RefCounted fromHolder = null; - LocalSolrQueryRequest otherReq = new LocalSolrQueryRequest(fromCore, qparser.params); + SolrQueryRequestBase otherReq = new SolrQueryRequestBase(fromCore, qparser.params); try { QParser parser = QParser.getParser(v, otherReq); fromQuery = parser.getQuery(); diff --git a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java index d049a4a9f019..41f3dc56328a 100644 --- a/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/join/ScoreJoinQParserPlugin.java @@ -44,8 +44,8 @@ import org.apache.solr.common.params.SolrParams; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.search.JoinQParserPlugin; import org.apache.solr.search.QParser; @@ -284,7 +284,7 @@ private Query createQuery( } long fromCoreOpenTime = 0; - LocalSolrQueryRequest otherReq = new LocalSolrQueryRequest(fromCore, params); + SolrQueryRequestBase otherReq = new SolrQueryRequestBase(fromCore, params); try { QParser fromQueryParser = QParser.getParser(fromQueryStr, otherReq); diff --git a/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java b/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java index 514e1317290e..aca250b34ec8 100644 --- a/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java +++ b/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java @@ -474,7 +474,7 @@ private Optional getUser() { if (principal == null) { log.debug("generateToken: principal is null"); // this had a request but not authenticated - // so we don't not need to set a principal + // so we do not need to set a principal return Optional.empty(); } else { assert principal.getName() != null; diff --git a/solr/core/src/java/org/apache/solr/update/CommitTracker.java b/solr/core/src/java/org/apache/solr/update/CommitTracker.java index fd02cd51006a..a0d2c9174652 100644 --- a/solr/core/src/java/org/apache/solr/update/CommitTracker.java +++ b/solr/core/src/java/org/apache/solr/update/CommitTracker.java @@ -29,8 +29,8 @@ import org.apache.solr.common.util.SolrNamedThreadFactory; import org.apache.solr.core.SolrCore; import org.apache.solr.logging.MDCLoggingContext; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -260,7 +260,7 @@ public void run() { } MDCLoggingContext.setCore(core); - try (SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams())) { + try (SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams())) { CommitUpdateCommand command = new CommitUpdateCommand(req, false); command.openSearcher = openSearcher; command.waitSearcher = WAIT_SEARCHER; diff --git a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java index 7560b3322712..373a9289bc90 100644 --- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java +++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java @@ -58,8 +58,8 @@ import org.apache.solr.metrics.otel.instruments.AttributedInstrumentFactory; import org.apache.solr.metrics.otel.instruments.AttributedLongCounter; import org.apache.solr.metrics.otel.instruments.AttributedLongUpDownCounter; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.schema.IndexSchema; @@ -1038,7 +1038,7 @@ public void closeWriter(IndexWriter writer) throws IOException { boolean clearRequestInfo = false; - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); SolrQueryResponse rsp = new SolrQueryResponse(); if (SolrRequestInfo.getRequestInfo() == null) { clearRequestInfo = true; diff --git a/solr/core/src/java/org/apache/solr/update/PeerSync.java b/solr/core/src/java/org/apache/solr/update/PeerSync.java index f049ba851fdb..5034797956d7 100644 --- a/solr/core/src/java/org/apache/solr/update/PeerSync.java +++ b/solr/core/src/java/org/apache/solr/update/PeerSync.java @@ -52,8 +52,8 @@ import org.apache.solr.metrics.otel.OtelUnit; import org.apache.solr.metrics.otel.instruments.AttributedLongCounter; import org.apache.solr.metrics.otel.instruments.AttributedLongTimer; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.processor.UpdateRequestProcessor; import org.apache.solr.update.processor.UpdateRequestProcessorChain; @@ -640,7 +640,7 @@ void applyUpdates(List updates, Object updateFrom) throws Exception { ModifiableSolrParams params = new ModifiableSolrParams(); params.set(DISTRIB_UPDATE_PARAM, FROMLEADER.toString()); params.set("peersync", true); // debugging - SolrQueryRequest req = new LocalSolrQueryRequest(solrCore, params); + SolrQueryRequest req = new SolrQueryRequestBase(solrCore, params); SolrQueryResponse rsp = new SolrQueryResponse(); UpdateRequestProcessorChain processorChain = req.getCore().getUpdateProcessingChain(null); diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java index 8ecd634b757f..cf026c95c2ef 100644 --- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java +++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java @@ -80,8 +80,8 @@ import org.apache.solr.metrics.SolrMetricsContext; import org.apache.solr.metrics.otel.OtelUnit; import org.apache.solr.metrics.otel.instruments.AttributedLongCounter; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.search.SolrIndexSearcher; @@ -1556,7 +1556,7 @@ public void copyOverOldUpdates(long commitVersion) { public void copyOverOldUpdates(long commitVersion, TransactionLog oldTlog) { copyOverOldUpdatesCounter.inc(); - SolrQueryRequest req = new LocalSolrQueryRequest(uhandler.core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(uhandler.core, new ModifiableSolrParams()); TransactionLog.LogReader logReader = null; Object o = null; try { @@ -1692,7 +1692,7 @@ private void doClose(TransactionLog theLog, boolean writeCommit) { log.info("Recording current closed for {} log={}", uhandler.core, theLog); CommitUpdateCommand cmd = new CommitUpdateCommand( - new LocalSolrQueryRequest( + new SolrQueryRequestBase( uhandler.core, new ModifiableSolrParams((SolrParams) null)), false); theLog.writeCommit(cmd); @@ -2124,7 +2124,7 @@ public LogReplayer(List translogs, boolean activeLog, boolean in @Override public void run() { - req = new LocalSolrQueryRequest(uhandler.core, BASE_REPLAY_PARAMS); + req = new SolrQueryRequestBase(uhandler.core, BASE_REPLAY_PARAMS); rsp = new SolrQueryResponse(); // setting request info will help logging SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp)); @@ -2199,7 +2199,7 @@ public void doReplay(TransactionLog translog) { () -> { // SolrQueryRequest is not thread-safe, so use a copy when creating URPs final var localRequest = - new LocalSolrQueryRequest(uhandler.core, BASE_REPLAY_PARAMS); + new SolrQueryRequestBase(uhandler.core, BASE_REPLAY_PARAMS); var proc = processorChain.createProcessor(localRequest, rsp); procPool.add(proc); return proc; diff --git a/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java index 827e3f333815..1e3c7c39b050 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java +++ b/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java @@ -22,7 +22,6 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; import java.text.ParseException; -import java.util.Collections; import java.util.Comparator; import java.util.Optional; import java.util.concurrent.RejectedExecutionHandler; @@ -36,14 +35,15 @@ import org.apache.solr.common.cloud.DocCollection; import org.apache.solr.common.cloud.Replica; import org.apache.solr.common.cloud.Slice; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.ExecutorUtil; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.common.util.SolrNamedThreadFactory; import org.apache.solr.core.CloseHook; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.security.PKIAuthenticationPlugin; @@ -66,7 +66,7 @@ *
  • Periodically delete documents from the index based on an expiration field * * - *

    Documents with expiration field values computed from a TTL can be be excluded from searchers + *

    Documents with expiration field values computed from a TTL can be excluded from searchers * using simple date based filters relative to NOW, or completely removed from the * index using the periodic delete function of this factory. Alternatively, the periodic delete * function of this factory can be used to remove any document with an expiration value - even if @@ -267,9 +267,7 @@ public void preClose(SolrCore core) { executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(false); // we don't want this firing right away, since the core may not be ready - final long initialDelay = deletePeriodSeconds; - // TODO: should we make initialDelay configurable - // TODO: should we make initialDelay some fraction of the period? + executor.scheduleAtFixedRate( new DeleteExpiredDocsRunnable(this), deletePeriodSeconds, @@ -284,7 +282,7 @@ public UpdateRequestProcessor getInstance( String defaultTtl = (null == ttlParam) ? null : req.getParams().get(ttlParam); if (null == ttlField && null == defaultTtl) { - // nothing to do, shortcircut ourselves out of the chain. + // nothing to do, short circuit ourselves out of the chain. return next; } else { return new TTLUpdateProcessor(defaultTtl, expireField, ttlField, next); @@ -361,13 +359,13 @@ public DeleteExpiredDocsRunnable(final DocExpirationUpdateProcessorFactory facto @Override public void run() { - // setup the request context early so the logging (including any from + // set up the request context early so the logging (including any from // shouldWeDoPeriodicDelete() ) includes the core context info - final LocalSolrQueryRequest req = - new LocalSolrQueryRequest(factory.core, Collections.emptyMap()); + final SolrQueryRequestBase req = + new SolrQueryRequestBase(factory.core, new ModifiableSolrParams()); try { // HACK: to indicate to PKI that this is a server initiated request for the purposes - // of distributed requet/credential forwarding... + // of distributed request/credential forwarding... req.setUserPrincipalName(PKIAuthenticationPlugin.NODE_IS_USER); final SolrQueryResponse rsp = new SolrQueryResponse(); @@ -436,7 +434,7 @@ public void run() { /** * Helper method that returns true if the Runnable managed by this factory should be responsible - * of doing periodical deletes. + * for doing periodical deletes. * *

    In simple standalone installations this method always returns true, but in cloud mode it * will be true if and only if we are currently the leader of the (active) slice with the first diff --git a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java index 3c41e4e87dac..4ad3c050df27 100644 --- a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java +++ b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java @@ -34,12 +34,13 @@ import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.MapSolrParams; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.RequestHandlerBase; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.ResultContext; import org.apache.solr.response.SolrQueryResponse; @@ -499,11 +500,12 @@ public void testXMLWriter() throws Exception { } @Test - public void testLocalSolrQueryRequestParams() { - HashMap args = new HashMap<>(); - args.put("string", "string value"); - args.put("array", new String[] {"array", "value"}); - SolrQueryRequest req = new LocalSolrQueryRequest(null, null, null, 0, 20, args); + public void testSolrQueryRequestBaseParams() { + ModifiableSolrParams solrParams = new ModifiableSolrParams(); + solrParams.set("string", "string value"); + solrParams.set("array", "array", "value"); + solrParams.set(CommonParams.ROWS, 20); + SolrQueryRequest req = new SolrQueryRequestBase(null, solrParams); assertEquals("string value", req.getParams().get("string")); assertEquals("array", req.getParams().get("array")); @@ -592,7 +594,7 @@ public void testSolrParams() { m.put("s", "BBB"); m.put("ss", "SSS"); - LocalSolrQueryRequest req = new LocalSolrQueryRequest(null, nl); + SolrQueryRequestBase req = new SolrQueryRequestBase(null, nl.toSolrParams()); SolrParams p = req.getParams(); assertEquals(p.get("i"), "555"); @@ -613,10 +615,10 @@ public void testSolrParams() { assertEquals(p.get("s"), "bbb"); assertEquals(p.get("ss"), "SSS"); - assertEquals(!!p.getBool("bt"), !p.getBool("bf")); + assertEquals(p.getBool("bt"), !p.getBool("bf")); assertTrue(p.getBool("foo", true)); assertFalse(p.getBool("foo", false)); - assertEquals(!!p.getBool("bt"), !p.getBool("bf")); + assertEquals(p.getBool("bt"), !p.getBool("bf")); NamedList more = new NamedList<>(); more.add("s", "aaa"); @@ -785,9 +787,9 @@ public void testLazyField() throws IOException { DocList dl = ((ResultContext) rsp.getResponse()).getDocList(); DocIterator di = dl.iterator(); Document d1 = req.getSearcher().getDocFetcher().doc(di.nextDoc()); - IndexableField[] values1 = null; + IndexableField[] values1; - // ensure fl field is non lazy, and non-fl field is lazy + // ensure fl fields are not lazy, and non-fl field is lazy assertFalse(d1.getField("title") instanceof LazyDocument.LazyField); assertFalse(d1.getField("id") instanceof LazyDocument.LazyField); values1 = d1.getFields("test_hlt"); diff --git a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java index 9142db8bdf83..301e5d778bc6 100644 --- a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java +++ b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java @@ -18,8 +18,11 @@ import java.util.HashMap; import java.util.Map; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.common.params.CommonParams; +import org.apache.solr.common.params.MultiMapSolrParams; +import org.apache.solr.common.params.SolrParams; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.util.ErrorLogMuter; import org.junit.BeforeClass; import org.junit.Test; @@ -46,54 +49,6 @@ public void testABunchOfConvertedStuff() { assertU(""); - // test query - - assertQ(req("qlkciyopsbgzyvkylsjhchghjrdf"), "//result[@numFound='0']"); - - // test escaping of ";" - - assertU("42"); - assertU( - "42aa;bb"); - assertU(""); - assertQ(req("id:42 AND val_s:aa\\;bb"), "//*[@numFound='1']"); - assertQ(req("id:42 AND val_s:\"aa;bb\""), "//*[@numFound='1']"); - assertQ(req("id:42 AND val_s:\"aa\""), "//*[@numFound='0']"); - - // test allowDups default of false - - assertU("42"); - assertU("42AAA"); - assertU("42BBB"); - assertU(""); - assertQ(req("id:42"), "//*[@numFound='1'] ", "//str[.='BBB']"); - assertU("42CCC"); - assertU("42DDD"); - assertU(""); - assertQ(req("id:42"), "//*[@numFound='1'] ", "//str[.='DDD']"); - assertU("42"); - - // test deletes - - assertU("id:[100 TO 110]"); - assertU("101"); - assertU("101"); - assertU("105"); - assertU("102"); - assertU("103"); - assertU("101"); - assertU(""); - assertQ(req("id:[100 TO 110]"), "//*[@numFound='4']"); - assertU("102"); - assertU(""); - assertQ(req("id:[100 TO 110]"), "//*[@numFound='3']"); - assertU("id:105"); - assertU(""); - assertQ(req("id:[100 TO 110]"), "//*[@numFound='2']"); - assertU("id:[100 TO 110]"); - assertU(""); - assertQ(req("id:[100 TO 110]"), "//*[@numFound='0']"); - // test range assertU("44"); @@ -106,7 +61,8 @@ public void testABunchOfConvertedStuff() { assertU(""); assertQ(req("val_s:[a TO z]"), "//*[@numFound='3'] ", "*[count(//doc)=3] ", "//*[@start='0']"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 2, 5, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 2, 5, args)); assertQ( req, "//*[@numFound='3'] ", @@ -114,42 +70,54 @@ public void testABunchOfConvertedStuff() { "*//doc[1]/str[.='pear'] ", "//*[@start='2']"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 3, 5, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 3, 5, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 4, 5, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 4, 5, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 25, 5, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 25, 5, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 1, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 0, 1, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=1] ", "*//doc[1]/str[.='apple']"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 2, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 0, 2, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=2] ", "*//doc[2]/str[.='banana']"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 1, 1, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 1, 1, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=1] ", "*//doc[1]/str[.='banana']"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 3, 1, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 3, 1, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 4, 1, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 4, 1, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 1, 0, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 1, 0, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 0, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 0, 0, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); args.put("sort", "val_s1 asc"); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 0, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 0, 0, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); args = new HashMap<>(); args.put("sort", "val_s1 desc"); - req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 0, args); + req = + new SolrQueryRequestBase(h.getCore(), makeParams("val_s:[a TO z]", "/select", 0, 0, args)); assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]"); assertQ(req("val_s:[a TO b]"), "//*[@numFound='1']"); assertQ(req("val_s:[a TO cat]"), "//*[@numFound='2']"); @@ -808,18 +776,18 @@ public void testABunchOfConvertedStuff() { assertQ(req("id:44")); args = new HashMap<>(); args.put("fl", "fname_s,arr_f "); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ(req, "//str[.='Yonik'] ", "//float[.='1.4142135']"); args = new HashMap<>(); args.put("fl", "fname_s,score"); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ(req, "//str[.='Yonik']", "//float[@name='score' and . > 0]"); // test addition of score field args = new HashMap<>(); args.put("fl", "score,* "); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ( req, "//str[.='Yonik'] ", @@ -828,7 +796,7 @@ public void testABunchOfConvertedStuff() { "*[count(//doc/*)>=13]"); args = new HashMap<>(); args.put("fl", "*,score "); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ( req, "//str[.='Yonik'] ", @@ -837,33 +805,33 @@ public void testABunchOfConvertedStuff() { "*[count(//doc/*)>=13]"); args = new HashMap<>(); args.put("fl", "* "); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ(req, "//str[.='Yonik'] ", "//float[.='1.4142135'] ", "*[count(//doc/*)>=12]"); // test maxScore args = new HashMap<>(); args.put("fl", "score "); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ(req, "//result[@maxScore>0]"); args = new HashMap<>(); args.put("fl", "score "); args.put("sort", "id desc"); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ(req, "//result[@maxScore>0]"); args = new HashMap<>(); args.put("fl", "score "); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ(req, "//@maxScore = //doc/float[@name='score']"); args = new HashMap<>(); args.put("fl", "score "); args.put("sort", "id desc"); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 10, args)); assertQ(req, "//@maxScore = //doc/float[@name='score']"); args = new HashMap<>(); args.put("fl", "*,score"); args.put("sort", "id desc"); - req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 0, args); + req = new SolrQueryRequestBase(h.getCore(), makeParams("id:44", "/select", 0, 0, args)); assertQ(req, "//result[@maxScore>0]"); // test schema field attribute inheritance and overriding @@ -900,16 +868,6 @@ public void testABunchOfConvertedStuff() { " 44 hi "); assertU(""); - // test adding multiple docs per add command - - // assertU("id:[0 TO 99]"); - // assertU("12"); - // assertU(""); - // assertQ(req("id:[0 TO 99]") - // ,"//*[@numFound='2']" - // ); - // test synonym filter assertU("id:[10 TO 100]"); @@ -947,4 +905,32 @@ public void testABunchOfConvertedStuff() { assertQ(req("+id:44 +textgap:\"bb cc dd ee\"~100"), "//*[@numFound='1']"); assertQ(req("+id:45 +text:\"cc dd\""), "//*[@numFound='1']"); } + + /** + * Utility method to build SolrParams from individual query components. This is a convenience + * method for legacy code that needs to construct params from separate query, qtype, start, limit, + * and additional args. + * + * @param query the query string (added as "q" param) + * @param qtype the query type (added as "qt" param) + * @param start the start offset (added as "start" param) + * @param limit the row limit (added as "rows" param) + * @param args additional parameters as a map + * @return SolrParams containing all the specified parameters + */ + public static SolrParams makeParams( + String query, String qtype, int start, int limit, Map args) { + Map map = new HashMap<>(); + for (Map.Entry e : args.entrySet()) { + String k = e.getKey().toString(); + Object v = e.getValue(); + if (v instanceof String[]) map.put(k, (String[]) v); + else map.put(k, new String[] {v.toString()}); + } + if (query != null) map.put(CommonParams.Q, new String[] {query}); + if (qtype != null) map.put(CommonParams.QT, new String[] {qtype}); + map.put(CommonParams.START, new String[] {Integer.toString(start)}); + map.put(CommonParams.ROWS, new String[] {Integer.toString(limit)}); + return new MultiMapSolrParams(map); + } } diff --git a/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java b/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java index 228cbaa304e6..739fe91fd86d 100644 --- a/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java +++ b/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java @@ -16,17 +16,17 @@ */ package org.apache.solr; -import java.util.Collections; import java.util.List; import java.util.Map; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer; import org.apache.solr.common.SolrException.ErrorCode; import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.search.join.TestScoreJoinQPNoScore; @@ -184,8 +184,11 @@ void doTestJoin(String joinPrefix) throws Exception { @Test public void testCoresAreDifferent() throws Exception { assertQEx("schema12.xml" + " has no \"cat\" field", req("cat:*"), ErrorCode.BAD_REQUEST); - try (var req = - new LocalSolrQueryRequest(fromCore, "cat:*", "/select", 0, 100, Collections.emptyMap())) { + ModifiableSolrParams solrParams = new ModifiableSolrParams(); + solrParams.set(CommonParams.Q, "cat:*"); + solrParams.set(CommonParams.QT, "/select"); + solrParams.set(CommonParams.ROWS, 100); + try (var req = new SolrQueryRequestBase(fromCore, solrParams)) { final String resp = query(fromCore, req); assertTrue(resp, resp.contains("numFound=\"1\"")); assertTrue(resp, resp.contains("10")); diff --git a/solr/core/src/test/org/apache/solr/core/TestLazyCores.java b/solr/core/src/test/org/apache/solr/core/TestLazyCores.java index 661b27d912aa..ab755407810f 100644 --- a/solr/core/src/test/org/apache/solr/core/TestLazyCores.java +++ b/solr/core/src/test/org/apache/solr/core/TestLazyCores.java @@ -31,8 +31,8 @@ import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CoreAdminParams; import org.apache.solr.handler.admin.CoreAdminHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.CommitUpdateCommand; @@ -589,8 +589,8 @@ private void addLazy(SolrCore core, String... fieldValues) throws IOException { updater.addDoc(cmd); } - private LocalSolrQueryRequest makeReq(SolrCore core, String... paramPairs) { - return new LocalSolrQueryRequest(core, params(paramPairs)); + private SolrQueryRequestBase makeReq(SolrCore core, String... paramPairs) { + return new SolrQueryRequestBase(core, params(paramPairs)); } @Test diff --git a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java index 36b293ed8abb..9387f71bdb17 100644 --- a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java @@ -41,8 +41,8 @@ import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.NamedList; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.schema.FieldType; import org.apache.solr.schema.TextField; import org.junit.Before; @@ -101,7 +101,7 @@ public void testResolveAnalysisRequest() { params.add(AnalysisParams.FIELD_VALUE, "the quick red fox jumped over the lazy brown dogs"); params.add(CommonParams.Q, "fox brown"); - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params); FieldAnalysisRequest request = handler.resolveAnalysisRequest(req); List fieldNames = request.getFieldNames(); assertEquals("Expecting 2 field names", 2, fieldNames.size()); @@ -118,20 +118,20 @@ public void testResolveAnalysisRequest() { // testing override of query value using analysis.query param params.add(AnalysisParams.QUERY, "quick lazy"); - req = new LocalSolrQueryRequest(h.getCore(), params); + req = new SolrQueryRequestBase(h.getCore(), params); request = handler.resolveAnalysisRequest(req); assertEquals("quick lazy", request.getQuery()); req.close(); // testing analysis.showmatch param params.add(AnalysisParams.SHOW_MATCH, "false"); - req = new LocalSolrQueryRequest(h.getCore(), params); + req = new SolrQueryRequestBase(h.getCore(), params); request = handler.resolveAnalysisRequest(req); assertFalse(request.isShowMatch()); req.close(); params.set(AnalysisParams.SHOW_MATCH, "true"); - req = new LocalSolrQueryRequest(h.getCore(), params); + req = new SolrQueryRequestBase(h.getCore(), params); request = handler.resolveAnalysisRequest(req); assertTrue(request.isShowMatch()); req.close(); @@ -139,7 +139,7 @@ public void testResolveAnalysisRequest() { // testing absence of query value params.remove(CommonParams.Q); params.remove(AnalysisParams.QUERY); - req = new LocalSolrQueryRequest(h.getCore(), params); + req = new SolrQueryRequestBase(h.getCore(), params); request = handler.resolveAnalysisRequest(req); assertNull(request.getQuery()); req.close(); @@ -162,7 +162,7 @@ public void testResolveAnalysisRequest() { params.remove(CommonParams.Q); params.remove(AnalysisParams.QUERY); params.remove(AnalysisParams.FIELD_VALUE); - try (SolrQueryRequest solrQueryRequest = new LocalSolrQueryRequest(h.getCore(), params)) { + try (SolrQueryRequest solrQueryRequest = new SolrQueryRequestBase(h.getCore(), params)) { SolrException ex = expectThrows(SolrException.class, () -> handler.resolveAnalysisRequest(solrQueryRequest)); assertEquals(SolrException.ErrorCode.BAD_REQUEST.code, ex.code()); @@ -813,7 +813,7 @@ public TokenStream create(TokenStream input) { public void testNoDefaultField() { ModifiableSolrParams params = new ModifiableSolrParams(); params.add(CommonParams.Q, "fox brown"); - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params); handler.resolveAnalysisRequest(req); } diff --git a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java index 763fe6c2f474..85ab057f8cde 100644 --- a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java @@ -25,7 +25,6 @@ import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.component.FacetComponent; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; @@ -168,7 +167,7 @@ public void testInterface() { params.set(CommonParams.Q, "id:42"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ( "morelikethis - tom cruise", mltreq, @@ -178,7 +177,7 @@ public void testInterface() { params.set(MoreLikeThisParams.BOOST, "true"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ( "morelikethis - tom cruise", mltreq, @@ -187,13 +186,13 @@ public void testInterface() { } params.set(CommonParams.Q, "id:44"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ("morelike this - harrison ford", mltreq, "//result/doc[1]/str[@name='id'][.='45']"); } // test MoreLikeThis debug params.set(CommonParams.DEBUG_QUERY, "true"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ( "morelike this - harrison ford", mltreq, @@ -206,13 +205,13 @@ public void testInterface() { // test that qparser plugins work params.remove(CommonParams.DEBUG_QUERY); params.set(CommonParams.Q, "{!field f=id}44"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ(mltreq, "//result/doc[1]/str[@name='id'][.='45']"); } params.set(CommonParams.Q, "id:42"); params.set(MoreLikeThisParams.QF, "name^5.0 subword^0.1"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ( "morelikethis with weights", mltreq, @@ -223,14 +222,14 @@ public void testInterface() { // test that qparser plugins work w/ the MoreLikeThisHandler params.set(CommonParams.QT, "/mlt"); params.set(CommonParams.Q, "{!field f=id}44"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ(mltreq, "//result/doc[1]/str[@name='id'][.='45']"); } // test that debugging works (test for MoreLikeThis*Handler*) params.set(CommonParams.QT, "/mlt"); params.set(CommonParams.DEBUG_QUERY, "true"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ( mltreq, "//result/doc[1]/str[@name='id'][.='45']", @@ -239,7 +238,7 @@ public void testInterface() { params.set(FacetComponent.COMPONENT_NAME, "true"); params.set("facet.field", "name"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ( mltreq, "//result/doc[1]/str[@name='id'][.='45']", @@ -247,7 +246,7 @@ public void testInterface() { } params.set("facet.field", "{!ex=tg}name"); params.set("fq", "{!tag=tg}name:George"); - try (SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)) { + try (SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params)) { assertQ( mltreq, "//result/doc[1]/str[@name='id'][.='45']", diff --git a/solr/core/src/test/org/apache/solr/handler/RequestHandlerBaseTest.java b/solr/core/src/test/org/apache/solr/handler/RequestHandlerBaseTest.java index b1a88291a2d0..137879f40e71 100644 --- a/solr/core/src/test/org/apache/solr/handler/RequestHandlerBaseTest.java +++ b/solr/core/src/test/org/apache/solr/handler/RequestHandlerBaseTest.java @@ -39,8 +39,8 @@ import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; import org.apache.solr.metrics.SolrMetricsContext; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.SyntaxError; import org.junit.Before; import org.junit.BeforeClass; @@ -110,7 +110,7 @@ public void testEach4xxSolrExceptionIncrementsTheClientErrorCount() { @Test public void testReceivedSyntaxErrorsAreWrappedIn400SolrException() { final SolrQueryRequest solrQueryRequest = - new LocalSolrQueryRequest(solrCore, new ModifiableSolrParams()) { + new SolrQueryRequestBase(solrCore, new ModifiableSolrParams()) { @Override public CoreContainer getCoreContainer() { return coreContainer; @@ -128,7 +128,7 @@ public CoreContainer getCoreContainer() { @Test public void testReceivedNonTragicNonSolrExceptionsAreNotModified() { final SolrQueryRequest solrQueryRequest = - new LocalSolrQueryRequest(solrCore, new ModifiableSolrParams()) { + new SolrQueryRequestBase(solrCore, new ModifiableSolrParams()) { @Override public CoreContainer getCoreContainer() { return coreContainer; @@ -145,7 +145,7 @@ public CoreContainer getCoreContainer() { public void testTragicNonSolrExceptionsAreWrappedInA500SolrException() { when(coreContainer.checkTragicException(solrCore)).thenReturn(true); final SolrQueryRequest solrQueryRequest = - new LocalSolrQueryRequest(solrCore, new ModifiableSolrParams()) { + new SolrQueryRequestBase(solrCore, new ModifiableSolrParams()) { @Override public CoreContainer getCoreContainer() { return coreContainer; @@ -163,7 +163,7 @@ public CoreContainer getCoreContainer() { @Test public void testIsInternalShardRequest() { final SolrQueryRequest solrQueryRequest = - new LocalSolrQueryRequest(solrCore, new ModifiableSolrParams()) { + new SolrQueryRequestBase(solrCore, new ModifiableSolrParams()) { @Override public CoreContainer getCoreContainer() { return coreContainer; diff --git a/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java b/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java index b7ca0d331737..614bedd3d8ad 100644 --- a/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java +++ b/solr/core/src/test/org/apache/solr/handler/TestCSVLoader.java @@ -25,7 +25,7 @@ import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.ContentStreamBase; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; @@ -77,12 +77,13 @@ void cleanup() { } void loadLocal(String... args) throws Exception { - LocalSolrQueryRequest req = (LocalSolrQueryRequest) req(args); + SolrQueryRequestBase req = (SolrQueryRequestBase) req(args); List cs = new ArrayList<>(1); ContentStreamBase f = new ContentStreamBase.FileStream(Path.of(filename)); f.setContentType("text/csv"); cs.add(f); + req.setContentStreams(cs); h.query("/update", req); } diff --git a/solr/core/src/test/org/apache/solr/handler/V2ClusterAPIMappingTest.java b/solr/core/src/test/org/apache/solr/handler/V2ClusterAPIMappingTest.java index 6410dc60a478..6dce25d53474 100644 --- a/solr/core/src/test/org/apache/solr/handler/V2ClusterAPIMappingTest.java +++ b/solr/core/src/test/org/apache/solr/handler/V2ClusterAPIMappingTest.java @@ -32,13 +32,14 @@ import org.apache.solr.api.ApiBag; import org.apache.solr.common.params.CollectionParams; import org.apache.solr.common.params.CollectionParams.CollectionAction; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.CommandOperation; import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.handler.admin.CollectionsHandler; import org.apache.solr.handler.admin.ConfigSetsHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.junit.Before; import org.junit.BeforeClass; @@ -138,8 +139,8 @@ private SolrParams doCaptureParams( final HashMap parts = new HashMap<>(); final Api api = apiBag.lookup(path, method, parts); final SolrQueryResponse rsp = new SolrQueryResponse(); - final LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, Map.of()) { + final SolrQueryRequestBase req = + new SolrQueryRequestBase(null, new ModifiableSolrParams()) { @Override public List getCommands(boolean validateInput) { if (v2RequestBody == null) return Collections.emptyList(); diff --git a/solr/core/src/test/org/apache/solr/handler/V2UpdateAPIMappingTest.java b/solr/core/src/test/org/apache/solr/handler/V2UpdateAPIMappingTest.java index f030525fb036..c3cce079c777 100644 --- a/solr/core/src/test/org/apache/solr/handler/V2UpdateAPIMappingTest.java +++ b/solr/core/src/test/org/apache/solr/handler/V2UpdateAPIMappingTest.java @@ -27,10 +27,11 @@ import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.api.Api; import org.apache.solr.api.ApiBag; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.CommandOperation; import org.apache.solr.handler.admin.api.UpdateAPI; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.junit.Before; import org.junit.BeforeClass; @@ -39,7 +40,6 @@ /** Unit tests for the v2 to v1 mapping logic in {@link UpdateAPI} */ public class V2UpdateAPIMappingTest extends SolrTestCaseJ4 { private ApiBag apiBag; - private UpdateRequestHandler mockUpdateHandler; @BeforeClass public static void ensureWorkingMockito() { @@ -48,7 +48,7 @@ public static void ensureWorkingMockito() { @Before public void setupApiBag() { - mockUpdateHandler = mock(UpdateRequestHandler.class); + UpdateRequestHandler mockUpdateHandler = mock(UpdateRequestHandler.class); apiBag = new ApiBag(false); final UpdateAPI updateAPI = new UpdateAPI(mockUpdateHandler); @@ -89,27 +89,30 @@ private SolrQueryRequest runUpdateApi(String path) { final HashMap parts = new HashMap<>(); final Api api = apiBag.lookup(path, "POST", parts); final SolrQueryResponse rsp = new SolrQueryResponse(); - final LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, Map.of()) { - @Override - public List getCommands(boolean validateInput) { - return Collections.emptyList(); - } - - @Override - public Map getPathTemplateValues() { - return parts; - } - - @Override - public String getHttpMethod() { - return "POST"; - } - }; + final SolrQueryRequestBase req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put(PATH, path); api.call(req, rsp); return req; } + + private SolrQueryRequestBase createTestRequest(Map pathTemplateValues) { + return new SolrQueryRequestBase(null, new ModifiableSolrParams()) { + @Override + public List getCommands(boolean validateInput) { + return Collections.emptyList(); + } + + @Override + public Map getPathTemplateValues() { + return pathTemplateValues; + } + + @Override + public String getHttpMethod() { + return "POST"; + } + }; + } } diff --git a/solr/core/src/test/org/apache/solr/handler/admin/SecurityConfHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/SecurityConfHandlerTest.java index 5a971eb7dd6a..687171d7fad2 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/SecurityConfHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/SecurityConfHandlerTest.java @@ -29,7 +29,7 @@ import org.apache.solr.common.util.CommandOperation; import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.common.util.Utils; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.security.BasicAuthPlugin; import org.apache.solr.security.RuleBasedAuthorizationPlugin; @@ -44,7 +44,7 @@ public void testEdit() throws Exception { + "'set-user': {'tom':'TomIsCool'},\n" + "'set-user':{ 'tom':'TomIsUberCool'}\n" + "}"; - LocalSolrQueryRequest req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + SolrQueryRequestBase req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authentication"); ContentStreamBase.ByteArrayStream o = @@ -77,7 +77,7 @@ public void testEdit() throws Exception { + " 'role': 'admin'}\n" + "}"; - req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authorization"); o = new ContentStreamBase.ByteArrayStream(command.getBytes(StandardCharsets.UTF_8), ""); @@ -101,7 +101,7 @@ public void testEdit() throws Exception { + "'set-permission':{index : 2, name : security-edit,\n" + " 'role': ['admin','dev']\n" + " }}"; - req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authorization"); o = new ContentStreamBase.ByteArrayStream(command.getBytes(StandardCharsets.UTF_8), ""); @@ -122,7 +122,7 @@ public void testEdit() throws Exception { + "'update-permission':{'index': 1,\n" + " 'role': ['guest','admin']\n" + " }}"; - req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authorization"); o = new ContentStreamBase.ByteArrayStream(command.getBytes(StandardCharsets.UTF_8), ""); @@ -139,7 +139,7 @@ public void testEdit() throws Exception { assertEquals("admin", rol.get(1)); command = "{\n" + "delete-permission: 1,\n" + " set-user-role : { tom :null}\n" + "}"; - req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authorization"); o = new ContentStreamBase.ByteArrayStream(command.getBytes(StandardCharsets.UTF_8), ""); @@ -163,7 +163,7 @@ public void testEdit() throws Exception { + " 'method':'POST'," + " 'role': 'admin'\n" + " }}"; - req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authorization"); o = new ContentStreamBase.ByteArrayStream(command.getBytes(StandardCharsets.UTF_8), ""); @@ -237,7 +237,7 @@ protected boolean persistConf(SecurityConfig props) { public String getStandardJson() throws Exception { String command = "{\n" + "'set-user': {'solr':'SolrRocks'}\n" + "}"; - LocalSolrQueryRequest req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + SolrQueryRequestBase req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authentication"); ContentStreamBase.ByteArrayStream o = @@ -249,7 +249,7 @@ public String getStandardJson() throws Exception { "{'set-user-role': { 'solr': 'admin'},\n" + "'set-permission':{'name': 'security-edit', 'role': 'admin'}" + "}"; - req = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + req = new SolrQueryRequestBase(null, new ModifiableSolrParams()); req.getContext().put("httpMethod", SolrRequest.METHOD.POST); req.getContext().put("path", "/admin/authorization"); o = new ContentStreamBase.ByteArrayStream(command.getBytes(StandardCharsets.UTF_8), ""); diff --git a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java index d0a7292d3a42..0e67cf69b10e 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java @@ -34,8 +34,8 @@ import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.common.util.NamedList; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.util.SolrJettyTestRule; @@ -121,7 +121,7 @@ public Set getContentTypes() { public void testContentTypeHtmlBecomesTextPlain() { SolrRequestHandler handler = h.getCore().getRequestHandler("/admin/file"); SolrQueryRequest req = - new LocalSolrQueryRequest( + new SolrQueryRequestBase( h.getCore(), params("file", "schema.xml", "contentType", "text/html")); SolrQueryResponse rsp = new SolrQueryResponse(); handler.handleRequest(req, rsp); @@ -132,7 +132,7 @@ public void testContentTypeHtmlBecomesTextPlain() { public void testContentTypeHtmlDefault() { SolrRequestHandler handler = h.getCore().getRequestHandler("/admin/file"); - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params("file", "example.html")); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params("file", "example.html")); SolrQueryResponse rsp = new SolrQueryResponse(); handler.handleRequest(req, rsp); ContentStreamBase.FileStream content = diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java index 9704269bbbd5..20286eca4090 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java @@ -64,7 +64,6 @@ import org.apache.solr.handler.PingRequestHandler; import org.apache.solr.handler.SchemaHandler; import org.apache.solr.handler.SolrConfigHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; @@ -304,8 +303,8 @@ private SolrQueryResponse invoke( } SolrQueryResponse rsp = new SolrQueryResponse(); - LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, SolrParams.of()) { + SolrQueryRequestBase req = + new SolrQueryRequestBase(null, SolrParams.of()) { @Override public List getCommands(boolean validateInput) { return Collections.emptyList(); diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java b/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java index 7e6529ac269e..6ffdc55aa09f 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/TestCollectionAPIs.java @@ -45,8 +45,8 @@ import org.apache.solr.common.util.Utils; import org.apache.solr.core.CoreContainer; import org.apache.solr.handler.ClusterAPI; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.servlet.SolrRequestParsers; import org.junit.Test; @@ -124,7 +124,7 @@ public void testCommands() throws Exception { "{operation : migrate ,collection : coll1, target.collection:coll2, forward.timeout:1800, split.key:'a123!'}"); } - static ZkNodeProps compareOutput( + ZkNodeProps compareOutput( final ApiBag apiBag, final String path, final SolrRequest.METHOD method, @@ -138,7 +138,7 @@ static ZkNodeProps compareOutput( return output; } - public static Pair makeCall( + public Pair makeCall( final ApiBag apiBag, String path, final SolrRequest.METHOD method, final String payload) { SolrParams queryParams = new MultiMapSolrParams(Collections.emptyMap()); if (path.indexOf('?') > 0) { @@ -150,8 +150,8 @@ public static Pair makeCall( Api api = apiBag.lookup(path, method.toString(), parts); if (api == null) throw new RuntimeException("No handler at path :" + path); SolrQueryResponse rsp = new SolrQueryResponse(); - LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, queryParams) { + SolrQueryRequestBase req = + new SolrQueryRequestBase(null, queryParams) { @Override public List getCommands(boolean validateInput) { if (payload == null) return Collections.emptyList(); @@ -163,11 +163,6 @@ public List getCommands(boolean validateInput) { public Map getPathTemplateValues() { return parts; } - - @Override - public String getHttpMethod() { - return method.toString(); - } }; api.call(req, rsp); return new Pair<>(req, rsp); @@ -190,7 +185,6 @@ private static String errorMessage(Map expected, ZkNodeProps actual) { } static class MockCollectionsHandler extends CollectionsHandler { - LocalSolrQueryRequest req; MockCollectionsHandler() {} diff --git a/solr/core/src/test/org/apache/solr/handler/admin/UpgradeCoreIndexActionTest.java b/solr/core/src/test/org/apache/solr/handler/admin/UpgradeCoreIndexActionTest.java index 7ae8c95b548d..d3c79fc78689 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/UpgradeCoreIndexActionTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/UpgradeCoreIndexActionTest.java @@ -36,7 +36,7 @@ import org.apache.solr.common.params.CoreAdminParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.util.RefCounted; @@ -302,8 +302,7 @@ private Set listSegmentNames(SolrCore core) throws Exception { }); } - private void setMinVersionForSegments(SolrCore core, Set segments, Version minVersion) - throws Exception { + private void setMinVersionForSegments(SolrCore core, Set segments, Version minVersion) { RefCounted searcherRef = core.getSearcher(); try { final List leaves = searcherRef.get().getTopReaderContext().leaves(); @@ -339,13 +338,10 @@ public void testUpgradeCoreIndexFailsWithNestedDocuments() throws Exception { parentDoc.addChildDocument(childDoc); // Index the nested document - LocalSolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); - try { + try (SolrQueryRequestBase req = new SolrQueryRequestBase(core, new ModifiableSolrParams())) { AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = parentDoc; core.getUpdateHandler().addDoc(cmd); - } finally { - req.close(); } assertU(commit("openSearcher", "true")); diff --git a/solr/core/src/test/org/apache/solr/handler/admin/V2ApiMappingTest.java b/solr/core/src/test/org/apache/solr/handler/admin/V2ApiMappingTest.java index bb36cf353d8b..164e637990b4 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/V2ApiMappingTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/V2ApiMappingTest.java @@ -30,13 +30,14 @@ import org.apache.solr.api.AnnotatedApi; import org.apache.solr.api.Api; import org.apache.solr.api.ApiBag; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.CommandOperation; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.handler.RequestHandlerBase; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.junit.Before; import org.junit.BeforeClass; @@ -111,8 +112,8 @@ protected SolrQueryRequest captureConvertedV1Request( final HashMap parts = new HashMap<>(); final Api api = apiBag.lookup(v2Path, v2Method, parts); final SolrQueryResponse rsp = new SolrQueryResponse(); - final LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, Map.of()) { + final SolrQueryRequestBase req = + new SolrQueryRequestBase(null, new ModifiableSolrParams()) { @Override public List getCommands(boolean validateInput) { if (v2RequestBody == null) return Collections.emptyList(); @@ -146,70 +147,6 @@ protected SolrParams captureConvertedV1Params(String path, String method, String return captureConvertedV1Request(path, method, v2RequestBody).getParams(); } - protected SolrParams captureConvertedV1Params( - String path, String method, Map queryParams) throws Exception { - final HashMap parts = new HashMap<>(); - final Api api = apiBag.lookup(path, method, parts); - final SolrQueryResponse rsp = new SolrQueryResponse(); - final LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, queryParams) { - @Override - public List getCommands(boolean validateInput) { - return Collections.emptyList(); - } - - @Override - public Map getPathTemplateValues() { - return parts; - } - - @Override - public String getHttpMethod() { - return method; - } - }; - - api.call(req, rsp); - verify(mockRequestHandler).handleRequestBody(queryRequestCaptor.capture(), any()); - return queryRequestCaptor.getValue().getParams(); - } - - // TODO Combine with method above - protected SolrParams captureConvertedV1Params(String path, String method, SolrParams queryParams) - throws Exception { - return captureConvertedV1Params(path, method, queryParams, null); - } - - protected SolrParams captureConvertedV1Params( - String path, String method, SolrParams queryParams, String v2RequestBody) throws Exception { - final HashMap parts = new HashMap<>(); - final Api api = apiBag.lookup(path, method, parts); - final SolrQueryResponse rsp = new SolrQueryResponse(); - final LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, queryParams) { - @Override - public List getCommands(boolean validateInput) { - if (v2RequestBody == null) return Collections.emptyList(); - return ApiBag.getCommandOperations( - new ContentStreamBase.StringStream(v2RequestBody), api.getCommandSchema(), true); - } - - @Override - public Map getPathTemplateValues() { - return parts; - } - - @Override - public String getHttpMethod() { - return method; - } - }; - - api.call(req, rsp); - verify(mockRequestHandler).handleRequestBody(queryRequestCaptor.capture(), any()); - return queryRequestCaptor.getValue().getParams(); - } - protected AnnotatedApi assertAnnotatedApiExistsFor(String method, String path) { final AnnotatedApi api = getAnnotatedApiFor(method, path); assertNotNull( diff --git a/solr/core/src/test/org/apache/solr/handler/admin/api/V2NodeAPIMappingTest.java b/solr/core/src/test/org/apache/solr/handler/admin/api/V2NodeAPIMappingTest.java index f4dfa3d198d6..c0ca1bff0c00 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/api/V2NodeAPIMappingTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/api/V2NodeAPIMappingTest.java @@ -26,7 +26,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; -import java.util.Map; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.api.Api; import org.apache.solr.api.ApiBag; @@ -42,8 +41,8 @@ import org.apache.solr.handler.admin.PropertiesRequestHandler; import org.apache.solr.handler.admin.SystemInfoHandler; import org.apache.solr.handler.admin.ThreadDumpHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.junit.Before; import org.junit.BeforeClass; @@ -204,32 +203,22 @@ private SolrParams doCaptureParams( RequestHandlerBase mockHandler) throws Exception { final HashMap parts = new HashMap<>(); - final Map inputParamsMap = new HashMap<>(); + ModifiableSolrParams solrParams = new ModifiableSolrParams(); inputParams.stream() .forEach( e -> { - inputParamsMap.put(e.getKey(), e.getValue()); + solrParams.add(e.getKey(), e.getValue()); }); final Api api = apiBag.lookup(path, method, parts); final SolrQueryResponse rsp = new SolrQueryResponse(); - final LocalSolrQueryRequest req = - new LocalSolrQueryRequest(null, inputParamsMap) { + final SolrQueryRequestBase req = + new SolrQueryRequestBase(null, solrParams) { @Override public List getCommands(boolean validateInput) { if (v2RequestBody == null) return Collections.emptyList(); return ApiBag.getCommandOperations( new ContentStreamBase.StringStream(v2RequestBody), api.getCommandSchema(), true); } - - @Override - public Map getPathTemplateValues() { - return parts; - } - - @Override - public String getHttpMethod() { - return method; - } }; api.call(req, rsp); diff --git a/solr/core/src/test/org/apache/solr/handler/component/MoreLikeThisComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/MoreLikeThisComponentTest.java index e11d9b570f8a..3760600feb46 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/MoreLikeThisComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/MoreLikeThisComponentTest.java @@ -21,8 +21,8 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.MoreLikeThisParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.junit.BeforeClass; import org.junit.Test; @@ -137,7 +137,7 @@ public void testMLT_baseParams_shouldReturnSimilarDocuments() { initCommonMoreLikeThisParams(params); params.set(CommonParams.Q, "id:42"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params); assertQ( "morelikethis - tom cruise", mltreq, @@ -146,7 +146,7 @@ public void testMLT_baseParams_shouldReturnSimilarDocuments() { params.set(CommonParams.Q, "id:44"); mltreq.close(); - mltreq = new LocalSolrQueryRequest(h.getCore(), params); + mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ("morelike this - harrison ford", mltreq, "//result/doc[1]/str[@name='id'][.='45']"); mltreq.close(); } @@ -161,7 +161,7 @@ public void testMLT_baseParams_shouldReturnSimilarDocuments() { params.set(MoreLikeThisParams.INTERESTING_TERMS, "details"); params.set(CommonParams.Q, "id:42"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params); assertQ( "morelikethis - tom cruise", mltreq, @@ -182,7 +182,7 @@ public void testMLT_baseParams_shouldReturnSimilarDocuments() { params.set(MoreLikeThisParams.INTERESTING_TERMS, "list"); params.set(CommonParams.Q, "id:42"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params); assertQ( "morelikethis - tom cruise", mltreq, @@ -202,7 +202,7 @@ public void testMLT_boostEnabled_shouldReturnSimilarDocumentsConsideringBoost() params.set(MoreLikeThisParams.BOOST, "true"); params.set(CommonParams.Q, "id:42"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params); assertQ( "morelikethis - tom cruise", mltreq, @@ -212,7 +212,7 @@ public void testMLT_boostEnabled_shouldReturnSimilarDocumentsConsideringBoost() params.set(CommonParams.Q, "id:42"); params.set(MoreLikeThisParams.QF, "name^5.0 subword^0.1"); mltreq.close(); - mltreq = new LocalSolrQueryRequest(h.getCore(), params); + mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( "morelikethis with weights", mltreq, @@ -233,7 +233,7 @@ public void testMLT_boostEnabled_shouldReturnSimilarDocumentsConsideringBoost() params.set(MoreLikeThisParams.INTERESTING_TERMS, "details"); params.set(CommonParams.Q, "id:42"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params); assertQ( "morelikethis - tom cruise", mltreq, @@ -244,7 +244,7 @@ public void testMLT_boostEnabled_shouldReturnSimilarDocumentsConsideringBoost() params.set(MoreLikeThisParams.QF, "name^5.0 subword^0.1"); mltreq.close(); - mltreq = new LocalSolrQueryRequest(h.getCore(), params); + mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( "morelikethis with weights", mltreq, @@ -267,7 +267,7 @@ public void testMLT_boostEnabled_shouldReturnSimilarDocumentsConsideringBoost() params.set(MoreLikeThisParams.INTERESTING_TERMS, "list"); params.set(CommonParams.Q, "id:42"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(core, params); assertQ( "morelikethis - tom cruise", mltreq, @@ -278,7 +278,7 @@ public void testMLT_boostEnabled_shouldReturnSimilarDocumentsConsideringBoost() params.set(MoreLikeThisParams.QF, "name^5.0 subword^0.1"); mltreq.close(); - mltreq = new LocalSolrQueryRequest(h.getCore(), params); + mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( "morelikethis with weights", mltreq, @@ -299,7 +299,7 @@ public void testMLT_debugEnabled_shouldReturnSimilarDocumentsWithDebug() { params.set(CommonParams.Q, "id:44"); params.set(CommonParams.DEBUG_QUERY, "true"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(h.getCore(), params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( "morelike this - harrison ford", mltreq, @@ -311,7 +311,7 @@ public void testMLT_debugEnabled_shouldReturnSimilarDocumentsWithDebug() { params.remove(CommonParams.DEBUG_QUERY); params.set(CommonParams.Q, "{!field f=id}44"); mltreq.close(); - mltreq = new LocalSolrQueryRequest(h.getCore(), params); + mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ(mltreq, "//result/doc[1]/str[@name='id'][.='45']"); mltreq.close(); } @@ -327,7 +327,7 @@ public void testMLT_debugEnabled_shouldReturnSimilarDocumentsWithDebug() { params.set(CommonParams.Q, "id:44"); params.set(CommonParams.DEBUG_QUERY, "true"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(h.getCore(), params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( "morelike this - harrison ford", mltreq, @@ -341,7 +341,7 @@ public void testMLT_debugEnabled_shouldReturnSimilarDocumentsWithDebug() { params.remove(CommonParams.DEBUG_QUERY); params.set(CommonParams.Q, "{!field f=id}44"); mltreq.close(); - mltreq = new LocalSolrQueryRequest(h.getCore(), params); + mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( mltreq, "//result/doc[1]/str[@name='id'][.='45']", @@ -362,7 +362,7 @@ public void testMLT_debugEnabled_shouldReturnSimilarDocumentsWithDebug() { params.set(CommonParams.Q, "id:44"); params.set(CommonParams.DEBUG_QUERY, "true"); - SolrQueryRequest mltreq = new LocalSolrQueryRequest(h.getCore(), params); + SolrQueryRequest mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( "morelike this - harrison ford", mltreq, @@ -376,7 +376,7 @@ public void testMLT_debugEnabled_shouldReturnSimilarDocumentsWithDebug() { params.remove(CommonParams.DEBUG_QUERY); params.set(CommonParams.Q, "{!field f=id}44"); mltreq.close(); - mltreq = new LocalSolrQueryRequest(h.getCore(), params); + mltreq = new SolrQueryRequestBase(h.getCore(), params); assertQ( mltreq, "//result/doc[1]/str[@name='id'][.='45']", diff --git a/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java index 0cbd5104a917..3e4eb5e50954 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java @@ -29,8 +29,8 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.spelling.AbstractLuceneSpellChecker; @@ -622,7 +622,7 @@ public void testThresholdTokenFrequency() throws Exception { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap<>()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -635,7 +635,7 @@ public void testThresholdTokenFrequency() throws Exception { params.add(SpellingParams.SPELLCHECK_DICT, "threshold_direct"); rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap<>()); - req = new LocalSolrQueryRequest(core, params); + req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); values = rsp.getValues(); diff --git a/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java index 0476aa583bf5..d2fe25fdcec6 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java @@ -51,8 +51,8 @@ import org.apache.solr.core.SolrCore; import org.apache.solr.handler.component.StatsField.HllOptions; import org.apache.solr.handler.component.StatsField.Stat; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.schema.SchemaField; import org.apache.solr.util.hll.HLL; @@ -571,7 +571,7 @@ public void testFieldStatisticsResultsDateField() { args.put(StatsParams.STATS_FIELD, "active_dt"); args.put("f.active_dt.stats.calcdistinct", "true"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test date statistics values", @@ -604,7 +604,7 @@ public void testFieldStatisticsResultsDateFieldOverflow() { args.put(StatsParams.STATS, "true"); args.put(StatsParams.STATS_FIELD, "active_dt"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test date statistics values", @@ -911,7 +911,7 @@ public void testFieldStatisticsResultsNumericFieldAlwaysMissing() { args.put(StatsParams.STATS, "true"); args.put(StatsParams.STATS_FIELD, "active_i"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test string statistics values", @@ -949,7 +949,7 @@ public void testFieldStatisticsResultsStringFieldAlwaysMissing() { args.put(StatsParams.STATS, "true"); args.put(StatsParams.STATS_FIELD, "active_s"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test string statistics values", @@ -982,7 +982,7 @@ public void testFieldStatisticsResultsDateFieldAlwaysMissing() { args.put(StatsParams.STATS, "true"); args.put(StatsParams.STATS_FIELD, "active_dt"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test string statistics values", @@ -1046,7 +1046,7 @@ public void testStatsExcludeFilterQuery() { args.put(StatsParams.STATS, "true"); args.put(StatsParams.STATS_FIELD, "{!ex=id}id_i"); args.put("fq", "{!tag=id}id_i:[2 TO 3]"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test excluding filter query", @@ -1059,7 +1059,7 @@ public void testStatsExcludeFilterQuery() { args.put(StatsParams.STATS, "true"); args.put(StatsParams.STATS_FIELD, "{!key=id2}id_i"); args.put("fq", "{!tag=id}id_i:[2 TO 3]"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test rename field", @@ -1105,7 +1105,7 @@ public void testFieldStatisticsDocValuesAndMultiValued() throws Exception { args.put(StatsParams.STATS, "true"); args.put(StatsParams.STATS_FIELD, "cat_docValues"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test min/max on docValues and multiValued", @@ -1156,7 +1156,7 @@ public void testFieldStatisticsDocValuesAndMultiValuedInteger() throws Exception args.put(StatsParams.STATS_CALC_DISTINCT, "true"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "test min/max on docValues and multiValued", @@ -1215,7 +1215,7 @@ public void testFieldStatisticsDocValuesAndMultiValuedIntegerFacetStats() throws args.put(StatsParams.STATS_CALC_DISTINCT, "true"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQEx("can not use FieldCache on multivalued field: cat_intDocValues", req, 400); } diff --git a/solr/core/src/test/org/apache/solr/handler/export/TestExportWriter.java b/solr/core/src/test/org/apache/solr/handler/export/TestExportWriter.java index 84b413c9f8e5..62378ddbf159 100644 --- a/solr/core/src/test/org/apache/solr/handler/export/TestExportWriter.java +++ b/solr/core/src/test/org/apache/solr/handler/export/TestExportWriter.java @@ -950,7 +950,7 @@ private void testSortingOutput() throws Exception { "sortabledv_udvas asc")); assertTrue( "Should have 400 status when exporting sortabledv_m, it does not have useDocValuesAsStored='true'", - s.contains("\"status\":400}")); + s.contains("\"status\":400")); assertTrue( "Should have a cause when exporting sortabledv_m, it does not have useDocValuesAsStored='true'", s.contains("includeStoredFields=true")); @@ -968,7 +968,7 @@ private void testSortingOutput() throws Exception { "sortabledv_udvas asc")); assertTrue( "Should have 400 status when exporting sortabledv, it does not have useDocValuesAsStored='true'", - s.contains("\"status\":400}")); + s.contains("\"status\":400")); assertTrue( "Should have a cause when exporting sortabledv, it does not have useDocValuesAsStored='true'", s.contains("includeStoredFields=true")); diff --git a/solr/core/src/test/org/apache/solr/request/TestSolrRequestInfo.java b/solr/core/src/test/org/apache/solr/request/TestSolrRequestInfo.java index 0864a67d43fe..42d1f66dc8c0 100644 --- a/solr/core/src/test/org/apache/solr/request/TestSolrRequestInfo.java +++ b/solr/core/src/test/org/apache/solr/request/TestSolrRequestInfo.java @@ -39,7 +39,7 @@ public static void beforeClass() throws Exception { public void testCloseHookTwice() { final SolrRequestInfo info = new SolrRequestInfo( - new LocalSolrQueryRequest(h.getCore(), params()), new SolrQueryResponse()); + new SolrQueryRequestBase(h.getCore(), params()), new SolrQueryResponse()); AtomicInteger counter = new AtomicInteger(); info.addCloseHook(counter::incrementAndGet); SolrRequestInfo.setRequestInfo(info); @@ -54,7 +54,7 @@ public void testCloseHookTwice() { public void testThreadPool() throws InterruptedException { final SolrRequestInfo info = new SolrRequestInfo( - new LocalSolrQueryRequest(h.getCore(), params()), new SolrQueryResponse()); + new SolrQueryRequestBase(h.getCore(), params()), new SolrQueryResponse()); AtomicInteger counter = new AtomicInteger(); SolrRequestInfo.setRequestInfo(info); @@ -89,10 +89,10 @@ public void testThreadPool() throws InterruptedException { */ public void testLimitsMaintained() { try { - LocalSolrQueryRequest timeAllowed1000 = - new LocalSolrQueryRequest(h.getCore(), params("timeAllowed", "1000")); - LocalSolrQueryRequest timeAllowed20000 = - new LocalSolrQueryRequest(h.getCore(), params("timeAllowed", "20000")); + SolrQueryRequestBase timeAllowed1000 = + new SolrQueryRequestBase(h.getCore(), params("timeAllowed", "1000")); + SolrQueryRequestBase timeAllowed20000 = + new SolrQueryRequestBase(h.getCore(), params("timeAllowed", "20000")); assertNull(timeAllowed1000.getContext().get(LIMITS_KEY)); assertNull(timeAllowed20000.getContext().get(LIMITS_KEY)); diff --git a/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java b/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java index 9c368baa91de..4b12fe7a09d7 100644 --- a/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java +++ b/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java @@ -43,8 +43,8 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.Utils; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.ReturnFields; import org.apache.solr.search.SolrReturnFields; import org.junit.BeforeClass; @@ -157,7 +157,7 @@ public void test10Docs() throws IOException { SolrDocumentList l = constructSolrDocList(response); ByteArrayOutputStream baos = new ByteArrayOutputStream(); new SmileResponseWriter() - .write(baos, new LocalSolrQueryRequest(null, new ModifiableSolrParams()), response); + .write(baos, new SolrQueryRequestBase(null, new ModifiableSolrParams()), response); byte[] bytes = baos.toByteArray(); Map m = (Map) decodeSmile(new ByteArrayInputStream(bytes, 0, bytes.length)); diff --git a/solr/core/src/test/org/apache/solr/response/TestFileStreamResponseWriter.java b/solr/core/src/test/org/apache/solr/response/TestFileStreamResponseWriter.java index 5852aefbe145..01e4064cbd25 100644 --- a/solr/core/src/test/org/apache/solr/response/TestFileStreamResponseWriter.java +++ b/solr/core/src/test/org/apache/solr/response/TestFileStreamResponseWriter.java @@ -25,8 +25,8 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.admin.api.ReplicationAPIBase; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.junit.Test; public class TestFileStreamResponseWriter extends SolrTestCase { @@ -34,7 +34,7 @@ public class TestFileStreamResponseWriter extends SolrTestCase { @Test public void testWriteWithRawWriter() throws IOException { FileStreamResponseWriter writer = new FileStreamResponseWriter(); - SolrQueryRequest request = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + SolrQueryRequest request = new SolrQueryRequestBase(null, new ModifiableSolrParams()); SolrQueryResponse response = new SolrQueryResponse(); // Create a mock RawWriter @@ -56,7 +56,7 @@ public void testWriteWithRawWriter() throws IOException { @Test public void testWriteWithoutRawWriter() throws IOException { FileStreamResponseWriter writer = new FileStreamResponseWriter(); - SolrQueryRequest request = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + SolrQueryRequest request = new SolrQueryRequestBase(null, new ModifiableSolrParams()); SolrQueryResponse response = new SolrQueryResponse(); // Don't add any RawWriter to the response @@ -72,7 +72,7 @@ public void testWriteWithoutRawWriter() throws IOException { @Test public void testGetContentTypeWithRawWriter() { FileStreamResponseWriter writer = new FileStreamResponseWriter(); - SolrQueryRequest request = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + SolrQueryRequest request = new SolrQueryRequestBase(null, new ModifiableSolrParams()); SolrQueryResponse response = new SolrQueryResponse(); // Create a mock RawWriter with custom content type @@ -90,7 +90,7 @@ public void testGetContentTypeWithRawWriter() { @Test public void testGetContentTypeWithoutRawWriter() { FileStreamResponseWriter writer = new FileStreamResponseWriter(); - SolrQueryRequest request = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + SolrQueryRequest request = new SolrQueryRequestBase(null, new ModifiableSolrParams()); SolrQueryResponse response = new SolrQueryResponse(); // Don't add any RawWriter to the response @@ -106,7 +106,7 @@ public void testGetContentTypeWithoutRawWriter() { @Test public void testGetContentTypeWithRawWriterReturningNull() { FileStreamResponseWriter writer = new FileStreamResponseWriter(); - SolrQueryRequest request = new LocalSolrQueryRequest(null, new ModifiableSolrParams()); + SolrQueryRequest request = new SolrQueryRequestBase(null, new ModifiableSolrParams()); SolrQueryResponse response = new SolrQueryResponse(); // Create a mock RawWriter that returns null for content type diff --git a/solr/core/src/test/org/apache/solr/response/TestJavaBinResponseWriter.java b/solr/core/src/test/org/apache/solr/response/TestJavaBinResponseWriter.java index e5becc61dc22..48d990562923 100644 --- a/solr/core/src/test/org/apache/solr/response/TestJavaBinResponseWriter.java +++ b/solr/core/src/test/org/apache/solr/response/TestJavaBinResponseWriter.java @@ -29,8 +29,8 @@ import org.apache.solr.common.util.ByteUtils; import org.apache.solr.common.util.JavaBinCodec; import org.apache.solr.common.util.NamedList; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.JavaBinResponseWriter.Resolver; import org.apache.solr.search.SolrReturnFields; import org.junit.BeforeClass; @@ -72,7 +72,7 @@ public void testUUID() throws Exception { String s = UUID.randomUUID().toString().toLowerCase(Locale.ROOT); assertU(adoc("id", "101", "uuid", s)); assertU(commit()); - LocalSolrQueryRequest req = lrf.makeRequest("q", "*:*"); + SolrQueryRequestBase req = lrf.makeRequest("q", "*:*"); SolrQueryResponse rsp = h.queryAndResponse(req.getParams().get(CommonParams.QT), req); ByteArrayOutputStream baos = new ByteArrayOutputStream(); h.getCore().getQueryResponseWriter("javabin").write(baos, req, rsp); @@ -109,7 +109,7 @@ public void testOmitHeader() throws Exception { } public void testResolverSolrDocumentPartialFields() throws Exception { - LocalSolrQueryRequest req = + SolrQueryRequestBase req = lrf.makeRequest( "q", "*:*", "fl", "id,xxx,ddd_s"); diff --git a/solr/core/src/test/org/apache/solr/response/TestPushWriter.java b/solr/core/src/test/org/apache/solr/response/TestPushWriter.java index bbfb4500d85b..08e01b3830b7 100644 --- a/solr/core/src/test/org/apache/solr/response/TestPushWriter.java +++ b/solr/core/src/test/org/apache/solr/response/TestPushWriter.java @@ -33,7 +33,7 @@ import org.apache.solr.common.util.JavaBinCodec; import org.apache.solr.common.util.TextWriter; import org.apache.solr.common.util.Utils; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.util.BaseTestHarness; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +49,7 @@ public void testStandardResponse() throws IOException { JSONWriter pw = new JSONWriter( osw, - new LocalSolrQueryRequest(null, new ModifiableSolrParams()), + new SolrQueryRequestBase(null, new ModifiableSolrParams()), new SolrQueryResponse()); writeData(null, pw); osw.flush(); @@ -73,7 +73,7 @@ public void testXmlWriter() throws Exception { XMLWriter xml = new XMLWriter( osw, - new LocalSolrQueryRequest(null, new ModifiableSolrParams()), + new SolrQueryRequestBase(null, new ModifiableSolrParams()), new SolrQueryResponse()); writeData(null, xml); osw.flush(); diff --git a/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java b/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java index 9e43e0c8a6e5..3812bd1fc487 100644 --- a/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java +++ b/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java @@ -24,11 +24,10 @@ import java.util.Properties; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.util.NamedList; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.similarities.LMJelinekMercerSimilarityFactory; import org.apache.solr.search.similarities.SchemaSimilarityFactory; import org.apache.solr.update.AddUpdateCommand; @@ -77,7 +76,8 @@ public static void beforeClass() throws Exception { private void addDoc(SolrCore core, String... fieldValues) throws IOException { UpdateHandler updater = core.getUpdateHandler(); - AddUpdateCommand cmd = new AddUpdateCommand(new LocalSolrQueryRequest(core, new NamedList<>())); + AddUpdateCommand cmd = + new AddUpdateCommand(new SolrQueryRequestBase(core, new ModifiableSolrParams())); cmd.solrDoc = sdoc((Object[]) fieldValues); updater.addDoc(cmd); } @@ -121,7 +121,7 @@ public void testOptimizeDiffSchemas() throws Exception { addDoc(changed, "id", "2", "which", "15", "text", "some stuff with which"); addDoc(changed, "id", "3", "which", "15", "text", "some stuff with which"); addDoc(changed, "id", "4", "which", "15", "text", "some stuff with which"); - SolrQueryRequest req = new LocalSolrQueryRequest(changed, new NamedList<>()); + SolrQueryRequest req = new SolrQueryRequestBase(changed, new ModifiableSolrParams()); changed.getUpdateHandler().commit(new CommitUpdateCommand(req, false)); // write the new schema out and make it current diff --git a/solr/core/src/test/org/apache/solr/schema/CopyFieldTest.java b/solr/core/src/test/org/apache/solr/schema/CopyFieldTest.java index a09c5003d36b..d5a5db8e9119 100644 --- a/solr/core/src/test/org/apache/solr/schema/CopyFieldTest.java +++ b/solr/core/src/test/org/apache/solr/schema/CopyFieldTest.java @@ -22,8 +22,8 @@ import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.MapSolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.junit.BeforeClass; import org.junit.Test; @@ -155,7 +155,7 @@ public void testCopyFieldFunctionality() { Map args = new HashMap<>(); args.put(CommonParams.Q, "text_en:simple"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "Make sure they got in", @@ -166,7 +166,7 @@ public void testCopyFieldFunctionality() { args = new HashMap<>(); args.put(CommonParams.Q, "highlight:simple"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "dynamic source", req, @@ -177,13 +177,13 @@ public void testCopyFieldFunctionality() { args = new HashMap<>(); args.put(CommonParams.Q, "text_en:functionality"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ("Make sure they got in", req, "//*[@numFound='1']"); args = new HashMap<>(); args.put(CommonParams.Q, "highlight:functionality"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ("dynamic source", req, "//*[@numFound='0']"); } @@ -231,14 +231,14 @@ public void testExplicitSourceGlob() { Map args = new HashMap<>(); args.put(CommonParams.Q, "text:AAM46"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "sku2 copied to text", req, "//*[@numFound='1']", "//result/doc[1]/str[@name='id'][.='5']"); args = new HashMap<>(); args.put(CommonParams.Q, "1_s:10-1839ACX-93"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "sku1 copied to dynamic dest *_s", req, @@ -249,13 +249,13 @@ public void testExplicitSourceGlob() { args = new HashMap<>(); args.put(CommonParams.Q, "1_dest_sub_s:10-1839ACX-93"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ("sku1 copied to *_dest_sub_s (*_s subset pattern)", req, "//*[@numFound='1']"); args = new HashMap<>(); args.put(CommonParams.Q, "dest_sub_no_ast_s:AAM46"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "sku2 copied to dest_sub_no_ast_s (*_s subset pattern no asterisk)", req, @@ -281,7 +281,7 @@ public void testSourceGlobMatchesNoDynamicOrExplicitField() { Map args = new HashMap<>(); args.put(CommonParams.Q, "text:AAM46"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "sku2 copied to text", req, "//*[@numFound='1']", "//result/doc[1]/str[@name='id'][.='5']"); } diff --git a/solr/core/src/test/org/apache/solr/schema/IndexSchemaRuntimeFieldTest.java b/solr/core/src/test/org/apache/solr/schema/IndexSchemaRuntimeFieldTest.java index 12aba6b99a8b..f9ae79ae9c64 100644 --- a/solr/core/src/test/org/apache/solr/schema/IndexSchemaRuntimeFieldTest.java +++ b/solr/core/src/test/org/apache/solr/schema/IndexSchemaRuntimeFieldTest.java @@ -19,8 +19,8 @@ import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.junit.BeforeClass; import org.junit.Test; @@ -53,7 +53,7 @@ public void testRuntimeFieldCreation() { SolrQuery query = new SolrQuery(fieldName + ":aaa"); query.set("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, query); + SolrQueryRequest req = new SolrQueryRequestBase(core, query); assertQ( "Make sure they got in", diff --git a/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java b/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java index 16b0490b33d8..dd9bc69ee7ba 100644 --- a/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java +++ b/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java @@ -25,8 +25,8 @@ import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.MapSolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.junit.BeforeClass; import org.junit.Test; @@ -54,7 +54,7 @@ public void testDynamicCopy() { Map args = new HashMap<>(); args.put(CommonParams.Q, "title:test"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "Make sure they got in", @@ -65,13 +65,13 @@ public void testDynamicCopy() { args = new HashMap<>(); args.put(CommonParams.Q, "aaa_dynamic:aaa"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ("dynamic source", req, "//*[@numFound='1']", "//result/doc[1]/str[@name='id'][.='10']"); args = new HashMap<>(); args.put(CommonParams.Q, "dynamic_aaa:aaa"); args.put("indent", "true"); - req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "dynamic destination", req, diff --git a/solr/core/src/test/org/apache/solr/search/SignificantTermsQParserPluginTest.java b/solr/core/src/test/org/apache/solr/search/SignificantTermsQParserPluginTest.java index a961ebd17e29..b3d70a8d1bd8 100644 --- a/solr/core/src/test/org/apache/solr/search/SignificantTermsQParserPluginTest.java +++ b/solr/core/src/test/org/apache/solr/search/SignificantTermsQParserPluginTest.java @@ -32,8 +32,8 @@ import org.apache.solr.common.params.SolrParams; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.component.ResponseBuilder; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.CommitUpdateCommand; @@ -132,7 +132,7 @@ public void testCollectionWithDocuments() throws Exception { } private void addTestDocs(SolrCore core) throws IOException { - SolrQueryRequest coreReq = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest coreReq = new SolrQueryRequestBase(core, new ModifiableSolrParams()); AddUpdateCommand cmd = new AddUpdateCommand(coreReq); cmd.solrDoc = new SolrInputDocument(); cmd.solrDoc.addField("id", "1"); @@ -144,7 +144,7 @@ private void addTestDocs(SolrCore core) throws IOException { } private void deleteTestDocs(SolrCore core) throws IOException { - SolrQueryRequest coreReq = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest coreReq = new SolrQueryRequestBase(core, new ModifiableSolrParams()); DeleteUpdateCommand cmd = new DeleteUpdateCommand(coreReq); cmd.id = "1"; core.getUpdateHandler().delete(cmd); diff --git a/solr/core/src/test/org/apache/solr/search/SpatialFilterTest.java b/solr/core/src/test/org/apache/solr/search/SpatialFilterTest.java index 48a837cd3f96..9dabe29c6093 100644 --- a/solr/core/src/test/org/apache/solr/search/SpatialFilterTest.java +++ b/solr/core/src/test/org/apache/solr/search/SpatialFilterTest.java @@ -201,7 +201,7 @@ private void checkHits( ModifiableSolrParams params = new ModifiableSolrParams(); params.add(SpatialParams.POINT, "5.0,5.0"); params.add(SpatialParams.DISTANCE, "3"); - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), "", "", 0, 10, new HashMap()); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), "", "", 0, 10, new HashMap()); SpatialFilterQParserPlugin parserPlugin; Query query; @@ -217,7 +217,7 @@ private void checkHits( params = new ModifiableSolrParams(); params.add(SpatialParams.POINT, "5.0"); params.add(SpatialParams.DISTANCE, "3"); - req = new LocalSolrQueryRequest(h.getCore(), "", "", 0, 10, new HashMap()); + req = new SolrQueryRequestBase(h.getCore(), "", "", 0, 10, new HashMap()); parser = parserPlugin.createParser("'foo'", local, params, req); query = parser.parse(); assertNotNull("Query is null", query); diff --git a/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java b/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java index 9d5fed992043..890b9de75db4 100644 --- a/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java +++ b/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java @@ -43,7 +43,7 @@ import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.metrics.SolrMetricsContext; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.util.CryptoKeys; @@ -88,13 +88,8 @@ boolean isSolrThread() { final CryptoKeys.RSAKeyPair aKeyPair = new CryptoKeys.RSAKeyPair(); - final LocalSolrQueryRequest localSolrQueryRequest = - new LocalSolrQueryRequest(null, new ModifiableSolrParams()) { - @Override - public Principal getUserPrincipal() { - return principal.get(); - } - }; + final SolrQueryRequestBase solrQueryRequestBase = + new SolrQueryRequestBase(null, new ModifiableSolrParams()); String headerKey; HttpServletRequest mockReq; @@ -146,8 +141,8 @@ public void tearDown() throws Exception { public void testBasicRequest() throws Exception { String username = "solr user"; // with spaces - principal.set(new BasicUserPrincipal(username)); - mock.solrRequestInfo = new SolrRequestInfo(localSolrQueryRequest, new SolrQueryResponse()); + solrQueryRequestBase.setUserPrincipalName(username); + mock.solrRequestInfo = new SolrRequestInfo(solrQueryRequestBase, new SolrQueryResponse()); mockSetHeaderOnRequest(); header.set(request.getFirstHeader(headerKey)); assertNotNull(header.get()); @@ -210,7 +205,7 @@ public void testProtocolMismatch() throws Exception { mockMetrics(mock); principal.set(new BasicUserPrincipal("solr")); - mock.solrRequestInfo = new SolrRequestInfo(localSolrQueryRequest, new SolrQueryResponse()); + mock.solrRequestInfo = new SolrRequestInfo(solrQueryRequestBase, new SolrQueryResponse()); mockSetHeaderOnRequest(); HttpServletResponse response = mock(HttpServletResponse.class); diff --git a/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java b/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java index f7687441d029..0b561c90c45d 100644 --- a/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java +++ b/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java @@ -33,8 +33,8 @@ import org.apache.solr.core.SolrCore; import org.apache.solr.handler.component.SearchComponent; import org.apache.solr.handler.component.SpellCheckComponent; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.SolrQueryResponse; import org.junit.BeforeClass; @@ -151,7 +151,7 @@ public void testCollationWithRangeQuery() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -184,7 +184,7 @@ public void testCollationWithHypens() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -204,7 +204,7 @@ public void testCollationWithHypens() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.add("responseHeader", new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -295,7 +295,7 @@ public void testCollateWithFilter() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -330,7 +330,7 @@ public void testCollateWithMultipleRequestHandlers() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -345,7 +345,7 @@ public void testCollateWithMultipleRequestHandlers() { handler = core.getRequestHandler("/spellCheckCompRH1"); rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - req = new LocalSolrQueryRequest(core, params); + req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); values = rsp.getValues(); @@ -378,7 +378,7 @@ public void testExtendedCollate() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -395,7 +395,7 @@ public void testExtendedCollate() { handler = core.getRequestHandler("/spellCheckCompRH"); rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - req = new LocalSolrQueryRequest(core, params); + req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); values = rsp.getValues(); @@ -413,7 +413,7 @@ public void testExtendedCollate() { handler = core.getRequestHandler("/spellCheckCompRH"); rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - req = new LocalSolrQueryRequest(core, params); + req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); values = rsp.getValues(); @@ -433,7 +433,7 @@ public void testExtendedCollate() { handler = core.getRequestHandler("/spellCheckCompRH"); rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - req = new LocalSolrQueryRequest(core, params); + req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); values = rsp.getValues(); @@ -489,7 +489,7 @@ public void testCollateWithGrouping() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -717,7 +717,7 @@ public void testZeroTries() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); @@ -747,7 +747,7 @@ public void testWithCursorMark() { SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH"); SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); handler.handleRequest(req, rsp); req.close(); NamedList values = rsp.getValues(); diff --git a/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java b/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java index 5f9314f9838e..963796a1b275 100644 --- a/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java +++ b/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java @@ -64,8 +64,8 @@ import org.apache.solr.common.util.JavaBinCodec; import org.apache.solr.common.util.SolrNamedThreadFactory; import org.apache.solr.handler.loader.XMLLoader; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.util.RandomNoReverseMergePolicyFactory; import org.apache.solr.util.RefCounted; @@ -977,7 +977,7 @@ private void attachSubDocs(Document document, Element parent, String relation, i } private void indexSolrInputDocumentsDirectly(SolrInputDocument... docs) throws IOException { - SolrQueryRequest coreReq = new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams()); + SolrQueryRequest coreReq = new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams()); AddUpdateCommand updateCmd = new AddUpdateCommand(coreReq); for (SolrInputDocument doc : docs) { updateCmd.solrDoc = doc; diff --git a/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java b/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java index 7449586b4468..725e19a794f5 100644 --- a/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java @@ -35,8 +35,8 @@ import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrEventListener; import org.apache.solr.index.TieredMergePolicyFactory; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.util.LogLevel; import org.apache.solr.util.SolrMetricTestUtils; @@ -346,7 +346,7 @@ public void testAddRollback() throws Exception { Map args = new HashMap<>(); args.put(CommonParams.Q, "id:A OR id:B"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "\"B\" should not be found.", req, @@ -410,7 +410,7 @@ public void testDeleteRollback() throws Exception { Map args = new HashMap<>(); args.put(CommonParams.Q, "id:A OR id:B"); args.put("indent", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequest req = new SolrQueryRequestBase(core, new MapSolrParams(args)); assertQ( "\"A\" and \"B\" should be found.", req, diff --git a/solr/core/src/test/org/apache/solr/update/SolrIndexSplitterTest.java b/solr/core/src/test/org/apache/solr/update/SolrIndexSplitterTest.java index cc22a6120a16..d7f7fa4f2e11 100644 --- a/solr/core/src/test/org/apache/solr/update/SolrIndexSplitterTest.java +++ b/solr/core/src/test/org/apache/solr/update/SolrIndexSplitterTest.java @@ -36,7 +36,7 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.core.DirectoryFactory; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.junit.Before; import org.junit.BeforeClass; @@ -82,7 +82,7 @@ public void testSplitByPathsLink() throws Exception { } private void doTestSplitByPaths(SolrIndexSplitter.SplitMethod splitMethod) throws Exception { - LocalSolrQueryRequest request = null; + SolrQueryRequestBase request = null; try { // add two docs String id1 = "dorothy"; @@ -169,7 +169,7 @@ public void testSplitDeletesLink() throws Exception { } private void doTestSplitDeletes(SolrIndexSplitter.SplitMethod splitMethod) throws Exception { - LocalSolrQueryRequest request = null; + SolrQueryRequestBase request = null; try { // add two docs String id1 = "dorothy"; @@ -272,7 +272,7 @@ private void doTestSplitByCores(SolrIndexSplitter.SplitMethod splitMethod) throw .create( "split2", Map.of("dataDir", indexDir2.toString(), "configSet", "cloud-minimal")); - LocalSolrQueryRequest request = null; + SolrQueryRequestBase request = null; try { request = lrf.makeRequest("q", "dummy"); SolrQueryResponse rsp = new SolrQueryResponse(); @@ -330,7 +330,7 @@ public void testSplitAlternatelyLink() throws Exception { } private void doTestSplitAlternately(SolrIndexSplitter.SplitMethod splitMethod) throws Exception { - LocalSolrQueryRequest request = null; + SolrQueryRequestBase request = null; Directory directory = null; try { // add an even number of docs @@ -441,7 +441,7 @@ private void doTestSplitByRouteKey(SolrIndexSplitter.SplitMethod splitMethod) th DocRouter.Range splitKeyRange = r1.keyHashRange(splitKey); - LocalSolrQueryRequest request = null; + SolrQueryRequestBase request = null; Directory directory = null; try { request = lrf.makeRequest("q", "dummy"); @@ -532,7 +532,7 @@ public void doTestSplitWithChildDocs(SolrIndexSplitter.SplitMethod splitMethod) .create( "split2", Map.of("dataDir", indexDir2.toString(), "configSet", "cloud-minimal")); - LocalSolrQueryRequest request = null; + SolrQueryRequestBase request = null; try { request = lrf.makeRequest("q", "dummy"); SolrQueryResponse rsp = new SolrQueryResponse(); diff --git a/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java index c464bd4c5618..370303ef0f1c 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/AtomicUpdateProcessorFactoryTest.java @@ -25,8 +25,8 @@ import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.junit.BeforeClass; @@ -46,7 +46,7 @@ public void testWrongAtomicOpPassed() throws Exception { .add("processor", "Atomic") .add("atomic.cat", "delete") .add("commit", "true"); - try (SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params)) { + try (SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params)) { AddUpdateCommand cmd = new AddUpdateCommand(req); AtomicUpdateProcessorFactory factory = new AtomicUpdateProcessorFactory(); factory.inform(h.getCore()); @@ -64,7 +64,7 @@ public void testNoUniqueIdPassed() throws Exception { // TODO .add("processor", "atomic") .add("atomic.cat", "add") .add("commit", "true"); - try (SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params)) { + try (SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params)) { AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = new SolrInputDocument(); cmd.solrDoc.addField("title", 1); @@ -87,7 +87,7 @@ public void testBasics() throws Exception { .add("atomic.name_s", "set") .add("atomic.multiDefault", "set") .add("commit", "true"); - try (SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params)) { + try (SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params)) { AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = new SolrInputDocument(); @@ -128,7 +128,7 @@ public void testBasics() throws Exception { .add("atomic.name_s", "remove") .add("atomic.multiDefault", "removeregex") .add("commit", "true"); - try (SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params)) { + try (SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params)) { AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = new SolrInputDocument(); @@ -194,7 +194,7 @@ public void run() { .add("atomic.cat", "add") .add("atomic.int_i", "inc") .add("commit", "true"); - try (SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params)) { + try (SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), params)) { AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = new SolrInputDocument(); cmd.solrDoc.addField("id", 10); // hardcoded id=10 diff --git a/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java index 58be0854dac6..d5b65a23341f 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/DefaultValueUpdateProcessorTest.java @@ -25,8 +25,8 @@ import org.apache.solr.common.SolrInputField; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; @@ -116,7 +116,7 @@ SolrInputDocument processAdd(final String chain, final SolrInputDocument docIn) SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); try { SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp)); AddUpdateCommand cmd = new AddUpdateCommand(req); diff --git a/solr/core/src/test/org/apache/solr/update/processor/DistributedUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/DistributedUpdateProcessorTest.java index 341f73fdabd7..2261e73170af 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/DistributedUpdateProcessorTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/DistributedUpdateProcessorTest.java @@ -32,8 +32,8 @@ import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.ExecutorUtil; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.DeleteUpdateCommand; import org.apache.solr.update.SolrCmdDistributor; @@ -63,7 +63,7 @@ public static void afterClass() { @Test public void testShouldBufferUpdateZk() throws IOException { - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams()); try (DistributedUpdateProcessor processor = new DistributedUpdateProcessor(req, null, null, null)) { AddUpdateCommand cmd = new AddUpdateCommand(req); @@ -80,7 +80,7 @@ public void testShouldBufferUpdateZk() throws IOException { @Test public void testVersionAdd() throws IOException { - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams()); int threads = 5; Function versionAddFunc = (DistributedUpdateProcessor process) -> { @@ -104,7 +104,7 @@ public void testVersionAdd() throws IOException { @Test public void testVersionDelete() throws IOException { - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams()); int threads = 5; Function versionDeleteFunc = diff --git a/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java index 71933920415b..1ad7ea65407c 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactoryTest.java @@ -20,8 +20,8 @@ import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.CommitUpdateCommand; @@ -72,7 +72,7 @@ SolrQueryResponse processCommit(final String chain, boolean optimize, Boolean co assertNotNull("No Chain named: " + chain, pc); SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); if (commitEndPoint != null) { ((ModifiableSolrParams) req.getParams()) diff --git a/solr/core/src/test/org/apache/solr/update/processor/SignatureUpdateProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/SignatureUpdateProcessorFactoryTest.java index e7678b5f12b6..a492d60be4ef 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/SignatureUpdateProcessorFactoryTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/SignatureUpdateProcessorFactoryTest.java @@ -31,8 +31,8 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.UpdateRequestHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.junit.Before; import org.junit.BeforeClass; @@ -292,7 +292,7 @@ public void testNonStringFieldsValues() throws Exception { ureq.add(doc); } - LocalSolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), mmparams); + SolrQueryRequestBase req = new SolrQueryRequestBase(h.getCore(), mmparams); try { req.setContentStreams( Collections.singletonList(ContentStreamBase.create(new JavaBinRequestWriter(), ureq))); diff --git a/solr/core/src/test/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactoryTest.java index 19752e1ac7fc..222ff38bbf69 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactoryTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactoryTest.java @@ -26,9 +26,10 @@ import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.NamedList; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.processor.SkipExistingDocumentsProcessorFactory.SkipExistingDocumentsUpdateProcessor; @@ -40,8 +41,8 @@ public class SkipExistingDocumentsProcessorFactoryTest extends SolrTestCaseJ4 { private BytesRef docId = new BytesRef(); - @SuppressWarnings({"rawtypes"}) - private SolrQueryRequest defaultRequest = new LocalSolrQueryRequest(null, new NamedList()); + private SolrQueryRequest defaultRequest = + new SolrQueryRequestBase(null, new ModifiableSolrParams()); @BeforeClass public static void beforeClass() { @@ -168,9 +169,9 @@ public void testSkipInsertsFalseIfInitArgsTrueButFalseStringInRequest() { NamedList initArgs = new NamedList<>(); initArgs.add("skipInsertIfExists", true); factory.init(initArgs); - NamedList requestArgs = new NamedList<>(); + ModifiableSolrParams requestArgs = new ModifiableSolrParams(); requestArgs.add("skipInsertIfExists", "false"); - SolrQueryRequest req = new LocalSolrQueryRequest(null, requestArgs); + SolrQueryRequest req = new SolrQueryRequestBase(null, requestArgs); UpdateRequestProcessor next = Mockito.mock(DistributedUpdateProcessor.class); SkipExistingDocumentsUpdateProcessor processor = @@ -185,9 +186,9 @@ public void testSkipUpdatesFalseIfInitArgsTrueButFalseBooleanInRequest() { NamedList initArgs = new NamedList<>(); initArgs.add("skipUpdateIfMissing", true); factory.init(initArgs); - NamedList requestArgs = new NamedList<>(); - requestArgs.add("skipUpdateIfMissing", false); - SolrQueryRequest req = new LocalSolrQueryRequest(null, requestArgs); + ModifiableSolrParams requestArgs = new ModifiableSolrParams(); + requestArgs.add("skipUpdateIfMissing", "false"); + SolrQueryRequest req = new SolrQueryRequestBase(null, requestArgs); UpdateRequestProcessor next = Mockito.mock(DistributedUpdateProcessor.class); SkipExistingDocumentsUpdateProcessor processor = @@ -203,9 +204,9 @@ public void testSkipUpdatesTrueIfInitArgsFalseButTrueStringInRequest() { initArgs.add("skipInsertIfExists", true); initArgs.add("skipUpdateIfMissing", false); factory.init(initArgs); - NamedList requestArgs = new NamedList<>(); + ModifiableSolrParams requestArgs = new ModifiableSolrParams(); requestArgs.add("skipUpdateIfMissing", "true"); - SolrQueryRequest req = new LocalSolrQueryRequest(null, requestArgs); + SolrQueryRequest req = new SolrQueryRequestBase(null, requestArgs); UpdateRequestProcessor next = Mockito.mock(DistributedUpdateProcessor.class); SkipExistingDocumentsUpdateProcessor processor = diff --git a/solr/core/src/test/org/apache/solr/update/processor/TemplateUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/TemplateUpdateProcessorTest.java index ffa5cdc7d8d5..55ca9d611ee3 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/TemplateUpdateProcessorTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/TemplateUpdateProcessorTest.java @@ -26,7 +26,7 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.Utils; -import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.junit.After; @@ -49,7 +49,7 @@ public void testSimple() throws Exception { var cmd = new AddUpdateCommand( - new LocalSolrQueryRequest( + new SolrQueryRequestBase( null, new ModifiableSolrParams() .add("processor", "template") diff --git a/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java index c057e1013733..bdeb67d65988 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/TolerantUpdateProcessorTest.java @@ -39,8 +39,8 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.util.BaseTestHarness; @@ -450,7 +450,7 @@ protected SolrQueryResponse add( SolrQueryResponse rsp = new SolrQueryResponse(); rsp.add("responseHeader", new SimpleOrderedMap<>()); - SolrQueryRequest req = new LocalSolrQueryRequest(core, requestParams); + SolrQueryRequest req = new SolrQueryRequestBase(core, requestParams); UpdateRequestProcessor processor = null; try { processor = pc.createProcessor(req, rsp); diff --git a/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java b/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java index 468583248299..c6b2e1cd61e6 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/UUIDUpdateProcessorFallbackTest.java @@ -26,8 +26,8 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; @@ -134,7 +134,7 @@ public void testProcessorPrefixReqParam() throws Exception { assertTrue(processorFactory instanceof UUIDUpdateProcessorFactory); SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams()); AddUpdateCommand cmd = new AddUpdateCommand(req); cmd.solrDoc = new SolrInputDocument(); cmd.solrDoc.addField("random_s", "random_val"); @@ -182,7 +182,7 @@ SolrInputDocument processAdd(final String chain, final SolrInputDocument docIn, SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, params); + SolrQueryRequest req = new SolrQueryRequestBase(core, params); try { SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp)); AddUpdateCommand cmd = new AddUpdateCommand(req); diff --git a/solr/modules/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java b/solr/modules/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java index b2e68b9a1b34..6dce932476f8 100644 --- a/solr/modules/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java +++ b/solr/modules/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -36,6 +35,7 @@ import org.apache.solr.client.solrj.response.ClusteringResponse; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; +import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.HighlightParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.ShardParams; @@ -47,8 +47,8 @@ import org.apache.solr.handler.component.SearchComponent; import org.apache.solr.handler.component.ShardRequest; import org.apache.solr.highlight.SolrHighlighter; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.schema.FieldType; import org.apache.solr.schema.IndexSchema; import org.apache.solr.search.DocIterator; @@ -384,17 +384,22 @@ private List getDocuments( highlighter = // never null ((HighlightComponent) core.getSearchComponents().get(HighlightComponent.COMPONENT_NAME)) .getHighlighter(new ModifiableSolrParams().add(HighlightParams.METHOD, "original")); - Map args = new HashMap<>(); - args.put(HighlightParams.FIELDS, fieldsToCluster); - args.put(HighlightParams.HIGHLIGHT, "true"); + ModifiableSolrParams params = new ModifiableSolrParams(); + params.set(HighlightParams.FIELDS, fieldsToCluster); + params.set(HighlightParams.HIGHLIGHT, "true"); // We don't want any highlight marks. - args.put(HighlightParams.SIMPLE_PRE, ""); - args.put(HighlightParams.SIMPLE_POST, ""); - args.put(HighlightParams.FRAGSIZE, requestParameters.contextSize()); - args.put(HighlightParams.SNIPPETS, requestParameters.contextCount()); + params.set(HighlightParams.SIMPLE_PRE, ""); + params.set(HighlightParams.SIMPLE_POST, ""); + params.set(HighlightParams.FRAGSIZE, requestParameters.contextSize()); + params.set(HighlightParams.SNIPPETS, requestParameters.contextCount()); // TODO highlight all docs at once instead of 1-by-1 + + params.add(CommonParams.Q, query.toString()); + params.set(CommonParams.START, 0); + params.set(CommonParams.ROWS, 1); + req = - new LocalSolrQueryRequest(core, query.toString(), "", 0, 1, args) { + new SolrQueryRequestBase(core, params) { @Override public SolrIndexSearcher getSearcher() { return indexSearcher; diff --git a/solr/modules/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java b/solr/modules/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java index 90b264649dfc..4194ac2dc3e4 100644 --- a/solr/modules/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java +++ b/solr/modules/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java @@ -40,8 +40,8 @@ import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.component.SearchHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.ResultContext; import org.apache.solr.response.SolrQueryResponse; import org.carrot2.clustering.Cluster; @@ -385,7 +385,7 @@ private List> clusters( SolrQueryResponse rsp = new SolrQueryResponse(); rsp.addResponseHeader(new SimpleOrderedMap<>()); - try (SolrQueryRequest req = new LocalSolrQueryRequest(core, reqParams)) { + try (SolrQueryRequest req = new SolrQueryRequestBase(core, reqParams)) { handler.handleRequest(req, rsp); NamedList values = rsp.getValues(); @SuppressWarnings("unchecked") diff --git a/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/handler/MirroringConfigSetsHandler.java b/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/handler/MirroringConfigSetsHandler.java index 2d6453a2e31a..694eb1c40c18 100644 --- a/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/handler/MirroringConfigSetsHandler.java +++ b/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/handler/MirroringConfigSetsHandler.java @@ -33,8 +33,8 @@ import org.apache.solr.crossdc.common.KafkaMirroringSink; import org.apache.solr.crossdc.common.MirroredSolrRequest; import org.apache.solr.handler.admin.ConfigSetsHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,7 +85,7 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw return; } // fully read all streams and re-package them so they are re-readable - LocalSolrQueryRequest localReq = new LocalSolrQueryRequest(req.getCore(), req.getParams()); + SolrQueryRequestBase localReq = new SolrQueryRequestBase(req.getCore(), req.getParams()); List contentStreams = null; if (req.getContentStreams() != null) { contentStreams = new ArrayList<>(); diff --git a/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringCollectionsHandlerTest.java b/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringCollectionsHandlerTest.java index 56272ddf44a9..d2a7dc33df23 100644 --- a/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringCollectionsHandlerTest.java +++ b/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringCollectionsHandlerTest.java @@ -35,8 +35,8 @@ import org.apache.solr.crossdc.common.KafkaCrossDcConf; import org.apache.solr.crossdc.common.KafkaMirroringSink; import org.apache.solr.crossdc.common.MirroredSolrRequest; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; import org.junit.Before; @@ -126,7 +126,7 @@ private void runCommand(SolrParams params, boolean expectResult) throws Exceptio MirroringCollectionsHandler handler = Mockito.spy(new MirroringCollectionsHandler(coreContainer, sink)); Mockito.doNothing().when(handler).baseHandleRequestBody(Mockito.any(), Mockito.any()); - SolrQueryRequest req = new LocalSolrQueryRequest(null, params); + SolrQueryRequest req = new SolrQueryRequestBase(null, params); SolrQueryResponse rsp = new SolrQueryResponse(); handler.handleRequestBody(req, rsp); if (expectResult) { diff --git a/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringConfigSetsHandlerTest.java b/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringConfigSetsHandlerTest.java index 49b925873128..275fa528385a 100644 --- a/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringConfigSetsHandlerTest.java +++ b/solr/modules/cross-dc/src/test/org/apache/solr/crossdc/handler/MirroringConfigSetsHandlerTest.java @@ -41,8 +41,8 @@ import org.apache.solr.core.SolrXmlConfig; import org.apache.solr.crossdc.common.KafkaMirroringSink; import org.apache.solr.crossdc.common.MirroredSolrRequest; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.util.SolrKafkaTestsIgnoredThreadsFilter; import org.junit.Before; @@ -80,7 +80,7 @@ private static SolrQueryRequest createRequest( String zipResource) throws Exception { ModifiableSolrParams params = new ModifiableSolrParams(); - LocalSolrQueryRequest req = new LocalSolrQueryRequest(solrCore, params); + SolrQueryRequestBase req = new SolrQueryRequestBase(solrCore, params); params.set(ConfigSetParams.ACTION, action.toLower()); String method = "GET"; if (action == ConfigSetParams.ConfigSetAction.UPLOAD) { diff --git a/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTestAbstract.java b/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTestAbstract.java index 7861db5a54ad..805ed278625c 100644 --- a/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTestAbstract.java +++ b/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTestAbstract.java @@ -24,8 +24,8 @@ import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.common.util.NamedList; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.processor.BufferingRequestProcessor; @@ -1046,7 +1046,7 @@ public void testPasswordProtected() throws Exception { SolrQueryResponse loadLocalFromHandler(String handler, String filename, String... args) throws Exception { - try (LocalSolrQueryRequest req = (LocalSolrQueryRequest) req(args)) { + try (SolrQueryRequestBase req = (SolrQueryRequestBase) req(args)) { List cs = new ArrayList<>(); cs.add(new ContentStreamBase.FileStream(getFile(filename))); req.setContentStreams(cs); diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java index c36579d32548..37362c806425 100644 --- a/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java +++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java @@ -29,10 +29,10 @@ import org.apache.lucene.search.Scorer; import org.apache.lucene.search.Weight; import org.apache.solr.common.params.CommonParams; -import org.apache.solr.common.util.NamedList; +import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.DocSet; import org.apache.solr.search.QParser; import org.apache.solr.search.QueryUtils; @@ -203,9 +203,9 @@ public SolrFeatureWeight( } } - private LocalSolrQueryRequest makeRequest( + private SolrQueryRequestBase makeRequest( SolrCore core, String solrQuery, List fqs, String df) { - final NamedList returnList = new NamedList<>(); + final ModifiableSolrParams returnList = new ModifiableSolrParams(); if ((solrQuery != null) && !solrQuery.isEmpty()) { returnList.add(CommonParams.Q, solrQuery); } @@ -218,7 +218,7 @@ private LocalSolrQueryRequest makeRequest( returnList.add(CommonParams.DF, df); } if (returnList.size() > 0) { - return new LocalSolrQueryRequest(core, returnList); + return new SolrQueryRequestBase(core, returnList); } else { return null; } @@ -245,8 +245,7 @@ public float score() throws IOException { try { return in.score(); } catch (UnsupportedOperationException e) { - throw new FeatureException( - e.toString() + ": " + "Unable to extract feature for " + name, e); + throw new FeatureException(e + ": " + "Unable to extract feature for " + name, e); } } } diff --git a/solr/modules/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java b/solr/modules/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java index 86b7d6181d7e..d69918575ce0 100644 --- a/solr/modules/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java +++ b/solr/modules/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java @@ -43,8 +43,8 @@ import org.apache.solr.ltr.model.TestLinearModel; import org.apache.solr.ltr.norm.IdentityNormalizer; import org.apache.solr.ltr.norm.Normalizer; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.search.SolrIndexSearcher; import org.junit.BeforeClass; import org.junit.Test; @@ -112,7 +112,7 @@ public void testRescorer() throws Exception { assertU(commit()); try (SolrQueryRequest solrQueryRequest = - new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams())) { + new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams())) { final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder(); bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD); @@ -162,7 +162,7 @@ public void testDifferentTopN() throws IOException { assertU(commit()); try (SolrQueryRequest solrQueryRequest = - new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams())) { + new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams())) { // Do ordinary BooleanQuery: final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder(); bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD); @@ -235,7 +235,7 @@ public void testDifferentTopN() throws IOException { @Test public void testDocParam() throws Exception { try (SolrQueryRequest solrQueryRequest = - new LocalSolrQueryRequest(h.getCore(), new ModifiableSolrParams())) { + new SolrQueryRequestBase(h.getCore(), new ModifiableSolrParams())) { List features = makeFieldValueFeatures(new int[] {0}, "finalScore"); List norms = new ArrayList( diff --git a/solr/modules/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java b/solr/modules/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java index d1cf55a33858..19842bc42ae1 100644 --- a/solr/modules/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java +++ b/solr/modules/scripting/src/java/org/apache/solr/scripting/update/ScriptUpdateProcessorFactory.java @@ -45,8 +45,8 @@ import org.apache.solr.common.util.SuppressForbidden; import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrResourceLoader; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.CommitUpdateCommand; @@ -220,7 +220,7 @@ public void inform(SolrCore core) { // test that our engines & scripts are valid SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); try { initEngines(req, rsp); } catch (Exception e) { diff --git a/solr/modules/scripting/src/test/org/apache/solr/scripting/xslt/XSLTUpdateRequestHandlerTest.java b/solr/modules/scripting/src/test/org/apache/solr/scripting/xslt/XSLTUpdateRequestHandlerTest.java index e44b6329c208..161b8acfb5ab 100644 --- a/solr/modules/scripting/src/test/org/apache/solr/scripting/xslt/XSLTUpdateRequestHandlerTest.java +++ b/solr/modules/scripting/src/test/org/apache/solr/scripting/xslt/XSLTUpdateRequestHandlerTest.java @@ -25,8 +25,8 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.loader.ContentStreamLoader; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; import org.apache.solr.update.processor.BufferingRequestProcessor; @@ -67,7 +67,7 @@ public void testUpdate() throws Exception { args.put("tr", "xsl-update-handler-test.xsl"); SolrCore core = h.getCore(); - LocalSolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(args)); + SolrQueryRequestBase req = new SolrQueryRequestBase(core, new MapSolrParams(args)); req.setContentStreams(List.of(new ContentStreamBase.StringStream(xml))); SolrQueryResponse rsp = new SolrQueryResponse(); // try (UpdateRequestHandler handler = new UpdateRequestHandler()) { diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java index ed0f2c1109e5..7c572275b10d 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java @@ -20,14 +20,12 @@ import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.core.Is.is; -import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; import org.apache.commons.io.file.PathUtils; import org.apache.lucene.tests.util.LuceneTestCase; import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.embedded.AbstractEmbeddedSolrServerTestCase; import org.apache.solr.client.solrj.request.CoreAdminRequest.Create; import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestRecovery; @@ -106,7 +104,7 @@ public void testCustomUlogDir() throws Exception { } @Test - public void testErrorCases() throws Exception { + public void testErrorCases() { ModifiableSolrParams params = new ModifiableSolrParams(); params.set("action", "BADACTION"); @@ -131,7 +129,7 @@ public void testInvalidCoreNamesAreRejectedWhenCreatingCore() { } @Test - public void testInvalidCoreNamesAreRejectedWhenRenamingExistingCore() throws Exception { + public void testInvalidCoreNamesAreRejectedWhenRenamingExistingCore() { SolrException e = expectThrows( SolrException.class, @@ -267,7 +265,7 @@ public void testCoreSwap() throws Exception { } @Test - public void testInvalidRequestRecovery() throws SolrServerException, IOException { + public void testInvalidRequestRecovery() { RequestRecovery recoverRequestCmd = new RequestRecovery(); recoverRequestCmd.setCoreName("non_existing_core"); expectThrows(SolrException.class, () -> recoverRequestCmd.process(getSolrAdmin())); diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java index 11d1893ae8f0..1d4ded50ca2e 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java @@ -28,8 +28,8 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.handler.component.HttpShardHandlerFactory; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -100,7 +100,7 @@ protected ReplicaListTransformer getReplicaListTransformer(final SolrQueryReques return super.getReplicaListTransformer(req); } }.getReplicaListTransformer( - new LocalSolrQueryRequest(null, new ModifiableSolrParams().add("toyRegEx", regex))); + new SolrQueryRequestBase(null, new ModifiableSolrParams().add("toyRegEx", regex))); } final List inputs = new ArrayList<>(); @@ -143,7 +143,7 @@ protected ReplicaListTransformer getReplicaListTransformer(final SolrQueryReques assertEquals(expectedTransformed, actualTransformed); } - private final List createRandomUrls() throws Exception { + private List createRandomUrls() { final List urls = new ArrayList<>(); maybeAddUrl(urls, "a" + random().nextDouble()); maybeAddUrl(urls, "bb" + random().nextFloat()); @@ -154,7 +154,7 @@ private final List createRandomUrls() throws Exception { return urls; } - private final void maybeAddUrl(final List urls, final String url) { + private void maybeAddUrl(final List urls, final String url) { if (random().nextBoolean()) { urls.add(url); } diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java index 214511c5137e..b3f4e939c477 100644 --- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java +++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java @@ -118,7 +118,6 @@ import org.apache.solr.core.SolrXmlConfig; import org.apache.solr.embedded.JettySolrRunner; import org.apache.solr.handler.UpdateRequestHandler; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestHandler; @@ -1292,7 +1291,7 @@ public static SolrQueryRequest req(SolrParams params, String... moreParams) { for (int i = 0; i < moreParams.length; i += 2) { mp.add(moreParams[i], moreParams[i + 1]); } - return new LocalSolrQueryRequest(h.getCore(), mp); + return new SolrQueryRequestBase(h.getCore(), mp); } /** Necessary to make method signatures un-ambiguous */ @@ -1346,7 +1345,7 @@ public static String updateJ(String json, SolrParams args) throws Exception { args = newArgs; } - LocalSolrQueryRequest req = new LocalSolrQueryRequest(core, args); + SolrQueryRequestBase req = new SolrQueryRequestBase(core, args); if (json != null && !json.isEmpty()) { req.setContentStreams(List.of(new ContentStreamBase.StringStream(json))); } diff --git a/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java b/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java index 5afa8e6b0b73..55afca3fcbd9 100644 --- a/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java +++ b/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java @@ -24,8 +24,8 @@ import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.IOUtils; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.AddUpdateCommand; @@ -58,7 +58,7 @@ protected SolrInputDocument processAdd( SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, requestParams); + SolrQueryRequest req = new SolrQueryRequestBase(core, requestParams); try { SolrRequestInfo.setRequestInfo(new SolrRequestInfo(req, rsp)); AddUpdateCommand cmd = new AddUpdateCommand(req); @@ -84,7 +84,7 @@ protected void processCommit(final String chain) throws IOException { SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); CommitUpdateCommand cmd = new CommitUpdateCommand(req, false); UpdateRequestProcessor processor = pc.createProcessor(req, rsp); @@ -102,7 +102,7 @@ protected void processDeleteById(final String chain, String id) throws IOExcepti SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); DeleteUpdateCommand cmd = new DeleteUpdateCommand(req); cmd.setId(id); @@ -120,7 +120,7 @@ protected void finish(final String chain) throws IOException { assertNotNull("No Chain named: " + chain, pc); SolrQueryResponse rsp = new SolrQueryResponse(); - SolrQueryRequest req = new LocalSolrQueryRequest(core, new ModifiableSolrParams()); + SolrQueryRequest req = new SolrQueryRequestBase(core, new ModifiableSolrParams()); UpdateRequestProcessor processor = pc.createProcessor(req, rsp); try { diff --git a/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java b/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java index a933605466fc..5c14ec7d3f2e 100644 --- a/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java +++ b/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java @@ -28,9 +28,9 @@ import org.apache.solr.client.solrj.response.InputStreamResponseParser; import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CommonParams; +import org.apache.solr.common.params.MultiMapSolrParams; import org.apache.solr.common.util.ContentStreamBase; import org.apache.solr.common.util.NamedList; -import org.apache.solr.common.util.NamedList.NamedListEntry; import org.apache.solr.core.CloudConfig; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.CoreDescriptor; @@ -42,8 +42,8 @@ import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrXmlConfig; import org.apache.solr.logging.MDCSnapshot; -import org.apache.solr.request.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.request.SolrQueryRequestBase; import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.schema.IndexSchema; @@ -288,7 +288,7 @@ public String update(String xml) { * @return null if all good, otherwise the first test that fails. * @exception Exception any exception in the response. * @exception IOException if there is a problem writing the XML - * @see LocalSolrQueryRequest + * @see SolrQueryRequestBase */ public String validateQuery(SolrQueryRequest req, String... tests) throws Exception { @@ -303,7 +303,7 @@ public String validateQuery(SolrQueryRequest req, String... tests) throws Except * @return The XML response to the query * @exception Exception any exception in the response. * @exception IOException if there is a problem writing the XML - * @see LocalSolrQueryRequest + * @see SolrQueryRequestBase */ public String query(SolrQueryRequest req) throws Exception { return query(req.getParams().get(CommonParams.QT), req); @@ -318,7 +318,7 @@ public String query(SolrQueryRequest req) throws Exception { * @return The XML response to the query * @exception Exception any exception in the response. * @exception IOException if there is a problem writing the XML - * @see LocalSolrQueryRequest + * @see SolrQueryRequestBase */ public String query(String handler, SolrQueryRequest req) throws Exception { try (var mdcSnap = MDCSnapshot.create()) { @@ -388,8 +388,7 @@ public LocalRequestFactory getRequestFactory( } /** - * A Factory that generates LocalSolrQueryRequest objects using a specified set of default - * options. + * A Factory that generates SolrQueryRequestBase objects using a specified set of default options. */ public class LocalRequestFactory { public String qtype = null; @@ -400,16 +399,16 @@ public class LocalRequestFactory { public LocalRequestFactory() {} /** - * Creates a LocalSolrQueryRequest based on variable args; for historical reasons, this method + * Creates a SolrQueryRequestBase based on variable args; for historical reasons, this method * has some peculiar behavior: * *
      *
    • If there is a single arg, then it is treated as the "q" param, and the - * LocalSolrQueryRequest consists of that query string along with "qt", "start", and - * "rows" params (based on the qtype, start, and limit properties of this factory) along - * with any other default "args" set on this factory. + * SolrQueryRequestBase consists of that query string along with "qt", "start", and "rows" + * params (based on the qtype, start, and limit properties of this factory) along with any + * other default "args" set on this factory. *
    • If there are multiple args, then there must be an even number of them, and each pair of - * args is used as a key=value param in the LocalSolrQueryRequest. NOTE: In this usage, + * args is used as a key=value param in the SolrQueryRequestBase. NOTE: In this usage, * the "qtype", "start", "limit", and "args" properties of this factory are ignored. *
    * @@ -417,25 +416,24 @@ public LocalRequestFactory() {} * increment the core reference count and decrement it in the request close() method? */ @SuppressWarnings({"unchecked"}) - public LocalSolrQueryRequest makeRequest(String... q) { + public SolrQueryRequestBase makeRequest(String... q) { + args.computeIfAbsent("wt", k -> "xml"); if (q.length == 1) { - args.computeIfAbsent("wt", k -> "xml"); - return new LocalSolrQueryRequest( - TestHarness.this.getCore(), q[0], qtype, start, limit, args); + Map map = new HashMap<>(); + for (Map.Entry e : args.entrySet()) { + map.put(e.getKey(), new String[] {e.getValue()}); + } + if (q[0] != null) map.put(CommonParams.Q, new String[] {q[0]}); + if (qtype != null) map.put(CommonParams.QT, new String[] {qtype}); + map.put(CommonParams.START, new String[] {Integer.toString(start)}); + map.put(CommonParams.ROWS, new String[] {Integer.toString(limit)}); + return new SolrQueryRequestBase(TestHarness.this.getCore(), new MultiMapSolrParams(map)); } if (q.length % 2 != 0) { throw new RuntimeException( "The length of the string array (query arguments) needs to be even"); } - @SuppressWarnings({"rawtypes"}) - Map.Entry[] entries = new NamedListEntry[q.length / 2]; - for (int i = 0; i < q.length; i += 2) { - entries[i / 2] = new NamedListEntry<>(q[i], q[i + 1]); - } - @SuppressWarnings({"rawtypes"}) - NamedList nl = new NamedList(entries); - if (nl.get("wt") == null) nl.add("wt", "xml"); - return new LocalSolrQueryRequest(TestHarness.this.getCore(), nl); + return new SolrQueryRequestBase(TestHarness.this.getCore(), SolrTestCaseJ4.params(q)); } } }