You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by rm...@apache.org on 2018/02/22 20:14:19 UTC
[08/50] [abbrv] metron git commit: METRON-1430: Isolate jackson from
being used as arguments or returns from JSONUtils closes apache/metron#910
METRON-1430: Isolate jackson from being used as arguments or returns from JSONUtils closes apache/metron#910
Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/878003a3
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/878003a3
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/878003a3
Branch: refs/heads/feature/METRON-1344-test-infrastructure
Commit: 878003a3caf55380bd9e5898a9abe848586a278b
Parents: 92c2e22
Author: cstella <ce...@gmail.com>
Authored: Fri Jan 26 15:43:35 2018 -0500
Committer: cstella <ce...@gmail.com>
Committed: Fri Jan 26 15:43:35 2018 -0500
----------------------------------------------------------------------
.../metron/maas/functions/MaaSFunctions.java | 4 +-
.../common/configuration/Configurations.java | 4 +-
.../configuration/ConfigurationsUtils.java | 5 +-
.../GlobalConfigurationOperations.java | 4 +-
.../IndexingConfigurationOperations.java | 4 +-
.../configuration/IndexingConfigurations.java | 4 +-
.../apache/metron/common/utils/JSONUtils.java | 60 ++++++++++++++++----
.../apache/metron/common/utils/KafkaUtils.java | 5 +-
.../configuration/StellarEnrichmentTest.java | 4 +-
.../metron/common/utils/JSONUtilsTest.java | 14 ++---
.../ZKConfigurationsCacheIntegrationTest.java | 10 ++--
.../TransformFilterExtractorDecorator.java | 4 +-
.../nonbulk/geo/GeoEnrichmentLoader.java | 4 +-
.../bulk/ElasticsearchImportExport.java | 4 +-
.../ElasticsearchSearchIntegrationTest.java | 6 ++
.../ElasticsearchUpdateIntegrationTest.java | 7 +--
.../components/ElasticSearchComponent.java | 4 +-
.../enrichment/cli/LatencySummarizer.java | 3 +-
.../integration/EnrichmentIntegrationTest.java | 6 +-
.../apache/metron/indexing/dao/HBaseDao.java | 3 +-
.../apache/metron/indexing/dao/IndexDao.java | 13 ++++-
.../metron/indexing/dao/update/Document.java | 4 +-
.../apache/metron/indexing/dao/InMemoryDao.java | 3 +-
.../indexing/dao/SearchIntegrationTest.java | 6 +-
.../HDFSIndexingIntegrationTest.java | 4 +-
.../integration/IndexingIntegrationTest.java | 3 +-
.../apache/metron/parsers/bolt/ParserBolt.java | 4 +-
.../metron/parsers/json/JSONMapParser.java | 4 +-
.../parsers/topology/ParserTopologyCLI.java | 4 +-
.../parsers/topology/config/ConfigHandlers.java | 4 +-
.../parsers/integration/ParserDriver.java | 4 +-
.../integration/WriterBoltIntegrationTest.java | 3 +-
.../common/benchmark/StellarMicrobenchmark.java | 4 +-
.../common/configuration/ConfigurationType.java | 4 +-
.../shell/DefaultStellarShellExecutor.java | 5 +-
.../stellar/common/shell/cli/StellarShell.java | 3 +-
.../metron/stellar/common/utils/JSONUtils.java | 43 ++++++++++++--
.../stellar/dsl/functions/StringFunctions.java | 27 +++++----
.../stellar/common/utils/JSONUtilsTest.java | 4 +-
.../dsl/functions/StringFunctionsTest.java | 11 ++--
40 files changed, 169 insertions(+), 147 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/functions/MaaSFunctions.java
----------------------------------------------------------------------
diff --git a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/functions/MaaSFunctions.java b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/functions/MaaSFunctions.java
index eacb64d..a260f25 100644
--- a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/functions/MaaSFunctions.java
+++ b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/functions/MaaSFunctions.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.maas.functions;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.lang.invoke.MethodHandles;
@@ -174,8 +173,7 @@ public class MaaSFunctions {
URL u = new URL(url + "/" + modelFunction);
String results = RESTUtil.INSTANCE.getRESTJSONResults(u, modelArgs);
- ret = JSONUtils.INSTANCE.load(results, new TypeReference<Map<String, Object>>() {
- });
+ ret = JSONUtils.INSTANCE.load(results, JSONUtils.MAP_SUPPLIER);
resultCache.put(cacheKey, ret);
return ret;
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/Configurations.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/Configurations.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/Configurations.java
index ecf8a1b..af421a9 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/Configurations.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/Configurations.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.common.configuration;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -61,8 +60,7 @@ public class Configurations implements Serializable {
}
public void updateGlobalConfig(InputStream io) throws IOException {
- Map<String, Object> globalConfig = JSONUtils.INSTANCE.load(io, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> globalConfig = JSONUtils.INSTANCE.load(io, JSONUtils.MAP_SUPPLIER);
updateGlobalConfig(globalConfig);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/ConfigurationsUtils.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/ConfigurationsUtils.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/ConfigurationsUtils.java
index 5183788..a89db63 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/ConfigurationsUtils.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/ConfigurationsUtils.java
@@ -596,10 +596,7 @@ public class ConfigurationsUtils {
byte[] patchData, CuratorFramework client) throws Exception {
byte[] configData = readConfigBytesFromZookeeper(configurationType, configName, client);
- JsonNode source = JSONUtils.INSTANCE.readTree(configData);
- JsonNode patch = JSONUtils.INSTANCE.readTree(patchData);
- JsonNode patchedConfig = JSONUtils.INSTANCE.applyPatch(patch, source);
- byte[] prettyPatchedConfig = JSONUtils.INSTANCE.toJSONPretty(patchedConfig);
+ byte[] prettyPatchedConfig = JSONUtils.INSTANCE.applyPatch(patchData, configData);
// ensure the patch produces a valid result; otherwise exception thrown during deserialization
String prettyPatchedConfigStr = new String(prettyPatchedConfig);
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/GlobalConfigurationOperations.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/GlobalConfigurationOperations.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/GlobalConfigurationOperations.java
index 4842c91..581ec3e 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/GlobalConfigurationOperations.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/GlobalConfigurationOperations.java
@@ -18,7 +18,6 @@
package org.apache.metron.common.configuration;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.IOException;
import java.util.Map;
import org.apache.curator.framework.CuratorFramework;
@@ -38,8 +37,7 @@ public class GlobalConfigurationOperations implements ConfigurationOperations {
@Override
public Object deserialize(String s) throws IOException {
- return JSONUtils.INSTANCE.load(s, new TypeReference<Map<String, Object>>() {
- });
+ return JSONUtils.INSTANCE.load(s, JSONUtils.MAP_SUPPLIER);
}
@Override
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurationOperations.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurationOperations.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurationOperations.java
index a75c84e..7884e4d 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurationOperations.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurationOperations.java
@@ -18,7 +18,6 @@
package org.apache.metron.common.configuration;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.IOException;
import java.util.Map;
import org.apache.curator.framework.CuratorFramework;
@@ -33,8 +32,7 @@ public class IndexingConfigurationOperations implements ConfigurationOperations
@Override
public Object deserialize(String s) throws IOException {
- return JSONUtils.INSTANCE.load(s, new TypeReference<Map<String, Object>>() {
- });
+ return JSONUtils.INSTANCE.load(s, JSONUtils.MAP_SUPPLIER);
}
@Override
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
index 003b6df..7ef9f00 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/configuration/IndexingConfigurations.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.common.configuration;
-import com.fasterxml.jackson.core.type.TypeReference;
import org.apache.metron.stellar.common.utils.ConversionUtils;
import org.apache.metron.common.utils.JSONUtils;
@@ -77,8 +76,7 @@ public class IndexingConfigurations extends Configurations {
}
public void updateSensorIndexingConfig(String sensorType, InputStream io) throws IOException {
- Map<String, Object> sensorIndexingConfig = JSONUtils.INSTANCE.load(io, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> sensorIndexingConfig = JSONUtils.INSTANCE.load(io, JSONUtils.MAP_SUPPLIER);
updateSensorIndexingConfig(sensorType, sensorIndexingConfig);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/JSONUtils.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/JSONUtils.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/JSONUtils.java
index 280b167..135546d 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/JSONUtils.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/JSONUtils.java
@@ -29,6 +29,15 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Supplier;
+
+import com.google.common.reflect.TypeToken;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@@ -36,6 +45,31 @@ import org.json.simple.parser.ParseException;
public enum JSONUtils {
INSTANCE;
+ public static class ReferenceSupplier<T> implements Supplier<TypeReference<T>> {
+ Type type;
+ protected ReferenceSupplier() {
+ Type superClass = this.getClass().getGenericSuperclass();
+ if(superClass instanceof Class) {
+ throw new IllegalArgumentException("Internal error: ReferenceSupplier constructed without actual type information");
+ } else {
+ this.type = ((ParameterizedType)superClass).getActualTypeArguments()[0];
+ }
+ }
+
+ @Override
+ public TypeReference<T> get() {
+ return new TypeReference<T>() {
+ @Override
+ public Type getType() {
+ return type;
+ }
+ };
+ }
+ }
+
+ public final static ReferenceSupplier<Map<String, Object>> MAP_SUPPLIER = new ReferenceSupplier<Map<String, Object>>() {};
+ public final static ReferenceSupplier<List<Object>> LIST_SUPPLIER = new ReferenceSupplier<List<Object>>(){};
+
private static ThreadLocal<JSONParser> _parser = ThreadLocal.withInitial(() ->
new JSONParser());
@@ -51,17 +85,17 @@ public enum JSONUtils {
}
- public <T> T load(InputStream is, TypeReference<T> ref) throws IOException {
- return _mapper.get().readValue(is, ref);
+ public <T> T load(InputStream is, ReferenceSupplier<T> ref) throws IOException {
+ return _mapper.get().readValue(is, (TypeReference<T>)ref.get());
}
- public <T> T load(String is, TypeReference<T> ref) throws IOException {
- return _mapper.get().readValue(is, ref);
+ public <T> T load(String is, ReferenceSupplier<T> ref) throws IOException {
+ return _mapper.get().readValue(is, (TypeReference<T>)ref.get());
}
- public <T> T load(File f, TypeReference<T> ref) throws IOException {
+ public <T> T load(File f, ReferenceSupplier<T> ref) throws IOException {
try (InputStream is = new BufferedInputStream(new FileInputStream(f))) {
- return _mapper.get().readValue(is, ref);
+ return _mapper.get().readValue(is, (TypeReference<T>)ref.get());
}
}
@@ -108,7 +142,7 @@ public enum JSONUtils {
* @param json JSON value to deserialize
* @return deserialized JsonNode Object
*/
- public JsonNode readTree(String json) throws IOException {
+ JsonNode readTree(String json) throws IOException {
return _mapper.get().readTree(json);
}
@@ -118,7 +152,7 @@ public enum JSONUtils {
* @param json JSON value to deserialize
* @return deserialized JsonNode Object
*/
- public JsonNode readTree(byte[] json) throws IOException {
+ JsonNode readTree(byte[] json) throws IOException {
return _mapper.get().readTree(json);
}
@@ -138,14 +172,16 @@ public enum JSONUtils {
* @param source Source JSON to apply patch to
* @return new json after applying the patch
*/
- public JsonNode applyPatch(String patch, String source) throws IOException {
+ public byte[] applyPatch(String patch, String source) throws IOException {
JsonNode patchNode = readTree(patch);
JsonNode sourceNode = readTree(source);
- return applyPatch(patchNode, sourceNode);
+ return toJSONPretty(JsonPatch.apply(patchNode, sourceNode));
}
- public JsonNode applyPatch(JsonNode patch, JsonNode source) throws IOException {
- return JsonPatch.apply(patch, source);
+ public byte[] applyPatch(byte[] patch, byte[] source) throws IOException {
+ JsonNode patchNode = readTree(patch);
+ JsonNode sourceNode = readTree(source);
+ return toJSONPretty(JsonPatch.apply(patchNode, sourceNode));
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/KafkaUtils.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/KafkaUtils.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/KafkaUtils.java
index a26a3bb..d54e2b8 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/KafkaUtils.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/KafkaUtils.java
@@ -18,7 +18,7 @@
package org.apache.metron.common.utils;
-import com.fasterxml.jackson.core.type.TypeReference;
+import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import org.apache.curator.RetryPolicy;
@@ -48,8 +48,7 @@ public enum KafkaUtils {
for(String id : client.getChildren().forPath("/brokers/ids")) {
byte[] data = client.getData().forPath("/brokers/ids/" + id);
String brokerInfoStr = new String(data);
- Map<String, Object> brokerInfo = JSONUtils.INSTANCE.load(brokerInfoStr, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> brokerInfo = JSONUtils.INSTANCE.load(brokerInfoStr, JSONUtils.MAP_SUPPLIER);
String host = (String) brokerInfo.get("host");
if(host != null) {
ret.add(host + ":" + brokerInfo.get("port"));
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentTest.java
index 8eb9bbc..60a7d82 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentTest.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.common.configuration;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.collect.ImmutableList;
import org.adrianwalker.multilinestring.Multiline;
import org.apache.metron.common.utils.JSONUtils;
@@ -221,8 +220,7 @@ public class StellarEnrichmentTest {
public static String message;
public static JSONObject getMessage() throws IOException {
- Map<String, Object> ret = JSONUtils.INSTANCE.load(message, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> ret = JSONUtils.INSTANCE.load(message, JSONUtils.MAP_SUPPLIER);
return new JSONObject(ret);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java
index 7f4846e..4676591 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java
@@ -21,7 +21,6 @@ package org.apache.metron.common.utils;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.File;
import java.io.IOException;
@@ -56,8 +55,7 @@ public class JSONUtilsTest {
put("b", "world");
}};
Map<String, Object> actual = JSONUtils.INSTANCE
- .load(configFile, new TypeReference<Map<String, Object>>() {
- });
+ .load(configFile, JSONUtils.MAP_SUPPLIER);
assertThat("config not equal", actual, equalTo(expected));
}
@@ -123,9 +121,8 @@ public class JSONUtilsTest {
@Test
public void applyPatch_modifies_source_json_doc() throws IOException {
- JsonNode actual = JSONUtils.INSTANCE.applyPatch(patchJson, sourceJson);
- JsonNode expected = JSONUtils.INSTANCE.readTree(expectedJson);
- assertThat(actual, equalTo(expected));
+ String actual = new String(JSONUtils.INSTANCE.applyPatch(patchJson, sourceJson));
+ assertThat(JSONUtils.INSTANCE.load(actual, JSONUtils.MAP_SUPPLIER), equalTo(JSONUtils.INSTANCE.load(expectedJson, JSONUtils.MAP_SUPPLIER)));
}
/**
@@ -160,9 +157,8 @@ public class JSONUtilsTest {
@Test
public void applyPatch_modifies_complex_source_json_doc() throws IOException {
- JsonNode actual = JSONUtils.INSTANCE.applyPatch(patchComplexJson, complexJson);
- JsonNode expected = JSONUtils.INSTANCE.readTree(expectedComplexJson);
- assertThat(actual, equalTo(expected));
+ String actual = new String(JSONUtils.INSTANCE.applyPatch(patchComplexJson, complexJson));
+ assertThat(JSONUtils.INSTANCE.load(actual, JSONUtils.MAP_SUPPLIER), equalTo(JSONUtils.INSTANCE.load(expectedComplexJson, JSONUtils.MAP_SUPPLIER)));
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java
index 64bf986..ec4a98a 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.common.zookeeper;
-import com.fasterxml.jackson.core.type.TypeReference;
import org.adrianwalker.multilinestring.Multiline;
import org.apache.commons.io.IOUtils;
import org.apache.curator.framework.CuratorFramework;
@@ -226,14 +225,14 @@ public class ZKConfigurationsCacheIntegrationTest {
ConfigurationsUtils.writeProfilerConfigToZookeeper( profilerConfig.getBytes(), client);
//indexing
{
- Map<String, Object> expectedConfig = JSONUtils.INSTANCE.load(testIndexingConfig, new TypeReference<Map<String, Object>>() {});
+ Map<String, Object> expectedConfig = JSONUtils.INSTANCE.load(testIndexingConfig, JSONUtils.MAP_SUPPLIER);
IndexingConfigurations config = cache.get( IndexingConfigurations.class);
assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorIndexingConfig("test")));
}
//enrichment
{
SensorEnrichmentConfig expectedConfig = JSONUtils.INSTANCE.load(testEnrichmentConfig, SensorEnrichmentConfig.class);
- Map<String, Object> expectedGlobalConfig = JSONUtils.INSTANCE.load(globalConfig, new TypeReference<Map<String, Object>>() {});
+ Map<String, Object> expectedGlobalConfig = JSONUtils.INSTANCE.load(globalConfig, JSONUtils.MAP_SUPPLIER);
EnrichmentConfigurations config = cache.get( EnrichmentConfigurations.class);
assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorEnrichmentConfig("test")));
assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
@@ -255,12 +254,11 @@ public class ZKConfigurationsCacheIntegrationTest {
@Test
public void validateBaseWrite() throws Exception {
File globalConfigFile = new File(TestConstants.SAMPLE_CONFIG_PATH + "/global.json");
- Map<String, Object> expectedGlobalConfig = JSONUtils.INSTANCE.load(globalConfigFile, new TypeReference<Map<String, Object>>() { });
+ Map<String, Object> expectedGlobalConfig = JSONUtils.INSTANCE.load(globalConfigFile, JSONUtils.MAP_SUPPLIER);
//indexing
{
File inFile = new File(TestConstants.SAMPLE_CONFIG_PATH + "/indexing/test.json");
- Map<String, Object> expectedConfig = JSONUtils.INSTANCE.load(inFile, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> expectedConfig = JSONUtils.INSTANCE.load(inFile, JSONUtils.MAP_SUPPLIER);
IndexingConfigurations config = cache.get( IndexingConfigurations.class);
assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorIndexingConfig("test")));
assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecorator.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecorator.java b/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecorator.java
index c47dfc6..b665a01 100644
--- a/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecorator.java
+++ b/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecorator.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.dataloads.extractor;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
@@ -208,8 +207,7 @@ public class TransformFilterExtractorDecorator extends ExtractorDecorator implem
try {
return JSONUtils.INSTANCE.load(
new ByteArrayInputStream(ConfigurationsUtils.readGlobalConfigBytesFromZookeeper(zkClient.get())),
- new TypeReference<Map<String, Object>>() {
- });
+ JSONUtils.MAP_SUPPLIER);
} catch (Exception e) {
LOG.warn("Exception thrown while attempting to get global config from Zookeeper.", e);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/nonbulk/geo/GeoEnrichmentLoader.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/nonbulk/geo/GeoEnrichmentLoader.java b/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/nonbulk/geo/GeoEnrichmentLoader.java
index 322edec..b366015 100644
--- a/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/nonbulk/geo/GeoEnrichmentLoader.java
+++ b/metron-platform/metron-data-management/src/main/java/org/apache/metron/dataloads/nonbulk/geo/GeoEnrichmentLoader.java
@@ -18,7 +18,6 @@
package org.apache.metron.dataloads.nonbulk.geo;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import org.apache.commons.cli.*;
@@ -200,8 +199,7 @@ public class GeoEnrichmentLoader {
// Fetch the global configuration
Map<String, Object> global = JSONUtils.INSTANCE.load(
new ByteArrayInputStream(ConfigurationsUtils.readGlobalConfigBytesFromZookeeper(client)),
- new TypeReference<Map<String, Object>>() {
- });
+ JSONUtils.MAP_SUPPLIER);
// Update the global config and push it back
global.put(GeoLiteDatabase.GEO_HDFS_FILE, dstPath.toString() + "/" + srcPath.getName());
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExport.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExport.java b/metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExport.java
index 0a04dfc..77e0d61 100644
--- a/metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExport.java
+++ b/metron-platform/metron-elasticsearch/src/main/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExport.java
@@ -18,7 +18,6 @@
package org.apache.metron.elasticsearch.bulk;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
@@ -71,8 +70,7 @@ public class ElasticsearchImportExport {
String line;
while ((line = br.readLine()) != null) {
Map<String, Object> inDoc = JSONUtils.INSTANCE
- .load(line, new TypeReference<Map<String, Object>>() {
- });
+ .load(line, JSONUtils.MAP_SUPPLIER);
Object id = inDoc.get("_id");
Object type = inDoc.get("_type");
String createRaw = String
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java b/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java
index f86a04d..1bc5b6e 100644
--- a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java
+++ b/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java
@@ -21,13 +21,16 @@ package org.apache.metron.elasticsearch.integration;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
+import java.util.List;
import java.util.concurrent.ExecutionException;
import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.common.utils.JSONUtils;
import org.apache.metron.elasticsearch.dao.ElasticsearchDao;
import org.apache.metron.elasticsearch.integration.components.ElasticSearchComponent;
import org.apache.metron.indexing.dao.AccessConfig;
import org.apache.metron.indexing.dao.IndexDao;
import org.apache.metron.indexing.dao.SearchIntegrationTest;
+import org.apache.metron.indexing.dao.search.GetRequest;
import org.apache.metron.integration.InMemoryComponent;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
@@ -37,6 +40,7 @@ import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+import org.junit.Test;
public class ElasticsearchSearchIntegrationTest extends SearchIntegrationTest {
@@ -233,4 +237,6 @@ public class ElasticsearchSearchIntegrationTest extends SearchIntegrationTest {
throw new RuntimeException("Failed to index test data");
}
}
+
+
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java b/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java
index 116ee4b..325d42e 100644
--- a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java
+++ b/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java
@@ -18,7 +18,6 @@
package org.apache.metron.elasticsearch.integration;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.collect.Iterables;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
@@ -158,7 +157,7 @@ public class ElasticsearchUpdateIntegrationTest {
Assert.assertEquals(1, columns.size());
Assert.assertEquals(message0
, JSONUtils.INSTANCE.load(new String(columns.lastEntry().getValue())
- , new TypeReference<Map<String, Object>>() {})
+ , JSONUtils.MAP_SUPPLIER)
);
}
{
@@ -195,10 +194,10 @@ public class ElasticsearchUpdateIntegrationTest {
NavigableMap<byte[], byte[]> columns = r.getFamilyMap(CF.getBytes());
Assert.assertEquals(2, columns.size());
Assert.assertEquals(message0, JSONUtils.INSTANCE.load(new String(columns.lastEntry().getValue())
- , new TypeReference<Map<String, Object>>() {})
+ , JSONUtils.MAP_SUPPLIER)
);
Assert.assertNotEquals(message0, JSONUtils.INSTANCE.load(new String(columns.firstEntry().getValue())
- , new TypeReference<Map<String, Object>>() {})
+ , JSONUtils.MAP_SUPPLIER)
);
}
{
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/components/ElasticSearchComponent.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/components/ElasticSearchComponent.java b/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/components/ElasticSearchComponent.java
index f95ef21..e716ce1 100644
--- a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/components/ElasticSearchComponent.java
+++ b/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/integration/components/ElasticSearchComponent.java
@@ -19,7 +19,6 @@ package org.apache.metron.elasticsearch.integration.components;
import static java.util.Arrays.asList;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -210,8 +209,7 @@ public class ElasticSearchComponent implements InMemoryComponent {
indexRequestBuilder = indexRequestBuilder.setSource(doc);
Map<String, Object> esDoc = JSONUtils.INSTANCE
- .load(doc, new TypeReference<Map<String, Object>>() {
- });
+ .load(doc, JSONUtils.MAP_SUPPLIER);
indexRequestBuilder.setId((String) esDoc.get(Constants.GUID));
Object ts = esDoc.get("timestamp");
if (ts != null) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-enrichment/src/main/java/org/apache/metron/enrichment/cli/LatencySummarizer.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-enrichment/src/main/java/org/apache/metron/enrichment/cli/LatencySummarizer.java b/metron-platform/metron-enrichment/src/main/java/org/apache/metron/enrichment/cli/LatencySummarizer.java
index b40f2ad..2e5e8bf 100644
--- a/metron-platform/metron-enrichment/src/main/java/org/apache/metron/enrichment/cli/LatencySummarizer.java
+++ b/metron-platform/metron-enrichment/src/main/java/org/apache/metron/enrichment/cli/LatencySummarizer.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.enrichment.cli;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
@@ -181,7 +180,7 @@ public class LatencySummarizer {
LatencyStats statsMap = new LatencyStats();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for(String line = null;(line = reader.readLine()) != null;) {
- Map<String, Object> doc = JSONUtils.INSTANCE.load(line, new TypeReference<HashMap<String, Object>>() {});
+ Map<String, Object> doc = JSONUtils.INSTANCE.load(line, JSONUtils.MAP_SUPPLIER);
updateStats(statsMap, doc);
}
statsMap.printSummary(cmd.hasOption('m'));
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java b/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java
index c457e86..828f4e3 100644
--- a/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java
+++ b/metron-platform/metron-enrichment/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java
@@ -24,7 +24,6 @@ import static org.apache.metron.enrichment.bolt.ThreatIntelJoinBolt.THREAT_TRIAG
import static org.apache.metron.enrichment.bolt.ThreatIntelJoinBolt.THREAT_TRIAGE_RULE_SCORE;
import static org.apache.metron.enrichment.bolt.ThreatIntelJoinBolt.THREAT_TRIAGE_SCORE_KEY;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.base.Predicate;
@@ -163,8 +162,7 @@ public class EnrichmentIntegrationTest extends BaseIntegrationTest {
String globalConfigStr = null;
{
File globalConfig = new File(new File(TestConstants.SAMPLE_CONFIG_PATH), "global.json");
- Map<String, Object> config = JSONUtils.INSTANCE.load(globalConfig, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> config = JSONUtils.INSTANCE.load(globalConfig, JSONUtils.MAP_SUPPLIER);
config.put(SimpleHBaseEnrichmentFunctions.TABLE_PROVIDER_TYPE_CONF, MockHBaseTableProvider.class.getName());
config.put(SimpleHBaseEnrichmentFunctions.ACCESS_TRACKER_TYPE_CONF, "PERSISTENT_BLOOM");
config.put(PersistentBloomTrackerCreator.Config.PERSISTENT_BLOOM_TABLE, trackerHBaseTableName);
@@ -531,7 +529,7 @@ public class EnrichmentIntegrationTest extends BaseIntegrationTest {
, message -> {
try {
return new HashMap<>(JSONUtils.INSTANCE.load(new String(message)
- , new TypeReference<Map<String, Object>>() {}
+ , JSONUtils.MAP_SUPPLIER
)
);
} catch (Exception ex) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/HBaseDao.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/HBaseDao.java b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/HBaseDao.java
index 72f2980..ebb9907 100644
--- a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/HBaseDao.java
+++ b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/HBaseDao.java
@@ -18,7 +18,6 @@
package org.apache.metron.indexing.dao;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
@@ -210,7 +209,7 @@ public class HBaseDao implements IndexDao {
Long ts = Bytes.toLong(entry.getKey());
if(entry.getValue()!= null) {
Map<String, Object> json = JSONUtils.INSTANCE.load(new String(entry.getValue()),
- new TypeReference<Map<String, Object>>() {});
+ JSONUtils.MAP_SUPPLIER);
try {
Key k = Key.fromBytes(result.getRow());
return new Document(json, k.getGuid(), k.getSensorType(), ts);
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/IndexDao.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/IndexDao.java b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/IndexDao.java
index 03d348a..2c057d4 100644
--- a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/IndexDao.java
+++ b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/IndexDao.java
@@ -17,12 +17,16 @@
*/
package org.apache.metron.indexing.dao;
+import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.flipkart.zjsonpatch.JsonPatch;
import org.apache.metron.common.utils.JSONUtils;
import org.apache.metron.indexing.dao.search.FieldType;
import org.apache.metron.indexing.dao.search.GetRequest;
@@ -42,6 +46,9 @@ import org.apache.metron.indexing.dao.update.ReplaceRequest;
*/
public interface IndexDao {
+ public static ThreadLocal<ObjectMapper> _mapper = ThreadLocal.withInitial(() ->
+ new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL));
+
/**
* Return search response based on the search request
*
@@ -140,9 +147,9 @@ public interface IndexDao {
throw new OriginalNotFoundException("Unable to patch an document that doesn't exist and isn't specified.");
}
}
- JsonNode originalNode = JSONUtils.INSTANCE.convert(latest, JsonNode.class);
- JsonNode patched = JSONUtils.INSTANCE.applyPatch(request.getPatch(), originalNode);
- Map<String, Object> updated = JSONUtils.INSTANCE.getMapper()
+ JsonNode originalNode = _mapper.get().convertValue(latest, JsonNode.class);
+ JsonNode patched = JsonPatch.apply(request.getPatch(), originalNode);
+ Map<String, Object> updated = _mapper.get()
.convertValue(patched, new TypeReference<Map<String, Object>>() {});
return new Document( updated
, request.getGuid()
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/update/Document.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/update/Document.java b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/update/Document.java
index b5fcb02..6f2f779 100644
--- a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/update/Document.java
+++ b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/update/Document.java
@@ -18,7 +18,6 @@
package org.apache.metron.indexing.dao.update;
-import com.fasterxml.jackson.core.type.TypeReference;
import org.apache.metron.common.utils.JSONUtils;
import java.io.IOException;
@@ -47,8 +46,7 @@ public class Document {
}
private static Map<String, Object> convertDoc(String document) throws IOException {
- return JSONUtils.INSTANCE.load(document, new TypeReference<Map<String, Object>>() {
- });
+ return JSONUtils.INSTANCE.load(document, JSONUtils.MAP_SUPPLIER);
}
public String getSensorType() {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java
index 002ec28..79c3bb3 100644
--- a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java
+++ b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.indexing.dao;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Splitter;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.Iterables;
@@ -193,7 +192,7 @@ public class InMemoryDao implements IndexDao {
public static Map<String, Object> parse(String doc) {
try {
- return JSONUtils.INSTANCE.load(doc, new TypeReference<Map<String, Object>>() {});
+ return JSONUtils.INSTANCE.load(doc, JSONUtils.MAP_SUPPLIER);
} catch (IOException e) {
throw new IllegalStateException(e.getMessage(), e);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java
index f381688..b40db46 100644
--- a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java
+++ b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java
@@ -18,7 +18,6 @@
*/
package org.apache.metron.indexing.dao;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -464,8 +463,7 @@ public abstract class SearchIntegrationTest {
@Test
public void get_all_latest_guid() throws Exception {
- List<GetRequest> request = JSONUtils.INSTANCE.load(getAllLatestQuery, new TypeReference<List<GetRequest>>() {
- });
+ List<GetRequest> request = JSONUtils.INSTANCE.load(getAllLatestQuery, new JSONUtils.ReferenceSupplier<List<GetRequest>>(){});
Map<String, Document> docs = new HashMap<>();
for(Document doc : dao.getAllLatest(request)) {
@@ -945,4 +943,4 @@ public abstract class SearchIntegrationTest {
protected abstract IndexDao createDao() throws Exception;
protected abstract InMemoryComponent startIndex() throws Exception;
protected abstract void loadTestData() throws Exception;
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/HDFSIndexingIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/HDFSIndexingIntegrationTest.java b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/HDFSIndexingIntegrationTest.java
index ab5cc3f..b8af6a3 100644
--- a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/HDFSIndexingIntegrationTest.java
+++ b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/HDFSIndexingIntegrationTest.java
@@ -18,7 +18,6 @@
package org.apache.metron.indexing.integration;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import org.apache.metron.common.interfaces.FieldNameConverter;
@@ -75,8 +74,7 @@ public class HDFSIndexingIntegrationTest extends IndexingIntegrationTest {
Iterables.addAll(ret, Iterables.transform(data, bytes -> {
String s = new String(bytes);
try {
- return JSONUtils.INSTANCE.load(s, new TypeReference<Map<String, Object>>() {
- });
+ return JSONUtils.INSTANCE.load(s,JSONUtils.MAP_SUPPLIER);
} catch (IOException e) {
throw new RuntimeException(e);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java
index b0b6cc2..1671ab3 100644
--- a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java
+++ b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java
@@ -18,7 +18,6 @@
package org.apache.metron.indexing.integration;
-import com.fasterxml.jackson.core.type.TypeReference;
import org.apache.curator.framework.CuratorFramework;
import org.apache.metron.TestConstants;
import org.apache.metron.common.Constants;
@@ -81,7 +80,7 @@ public abstract class IndexingIntegrationTest extends BaseIntegrationTest {
}});
List<Map<String, Object>> inputDocs = new ArrayList<>();
for(byte[] b : inputMessages) {
- Map<String, Object> m = JSONUtils.INSTANCE.load(new String(b), new TypeReference<Map<String, Object>>() {});
+ Map<String, Object> m = JSONUtils.INSTANCE.load(new String(b), JSONUtils.MAP_SUPPLIER);
inputDocs.add(m);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
index 99785b2..6fc4ed7 100644
--- a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
+++ b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/bolt/ParserBolt.java
@@ -19,7 +19,6 @@ package org.apache.metron.parsers.bolt;
import static org.apache.metron.common.Constants.METADATA_PREFIX;
-import com.fasterxml.jackson.core.type.TypeReference;
import java.io.IOException;
import java.io.Serializable;
import java.lang.invoke.MethodHandles;
@@ -146,8 +145,7 @@ public class ParserBolt extends ConfiguredParserBolt implements Serializable {
try {
keyStr = keyObj == null?null:new String(keyObj);
if(!StringUtils.isEmpty(keyStr)) {
- Map<String, Object> metadata = JSONUtils.INSTANCE.load(keyStr, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> metadata = JSONUtils.INSTANCE.load(keyStr,JSONUtils.MAP_SUPPLIER);
for(Map.Entry<String, Object> kv : metadata.entrySet()) {
ret.put(METADATA_PREFIX + kv.getKey(), kv.getValue());
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java
index 5d82456..7e5468f 100644
--- a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java
+++ b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/json/JSONMapParser.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.parsers.json;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import org.apache.metron.common.utils.JSONUtils;
@@ -96,8 +95,7 @@ public class JSONMapParser extends BasicParser {
try {
String originalString = new String(rawMessage);
//convert the JSON blob into a String -> Object map
- Map<String, Object> rawMap = JSONUtils.INSTANCE.load(originalString, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> rawMap = JSONUtils.INSTANCE.load(originalString, JSONUtils.MAP_SUPPLIER);
JSONObject ret = normalizeJSON(rawMap);
ret.put("original_string", originalString );
if(!ret.containsKey("timestamp")) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/ParserTopologyCLI.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/ParserTopologyCLI.java b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/ParserTopologyCLI.java
index 4ce0508..3824212 100644
--- a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/ParserTopologyCLI.java
+++ b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/ParserTopologyCLI.java
@@ -24,7 +24,6 @@ import org.apache.storm.Config;
import org.apache.storm.LocalCluster;
import org.apache.storm.StormSubmitter;
import org.apache.storm.utils.Utils;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Joiner;
import org.apache.commons.cli.*;
import org.apache.commons.io.FileUtils;
@@ -492,8 +491,7 @@ public class ParserTopologyCLI {
throw new IllegalArgumentException("Unable to load JSON file at " + inputFile.getAbsolutePath());
}
try {
- return JSONUtils.INSTANCE.load(json, new TypeReference<Map<String, Object>>() {
- });
+ return JSONUtils.INSTANCE.load(json, JSONUtils.MAP_SUPPLIER);
} catch (IOException e) {
throw new IllegalStateException("Unable to process JSON.", e);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/config/ConfigHandlers.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/config/ConfigHandlers.java b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/config/ConfigHandlers.java
index f6c04a6..8d98922 100644
--- a/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/config/ConfigHandlers.java
+++ b/metron-platform/metron-parsers/src/main/java/org/apache/metron/parsers/topology/config/ConfigHandlers.java
@@ -19,7 +19,6 @@
package org.apache.metron.parsers.topology.config;
import org.apache.storm.Config;
-import com.fasterxml.jackson.core.type.TypeReference;
import org.apache.commons.io.FileUtils;
import org.apache.metron.common.utils.JSONUtils;
@@ -81,8 +80,7 @@ public class ConfigHandlers {
json = arg.getArg();
}
try {
- arg.getConfig().putAll(JSONUtils.INSTANCE.load(json, new TypeReference<Map<String, Object>>() {
- }));
+ arg.getConfig().putAll(JSONUtils.INSTANCE.load(json, JSONUtils.MAP_SUPPLIER));
} catch (IOException e) {
throw new IllegalStateException("Unable to process JSON snippet.", e);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java b/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java
index b844104..deb0217 100644
--- a/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java
+++ b/metron-platform/metron-parsers/src/test/java/org/apache/metron/parsers/integration/ParserDriver.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.parsers.integration;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.collect.ImmutableList;
import org.apache.metron.common.configuration.ConfigurationsUtils;
import org.apache.metron.common.configuration.FieldValidator;
@@ -147,8 +146,7 @@ public class ParserDriver {
public ParserDriver(String sensorType, String parserConfig, String globalConfig) throws IOException {
config = SensorParserConfig.fromBytes(parserConfig.getBytes());
this.sensorType = sensorType;
- this.globalConfig = JSONUtils.INSTANCE.load(globalConfig, new TypeReference<Map<String, Object>>() {
- });
+ this.globalConfig = JSONUtils.INSTANCE.load(globalConfig, JSONUtils.MAP_SUPPLIER);
}
public ProcessorResult<List<byte[]>> run(List<byte[]> in) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-platform/metron-parsers/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-parsers/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java b/metron-platform/metron-parsers/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java
index d4d1c02..0cfaae3 100644
--- a/metron-platform/metron-parsers/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java
+++ b/metron-platform/metron-parsers/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.writers.integration;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import org.adrianwalker.multilinestring.Multiline;
@@ -171,7 +170,7 @@ public class WriterBoltIntegrationTest extends BaseIntegrationTest {
, message -> {
try {
return new JSONObject(JSONUtils.INSTANCE.load(new String(message)
- , new TypeReference<Map<String, Object>>() {}
+ ,JSONUtils.MAP_SUPPLIER
)
);
} catch (Exception ex) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/benchmark/StellarMicrobenchmark.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/benchmark/StellarMicrobenchmark.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/benchmark/StellarMicrobenchmark.java
index 35fa673..914105e 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/benchmark/StellarMicrobenchmark.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/benchmark/StellarMicrobenchmark.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.stellar.common.benchmark;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.io.Files;
@@ -231,8 +230,7 @@ public class StellarMicrobenchmark {
List<String> lines = Files.readLines(expressionsFile, Charset.defaultCharset());
Map<String, Object> variables = new HashMap<>();
if(variablesFile.isPresent()) {
- variables = JSONUtils.INSTANCE.load(new FileInputStream(variablesFile.get()), new TypeReference<Map<String, Object>>() {
- });
+ variables = JSONUtils.INSTANCE.load(new FileInputStream(variablesFile.get()), JSONUtils.MAP_SUPPLIER);
}
int numTimes = DEFAULT_NUM_TIMES;
if(BenchmarkOptions.NUM_TIMES.has(cli)) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/configuration/ConfigurationType.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/configuration/ConfigurationType.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/configuration/ConfigurationType.java
index 16cde83..99859b2 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/configuration/ConfigurationType.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/configuration/ConfigurationType.java
@@ -18,7 +18,6 @@
package org.apache.metron.stellar.common.configuration;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Function;
import org.apache.metron.stellar.common.Constants;
import org.apache.metron.stellar.common.utils.JSONUtils;
@@ -30,8 +29,7 @@ public enum ConfigurationType implements Function<String, Object> {
GLOBAL("global",".", s -> {
try {
- return JSONUtils.INSTANCE.load(s, new TypeReference<Map<String, Object>>() {
- });
+ return JSONUtils.INSTANCE.load(s, JSONUtils.MAP_SUPPLIER);
} catch (IOException e) {
throw new RuntimeException("Unable to load " + s, e);
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutor.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutor.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutor.java
index f83bb9e..3f2c495 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutor.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutor.java
@@ -19,7 +19,6 @@
*/
package org.apache.metron.stellar.common.shell;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.collect.Maps;
import org.apache.commons.collections.map.UnmodifiableMap;
import org.apache.commons.lang3.StringUtils;
@@ -370,9 +369,7 @@ public class DefaultStellarShellExecutor implements StellarShellExecutor {
*/
private Map<String, Object> fetchGlobalConfig(CuratorFramework zkClient) throws Exception {
byte[] raw = readGlobalConfigBytesFromZookeeper(zkClient);
- return JSONUtils.INSTANCE.load(
- new ByteArrayInputStream(raw),
- new TypeReference<Map<String, Object>>() {});
+ return JSONUtils.INSTANCE.load( new ByteArrayInputStream(raw), JSONUtils.MAP_SUPPLIER);
}
/**
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/cli/StellarShell.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/cli/StellarShell.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/cli/StellarShell.java
index 44ad28c..c81df61 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/cli/StellarShell.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/cli/StellarShell.java
@@ -20,7 +20,6 @@
package org.apache.metron.stellar.common.shell.cli;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import org.apache.commons.cli.CommandLine;
@@ -221,7 +220,7 @@ public class StellarShell extends AeshConsoleCallback implements Completion {
String variablePath = commandLine.getOptionValue("v");
Map<String, Object> variables = JSONUtils.INSTANCE.load(
new File(variablePath),
- new TypeReference<Map<String, Object>>() {});
+ JSONUtils.MAP_SUPPLIER);
// for each variable...
for(Map.Entry<String, Object> kv : variables.entrySet()) {
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/JSONUtils.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/JSONUtils.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/JSONUtils.java
index d7e90cf..9fb1c3f 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/JSONUtils.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/utils/JSONUtils.java
@@ -27,6 +27,12 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Supplier;
+
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
@@ -35,23 +41,48 @@ import org.json.simple.parser.ParseException;
public enum JSONUtils {
INSTANCE;
+ public static class ReferenceSupplier<T> implements Supplier<TypeReference<T>> {
+ Type type;
+ protected ReferenceSupplier() {
+ Type superClass = this.getClass().getGenericSuperclass();
+ if(superClass instanceof Class) {
+ throw new IllegalArgumentException("Internal error: ReferenceSupplier constructed without actual type information");
+ } else {
+ this.type = ((ParameterizedType)superClass).getActualTypeArguments()[0];
+ }
+ }
+
+ @Override
+ public TypeReference<T> get() {
+ return new TypeReference<T>() {
+ @Override
+ public Type getType() {
+ return type;
+ }
+ };
+ }
+ }
+
+ public final static ReferenceSupplier<Map<String, Object>> MAP_SUPPLIER = new ReferenceSupplier<Map<String, Object>>(){};
+ public final static ReferenceSupplier<List<Object>> LIST_SUPPLIER = new ReferenceSupplier<List<Object>>(){};
+
private static ThreadLocal<JSONParser> _parser = ThreadLocal.withInitial(() ->
new JSONParser());
private static ThreadLocal<ObjectMapper> _mapper = ThreadLocal.withInitial(() ->
new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL));
- public <T> T load(InputStream is, TypeReference<T> ref) throws IOException {
- return _mapper.get().readValue(is, ref);
+ public <T> T load(InputStream is, ReferenceSupplier<T> ref) throws IOException {
+ return _mapper.get().readValue(is, (TypeReference<T>)ref.get());
}
- public <T> T load(String is, TypeReference<T> ref) throws IOException {
- return _mapper.get().readValue(is, ref);
+ public <T> T load(String is, ReferenceSupplier<T> ref) throws IOException {
+ return _mapper.get().readValue(is, (TypeReference<T>)ref.get());
}
- public <T> T load(File f, TypeReference<T> ref) throws IOException {
+ public <T> T load(File f, ReferenceSupplier<T> ref) throws IOException {
try (InputStream is = new BufferedInputStream(new FileInputStream(f))) {
- return _mapper.get().readValue(is, ref);
+ return _mapper.get().readValue(is, (TypeReference<T>)ref.get());
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/StringFunctions.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/StringFunctions.java b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/StringFunctions.java
index 4dc4790..2865ea7 100644
--- a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/StringFunctions.java
+++ b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/dsl/functions/StringFunctions.java
@@ -20,7 +20,6 @@ package org.apache.metron.stellar.dsl.functions;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
@@ -569,15 +568,18 @@ public class StringFunctions {
throw new ParseException("Valid JSON string not supplied");
}
// Return parsed JSON Object as a HashMap
+ String in = (String)strings.get(0);
try {
- return JSONUtils.INSTANCE.load((String) strings.get(0), new TypeReference<Map<String, Object>>(){});
+ return (Map)JSONUtils.INSTANCE.load(in, JSONUtils.MAP_SUPPLIER);
} catch (JsonProcessingException ex) {
- throw new ParseException("Valid JSON string not supplied", ex);
- } catch (IOException e) {
- e.printStackTrace();
+ throw new ParseException(String.format("%s is not a valid JSON string", in), ex);
+ } catch (IOException ex) {
+ throw new ParseException(String.format("%s is not a valid JSON string", in), ex);
+ }
+ catch (ClassCastException ex) {
+ throw new ParseException(String.format("%s is not a valid JSON string, expected a map", in), ex);
}
}
- return new ParseException("Unable to parse JSON string");
}
}
@@ -606,13 +608,16 @@ public class StringFunctions {
throw new ParseException("Valid JSON string not supplied");
}
// Return parsed JSON Object as a List
+ String in = (String)strings.get(0);
try {
- return (List) JSONUtils.INSTANCE.load((String) strings.get(0), new TypeReference<List<Object>>(){});
+ return (List) JSONUtils.INSTANCE.load(in, JSONUtils.LIST_SUPPLIER);
} catch (JsonProcessingException ex) {
- throw new ParseException("Valid JSON string not supplied", ex);
- } catch (IOException e) {
- e.printStackTrace();
- throw new ParseException("Valid JSON string not supplied", e);
+ throw new ParseException(String.format("%s is not a valid JSON string", in), ex);
+ } catch (IOException ex) {
+ throw new ParseException(String.format("%s is not a valid JSON string", in), ex);
+ }
+ catch (ClassCastException ex) {
+ throw new ParseException(String.format("%s is not a valid JSON string, expected a list", in), ex);
}
}
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java
index f4692e3..e28bfb7 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java
@@ -17,7 +17,6 @@
*/
package org.apache.metron.stellar.common.utils;
-import com.fasterxml.jackson.core.type.TypeReference;
import org.adrianwalker.multilinestring.Multiline;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -54,8 +53,7 @@ public class JSONUtilsTest {
put("a", "hello");
put("b", "world");
}};
- Map<String, Object> actual = JSONUtils.INSTANCE.load(configFile, new TypeReference<Map<String, Object>>() {
- });
+ Map<String, Object> actual = JSONUtils.INSTANCE.load(configFile, JSONUtils.MAP_SUPPLIER);
Assert.assertThat("config not equal", actual, equalTo(expected));
}
http://git-wip-us.apache.org/repos/asf/metron/blob/878003a3/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java
----------------------------------------------------------------------
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java
index 418bf2d..9f78fe1 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java
@@ -617,7 +617,8 @@ public class StringFunctionsTest {
//Simple Arrays
boolean thrown = false;
try {
- run("TO_JSON_MAP(msg)", ImmutableMap.of("msg", string3));
+ Object o = run("TO_JSON_MAP(msg)", ImmutableMap.of("msg", string3));
+ System.out.println(string3 + " == " + o);
} catch (ParseException pe) {
thrown = true;
}
@@ -656,7 +657,7 @@ public class StringFunctionsTest {
run("TO_JSON_MAP('123, 456')", new HashedMap<>());
} catch (ParseException pe) {
thrown = true;
- Assert.assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
+ Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
}
Assert.assertTrue(thrown);
thrown = false;
@@ -666,7 +667,7 @@ public class StringFunctionsTest {
run("TO_JSON_MAP('{\"foo\" : 2')", new HashedMap<>());
} catch (ParseException pe) {
thrown = true;
- Assert.assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
+ Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
}
Assert.assertTrue(thrown);
thrown = false;
@@ -730,7 +731,7 @@ public class StringFunctionsTest {
run("TO_JSON_LIST('123, 456')", new HashedMap<>());
} catch (ParseException pe) {
thrown = true;
- Assert.assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
+ Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
}
Assert.assertTrue(thrown);
@@ -740,7 +741,7 @@ public class StringFunctionsTest {
run("TO_JSON_LIST('{\"foo\" : 2')", new HashedMap<>());
} catch (ParseException pe) {
thrown = true;
- Assert.assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
+ Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
}
Assert.assertTrue(thrown);
}