Skip to content

Commit 9cc72f1

Browse files
authored
SOLR-17600: MapSerializable p3: Migrate SolrJ and Utilities from MapSerializable (#4465)
MapSerializable is deprecated; stop using it in some places.
1 parent ca21500 commit 9cc72f1

10 files changed

Lines changed: 32 additions & 71 deletions

File tree

solr/modules/extraction/src/java/org/apache/solr/handler/extraction/TikaServerExtractionBackend.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public TikaServerExtractionBackend(
9999

100100
this.maxCharsLimit = maxCharsLimit;
101101
if (initArgs != null) {
102-
initArgs.toMap(this.initArgsMap);
102+
initArgs.forEach(initArgsMap::put);
103103
}
104104
Object metaCompatObh = this.initArgsMap.get(ExtractingParams.TIKASERVER_METADATA_COMPATIBILITY);
105105
if (metaCompatObh != null) {

solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/Explanation.java

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,13 @@
1616
*/
1717
package org.apache.solr.client.solrj.io.stream.expr;
1818

19+
import java.io.IOException;
1920
import java.util.ArrayList;
20-
import java.util.LinkedHashMap;
2121
import java.util.List;
22-
import java.util.Map;
23-
import org.apache.solr.common.MapSerializable;
22+
import org.apache.solr.common.MapWriter;
2423

2524
/** Explanation containing details about a expression */
26-
public class Explanation implements MapSerializable {
25+
public class Explanation implements MapWriter {
2726

2827
private String expressionNodeId;
2928
private String expressionType;
@@ -139,35 +138,14 @@ public void addHelper(Explanation helper) {
139138
}
140139

141140
@Override
142-
public Map<String, Object> toMap(Map<String, Object> map) {
143-
if (null != expressionNodeId) {
144-
map.put("expressionNodeId", expressionNodeId);
145-
}
146-
if (null != expressionType) {
147-
map.put("expressionType", expressionType);
148-
}
149-
if (null != functionName) {
150-
map.put("functionName", functionName);
151-
}
152-
if (null != implementingClass) {
153-
map.put("implementingClass", implementingClass);
154-
}
155-
if (null != expression) {
156-
map.put("expression", expression);
157-
}
158-
if (null != note) {
159-
map.put("note", note);
160-
}
161-
162-
if (null != helpers && 0 != helpers.size()) {
163-
List<Map<String, Object>> helperMaps = new ArrayList<>();
164-
for (Explanation helper : helpers) {
165-
helperMaps.add(helper.toMap(new LinkedHashMap<>()));
166-
}
167-
map.put("helpers", helperMaps);
168-
}
169-
170-
return map;
141+
public void writeMap(EntryWriter ew) throws IOException {
142+
ew.putIfNotNull("expressionNodeId", expressionNodeId)
143+
.putIfNotNull("expressionType", expressionType)
144+
.putIfNotNull("functionName", functionName)
145+
.putIfNotNull("implementingClass", implementingClass)
146+
.putIfNotNull("expression", expression)
147+
.putIfNotNull("note", note)
148+
.putIfNotNull("helpers", helpers);
171149
}
172150

173151
public static interface ExpressionType {

solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExplanation.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@
1616
*/
1717
package org.apache.solr.client.solrj.io.stream.expr;
1818

19+
import java.io.IOException;
1920
import java.util.ArrayList;
20-
import java.util.LinkedHashMap;
2121
import java.util.List;
22-
import java.util.Map;
2322

2423
/** Explanation containing details about a stream expression */
2524
public class StreamExplanation extends Explanation {
@@ -58,17 +57,8 @@ public void addChild(Explanation child) {
5857
}
5958

6059
@Override
61-
public Map<String, Object> toMap(Map<String, Object> map) {
62-
map = super.toMap(map);
63-
64-
if (null != children && 0 != children.size()) {
65-
List<Map<String, Object>> childrenMaps = new ArrayList<>();
66-
for (Explanation child : children) {
67-
childrenMaps.add(child.toMap(new LinkedHashMap<>()));
68-
}
69-
map.put("children", childrenMaps);
70-
}
71-
72-
return map;
60+
public void writeMap(EntryWriter ew) throws IOException {
61+
super.writeMap(ew);
62+
ew.putIfNotNull("children", children);
7363
}
7464
}

solr/solrj/src/java/org/apache/solr/common/IteratorWriter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919

2020
import java.io.IOException;
2121
import java.util.ArrayList;
22-
import java.util.LinkedHashMap;
2322
import java.util.List;
23+
import org.apache.solr.common.util.SimpleOrderedMap;
2424
import org.noggit.JSONWriter;
2525

2626
/** Interface to help do push writing to an array */
@@ -76,7 +76,7 @@ default List<Object> toList(List<Object> l) {
7676
new ItemWriter() {
7777
@Override
7878
public ItemWriter add(Object o) throws IOException {
79-
if (o instanceof MapWriter) o = ((MapWriter) o).toMap(new LinkedHashMap<>());
79+
if (o instanceof MapWriter) o = new SimpleOrderedMap<>((MapWriter) o);
8080
if (o instanceof IteratorWriter) o = ((IteratorWriter) o).toList(new ArrayList<>());
8181
l.add(o);
8282
return this;

solr/solrj/src/java/org/apache/solr/common/MapWriter.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
* and is supposed to be memory efficient. If the entries are primitives, unnecessary boxing is also
3131
* avoided.
3232
*/
33-
public interface MapWriter extends MapSerializable, NavigableObject, JSONWriter.Writable {
33+
public interface MapWriter extends NavigableObject, JSONWriter.Writable {
3434

3535
/** Writes this object's entries out to {@code ew}. */
3636
void writeMap(EntryWriter ew) throws IOException;
@@ -39,11 +39,6 @@ default String jsonStr() {
3939
return Utils.toJSONString(this);
4040
}
4141

42-
@Override
43-
default Map<String, Object> toMap(Map<String, Object> map) {
44-
return Utils.convertToMap(this, map);
45-
}
46-
4742
/** For implementing Noggit {@link org.noggit.JSONWriter.Writable}. */
4843
@Override
4944
default void write(JSONWriter writer) {
@@ -147,7 +142,7 @@ default EntryWriter put(CharSequence k, CharSequence v) throws IOException {
147142
}
148143

149144
default BiConsumer<CharSequence, Object> getBiConsumer() {
150-
return (k, v) -> putNoEx(k, v);
145+
return this::putNoEx;
151146
}
152147
}
153148

solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,4 @@ public Object _get(List<String> path, Object def) {
5050
public int _size() {
5151
return delegate.size();
5252
}
53-
54-
@Override
55-
public Map<String, Object> toMap(Map<String, Object> map) {
56-
return delegate;
57-
}
5853
}

solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public ZkNodeProps(Map<String, Object> propMap) {
4242
}
4343

4444
public ZkNodeProps(MapWriter mw) {
45-
propMap = mw.toMap(new HashMap<>());
45+
propMap = Utils.convertToMap(mw, new HashMap<>());
4646
}
4747

4848
public ZkNodeProps plus(String key, Object val) {

solr/solrj/src/java/org/apache/solr/common/util/Utils.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public MapWriter.EntryWriter put(CharSequence k, Object v) {
178178

179179
private static Object makeDeepCopy(Object v, int maxDepth, boolean mutable, boolean sorted) {
180180
if (v instanceof MapWriter && maxDepth > 1) {
181-
v = ((MapWriter) v).toMap(new LinkedHashMap<>());
181+
v = convertToMap((MapWriter) v, new LinkedHashMap<>());
182182
} else if (v instanceof IteratorWriter && maxDepth > 1) {
183183
List<Object> l = ((IteratorWriter) v).toList(new ArrayList<>());
184184
if (sorted) {
@@ -1035,7 +1035,7 @@ private static void addCatchAllFieldWriter(
10351035
* <p>The provided object is not required to be a {@link MapWriter}.
10361036
*/
10371037
public static Map<String, Object> reflectToMap(Object toReflect) {
1038-
return ((Utils.DelegateReflectWriter) Utils.getReflectWriter(toReflect)).toMap(new HashMap<>());
1038+
return convertToMap((MapWriter) Utils.getReflectWriter(toReflect), new HashMap<>());
10391039
}
10401040

10411041
@SuppressWarnings({"unchecked", "rawtypes"})
@@ -1049,12 +1049,13 @@ public MapWriter.EntryWriter put(CharSequence k, Object v) {
10491049
}
10501050

10511051
private MapWriter.EntryWriter writeEntry(CharSequence k, Object v) {
1052-
if (v instanceof MapWriter) v = ((MapWriter) v).toMap(new LinkedHashMap<>());
1052+
if (v instanceof MapWriter) v = convertToMap((MapWriter) v, new LinkedHashMap<>());
10531053
if (v instanceof IteratorWriter) v = ((IteratorWriter) v).toList(new ArrayList<>());
10541054
if (v instanceof Iterable) {
10551055
List lst = new ArrayList();
10561056
for (Object vv : (Iterable) v) {
1057-
if (vv instanceof MapWriter) vv = ((MapWriter) vv).toMap(new LinkedHashMap<>());
1057+
if (vv instanceof MapWriter)
1058+
vv = convertToMap((MapWriter) vv, new LinkedHashMap<>());
10581059
if (vv instanceof IteratorWriter)
10591060
vv = ((IteratorWriter) vv).toList(new ArrayList<>());
10601061
lst.add(vv);
@@ -1065,7 +1066,8 @@ private MapWriter.EntryWriter writeEntry(CharSequence k, Object v) {
10651066
Map map = new LinkedHashMap();
10661067
for (Map.Entry<?, ?> entry : ((Map<?, ?>) v).entrySet()) {
10671068
Object vv = entry.getValue();
1068-
if (vv instanceof MapWriter) vv = ((MapWriter) vv).toMap(new LinkedHashMap<>());
1069+
if (vv instanceof MapWriter)
1070+
vv = convertToMap((MapWriter) vv, new LinkedHashMap<>());
10691071
if (vv instanceof IteratorWriter)
10701072
vv = ((IteratorWriter) vv).toList(new ArrayList<>());
10711073
map.put(entry.getKey(), vv);

solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleCborTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.io.InputStream;
2424
import java.io.OutputStream;
2525
import java.util.ArrayList;
26-
import java.util.LinkedHashMap;
2726
import java.util.List;
2827
import java.util.Map;
2928
import java.util.Set;
@@ -35,6 +34,7 @@
3534
import org.apache.solr.common.SolrDocumentList;
3635
import org.apache.solr.common.SolrInputDocument;
3736
import org.apache.solr.common.util.NamedList;
37+
import org.apache.solr.common.util.SimpleOrderedMap;
3838
import org.junit.Ignore;
3939

4040
/**
@@ -247,7 +247,7 @@ public void write(OutputStream os) throws IOException {
247247

248248
List<Map> mapDocs = new ArrayList<>();
249249
for (SolrInputDocument doc : docs) {
250-
mapDocs.add(doc.toMap(new LinkedHashMap<>()));
250+
mapDocs.add(new SimpleOrderedMap(doc));
251251
}
252252

253253
ObjectMapper cborMapper =

solr/test-framework/src/java/org/apache/solr/common/cloud/ClusterStateUtil.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.stream.Stream;
2626
import org.apache.solr.common.SolrException;
2727
import org.apache.solr.common.SolrException.ErrorCode;
28+
import org.apache.solr.common.util.SimpleOrderedMap;
2829
import org.apache.solr.common.util.Utils;
2930

3031
public class ClusterStateUtil {
@@ -178,7 +179,7 @@ public static String toDebugAllStatesString(ClusterState clusterState) {
178179
.collectionStream()
179180
.collect(
180181
LinkedHashMap::new,
181-
(map, state) -> map.put(state.getName(), state.toMap(new LinkedHashMap<>())),
182+
(map, state) -> map.put(state.getName(), new SimpleOrderedMap<>(state)),
182183
Map::putAll);
183184
// toJSON requires standard types like Map; doesn't know about DocCollection etc.
184185
return Utils.toJSONString(stateMap);

0 commit comments

Comments
 (0)