create JoshworksJacksonObjectMapper and use it everywhere needed 67/95567/1
authorEylon Malin <eylon.malin@intl.att.com>
Thu, 12 Sep 2019 11:25:32 +0000 (14:25 +0300)
committerEylon Malin <eylon.malin@intl.att.com>
Thu, 12 Sep 2019 11:25:32 +0000 (14:25 +0300)
Create class that implement joshworks object mapper that used jackson
object mapper that support kotlin.
Use it instead local anonymous classes where needed

Issue-ID: VID-611
Signed-off-by: Eylon Malin <eylon.malin@intl.att.com>
Change-Id: Ie00dce0ec9b366515c5e40d9f37b9e64a2ceb357

vid-app-common/src/main/java/org/onap/vid/client/SyncRestClient.java
vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java
vid-app-common/src/main/java/org/onap/vid/utils/KotlinUtils.kt
vid-app-common/src/test/java/org/onap/vid/aai/AaiOverTLSClientServerTest.java
vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientNewTest.java

index 18f8722..398d81d 100644 (file)
@@ -3,6 +3,7 @@
  * VID
  * ================================================================================
  * Copyright (C) 2018 - 2019 Nokia. All rights reserved.
+ * Modifications Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,8 +21,8 @@
 
 package org.onap.vid.client;
 
-import static org.apache.commons.lang3.StringUtils.isEmpty;
 import static org.onap.vid.client.UnirestPatchKt.patched;
+import static org.onap.vid.utils.KotlinUtilsKt.JOSHWORKS_JACKSON_OBJECT_MAPPER;
 
 import com.att.eelf.configuration.EELFLogger;
 import io.joshworks.restclient.http.HttpResponse;
@@ -183,27 +184,7 @@ public class SyncRestClient implements SyncRestClientInterface {
     }
 
     private ObjectMapper defaultObjectMapper() {
-        com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper();
-
-        return new ObjectMapper() {
-            @Override
-            public <T> T readValue(String value, Class<T> aClass) {
-                try {
-                    return isEmpty(value) ? null : objectMapper.readValue(value, aClass);
-                } catch (IOException e) {
-                    throw new SyncRestClientException("IOException while reading value", e);
-                }
-            }
-
-            @Override
-            public String writeValue(Object value) {
-                try {
-                    return objectMapper.writeValueAsString(value);
-                } catch (IOException e) {
-                    throw new SyncRestClientException("IOException while writing value", e);
-                }
-            }
-        };
+        return JOSHWORKS_JACKSON_OBJECT_MAPPER;
     }
 
     private CloseableHttpClient defaultHttpClient() {
index 99845f0..9faa7ad 100644 (file)
 package org.onap.vid.controller;
 
 import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
-import static org.apache.commons.lang3.StringUtils.isEmpty;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.module.kotlin.KotlinModule;
 import io.joshworks.restclient.http.mapper.ObjectMapper;
 import java.io.File;
-import java.io.IOException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import javax.servlet.ServletContext;
@@ -66,6 +63,7 @@ import org.onap.vid.services.AaiServiceImpl;
 import org.onap.vid.services.ChangeManagementService;
 import org.onap.vid.services.PombaService;
 import org.onap.vid.services.PombaServiceImpl;
+import org.onap.vid.utils.JoshworksJacksonObjectMapper;
 import org.onap.vid.utils.Logging;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Bean;
@@ -198,28 +196,8 @@ public class WebConfig {
     }
 
     @Bean
-    public ObjectMapper unirestFasterxmlObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) {
-        return new ObjectMapper() {
-
-            @Override
-            public <T> T readValue(String s, Class<T> aClass) {
-                try {
-                    return isEmpty(s) ? null : objectMapper.readValue(s, aClass);
-                } catch (IOException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-
-            @Override
-            public String writeValue(Object o) {
-                try {
-                    return objectMapper.writeValueAsString(o);
-                } catch (JsonProcessingException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        };
-
+    public ObjectMapper unirestFasterxmlObjectMapper() {
+        return new JoshworksJacksonObjectMapper();
     }
 
     @Bean
index cf53262..81afe29 100644 (file)
@@ -22,9 +22,23 @@ package org.onap.vid.utils
 
 import com.fasterxml.jackson.databind.ObjectMapper
 import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import org.apache.commons.lang3.StringUtils.isEmpty
 
 inline fun <reified E: Enum<E>> getEnumFromMapOfStrings(map: Map<String, Any>, key:String, defaultValue:E): E {
     return java.lang.Enum.valueOf(E::class.java, (map.getOrDefault(key, defaultValue.name) as String))
 }
 
 @JvmField val JACKSON_OBJECT_MAPPER: ObjectMapper = jacksonObjectMapper()
+
+class JoshworksJacksonObjectMapper: io.joshworks.restclient.http.mapper.ObjectMapper {
+    override fun writeValue(value: Any?): String? {
+        return JACKSON_OBJECT_MAPPER.writeValueAsString(value)
+    }
+
+    override fun <T : Any?> readValue(value: String?, valueType: Class<T>?): T? {
+        return if (isEmpty(value)) null else JACKSON_OBJECT_MAPPER.readValue(value, valueType)
+    }
+}
+
+@JvmField val JOSHWORKS_JACKSON_OBJECT_MAPPER:
+        io.joshworks.restclient.http.mapper.ObjectMapper = JoshworksJacksonObjectMapper()
index a9fe256..2b95211 100644 (file)
@@ -3,6 +3,7 @@
  * VID
  * ================================================================================
  * Copyright (C) 2018 - 2019 Nokia Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,11 +23,11 @@ package org.onap.vid.aai;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.MockitoAnnotations.initMocks;
+import static org.onap.vid.utils.KotlinUtilsKt.JOSHWORKS_JACKSON_OBJECT_MAPPER;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.xebialabs.restito.semantics.Action;
 import io.joshworks.restclient.http.HttpResponse;
-import io.joshworks.restclient.http.mapper.ObjectMapper;
 import java.io.IOException;
 import org.assertj.core.api.Assertions;
 import org.glassfish.grizzly.http.util.HttpStatus;
@@ -122,7 +123,7 @@ public class AaiOverTLSClientServerTest {
     @NotNull
     private AaiOverTLSClient createAaiOverTLSClient() {
         return new AaiOverTLSClient(
-            new SyncRestClient(getFasterXmlObjectMapper(), mock(Logging.class)),
+            new SyncRestClient(JOSHWORKS_JACKSON_OBJECT_MAPPER, mock(Logging.class)),
             propertySupplier,
             serverUtil.constructTargetUrl("http", "")
         );
@@ -130,7 +131,6 @@ public class AaiOverTLSClientServerTest {
 
     @Test
     public void shouldGetSubscribers() throws ParseException, JsonProcessingException {
-        ObjectMapper objectMapper = getFasterXmlObjectMapper();
         AaiOverTLSClient aaiOverTLSClient = createAaiOverTLSClient();
 
         serverUtil.prepareGetCall("/business/customers", new JSONParser().parse(subscribersResponsePayload), Action.status(HttpStatus.OK_200));
@@ -142,29 +142,4 @@ public class AaiOverTLSClientServerTest {
         Assertions.assertThat(allSubscribers.getStatus()).isEqualTo(200);
     }
 
-    private ObjectMapper getFasterXmlObjectMapper() {
-        return new ObjectMapper() {
-
-            com.fasterxml.jackson.databind.ObjectMapper om = new com.fasterxml.jackson.databind.ObjectMapper();
-
-            @Override
-            public <T> T readValue(String s, Class<T> aClass) {
-                try {
-                    return om.readValue(s, aClass);
-                } catch (IOException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-
-            @Override
-            public String writeValue(Object o) {
-                try {
-                    return om.writeValueAsString(o);
-                } catch (IOException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        };
-    }
-
 }
index f89eae2..4570075 100644 (file)
@@ -29,8 +29,8 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.onap.vid.controller.MsoController.SVC_INSTANCE_ID;
 import static org.onap.vid.controller.MsoController.VNF_INSTANCE_ID;
+import static org.onap.vid.utils.KotlinUtilsKt.JOSHWORKS_JACKSON_OBJECT_MAPPER;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.xebialabs.restito.server.StubServer;
 import io.joshworks.restclient.http.HttpResponse;
 import java.io.IOException;
@@ -48,7 +48,6 @@ import org.junit.Test;
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.client.SyncRestClient;
 import org.onap.vid.controller.MsoController;
-import org.onap.vid.controller.WebConfig;
 import org.onap.vid.mso.MsoProperties;
 import org.onap.vid.mso.MsoResponseWrapper;
 import org.onap.vid.mso.MsoResponseWrapperInterface;
@@ -474,8 +473,7 @@ public class MsoRestClientNewTest {
     }
 
     private MsoRestClientNew msoRestClient() {
-        final WebConfig webConfig = new WebConfig();
-        return new MsoRestClientNew(new SyncRestClient(webConfig.unirestFasterxmlObjectMapper(new ObjectMapper()), mock(Logging.class)),
+        return new MsoRestClientNew(new SyncRestClient(JOSHWORKS_JACKSON_OBJECT_MAPPER, mock(Logging.class)),
             baseUrl(), null, new SystemPropertiesWrapper(), mock(Logging.class));
     }