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 5095a896b4d7c90d42fd4b4d58ec773d70c2c1c9 Author: Ivan Šarić <[email protected]> AuthorDate: Sun Jun 14 19:54:07 2026 +0200 SOLR-17600: MapSerializable p3: Migrate SolrJ and Utilities from MapSerializable (#4465) MapSerializable is deprecated; stop using it in some places. (cherry picked from commit 9cc72f1638075ab71bb7d92c5db8200d47b5041a) --- .../extraction/TikaServerExtractionBackend.java | 2 +- .../client/solrj/io/stream/expr/Explanation.java | 44 ++++++---------------- .../solrj/io/stream/expr/StreamExplanation.java | 18 ++------- .../org/apache/solr/common/IteratorWriter.java | 4 +- .../src/java/org/apache/solr/common/MapWriter.java | 9 +---- .../java/org/apache/solr/common/MapWriterMap.java | 5 --- .../org/apache/solr/common/cloud/ZkNodeProps.java | 2 +- .../java/org/apache/solr/common/util/Utils.java | 12 +++--- .../solr/client/solrj/SolrExampleCborTest.java | 4 +- .../apache/solr/common/cloud/ClusterStateUtil.java | 3 +- 10 files changed, 32 insertions(+), 71 deletions(-) diff --git a/solr/modules/extraction/src/java/org/apache/solr/handler/extraction/TikaServerExtractionBackend.java b/solr/modules/extraction/src/java/org/apache/solr/handler/extraction/TikaServerExtractionBackend.java index 283d186fe71..a6d08bb11f7 100644 --- a/solr/modules/extraction/src/java/org/apache/solr/handler/extraction/TikaServerExtractionBackend.java +++ b/solr/modules/extraction/src/java/org/apache/solr/handler/extraction/TikaServerExtractionBackend.java @@ -99,7 +99,7 @@ public class TikaServerExtractionBackend implements ExtractionBackend { this.maxCharsLimit = maxCharsLimit; if (initArgs != null) { - initArgs.toMap(this.initArgsMap); + initArgs.forEach(initArgsMap::put); } Object metaCompatObh = this.initArgsMap.get(ExtractingParams.TIKASERVER_METADATA_COMPATIBILITY); if (metaCompatObh != null) { diff --git a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/Explanation.java b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/Explanation.java index 259c02ab5e5..bee23cc4acf 100644 --- a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/Explanation.java +++ b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/Explanation.java @@ -16,14 +16,13 @@ */ package org.apache.solr.client.solrj.io.stream.expr; +import java.io.IOException; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; -import org.apache.solr.common.MapSerializable; +import org.apache.solr.common.MapWriter; /** Explanation containing details about a expression */ -public class Explanation implements MapSerializable { +public class Explanation implements MapWriter { private String expressionNodeId; private String expressionType; @@ -139,35 +138,14 @@ public class Explanation implements MapSerializable { } @Override - public Map<String, Object> toMap(Map<String, Object> map) { - if (null != expressionNodeId) { - map.put("expressionNodeId", expressionNodeId); - } - if (null != expressionType) { - map.put("expressionType", expressionType); - } - if (null != functionName) { - map.put("functionName", functionName); - } - if (null != implementingClass) { - map.put("implementingClass", implementingClass); - } - if (null != expression) { - map.put("expression", expression); - } - if (null != note) { - map.put("note", note); - } - - if (null != helpers && 0 != helpers.size()) { - List<Map<String, Object>> helperMaps = new ArrayList<>(); - for (Explanation helper : helpers) { - helperMaps.add(helper.toMap(new LinkedHashMap<>())); - } - map.put("helpers", helperMaps); - } - - return map; + public void writeMap(EntryWriter ew) throws IOException { + ew.putIfNotNull("expressionNodeId", expressionNodeId) + .putIfNotNull("expressionType", expressionType) + .putIfNotNull("functionName", functionName) + .putIfNotNull("implementingClass", implementingClass) + .putIfNotNull("expression", expression) + .putIfNotNull("note", note) + .putIfNotNull("helpers", helpers); } public static interface ExpressionType { diff --git a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java index 027a1b94878..186eeebdfe4 100644 --- a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java +++ b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java @@ -16,10 +16,9 @@ */ package org.apache.solr.client.solrj.io.stream.expr; +import java.io.IOException; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; /** Explanation containing details about a stream expression */ public class StreamExplanation extends Explanation { @@ -58,17 +57,8 @@ public class StreamExplanation extends Explanation { } @Override - public Map<String, Object> toMap(Map<String, Object> map) { - map = super.toMap(map); - - if (null != children && 0 != children.size()) { - List<Map<String, Object>> childrenMaps = new ArrayList<>(); - for (Explanation child : children) { - childrenMaps.add(child.toMap(new LinkedHashMap<>())); - } - map.put("children", childrenMaps); - } - - return map; + public void writeMap(EntryWriter ew) throws IOException { + super.writeMap(ew); + ew.putIfNotNull("children", children); } } diff --git a/solr/solrj/src/java/org/apache/solr/common/IteratorWriter.java b/solr/solrj/src/java/org/apache/solr/common/IteratorWriter.java index 1c2274b7c0f..631a2f8677d 100644 --- a/solr/solrj/src/java/org/apache/solr/common/IteratorWriter.java +++ b/solr/solrj/src/java/org/apache/solr/common/IteratorWriter.java @@ -19,8 +19,8 @@ package org.apache.solr.common; import java.io.IOException; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; +import org.apache.solr.common.util.SimpleOrderedMap; import org.noggit.JSONWriter; /** Interface to help do push writing to an array */ @@ -76,7 +76,7 @@ public interface IteratorWriter extends JSONWriter.Writable { new ItemWriter() { @Override public ItemWriter add(Object o) throws IOException { - if (o instanceof MapWriter) o = ((MapWriter) o).toMap(new LinkedHashMap<>()); + if (o instanceof MapWriter) o = new SimpleOrderedMap<>((MapWriter) o); if (o instanceof IteratorWriter) o = ((IteratorWriter) o).toList(new ArrayList<>()); l.add(o); return this; diff --git a/solr/solrj/src/java/org/apache/solr/common/MapWriter.java b/solr/solrj/src/java/org/apache/solr/common/MapWriter.java index 3f1f61e24ba..d98d66f3bde 100644 --- a/solr/solrj/src/java/org/apache/solr/common/MapWriter.java +++ b/solr/solrj/src/java/org/apache/solr/common/MapWriter.java @@ -30,7 +30,7 @@ import org.noggit.JSONWriter; * and is supposed to be memory efficient. If the entries are primitives, unnecessary boxing is also * avoided. */ -public interface MapWriter extends MapSerializable, NavigableObject, JSONWriter.Writable { +public interface MapWriter extends NavigableObject, JSONWriter.Writable { /** Writes this object's entries out to {@code ew}. */ void writeMap(EntryWriter ew) throws IOException; @@ -39,11 +39,6 @@ public interface MapWriter extends MapSerializable, NavigableObject, JSONWriter. return Utils.toJSONString(this); } - @Override - default Map<String, Object> toMap(Map<String, Object> map) { - return Utils.convertToMap(this, map); - } - /** For implementing Noggit {@link org.noggit.JSONWriter.Writable}. */ @Override default void write(JSONWriter writer) { @@ -147,7 +142,7 @@ public interface MapWriter extends MapSerializable, NavigableObject, JSONWriter. } default BiConsumer<CharSequence, Object> getBiConsumer() { - return (k, v) -> putNoEx(k, v); + return this::putNoEx; } } diff --git a/solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java b/solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java index 44385d849f5..454898afc11 100644 --- a/solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java +++ b/solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java @@ -50,9 +50,4 @@ public class MapWriterMap implements MapWriter { public int _size() { return delegate.size(); } - - @Override - public Map<String, Object> toMap(Map<String, Object> map) { - return delegate; - } } diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java index 72ba3949b0e..4860a0debea 100644 --- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java +++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java @@ -42,7 +42,7 @@ public class ZkNodeProps implements MapWriter { } public ZkNodeProps(MapWriter mw) { - propMap = mw.toMap(new HashMap<>()); + propMap = Utils.convertToMap(mw, new HashMap<>()); } public ZkNodeProps plus(String key, Object val) { diff --git a/solr/solrj/src/java/org/apache/solr/common/util/Utils.java b/solr/solrj/src/java/org/apache/solr/common/util/Utils.java index 82c76d899a7..b2c06d60fa4 100644 --- a/solr/solrj/src/java/org/apache/solr/common/util/Utils.java +++ b/solr/solrj/src/java/org/apache/solr/common/util/Utils.java @@ -175,7 +175,7 @@ public class Utils { private static Object makeDeepCopy(Object v, int maxDepth, boolean mutable, boolean sorted) { if (v instanceof MapWriter && maxDepth > 1) { - v = ((MapWriter) v).toMap(new LinkedHashMap<>()); + v = convertToMap((MapWriter) v, new LinkedHashMap<>()); } else if (v instanceof IteratorWriter && maxDepth > 1) { List<Object> l = ((IteratorWriter) v).toList(new ArrayList<>()); if (sorted) { @@ -1020,7 +1020,7 @@ public class Utils { * <p>The provided object is not required to be a {@link MapWriter}. */ public static Map<String, Object> reflectToMap(Object toReflect) { - return ((Utils.DelegateReflectWriter) Utils.getReflectWriter(toReflect)).toMap(new HashMap<>()); + return convertToMap((MapWriter) Utils.getReflectWriter(toReflect), new HashMap<>()); } @SuppressWarnings({"unchecked", "rawtypes"}) @@ -1034,12 +1034,13 @@ public class Utils { } private MapWriter.EntryWriter writeEntry(CharSequence k, Object v) { - if (v instanceof MapWriter) v = ((MapWriter) v).toMap(new LinkedHashMap<>()); + if (v instanceof MapWriter) v = convertToMap((MapWriter) v, new LinkedHashMap<>()); if (v instanceof IteratorWriter) v = ((IteratorWriter) v).toList(new ArrayList<>()); if (v instanceof Iterable) { List lst = new ArrayList(); for (Object vv : (Iterable) v) { - if (vv instanceof MapWriter) vv = ((MapWriter) vv).toMap(new LinkedHashMap<>()); + if (vv instanceof MapWriter) + vv = convertToMap((MapWriter) vv, new LinkedHashMap<>()); if (vv instanceof IteratorWriter) vv = ((IteratorWriter) vv).toList(new ArrayList<>()); lst.add(vv); @@ -1050,7 +1051,8 @@ public class Utils { Map map = new LinkedHashMap(); for (Map.Entry<?, ?> entry : ((Map<?, ?>) v).entrySet()) { Object vv = entry.getValue(); - if (vv instanceof MapWriter) vv = ((MapWriter) vv).toMap(new LinkedHashMap<>()); + if (vv instanceof MapWriter) + vv = convertToMap((MapWriter) vv, new LinkedHashMap<>()); if (vv instanceof IteratorWriter) vv = ((IteratorWriter) vv).toList(new ArrayList<>()); map.put(entry.getKey(), vv); diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleCborTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleCborTest.java index 6456aa5824c..dda3a57426d 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleCborTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleCborTest.java @@ -23,7 +23,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -35,6 +34,7 @@ import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.util.NamedList; +import org.apache.solr.common.util.SimpleOrderedMap; import org.junit.Ignore; /** @@ -247,7 +247,7 @@ public class SolrExampleCborTest extends SolrExampleTests { List<Map> mapDocs = new ArrayList<>(); for (SolrInputDocument doc : docs) { - mapDocs.add(doc.toMap(new LinkedHashMap<>())); + mapDocs.add(new SimpleOrderedMap(doc)); } ObjectMapper cborMapper = diff --git a/solr/test-framework/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java b/solr/test-framework/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java index 9ecfe57379d..fe5e724db2d 100644 --- a/solr/test-framework/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java +++ b/solr/test-framework/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java @@ -25,6 +25,7 @@ import java.util.concurrent.TimeoutException; import java.util.stream.Stream; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; +import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.common.util.Utils; public class ClusterStateUtil { @@ -178,7 +179,7 @@ public class ClusterStateUtil { .collectionStream() .collect( LinkedHashMap::new, - (map, state) -> map.put(state.getName(), state.toMap(new LinkedHashMap<>())), + (map, state) -> map.put(state.getName(), new SimpleOrderedMap<>(state)), Map::putAll); // toJSON requires standard types like Map; doesn't know about DocCollection etc. return Utils.toJSONString(stateMap);
