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);

Reply via email to