This is an automated email from the ASF dual-hosted git repository. dsmiley pushed a commit to branch branch_10x in repository https://gitbox.apache.org/repos/asf/solr.git
commit 7e21d0aa21ab6d16d90f886b6f248d0a9ee21e9f Author: Ivan Šarić <[email protected]> AuthorDate: Mon Jun 8 16:54:49 2026 +0200 SOLR-17600 MapSerializable p1: Migrate V2 API Payloads (#4463) MapSerializable is deprecated; stop using it in some places. (cherry picked from commit ddb1923d15e5a2448e1f82bef1909ff4b1f6d337) --- .../java/org/apache/solr/handler/ClusterAPI.java | 5 ++-- .../org/apache/solr/handler/SolrConfigHandler.java | 33 ++++++++++++++-------- .../solr/handler/admin/BaseHandlerApiSupport.java | 20 +++++++------ .../solr/handler/admin/IndexSizeEstimator.java | 7 ++--- .../solr/handler/admin/ZookeeperInfoHandler.java | 3 +- .../apache/solr/handler/admin/api/CreateCore.java | 2 +- .../solr/handler/admin/api/InstallShardData.java | 3 +- .../solr/handler/admin/api/MigrateDocsAPI.java | 3 +- .../handler/admin/api/ModifyCollectionAPI.java | 3 +- .../solr/handler/admin/api/MoveReplicaAPI.java | 3 +- .../handler/admin/api/OverseerOperationAPI.java | 3 +- .../handler/admin/api/PrepareCoreRecoveryAPI.java | 3 +- .../handler/admin/api/RebalanceLeadersAPI.java | 3 +- .../handler/admin/api/RejoinLeaderElectionAPI.java | 3 +- .../admin/api/RequestApplyCoreUpdatesAPI.java | 3 +- .../handler/admin/api/RequestBufferUpdatesAPI.java | 3 +- .../handler/admin/api/RequestCoreRecoveryAPI.java | 3 +- .../handler/admin/api/RequestSyncShardAPI.java | 3 +- .../solr/handler/admin/api/SplitCoreAPI.java | 3 +- .../solr/handler/admin/api/SplitShardAPI.java | 3 +- .../solr/handler/designer/ManagedSchemaDiff.java | 5 ++-- .../solr/handler/export/ExportWriterStream.java | 7 ++--- .../handler/designer/TestSchemaDesignerAPI.java | 3 +- 23 files changed, 77 insertions(+), 50 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java b/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java index 7bc49e85f2a..e8c36f4e8cc 100644 --- a/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java @@ -51,6 +51,7 @@ import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.DefaultSolrParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.ReflectMapWriter; +import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.common.util.Utils; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.NodeRoles; @@ -259,7 +260,7 @@ public class ClusterAPI { @Command(name = "add-role") public void addRole(PayloadObj<RoleInfo> obj) throws Exception { RoleInfo info = obj.get(); - Map<String, Object> m = info.toMap(new HashMap<>()); + Map<String, Object> m = new SimpleOrderedMap<>(info); m.put("action", ADDROLE.toString()); collectionsHandler.handleRequestBody(wrapParams(obj.getRequest(), m), obj.getResponse()); } @@ -267,7 +268,7 @@ public class ClusterAPI { @Command(name = "remove-role") public void removeRole(PayloadObj<RoleInfo> obj) throws Exception { RoleInfo info = obj.get(); - Map<String, Object> m = info.toMap(new HashMap<>()); + Map<String, Object> m = new SimpleOrderedMap<>(info); m.put("action", REMOVEROLE.toString()); collectionsHandler.handleRequestBody(wrapParams(obj.getRequest(), m), obj.getResponse()); } diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java index e27bfc0e317..975bd79d65b 100644 --- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java @@ -60,7 +60,7 @@ import org.apache.solr.client.solrj.request.CollectionRequiringSolrRequest; import org.apache.solr.client.solrj.response.SimpleSolrResponse; import org.apache.solr.cloud.ZkController; import org.apache.solr.cloud.ZkSolrResourceLoader; -import org.apache.solr.common.MapSerializable; +import org.apache.solr.common.MapWriter; import org.apache.solr.common.SolrErrorWrappingException; import org.apache.solr.common.SolrException; import org.apache.solr.common.cloud.ClusterState; @@ -75,6 +75,7 @@ import org.apache.solr.common.util.CommandOperation; import org.apache.solr.common.util.EnvUtils; 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.common.util.StrUtils; import org.apache.solr.common.util.Utils; @@ -204,7 +205,7 @@ public class SolrConfigHandler extends RequestHandlerBase Map<String, Object> m = new LinkedHashMap<>(); m.put(ZNODEVER, params.getZnodeVersion()); if (p != null) { - m.put(RequestParams.NAME, Map.of(parts.get(2), p.toMap(new LinkedHashMap<>()))); + m.put(RequestParams.NAME, Map.of(parts.get(2), p)); } resp.add(SolrQueryResponse.NAME, m); } else { @@ -283,16 +284,16 @@ public class SolrConfigHandler extends RequestHandlerBase Map pluginNameVsPluginInfo = (Map) val.get(parts.get(1)); if (pluginNameVsPluginInfo != null) { Object o = - pluginNameVsPluginInfo instanceof MapSerializable + pluginNameVsPluginInfo instanceof MapWriter ? pluginNameVsPluginInfo : pluginNameVsPluginInfo.get(componentName); Map<String, Object> pluginInfo = - o instanceof MapSerializable - ? ((MapSerializable) o).toMap(new LinkedHashMap<>()) + o instanceof MapWriter + ? new SimpleOrderedMap<>((MapWriter) o) : (Map<String, Object>) o; val.put( parts.get(1), - pluginNameVsPluginInfo instanceof PluginInfo + pluginNameVsPluginInfo instanceof MapWriter ? pluginInfo : Map.of(componentName, pluginInfo)); if (req.getParams().getBool("meta", false)) { @@ -306,8 +307,10 @@ public class SolrConfigHandler extends RequestHandlerBase if (infos == null || infos.isEmpty()) continue; infos.forEach( (s, mapWriter) -> { - if (s.equals(pluginInfo.get("class"))) { - (pluginInfo).put("_packageinfo_", mapWriter); + Map<String, Object> componentInfo = + getComponentInfo(pluginInfo, componentName); + if (s.equals(componentInfo.get("class"))) { + (componentInfo).put("_packageinfo_", mapWriter); } }); } @@ -320,6 +323,16 @@ public class SolrConfigHandler extends RequestHandlerBase } } + @SuppressWarnings({"unchecked"}) + private Map<String, Object> getComponentInfo( + Map<String, Object> pluginInfo, String componentName) { + if (pluginInfo.containsKey("class")) { + return pluginInfo; + } + return (Map<String, Object>) + pluginInfo.computeIfAbsent(componentName, k -> new LinkedHashMap<>()); + } + private Map<String, Object> getConfigDetails(String componentType, SolrQueryRequest req) { String componentName = componentType == null ? null : req.getParams().get("componentName"); boolean showParams = req.getParams().getBool("expandParams", false); @@ -510,9 +523,7 @@ public class SolrConfigHandler extends RequestHandlerBase ZkController.touchConfDir(zkLoader); } else { if (log.isDebugEnabled()) { - log.debug( - "persisting params data : {}", - Utils.toJSONString(params.toMap(new LinkedHashMap<>()))); + log.debug("persisting params data : {}", Utils.toJSONString(params)); } int latestVersion = ZkController.persistConfigResourceToZooKeeper( diff --git a/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java b/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java index 0244726235b..82d2e869aad 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java @@ -21,6 +21,7 @@ import static org.apache.solr.client.solrj.SolrRequest.METHOD.POST; import static org.apache.solr.common.SolrException.ErrorCode.BAD_REQUEST; import static org.apache.solr.common.util.StrUtils.splitSmart; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -185,7 +186,7 @@ public abstract class BaseHandlerApiSupport implements ApiSupport { } @Override - public Map<String, Object> toMap(Map<String, Object> suppliedMap) { + public void writeMap(EntryWriter ew) throws IOException { for (Iterator<String> it = getParameterNamesIterator(); it.hasNext(); ) { final String param = it.next(); String key = cmd.meta().getParamSubstitute(param); @@ -195,6 +196,7 @@ public abstract class BaseHandlerApiSupport implements ApiSupport { : map.get(key); if (o == null) o = pathValues.get(key); if (o == null && useRequestParams) o = origParams.getParams(key); + if (o == null) continue; // make strings out of as many things as we can now to minimize differences from // the standard impls that pass through a NamedList/SimpleOrderedMap... Class<?> oClass = o.getClass(); @@ -202,19 +204,21 @@ public abstract class BaseHandlerApiSupport implements ApiSupport { || Number.class.isAssignableFrom(oClass) || Character.class.isAssignableFrom(oClass) || Boolean.class.isAssignableFrom(oClass)) { - suppliedMap.put(param, String.valueOf(o)); - } else if (List.class.isAssignableFrom(oClass) - && ((List) o).get(0) instanceof String) { + ew.put(param, String.valueOf(o)); + } else if (List.class.isAssignableFrom(oClass)) { @SuppressWarnings({"unchecked"}) - List<String> l = (List<String>) o; - suppliedMap.put(param, l.toArray(new String[0])); + List<?> l = (List<?>) o; + if (l.isEmpty() || l.get(0) instanceof String) { + ew.put(param, l.toArray(new String[0])); + } else { + ew.put(param, o); + } } else { // Lists pass through but will require special handling downstream // if they contain non-string elements. - suppliedMap.put(param, o); + ew.put(param, o); } } - return suppliedMap; } }); } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java b/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java index b88ae352e52..38eb8a464cf 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java @@ -59,6 +59,7 @@ import org.apache.lucene.util.RamUsageEstimator; import org.apache.lucene.util.SuppressForbidden; import org.apache.lucene.util.UnicodeUtil; import org.apache.solr.common.MapWriter; +import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.common.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -277,12 +278,10 @@ public class IndexSizeEstimator { for (Map.Entry<String, Object> entry : result.entrySet()) { Object value = entry.getValue(); if (value instanceof ItemPriorityQueue queue) { - Map<String, Object> map = new LinkedHashMap<>(); - queue.toMap(map); + Map<String, Object> map = new SimpleOrderedMap<>(queue); entry.setValue(map); } else if (value instanceof MapWriterSummaryStatistics stats) { - Map<String, Object> map = new LinkedHashMap<>(); - stats.toMap(map); + Map<String, Object> map = new SimpleOrderedMap<>(stats); entry.setValue(map); } else if (value instanceof AtomicLong) { entry.setValue(((AtomicLong) value).longValue()); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java index c2e6d29ac5c..967c153071f 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java @@ -53,6 +53,7 @@ import org.apache.solr.common.params.MapSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.common.util.SuppressForbidden; +import org.apache.solr.common.util.Utils; import org.apache.solr.core.CoreContainer; import org.apache.solr.handler.RequestHandlerBase; import org.apache.solr.request.SolrQueryRequest; @@ -758,7 +759,7 @@ public final class ZookeeperInfoHandler extends RequestHandlerBase { for (String collection : page.selected) { DocCollection dc = cs.getCollectionOrNull(collection); if (dc != null) { - Map<String, Object> collectionState = dc.toMap(new LinkedHashMap<>()); + Map<String, Object> collectionState = Utils.convertToMap(dc, new LinkedHashMap<>()); if (applyStatusFilter) { // verify this collection matches the filtered state if (page.matchesStatusFilter(collectionState, liveNodes)) { diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/CreateCore.java b/solr/core/src/java/org/apache/solr/handler/admin/api/CreateCore.java index 289d51d68c4..99602b9e598 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/CreateCore.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/CreateCore.java @@ -158,7 +158,7 @@ public class CreateCore extends CoreAdminAPIBase implements CoreApis.Create { } public static CreateCoreParams createRequestBodyFromV1Params(SolrParams solrParams) { - final var v1ParamMap = solrParams.toMap(new HashMap<>()); + final var v1ParamMap = Utils.convertToMap(solrParams, new HashMap<>()); v1ParamMap.remove(ACTION); v1ParamMap.remove(ASYNC); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/InstallShardData.java b/solr/core/src/java/org/apache/solr/handler/admin/api/InstallShardData.java index 4033fa6f097..ef609956772 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/InstallShardData.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/InstallShardData.java @@ -32,6 +32,7 @@ import org.apache.solr.common.cloud.Slice; import org.apache.solr.common.cloud.ZkNodeProps; import org.apache.solr.common.params.CollectionParams; import org.apache.solr.common.util.StrUtils; +import org.apache.solr.common.util.Utils; import org.apache.solr.core.CoreContainer; import org.apache.solr.jersey.PermissionName; import org.apache.solr.request.SolrQueryRequest; @@ -117,6 +118,6 @@ public class InstallShardData extends AdminAPIBase implements InstallShardDataAp } messageTyped.validate(); - return new ZkNodeProps(messageTyped.toMap(new HashMap<>())); + return new ZkNodeProps(Utils.convertToMap(messageTyped, new HashMap<>())); } } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/MigrateDocsAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/MigrateDocsAPI.java index 7e3898c8a89..ddb25d3d8aa 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/MigrateDocsAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/MigrateDocsAPI.java @@ -29,6 +29,7 @@ import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.MigrateDocsPayload; import org.apache.solr.common.params.CollectionParams; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CollectionsHandler; /** @@ -55,7 +56,7 @@ public class MigrateDocsAPI { @Command(name = V2_MIGRATE_DOCS_CMD) public void migrateDocs(PayloadObj<MigrateDocsPayload> obj) throws Exception { final MigrateDocsPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, CollectionParams.CollectionAction.MIGRATE.toLower()); v1Params.put(COLLECTION, obj.getRequest().getPathTemplateValues().get(COLLECTION)); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ModifyCollectionAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ModifyCollectionAPI.java index 93d11d0c428..0c5f717f6ef 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ModifyCollectionAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ModifyCollectionAPI.java @@ -31,6 +31,7 @@ import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.ModifyCollectionPayload; import org.apache.solr.common.params.CollectionParams; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CollectionsHandler; /** @@ -58,7 +59,7 @@ public class ModifyCollectionAPI { public void modifyCollection(PayloadObj<ModifyCollectionPayload> obj) throws Exception { final ModifyCollectionPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, CollectionParams.CollectionAction.MODIFYCOLLECTION.toLower()); v1Params.put(COLLECTION, obj.getRequest().getPathTemplateValues().get(COLLECTION)); if (v2Body.config != null) { diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/MoveReplicaAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/MoveReplicaAPI.java index 3c0d701de30..54bc62310b8 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/MoveReplicaAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/MoveReplicaAPI.java @@ -29,6 +29,7 @@ import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.MoveReplicaPayload; import org.apache.solr.common.params.CollectionParams; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CollectionsHandler; /** @@ -55,7 +56,7 @@ public class MoveReplicaAPI { @Command(name = V2_MOVE_REPLICA_CMD) public void moveReplica(PayloadObj<MoveReplicaPayload> obj) throws Exception { final MoveReplicaPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, CollectionParams.CollectionAction.MOVEREPLICA.toLower()); v1Params.put(COLLECTION, obj.getRequest().getPathTemplateValues().get(COLLECTION)); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/OverseerOperationAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/OverseerOperationAPI.java index 1c566a8c610..ffd3eb0f6dd 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/OverseerOperationAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/OverseerOperationAPI.java @@ -30,6 +30,7 @@ import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.OverseerOperationPayload; import org.apache.solr.common.params.CoreAdminParams; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -59,7 +60,7 @@ public class OverseerOperationAPI { @Command(name = OVERSEER_OP_CMD) public void joinOverseerLeaderElection(PayloadObj<OverseerOperationPayload> payload) throws Exception { - final Map<String, Object> v1Params = payload.get().toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(payload.get(), new HashMap<>()); v1Params.put( ACTION, CoreAdminParams.CoreAdminAction.OVERSEEROP.name().toLowerCase(Locale.ROOT)); coreAdminHandler.handleRequestBody( diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/PrepareCoreRecoveryAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/PrepareCoreRecoveryAPI.java index c5b83049815..dac4e632656 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/PrepareCoreRecoveryAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/PrepareCoreRecoveryAPI.java @@ -31,6 +31,7 @@ import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.PrepareCoreRecoveryPayload; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -57,7 +58,7 @@ public class PrepareCoreRecoveryAPI { @Command(name = V2_PREP_RECOVERY_CMD) public void prepareCoreForRecovery(PayloadObj<PrepareCoreRecoveryPayload> obj) throws Exception { final PrepareCoreRecoveryPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, PREPRECOVERY.name().toLowerCase(Locale.ROOT)); v1Params.put(CORE, obj.getRequest().getPathTemplateValues().get("core")); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/RebalanceLeadersAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/RebalanceLeadersAPI.java index e9127817732..ace2822bee8 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/RebalanceLeadersAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/RebalanceLeadersAPI.java @@ -29,6 +29,7 @@ import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.RebalanceLeadersPayload; import org.apache.solr.common.params.CollectionParams; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CollectionsHandler; /** @@ -55,7 +56,7 @@ public class RebalanceLeadersAPI { @Command(name = V2_REBALANCE_LEADERS_CMD) public void rebalanceLeaders(PayloadObj<RebalanceLeadersPayload> obj) throws Exception { final RebalanceLeadersPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, CollectionParams.CollectionAction.REBALANCELEADERS.toLower()); v1Params.put(COLLECTION, obj.getRequest().getPathTemplateValues().get(COLLECTION)); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/RejoinLeaderElectionAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/RejoinLeaderElectionAPI.java index 7558ea822ec..24ca19231df 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/RejoinLeaderElectionAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/RejoinLeaderElectionAPI.java @@ -31,6 +31,7 @@ import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.RejoinLeaderElectionPayload; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -56,7 +57,7 @@ public class RejoinLeaderElectionAPI { public void rejoinLeaderElection(PayloadObj<RejoinLeaderElectionPayload> payload) throws Exception { final RejoinLeaderElectionPayload v2Body = payload.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, REJOINLEADERELECTION.name().toLowerCase(Locale.ROOT)); if (v2Body.coreNodeName != null) { v1Params.remove("coreNodeName"); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestApplyCoreUpdatesAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestApplyCoreUpdatesAPI.java index 51c20fb545f..5118e149944 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestApplyCoreUpdatesAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestApplyCoreUpdatesAPI.java @@ -31,6 +31,7 @@ import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.RequestApplyCoreUpdatesPayload; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -58,7 +59,7 @@ public class RequestApplyCoreUpdatesAPI { public void requestApplyCoreUpdates(PayloadObj<RequestApplyCoreUpdatesPayload> obj) throws Exception { final RequestApplyCoreUpdatesPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, REQUESTAPPLYUPDATES.name().toLowerCase(Locale.ROOT)); v1Params.put(NAME, obj.getRequest().getPathTemplateValues().get("core")); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestBufferUpdatesAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestBufferUpdatesAPI.java index 8625bfc9b72..0e34af98605 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestBufferUpdatesAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestBufferUpdatesAPI.java @@ -31,6 +31,7 @@ import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.RequestBufferUpdatesPayload; import org.apache.solr.common.params.CoreAdminParams; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -57,7 +58,7 @@ public class RequestBufferUpdatesAPI { @Command(name = V2_REQUEST_BUFFER_UPDATES_CMD) public void requestBufferUpdates(PayloadObj<RequestBufferUpdatesPayload> obj) throws Exception { final RequestBufferUpdatesPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, REQUESTBUFFERUPDATES.name().toLowerCase(Locale.ROOT)); v1Params.put(CoreAdminParams.NAME, obj.getRequest().getPathTemplateValues().get("core")); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestCoreRecoveryAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestCoreRecoveryAPI.java index a259c608430..e367821be45 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestCoreRecoveryAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestCoreRecoveryAPI.java @@ -31,6 +31,7 @@ import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.RequestCoreRecoveryPayload; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -57,7 +58,7 @@ public class RequestCoreRecoveryAPI { @Command(name = V2_REQUEST_RECOVERY_CMD) public void requestCoreRecovery(PayloadObj<RequestCoreRecoveryPayload> obj) throws Exception { final RequestCoreRecoveryPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, REQUESTRECOVERY.name().toLowerCase(Locale.ROOT)); v1Params.put(CORE, obj.getRequest().getPathTemplateValues().get("core")); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestSyncShardAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestSyncShardAPI.java index c36a99ce545..54e73c49350 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/RequestSyncShardAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/RequestSyncShardAPI.java @@ -31,6 +31,7 @@ import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; import org.apache.solr.client.solrj.request.beans.RequestSyncShardPayload; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -57,7 +58,7 @@ public class RequestSyncShardAPI { @Command(name = V2_REQUEST_SYNC_SHARD_CMD) public void requestSyncShard(PayloadObj<RequestSyncShardPayload> obj) throws Exception { final RequestSyncShardPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, REQUESTSYNCSHARD.name().toLowerCase(Locale.ROOT)); v1Params.put(CORE, obj.getRequest().getPathTemplateValues().get("core")); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java index d846caea34b..e12fc60f182 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java @@ -34,6 +34,7 @@ import org.apache.solr.api.PayloadObj; import org.apache.solr.common.annotation.JsonProperty; import org.apache.solr.common.params.CoreAdminParams; import org.apache.solr.common.util.ReflectMapWriter; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CoreAdminHandler; /** @@ -58,7 +59,7 @@ public class SplitCoreAPI { @Command(name = V2_SPLIT_CORE_CMD) public void splitCore(PayloadObj<SplitCorePayload> obj) throws Exception { final SplitCorePayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put( CoreAdminParams.ACTION, CoreAdminParams.CoreAdminAction.SPLIT.name().toLowerCase(Locale.ROOT)); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java index 0c75f053cae..873bfe3393a 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java @@ -34,6 +34,7 @@ import org.apache.solr.client.solrj.request.beans.SplitShardPayload; import org.apache.solr.common.params.CollectionParams; import org.apache.solr.common.params.CommonAdminParams; import org.apache.solr.common.util.StrUtils; +import org.apache.solr.common.util.Utils; import org.apache.solr.handler.admin.CollectionsHandler; /** @@ -60,7 +61,7 @@ public class SplitShardAPI { @Command(name = V2_SPLIT_CMD) public void splitShard(PayloadObj<SplitShardPayload> obj) throws Exception { final SplitShardPayload v2Body = obj.get(); - final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); + final Map<String, Object> v1Params = Utils.convertToMap(v2Body, new HashMap<>()); v1Params.put(ACTION, CollectionParams.CollectionAction.SPLITSHARD.toLower()); v1Params.put(COLLECTION, obj.getRequest().getPathTemplateValues().get(COLLECTION)); diff --git a/solr/core/src/java/org/apache/solr/handler/designer/ManagedSchemaDiff.java b/solr/core/src/java/org/apache/solr/handler/designer/ManagedSchemaDiff.java index 3d064ce7286..89112231e08 100644 --- a/solr/core/src/java/org/apache/solr/handler/designer/ManagedSchemaDiff.java +++ b/solr/core/src/java/org/apache/solr/handler/designer/ManagedSchemaDiff.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.common.util.SuppressForbidden; +import org.apache.solr.common.util.Utils; import org.apache.solr.schema.FieldType; import org.apache.solr.schema.IndexSchema; import org.apache.solr.schema.ManagedIndexSchema; @@ -218,8 +219,8 @@ public class ManagedSchemaDiff { @SuppressForbidden(reason = "Maps.difference") private static List<Map<String, Object>> getMapDifference( SimpleOrderedMap<Object> simpleOrderedMap1, SimpleOrderedMap<Object> simpleOrderedMap2) { - Map<String, Object> map1 = simpleOrderedMap1.toMap(new HashMap<>()); - Map<String, Object> map2 = simpleOrderedMap2.toMap(new HashMap<>()); + Map<String, Object> map1 = Utils.convertToMap(simpleOrderedMap1, new HashMap<>()); + Map<String, Object> map2 = Utils.convertToMap(simpleOrderedMap2, new HashMap<>()); Map<String, MapDifference.ValueDifference<Object>> mapDiff = Maps.difference(map1, map2).entriesDiffering(); if (mapDiff.isEmpty()) { diff --git a/solr/core/src/java/org/apache/solr/handler/export/ExportWriterStream.java b/solr/core/src/java/org/apache/solr/handler/export/ExportWriterStream.java index 8700064bba7..86bbefb8e37 100644 --- a/solr/core/src/java/org/apache/solr/handler/export/ExportWriterStream.java +++ b/solr/core/src/java/org/apache/solr/handler/export/ExportWriterStream.java @@ -19,9 +19,7 @@ package org.apache.solr.handler.export; import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.TimeoutException; import org.apache.solr.client.solrj.io.Tuple; @@ -39,6 +37,7 @@ import org.apache.solr.client.solrj.io.stream.expr.StreamExpressionParameter; import org.apache.solr.client.solrj.io.stream.expr.StreamFactory; import org.apache.solr.common.IteratorWriter; import org.apache.solr.common.MapWriter; +import org.apache.solr.common.util.SimpleOrderedMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,9 +70,7 @@ public class ExportWriterStream extends TupleStream implements Expressible { ((IteratorWriter) v).toList(lst); v = lst; } else if (v instanceof MapWriter) { - Map<String, Object> map = new HashMap<>(); - ((MapWriter) v).toMap(map); - v = map; + v = new SimpleOrderedMap<>((MapWriter) v); } tuple.put(k.toString(), v); return this; diff --git a/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java b/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java index ed1aba6ceb5..6eb157e914c 100644 --- a/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java +++ b/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java @@ -28,7 +28,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -845,7 +844,7 @@ public class TestSchemaDesignerAPI extends SolrCloudTestCase implements SchemaDe idFieldMapUpdated.indexOf("omitTermFreqAndPositions", 0), Boolean.FALSE); SolrParams solrParams = idFieldMapUpdated.toSolrParams(); - Map<String, Object> mapParams = solrParams.toMap(new HashMap<>()); + Map<String, Object> mapParams = new SimpleOrderedMap<>(solrParams); mapParams.put("termVectors", Boolean.FALSE); reqParams.set( SCHEMA_VERSION_PARAM, rsp.getValues().toSolrParams().getInt(SCHEMA_VERSION_PARAM));
