This is an automated email from the ASF dual-hosted git repository.
dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 9cc72f16380 SOLR-17600: MapSerializable p3: Migrate SolrJ and
Utilities from MapSerializable (#4465)
9cc72f16380 is described below
commit 9cc72f1638075ab71bb7d92c5db8200d47b5041a
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.
---
.../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 8db2d1c0ae1..82acf966bfb 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
@@ -178,7 +178,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) {
@@ -1035,7 +1035,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"})
@@ -1049,12 +1049,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);
@@ -1065,7 +1066,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);