You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2018/10/08 02:30:45 UTC
[23/30] lucene-solr:jira/http2: use MapWriter._get()
use MapWriter._get()
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/14e6eb2c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/14e6eb2c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/14e6eb2c
Branch: refs/heads/jira/http2
Commit: 14e6eb2c2488a5983c4449da32757d1f3bf17ce0
Parents: 5fb384c
Author: Noble Paul <no...@apache.org>
Authored: Fri Oct 5 08:32:00 2018 +1000
Committer: Noble Paul <no...@apache.org>
Committed: Fri Oct 5 08:32:00 2018 +1000
----------------------------------------------------------------------
.../org/apache/solr/cloud/TestCryptoKeys.java | 13 +-
.../apache/solr/core/TestDynamicLoading.java | 22 +--
.../apache/solr/core/TestSolrConfigHandler.java | 175 +++++++++----------
.../apache/solr/handler/TestBlobHandler.java | 45 ++---
.../apache/solr/handler/TestConfigReload.java | 19 +-
.../handler/TestSolrConfigHandlerCloud.java | 3 +-
.../TestSolrConfigHandlerConcurrent.java | 44 +++--
.../apache/solr/common/LinkedHashMapWriter.java | 60 +++++++
.../java/org/apache/solr/common/MapWriter.java | 13 +-
.../org/apache/solr/common/MapWriterMap.java | 14 ++
.../java/org/apache/solr/common/util/Utils.java | 16 +-
11 files changed, 250 insertions(+), 174 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java b/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
index b2044b1..146ad82 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCryptoKeys.java
@@ -23,6 +23,7 @@ import java.util.Arrays;
import java.util.Map;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.common.LinkedHashMapWriter;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.util.Utils;
import org.apache.solr.core.MemClassLoader;
@@ -125,10 +126,10 @@ public class TestCryptoKeys extends AbstractFullDistribZkTestBase {
Arrays.asList("overlay", "runtimeLib", blobName, "version"),
1l, 10);
- Map map = TestSolrConfigHandler.getRespMap("/runtime", client);
- String s = (String) Utils.getObjectByPath(map, false, Arrays.asList("error", "msg"));
- assertNotNull(TestBlobHandler.getAsString(map), s);
- assertTrue(TestBlobHandler.getAsString(map), s.contains("should be signed with one of the keys in ZK /keys/exe"));
+ LinkedHashMapWriter map = TestSolrConfigHandler.getRespMap("/runtime", client);
+ String s = map._getStr( "error/msg",null);
+ assertNotNull(map.toString(), s);
+ assertTrue(map.toString(), s.contains("should be signed with one of the keys in ZK /keys/exe"));
String wrongSig = "QKqHtd37QN02iMW9UEgvAO9g9qOOuG5vEBNkbUsN7noc2hhXKic/ABFIOYJA9PKw61mNX2EmNFXOcO3WClYdSw==";
@@ -146,8 +147,8 @@ public class TestCryptoKeys extends AbstractFullDistribZkTestBase {
map = TestSolrConfigHandler.getRespMap("/runtime", client);
s = (String) Utils.getObjectByPath(map, false, Arrays.asList("error", "msg"));
- assertNotNull(TestBlobHandler.getAsString(map), s);//No key matched signature for jar
- assertTrue(TestBlobHandler.getAsString(map), s.contains("No key matched signature for jar"));
+ assertNotNull(map.toString(), s);//No key matched signature for jar
+ assertTrue(map.toString(), s.contains("No key matched signature for jar"));
String rightSig = "YkTQgOtvcM/H/5EQdABGl3wjjrPhonAGlouIx59vppBy2cZEofX3qX1yZu5sPNRmJisNXEuhHN2149dxeUmk2Q==";
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java b/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
index 5e6f2a0..90d9afd 100644
--- a/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
+++ b/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
@@ -16,14 +16,6 @@
*/
package org.apache.solr.core;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
-import org.apache.solr.handler.TestBlobHandler;
-import org.apache.solr.util.RestTestHarness;
-import org.apache.solr.util.SimplePostTool;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -34,6 +26,14 @@ import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
+import org.apache.solr.handler.TestBlobHandler;
+import org.apache.solr.util.RestTestHarness;
+import org.apache.solr.util.SimplePostTool;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
import static java.util.Arrays.asList;
import static org.apache.solr.handler.TestSolrConfigHandlerCloud.compareValues;
@@ -86,8 +86,8 @@ public class TestDynamicLoading extends AbstractFullDistribZkTestBase {
Map map = TestSolrConfigHandler.getRespMap("/test1", client);
- assertNotNull(TestBlobHandler.getAsString(map), map = (Map) map.get("error"));
- assertTrue(TestBlobHandler.getAsString(map), map.get("msg").toString().contains(".system collection not available"));
+ assertNotNull(map.toString(), map = (Map) map.get("error"));
+ assertTrue(map.toString(), map.get("msg").toString().contains(".system collection not available"));
TestBlobHandler.createSystemCollection(getHttpSolrClient(baseURL, randomClient.getHttpClient()));
@@ -97,7 +97,7 @@ public class TestDynamicLoading extends AbstractFullDistribZkTestBase {
assertNotNull(map = (Map) map.get("error"));
- assertTrue("full output " + TestBlobHandler.getAsString(map), map.get("msg").toString().contains("no such blob or version available: colltest/1" ));
+ assertTrue("full output " + map, map.get("msg").toString().contains("no such blob or version available: colltest/1" ));
payload = " {\n" +
" 'set' : {'watched': {" +
" 'x':'X val',\n" +
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
index 88286e0..a8de25e 100644
--- a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
+++ b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
@@ -20,8 +20,6 @@ import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.lang.invoke.MethodHandles;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -34,11 +32,12 @@ import com.google.common.collect.ImmutableList;
import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.apache.solr.common.LinkedHashMapWriter;
+import org.apache.solr.common.MapWriter;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.util.Utils;
import org.apache.solr.common.util.ValidatingJsonMap;
import org.apache.solr.handler.DumpRequestHandler;
-import org.apache.solr.handler.TestBlobHandler;
import org.apache.solr.handler.TestSolrConfigHandlerConcurrent;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -55,8 +54,8 @@ import org.restlet.ext.servlet.ServerServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static java.util.Arrays.asList;
import static org.apache.solr.common.util.Utils.getObjectByPath;
-import static org.apache.solr.handler.TestBlobHandler.getAsString;
public class TestSolrConfigHandler extends RestTestBase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -106,49 +105,46 @@ public class TestSolrConfigHandler extends RestTestBase {
public void testProperty() throws Exception {
RestTestHarness harness = restTestHarness;
- Map confMap = getRespMap("/config", harness);
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/luke")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/system")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/mbeans")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/plugins")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/threads")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/properties")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/logging")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/file")));
- assertNotNull(getObjectByPath(confMap, false, Arrays.asList("config", "requestHandler", "/admin/ping")));
+ MapWriter confMap = getRespMap("/config", harness);
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/luke"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/system"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/mbeans"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/plugins"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/threads"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/properties"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/logging"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/file"), null));
+ assertNotNull(confMap._get(asList("config", "requestHandler", "/admin/ping"), null));
String payload = "{\n" +
" 'set-property' : { 'updateHandler.autoCommit.maxDocs':100, 'updateHandler.autoCommit.maxTime':10 , 'requestDispatcher.requestParsers.addHttpRequestToContext':true} \n" +
" }";
runConfigCommand(harness, "/config", payload);
- Map m = (Map) getRespMap("/config/overlay", harness).get("overlay");
- Map props = (Map) m.get("props");
- assertNotNull(props);
- assertEquals("100", String.valueOf(getObjectByPath(props, true, ImmutableList.of("updateHandler", "autoCommit", "maxDocs"))));
- assertEquals("10", String.valueOf(getObjectByPath(props, true, ImmutableList.of("updateHandler", "autoCommit", "maxTime"))));
+ MapWriter m = getRespMap("/config/overlay", harness);
+ MapWriter props =null;
+ assertEquals("100", m._getStr("overlay/props/updateHandler/autoCommit/maxDocs", null));
+ assertEquals("10", m._getStr("overlay/props/updateHandler/autoCommit/maxTime",null));
m = getRespMap("/config/updateHandler", harness);
- assertNotNull(getObjectByPath(m, true, ImmutableList.of("config","updateHandler", "commitWithin", "softCommit")));
- assertNotNull(getObjectByPath(m, true, ImmutableList.of("config","updateHandler", "autoCommit", "maxDocs")));
- assertNotNull(getObjectByPath(m, true, ImmutableList.of("config","updateHandler", "autoCommit", "maxTime")));
+ assertNotNull(m._get("config/updateHandler/commitWithin/softCommit",null));
+ assertNotNull(m._get("config/updateHandler/autoCommit/maxDocs",null));
+ assertNotNull(m._get("config/updateHandler/autoCommit/maxTime",null));
- m = (Map) getRespMap("/config", harness).get("config");
+ m = getRespMap("/config", harness);
assertNotNull(m);
- assertEquals("100", String.valueOf(getObjectByPath(m, true, ImmutableList.of("updateHandler", "autoCommit", "maxDocs"))));
- assertEquals("10", String.valueOf(getObjectByPath(m, true, ImmutableList.of("updateHandler", "autoCommit", "maxTime"))));
- assertEquals("true", String.valueOf(getObjectByPath(m, true, ImmutableList.of("requestDispatcher", "requestParsers", "addHttpRequestToContext"))));
+ assertEquals("100", m._getStr("config/updateHandler/autoCommit/maxDocs",null));
+ assertEquals("10", m._getStr("config/updateHandler/autoCommit/maxTime",null));
+ assertEquals("true", m._getStr("config/requestDispatcher/requestParsers/addHttpRequestToContext",null));
payload = "{\n" +
" 'unset-property' : 'updateHandler.autoCommit.maxDocs'} \n" +
" }";
runConfigCommand(harness, "/config", payload);
- m = (Map) getRespMap("/config/overlay", harness).get("overlay");
- props = (Map) m.get("props");
- assertNotNull(props);
- assertNull(getObjectByPath(props, true, ImmutableList.of("updateHandler", "autoCommit", "maxDocs")));
- assertEquals("10", String.valueOf(getObjectByPath(props, true, ImmutableList.of("updateHandler", "autoCommit", "maxTime"))));
+ m = getRespMap("/config/overlay", harness);
+ assertNull(m._get("overlay/props/updateHandler/autoCommit/maxDocs",null));
+ assertEquals("10", m._getStr("overlay/props/updateHandler/autoCommit/maxTime",null));
}
public void testUserProp() throws Exception {
@@ -159,17 +155,14 @@ public class TestSolrConfigHandler extends RestTestBase {
" }";
runConfigCommand(harness, "/config", payload);
- Map m = (Map) getRespMap("/config/overlay", harness).get("overlay");
- Map props = (Map) m.get("userProps");
- assertNotNull(props);
- assertEquals(props.get("my.custom.variable.a"), "MODIFIEDA");
- assertEquals(props.get("my.custom.variable.b"), "MODIFIEDB");
+ MapWriter m = getRespMap("/config/overlay", harness);//.get("overlay");
+ assertEquals(m._get("overlay/userProps/my.custom.variable.a",null), "MODIFIEDA");
+ assertEquals(m._get("overlay/userProps/my.custom.variable.b",null), "MODIFIEDB");
- m = (Map) getRespMap("/dump?json.nl=map&initArgs=true", harness).get("initArgs");
+ m = getRespMap("/dump?json.nl=map&initArgs=true", harness);//.get("initArgs");
- m = (Map) m.get(PluginInfo.DEFAULTS);
- assertEquals("MODIFIEDA", m.get("a"));
- assertEquals("MODIFIEDB", m.get("b"));
+ assertEquals("MODIFIEDA", m._get("initArgs/defaults/a",null));
+ assertEquals("MODIFIEDB", m._get("initArgs/defaults/b",null));
}
@@ -210,7 +203,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config/overlay",
cloudSolrClient,
- Arrays.asList("overlay", "requestHandler", "/x", "startup"),
+ asList("overlay", "requestHandler", "/x", "startup"),
"lazy",
10);
@@ -224,7 +217,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config/overlay",
cloudSolrClient,
- Arrays.asList("overlay", "requestHandler", "/x", "a"),
+ asList("overlay", "requestHandler", "/x", "a"),
"b",
10);
@@ -240,7 +233,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config/overlay",
cloudSolrClient,
- Arrays.asList("overlay", "requestHandler", "/dump", "defaults", "c" ),
+ asList("overlay", "requestHandler", "/dump", "defaults", "c"),
"C",
10);
@@ -248,7 +241,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/x?getdefaults=true&json.nl=map",
cloudSolrClient,
- Arrays.asList("getdefaults", "def_a"),
+ asList("getdefaults", "def_a"),
"def A val",
10);
@@ -256,8 +249,8 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/x?param=multival&json.nl=map",
cloudSolrClient,
- Arrays.asList("params", "multival"),
- Arrays.asList("a", "b", "c"),
+ asList("params", "multival"),
+ asList("a", "b", "c"),
10);
payload = "{\n" +
@@ -270,7 +263,7 @@ public class TestSolrConfigHandler extends RestTestBase {
while (TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds) {
String uri = "/config/overlay";
Map m = testServerBaseUrl == null ? getRespMap(uri, writeHarness) : TestSolrConfigHandlerConcurrent.getAsMap(testServerBaseUrl + uri, cloudSolrClient);
- if (null == Utils.getObjectByPath(m, true, Arrays.asList("overlay", "requestHandler", "/x", "a"))) {
+ if (null == Utils.getObjectByPath(m, true, asList("overlay", "requestHandler", "/x", "a"))) {
success = true;
break;
}
@@ -287,7 +280,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "queryConverter", "qc", "class"),
+ asList("config", "queryConverter", "qc", "class"),
"org.apache.solr.spelling.SpellingQueryConverter",
10);
payload = "{\n" +
@@ -298,7 +291,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "queryConverter", "qc", "class"),
+ asList("config", "queryConverter", "qc", "class"),
"org.apache.solr.spelling.SuggestQueryConverter",
10);
@@ -310,7 +303,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "queryConverter", "qc"),
+ asList("config", "queryConverter", "qc"),
null,
10);
@@ -322,7 +315,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "searchComponent", "tc", "class"),
+ asList("config", "searchComponent", "tc", "class"),
"org.apache.solr.handler.component.TermsComponent",
10);
payload = "{\n" +
@@ -333,7 +326,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "searchComponent", "tc", "class"),
+ asList("config", "searchComponent", "tc", "class"),
"org.apache.solr.handler.component.TermVectorComponent",
10);
@@ -345,7 +338,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "searchComponent", "tc"),
+ asList("config", "searchComponent", "tc"),
null,
10);
//<valueSourceParser name="countUsage" class="org.apache.solr.core.CountUsageValueSourceParser"/>
@@ -357,7 +350,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "valueSourceParser", "cu", "class"),
+ asList("config", "valueSourceParser", "cu", "class"),
"org.apache.solr.core.CountUsageValueSourceParser",
10);
// <valueSourceParser name="nvl" class="org.apache.solr.search.function.NvlValueSourceParser">
@@ -371,7 +364,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "valueSourceParser", "cu", "class"),
+ asList("config", "valueSourceParser", "cu", "class"),
"org.apache.solr.search.function.NvlValueSourceParser",
10);
@@ -383,7 +376,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "valueSourceParser", "cu"),
+ asList("config", "valueSourceParser", "cu"),
null,
10);
// <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
@@ -397,7 +390,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "transformer", "mytrans", "class"),
+ asList("config", "transformer", "mytrans", "class"),
"org.apache.solr.response.transform.ValueAugmenterFactory",
10);
@@ -409,7 +402,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "transformer", "mytrans", "value"),
+ asList("config", "transformer", "mytrans", "value"),
"6",
10);
@@ -422,12 +415,12 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "transformer", "mytrans"),
+ asList("config", "transformer", "mytrans"),
null,
10);
- List l = (List) Utils.getObjectByPath(map, false, Arrays.asList("config", "initParams"));
- assertNotNull("no object /config/initParams : "+ TestBlobHandler.getAsString(map) , l);
+ List l = (List) Utils.getObjectByPath(map, false, asList("config", "initParams"));
+ assertNotNull("no object /config/initParams : "+ map , l);
assertEquals( 2, l.size());
assertEquals( "val", ((Map)l.get(1)).get("key") );
@@ -449,7 +442,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "searchComponent","myspellcheck", "spellchecker", "class"),
+ asList("config", "searchComponent", "myspellcheck", "spellchecker", "class"),
"solr.DirectSolrSpellChecker",
10);
@@ -467,7 +460,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config",
cloudSolrClient,
- Arrays.asList("config", "requestHandler","/dump100", "class"),
+ asList("config", "requestHandler", "/dump100", "class"),
"org.apache.solr.handler.DumpRequestHandler",
10);
@@ -490,7 +483,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config/overlay",
cloudSolrClient,
- Arrays.asList("overlay", "requestHandler", "/dump101", "startup"),
+ asList("overlay", "requestHandler", "/dump101", "startup"),
"lazy",
10);
@@ -503,7 +496,7 @@ public class TestSolrConfigHandler extends RestTestBase {
testServerBaseUrl,
"/config/overlay",
cloudSolrClient,
- Arrays.asList("overlay", "cache", "lfuCacheDecayFalse", "class"),
+ asList("overlay", "cache", "lfuCacheDecayFalse", "class"),
"solr.search.LFUCache",
10);
assertEquals("solr.search.LRUCache",getObjectByPath(map, true, ImmutableList.of("overlay", "cache", "perSegFilter", "class")));
@@ -555,7 +548,7 @@ public class TestSolrConfigHandler extends RestTestBase {
}
}
- public static Map testForResponseElement(RestTestHarness harness,
+ public static LinkedHashMapWriter testForResponseElement(RestTestHarness harness,
String testServerBaseUrl,
String uri,
CloudSolrClient cloudSolrClient, List<String> jsonPath,
@@ -564,7 +557,7 @@ public class TestSolrConfigHandler extends RestTestBase {
boolean success = false;
long startTime = System.nanoTime();
- Map m = null;
+ LinkedHashMapWriter m = null;
while (TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds) {
try {
@@ -592,7 +585,7 @@ public class TestSolrConfigHandler extends RestTestBase {
Thread.sleep(100);
}
- assertTrue(StrUtils.formatString("Could not get expected value ''{0}'' for path ''{1}'' full output: {2}, from server: {3}", expected, StrUtils.join(jsonPath, '/'), getAsString(m), testServerBaseUrl), success);
+ assertTrue(StrUtils.formatString("Could not get expected value ''{0}'' for path ''{1}'' full output: {2}, from server: {3}", expected, StrUtils.join(jsonPath, '/'), m.toString(), testServerBaseUrl), success);
return m;
}
@@ -614,7 +607,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "x", "a"),
+ asList("response", "params", "x", "a"),
"A val",
10);
@@ -623,7 +616,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "x", "b"),
+ asList("response", "params", "x", "b"),
"B val",
10);
@@ -638,7 +631,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/overlay",
null,
- Arrays.asList("overlay", "requestHandler", "/d", "name"),
+ asList("overlay", "requestHandler", "/d", "name"),
"/d",
10);
@@ -646,14 +639,14 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/d?useParams=x",
null,
- Arrays.asList("params", "a"),
+ asList("params", "a"),
"A val",
5);
TestSolrConfigHandler.testForResponseElement(harness,
null,
"/d?useParams=x&a=fomrequest",
null,
- Arrays.asList("params", "a"),
+ asList("params", "a"),
"fomrequest",
5);
@@ -667,7 +660,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/overlay",
null,
- Arrays.asList("overlay", "requestHandler", "/dump1", "name"),
+ asList("overlay", "requestHandler", "/dump1", "name"),
"/dump1",
10);
@@ -676,7 +669,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/dump1",
null,
- Arrays.asList("params", "a"),
+ asList("params", "a"),
"A val",
5);
@@ -697,7 +690,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "y", "c"),
+ asList("response", "params", "y", "c"),
"CY val",
10);
@@ -705,7 +698,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/dump1?useParams=y",
null,
- Arrays.asList("params", "c"),
+ asList("params", "c"),
"CY val",
5);
@@ -715,7 +708,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/dump1?useParams=y",
null,
- Arrays.asList("params", "b"),
+ asList("params", "b"),
"BY val",
5);
@@ -724,7 +717,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/dump1?useParams=y",
null,
- Arrays.asList("params", "a"),
+ asList("params", "a"),
"A val",
5);
@@ -733,8 +726,8 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/dump1?useParams=y",
null,
- Arrays.asList("params", "d"),
- Arrays.asList("val 1", "val 2"),
+ asList("params", "d"),
+ asList("val 1", "val 2"),
5);
payload = " {\n" +
@@ -754,7 +747,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "y", "c"),
+ asList("response", "params", "y", "c"),
"CY val modified",
10);
@@ -763,7 +756,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "y", "e"),
+ asList("response", "params", "y", "e"),
"EY val",
10);
@@ -782,7 +775,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "y", "p"),
+ asList("response", "params", "y", "p"),
"P val",
10);
@@ -791,7 +784,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "y", "c"),
+ asList("response", "params", "y", "c"),
null,
10);
payload = " {'delete' : 'y'}";
@@ -801,7 +794,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/params",
null,
- Arrays.asList("response", "params", "y", "p"),
+ asList("response", "params", "y", "p"),
null,
10);
@@ -829,7 +822,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/config/overlay",
null,
- Arrays.asList("overlay", "requestHandler", "aRequestHandler", "class"),
+ asList("overlay", "requestHandler", "aRequestHandler", "class"),
"org.apache.solr.handler.DumpRequestHandler",
10);
RESTfulServerProvider oldProvider = restTestHarness.getServerProvider();
@@ -840,7 +833,7 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
"/something/part1_Value/fixed/part2_Value?urlTemplateValues=part1&urlTemplateValues=part2",
null,
- Arrays.asList("urlTemplateValues"),
+ asList("urlTemplateValues"),
new ValidatingJsonMap.PredicateWithErrMsg() {
@Override
public String test(Object o) {
@@ -863,13 +856,13 @@ public class TestSolrConfigHandler extends RestTestBase {
}
- public static Map getRespMap(String path, RestTestHarness restHarness) throws Exception {
+ public static LinkedHashMapWriter getRespMap(String path, RestTestHarness restHarness) throws Exception {
String response = restHarness.query(path);
try {
- return (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
+ return (LinkedHashMapWriter) Utils.MAPWRITEROBJBUILDER.apply(Utils.getJSONParser(new StringReader(response))).getVal();
} catch (JSONParser.ParseException e) {
log.error(response);
- return Collections.emptyMap();
+ return new LinkedHashMapWriter();
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
index 737e16e..62fd8c0 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
@@ -21,7 +21,6 @@ import java.io.StringReader;
import java.lang.invoke.MethodHandles;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -39,11 +38,11 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.response.CollectionAdminResponse;
import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
+import org.apache.solr.common.MapWriter;
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.common.util.StrUtils;
-import org.apache.solr.common.util.Utils;
import org.apache.solr.util.RTimer;
import org.apache.solr.util.SimplePostTool;
import org.junit.Test;
@@ -52,7 +51,7 @@ import org.noggit.ObjectBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.solr.common.util.Utils.getObjectByPath;
+import static java.util.Arrays.asList;
public class TestBlobHandler extends AbstractFullDistribZkTestBase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -71,21 +70,21 @@ public class TestBlobHandler extends AbstractFullDistribZkTestBase {
String baseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP);
String url = baseUrl + "/.system/config/requestHandler";
- Map map = TestSolrConfigHandlerConcurrent.getAsMap(url, cloudClient);
+ MapWriter map = TestSolrConfigHandlerConcurrent.getAsMap(url, cloudClient);
assertNotNull(map);
- assertEquals("solr.BlobHandler", getObjectByPath(map, true, Arrays.asList(
+ assertEquals("solr.BlobHandler", map._get(asList(
"config",
"requestHandler",
"/blob",
- "class")));
+ "class"),null));
map = TestSolrConfigHandlerConcurrent.getAsMap(baseUrl + "/.system/schema/fields/blob", cloudClient);
assertNotNull(map);
- assertEquals("blob", getObjectByPath(map, true, Arrays.asList(
+ assertEquals("blob", map._get(asList(
"field",
- "name")));
- assertEquals("bytes", getObjectByPath(map, true, Arrays.asList(
+ "name"),null));
+ assertEquals("bytes", map._get( asList(
"field",
- "type")));
+ "type"),null));
checkBlobPost(baseUrl, cloudClient);
}
@@ -93,7 +92,7 @@ public class TestBlobHandler extends AbstractFullDistribZkTestBase {
static void checkBlobPost(String baseUrl, CloudSolrClient cloudClient) throws Exception {
String url;
- Map map;
+ MapWriter map;
byte[] bytarr = new byte[1024];
for (int i = 0; i < bytarr.length; i++) bytarr[i] = (byte) (i % 127);
byte[] bytarr2 = new byte[2048];
@@ -104,11 +103,7 @@ public class TestBlobHandler extends AbstractFullDistribZkTestBase {
url = baseUrl + "/.system/blob/test/1";
map = TestSolrConfigHandlerConcurrent.getAsMap(url, cloudClient);
- List l = (List) Utils.getObjectByPath(map, false, Arrays.asList("response", "docs"));
- assertNotNull("" + map, l);
- assertTrue("" + map, l.size() > 0);
- map = (Map) l.get(0);
- assertEquals("" + bytarr.length, String.valueOf(map.get("size")));
+ assertEquals("" + bytarr.length, map._getStr("response/docs[0]/size",null));
compareInputAndOutput(baseUrl + "/.system/blob/test?wt=filestream", bytarr2, cloudClient);
compareInputAndOutput(baseUrl + "/.system/blob/test/1?wt=filestream", bytarr, cloudClient);
@@ -126,30 +121,24 @@ public class TestBlobHandler extends AbstractFullDistribZkTestBase {
postData(cloudClient, baseUrl, blobName, bytes);
String url;
- Map map = null;
+ MapWriter map = null;
List l;
final RTimer timer = new RTimer();
int i = 0;
for (; i < 150; i++) {//15 secs
url = baseUrl + "/.system/blob/" + blobName;
map = TestSolrConfigHandlerConcurrent.getAsMap(url, cloudClient);
- String numFound = String.valueOf(Utils.getObjectByPath(map, false, Arrays.asList("response", "numFound")));
+ String numFound = map._getStr(asList("response", "numFound"),null);
if (!("" + count).equals(numFound)) {
Thread.sleep(100);
continue;
}
- l = (List) Utils.getObjectByPath(map, false, Arrays.asList("response", "docs"));
- assertNotNull(l);
- map = (Map) l.get(0);
- assertEquals("" + bytes.limit(), String.valueOf(map.get("size")));
+
+ assertEquals("" + bytes.limit(), map._getStr("response/docs[0]/size",null));
return;
}
fail(StrUtils.formatString("Could not successfully add blob after {0} attempts. Expecting {1} items. time elapsed {2} output for url is {3}",
- i, count, timer.getTime(), getAsString(map)));
- }
-
- public static String getAsString(Map map) {
- return new String(Utils.toJSON(map), StandardCharsets.UTF_8);
+ i, count, timer.getTime(), map.toString()));
}
static void compareInputAndOutput(String url, byte[] bytarr, CloudSolrClient cloudClient) throws IOException {
@@ -182,7 +171,7 @@ public class TestBlobHandler extends AbstractFullDistribZkTestBase {
try {
response = EntityUtils.toString(entity, StandardCharsets.UTF_8);
Map m = (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
- assertFalse("Error in posting blob " + getAsString(m), m.containsKey("error"));
+ assertFalse("Error in posting blob " + m.toString(), m.containsKey("error"));
} catch (JSONParser.ParseException e) {
log.error("$ERROR$", response, e);
fail();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java b/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
index bac990c..f95d14e 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
@@ -16,22 +16,20 @@
*/
package org.apache.solr.handler;
-import static java.util.Arrays.asList;
-import static org.apache.solr.common.util.Utils.getObjectByPath;
-
import java.io.StringReader;
import java.lang.invoke.MethodHandles;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.util.EntityUtils;
import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
+import org.apache.solr.common.LinkedHashMapWriter;
+import org.apache.solr.common.MapWriter;
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Slice;
@@ -39,16 +37,17 @@ import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkConfigManager;
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.common.util.StrUtils;
+import org.apache.solr.common.util.Utils;
import org.apache.solr.core.SolrConfig;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;
-import org.noggit.JSONParser;
-import org.noggit.ObjectBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static java.util.Arrays.asList;
+
public class TestConfigReload extends AbstractFullDistribZkTestBase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -100,8 +99,8 @@ public class TestConfigReload extends AbstractFullDistribZkTestBase {
while ( TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds){
Thread.sleep(50);
for (String url : urls) {
- Map respMap = getAsMap(url+uri);
- if(String.valueOf(newVersion).equals(String.valueOf( getObjectByPath(respMap, true, asList(name, "znodeVersion"))))){
+ MapWriter respMap = getAsMap(url + uri);
+ if (String.valueOf(newVersion).equals(respMap._getStr(asList(name, "znodeVersion"), null))) {
succeeded.add(url);
}
}
@@ -111,13 +110,13 @@ public class TestConfigReload extends AbstractFullDistribZkTestBase {
assertEquals(StrUtils.formatString("tried these servers {0} succeeded only in {1} ", urls, succeeded) , urls.size(), succeeded.size());
}
- private Map getAsMap(String uri) throws Exception {
+ private LinkedHashMapWriter getAsMap(String uri) throws Exception {
HttpGet get = new HttpGet(uri) ;
HttpEntity entity = null;
try {
entity = cloudClient.getLbClient().getHttpClient().execute(get).getEntity();
String response = EntityUtils.toString(entity, StandardCharsets.UTF_8);
- return (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
+ return (LinkedHashMapWriter) Utils.MAPWRITEROBJBUILDER.apply(Utils.getJSONParser(new StringReader(response))).getVal();
} finally {
EntityUtils.consumeQuietly(entity);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
index 944fa65..76957b8 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
@@ -39,7 +39,6 @@ import org.apache.solr.util.RestTestHarness;
import org.junit.Test;
import static java.util.Arrays.asList;
-import static org.apache.solr.handler.TestBlobHandler.getAsString;
public class TestSolrConfigHandlerCloud extends AbstractFullDistribZkTestBase {
@@ -266,7 +265,7 @@ public class TestSolrConfigHandlerCloud extends AbstractFullDistribZkTestBase {
public static void compareValues(Map result, Object expected, List<String> jsonPath) {
Object val = Utils.getObjectByPath(result, false, jsonPath);
- assertTrue(StrUtils.formatString("Could not get expected value {0} for path {1} full output {2}", expected, jsonPath, getAsString(result)),
+ assertTrue(StrUtils.formatString("Could not get expected value {0} for path {1} full output {2}", expected, jsonPath, result.toString()),
expected instanceof Predicate ?
((Predicate)expected ).test(val) :
Objects.equals(expected, val)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
index 8af461b..6aa4e1f 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
@@ -16,10 +16,6 @@
*/
package org.apache.solr.handler;
-import static java.util.Arrays.asList;
-import static org.apache.solr.common.util.Utils.getObjectByPath;
-import static org.noggit.ObjectBuilder.getVal;
-
import java.io.StringReader;
import java.lang.invoke.MethodHandles;
import java.nio.charset.StandardCharsets;
@@ -36,6 +32,8 @@ import org.apache.http.util.EntityUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
+import org.apache.solr.common.LinkedHashMapWriter;
+import org.apache.solr.common.MapWriter;
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Slice;
@@ -45,10 +43,12 @@ import org.apache.solr.common.util.Utils;
import org.apache.solr.util.RestTestHarness;
import org.junit.Test;
import org.noggit.JSONParser;
-import org.noggit.ObjectBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static java.util.Arrays.asList;
+import static org.noggit.ObjectBuilder.getVal;
+
public class TestSolrConfigHandlerConcurrent extends AbstractFullDistribZkTestBase {
@@ -67,18 +67,15 @@ public class TestSolrConfigHandlerConcurrent extends AbstractFullDistribZkTestBa
final Map.Entry e = (Map.Entry) o;
if (e.getValue() instanceof Map) {
Map value = (Map) e.getValue();
- Thread t = new Thread() {
- @Override
- public void run() {
- try {
- List<String> errs = new ArrayList<>();
- collectErrors.add(errs);
- invokeBulkCall((String)e.getKey() , errs, value);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ Thread t = new Thread(() -> {
+ try {
+ List<String> errs = new ArrayList<>();
+ collectErrors.add(errs);
+ invokeBulkCall((String)e.getKey() , errs, value);
+ } catch (Exception e1) {
+ e1.printStackTrace();
}
- };
+ });
threads.add(t);
t.start();
}
@@ -155,22 +152,21 @@ public class TestSolrConfigHandlerConcurrent extends AbstractFullDistribZkTestBa
while ( TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds) {
Thread.sleep(100);
errmessages.clear();
- Map respMap = getAsMap(url+"/config/overlay", cloudClient);
- Map m = (Map) respMap.get("overlay");
- if(m!= null) m = (Map) m.get("props");
+ MapWriter respMap = getAsMap(url + "/config/overlay", cloudClient);
+ MapWriter m = (MapWriter) respMap._get("overlay/props", null);
if(m == null) {
errmessages.add(StrUtils.formatString("overlay does not exist for cache: {0} , iteration: {1} response {2} ", cacheName, i, respMap.toString()));
continue;
}
- Object o = getObjectByPath(m, true, asList("query", cacheName, "size"));
+ Object o = m._get(asList("query", cacheName, "size"), null);
if(!val1.equals(o.toString())) errmessages.add(StrUtils.formatString("'size' property not set, expected = {0}, actual {1}", val1, o));
- o = getObjectByPath(m, true, asList("query", cacheName, "initialSize"));
+ o = m._get(asList("query", cacheName, "initialSize"), null);
if(!val2.equals(o.toString())) errmessages.add(StrUtils.formatString("'initialSize' property not set, expected = {0}, actual {1}", val2, o));
- o = getObjectByPath(m, true, asList("query", cacheName, "autowarmCount"));
+ o = m._get(asList("query", cacheName, "autowarmCount"), null);
if(!val3.equals(o.toString())) errmessages.add(StrUtils.formatString("'autowarmCount' property not set, expected = {0}, actual {1}", val3, o));
if(errmessages.isEmpty()) break;
}
@@ -182,14 +178,14 @@ public class TestSolrConfigHandlerConcurrent extends AbstractFullDistribZkTestBa
}
- public static Map getAsMap(String uri, CloudSolrClient cloudClient) throws Exception {
+ public static LinkedHashMapWriter getAsMap(String uri, CloudSolrClient cloudClient) throws Exception {
HttpGet get = new HttpGet(uri) ;
HttpEntity entity = null;
try {
entity = cloudClient.getLbClient().getHttpClient().execute(get).getEntity();
String response = EntityUtils.toString(entity, StandardCharsets.UTF_8);
try {
- return (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
+ return (LinkedHashMapWriter) Utils.MAPWRITEROBJBUILDER.apply(new JSONParser(new StringReader(response))).getVal();
} catch (JSONParser.ParseException e) {
log.error(response,e);
throw e;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/solrj/src/java/org/apache/solr/common/LinkedHashMapWriter.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/LinkedHashMapWriter.java b/solr/solrj/src/java/org/apache/solr/common/LinkedHashMapWriter.java
new file mode 100644
index 0000000..fe43400
--- /dev/null
+++ b/solr/solrj/src/java/org/apache/solr/common/LinkedHashMapWriter.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.common;
+
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class LinkedHashMapWriter<V> extends LinkedHashMap<String, V> implements MapWriter {
+
+ public LinkedHashMapWriter(int initialCapacity) {
+ super(initialCapacity);
+ }
+
+ public LinkedHashMapWriter() {
+ super();
+ }
+
+ public LinkedHashMapWriter(Map<? extends String, ? extends V> m) {
+ super(m);
+ }
+
+ @Override
+ public void writeMap(EntryWriter ew) throws IOException {
+ forEach((k, v) -> ew.putNoEx(k, v));
+ }
+
+ @Override
+ public Object _get(String path, Object def) {
+ if (path.indexOf('/') == -1) return getOrDefault(path, (V) def);
+ return MapWriter.super._get(path, def);
+ }
+
+ @Override
+ public Object _get(List<String> path, Object def) {
+ if (path.size() == 1) return getOrDefault(path.get(0), (V) def);
+ return MapWriter.super._get(path, def);
+ }
+
+ @Override
+ public String toString() {
+ return jsonStr();
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/solrj/src/java/org/apache/solr/common/MapWriter.java
----------------------------------------------------------------------
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 3256b6a..9edd630 100644
--- a/solr/solrj/src/java/org/apache/solr/common/MapWriter.java
+++ b/solr/solrj/src/java/org/apache/solr/common/MapWriter.java
@@ -44,7 +44,7 @@ public interface MapWriter extends MapSerializable {
try {
writeMap(new EntryWriter() {
@Override
- public EntryWriter put(String k, Object v) throws IOException {
+ public EntryWriter put(String k, Object v) {
if (v instanceof MapWriter) v = ((MapWriter) v).toMap(new LinkedHashMap<>());
if (v instanceof IteratorWriter) v = ((IteratorWriter) v).toList(new ArrayList<>());
if (v instanceof Iterable) {
@@ -92,6 +92,11 @@ public interface MapWriter extends MapSerializable {
return v == null ? def : v;
}
+ default String _getStr(String path, String def) {
+ Object v = Utils.getObjectByPath(this, false, path);
+ return v == null ? def : String.valueOf(v);
+ }
+
default void _forEachEntry(String path, BiConsumer fun) {
Utils.forEachMapEntry(this, path, fun);
}
@@ -115,6 +120,12 @@ public interface MapWriter extends MapSerializable {
Object v = Utils.getObjectByPath(this, false, path);
return v == null ? def : v;
}
+
+ default String _getStr(List<String> path, String def) {
+ Object v = Utils.getObjectByPath(this, false, path);
+ return v == null ? def : String.valueOf(v);
+ }
+
/**
* An interface to push one entry at a time to the output.
* The order of the keys is not defined, but we assume they are distinct -- don't call {@code put} more than once
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java
----------------------------------------------------------------------
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 f6580b2..e0dd0ac 100644
--- a/solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java
+++ b/solr/solrj/src/java/org/apache/solr/common/MapWriterMap.java
@@ -18,6 +18,7 @@
package org.apache.solr.common;
import java.io.IOException;
+import java.util.List;
import java.util.Map;
public class MapWriterMap implements MapWriter {
@@ -33,6 +34,19 @@ public class MapWriterMap implements MapWriter {
}
@Override
+ public Object _get(String path, Object def) {
+ if (path.indexOf('/') == -1) return delegate.getOrDefault(path, def);
+ return MapWriter.super._get(path, def);
+ }
+
+ @Override
+ public Object _get(List<String> path, Object def) {
+ if (path.size() == 1) return delegate.getOrDefault(path.get(0), def);
+ return MapWriter.super._get(path, def);
+ }
+
+
+ @Override
public Map toMap(Map<String, Object> map) {
return delegate;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14e6eb2c/solr/solrj/src/java/org/apache/solr/common/util/Utils.java
----------------------------------------------------------------------
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 ac3f120..095ef57 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
@@ -55,6 +55,7 @@ import org.apache.solr.client.solrj.cloud.DistribStateManager;
import org.apache.solr.client.solrj.cloud.autoscaling.VersionedData;
import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
import org.apache.solr.common.IteratorWriter;
+import org.apache.solr.common.LinkedHashMapWriter;
import org.apache.solr.common.MapWriter;
import org.apache.solr.common.MapWriterMap;
import org.apache.solr.common.SolrException;
@@ -241,7 +242,7 @@ public class Utils {
JSONParser.ALLOW_MISSING_COLON_COMMA_BEFORE_OBJECT |
JSONParser.OPTIONAL_OUTER_BRACES);
try {
- return ObjectBuilder.getVal(parser);
+ return STANDARDOBJBUILDER.apply(parser).getVal(parser);
} catch (IOException e) {
throw new RuntimeException(e); // should never happen w/o using real IO
}
@@ -279,6 +280,18 @@ public class Utils {
throw new RuntimeException(e);
}
};
+ public static final Function<JSONParser, ObjectBuilder> MAPWRITEROBJBUILDER = jsonParser -> {
+ try {
+ return new ObjectBuilder(jsonParser){
+ @Override
+ public Object newObject() {
+ return new LinkedHashMapWriter();
+ }
+ };
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ };
public static Object fromJSON(InputStream is, Function<JSONParser, ObjectBuilder> objBuilderProvider) {
try {
@@ -675,4 +688,5 @@ public class Utils {
}
return def;
}
+
}