TCA:Bug fix for JsonPath with non array values 73/18573/1
authorSingla, Rajiv (rs153v) <rs153v@att.com>
Thu, 12 Oct 2017 15:15:16 +0000 (11:15 -0400)
committerSingla, Rajiv (rs153v) <rs153v@att.com>
Thu, 12 Oct 2017 15:16:21 +0000 (11:16 -0400)
Change-Id: I98bd9b78a5c7017ca98a0ce85f2ea30a2cb682df
Signed-off-by: Singla, Rajiv (rs153v) <rs153v@att.com>
Issue-Id: DCAEGEN2-153

dcae-analytics-common/src/main/java/org/openecomp/dcae/apod/analytics/common/service/filter/GenericJsonMessageFilter.java
dcae-analytics-common/src/test/java/org/openecomp/dcae/apod/analytics/common/BaseAnalyticsCommonUnitTest.java
dcae-analytics-model/src/main/java/org/openecomp/dcae/apod/analytics/model/util/json/AnalyticsModelObjectMapperSupplier.java
dcae-analytics-model/src/test/java/org/openecomp/dcae/apod/analytics/model/util/json/AnalyticsModelObjectMapperSupplierTest.java

index 54de5cc..38e8d28 100644 (file)
@@ -29,6 +29,7 @@ import org.openecomp.dcae.apod.analytics.common.service.processor.AbstractMessag
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
+import java.util.List;\r
 import java.util.Set;\r
 \r
 /**\r
@@ -77,7 +78,9 @@ public class GenericJsonMessageFilter extends AbstractMessageProcessor<JsonMessa
             final DocumentContext documentContext = JsonPath.parse(jsonMessage);\r
             String jsonPathValue = null;\r
             try {\r
-                jsonPathValue = documentContext.read(jsonPath, String.class);\r
+                final List jsonPathValues = documentContext.read(jsonPath);\r
+                final Object pathValue = jsonPathValues.isEmpty() ? null :  jsonPathValues.get(0);\r
+                jsonPathValue = pathValue instanceof Number ? pathValue.toString() : (String) pathValue;\r
             } catch (PathNotFoundException ex) {\r
                 LOG.info("Unable to find json Path: {}. Exception: {}, Json Message: {}", jsonPath, ex, jsonMessage);\r
             }\r
index 1cd59e8..fd28624 100644 (file)
 \r
 package org.openecomp.dcae.apod.analytics.common;\r
 \r
+import com.fasterxml.jackson.databind.ObjectMapper;\r
+import com.google.common.base.Suppliers;\r
+import org.junit.BeforeClass;\r
 import org.openecomp.dcae.apod.analytics.common.service.processor.TestEarlyTerminatingProcessor;\r
 import org.openecomp.dcae.apod.analytics.common.service.processor.TestMessageProcessor1;\r
 import org.openecomp.dcae.apod.analytics.common.service.processor.TestMessageProcessor2;\r
+import org.openecomp.dcae.apod.analytics.model.util.json.AnalyticsModelObjectMapperSupplier;\r
 import org.openecomp.dcae.apod.analytics.test.BaseDCAEAnalyticsUnitTest;\r
 \r
 /**\r
@@ -37,6 +41,18 @@ public abstract class BaseAnalyticsCommonUnitTest extends BaseDCAEAnalyticsUnitT
 \r
     protected static final String CEF_MESSAGE_FILE_PATH = "data/json/cef/cef_message.json";\r
 \r
+    protected static ObjectMapper objectMapper;\r
+\r
+    /**\r
+     * Before running test cases need to assign object mapper.\r
+     */\r
+    @BeforeClass\r
+    public static void beforeClass() {\r
+        final AnalyticsModelObjectMapperSupplier analyticsModelObjectMapperSupplier =\r
+                new AnalyticsModelObjectMapperSupplier();\r
+        objectMapper = Suppliers.memoize(analyticsModelObjectMapperSupplier).get();\r
+    }\r
+\r
     /*\r
      * Test implementation for {@link CDAPAppSettings}\r
      */\r
index ff98c3e..1a4feb3 100644 (file)
@@ -104,7 +104,8 @@ public class AnalyticsModelObjectMapperSupplier implements Supplier<ObjectMapper
             public Set<Option> options() {\r
 \r
                 // Json Path exceptions are suppressed, also missing properties are tolerated\r
-                return EnumSet.of(Option.DEFAULT_PATH_LEAF_TO_NULL, Option.SUPPRESS_EXCEPTIONS);\r
+                return EnumSet.of(Option.DEFAULT_PATH_LEAF_TO_NULL, Option.SUPPRESS_EXCEPTIONS,\r
+                        Option.ALWAYS_RETURN_LIST);\r
             }\r
         });\r
 \r
index 628b7ea..55dd817 100644 (file)
@@ -57,7 +57,8 @@ public class AnalyticsModelObjectMapperSupplierTest extends BaseAnalyticsModelUn
 \r
         final Set<Option> configurationOptions = configuration.getOptions();\r
         assertThat(configurationOptions,\r
-                containsInAnyOrder(Option.DEFAULT_PATH_LEAF_TO_NULL, Option.SUPPRESS_EXCEPTIONS));\r
+                containsInAnyOrder(Option.DEFAULT_PATH_LEAF_TO_NULL, Option.SUPPRESS_EXCEPTIONS,\r
+                        Option.ALWAYS_RETURN_LIST));\r
     }\r
 \r
 }\r