Removing warnings related to optionals 71/48271/4
authorpwielebs <piotr.wielebski@nokia.com>
Mon, 21 May 2018 10:50:27 +0000 (12:50 +0200)
committerpwielebs <piotr.wielebski@nokia.com>
Tue, 22 May 2018 13:39:53 +0000 (15:39 +0200)
Change-Id: I4116ee1b16d8600a3f7109290b2f69b31fd51133
Issue-ID: DCAEGEN2-451
Signed-off-by: pwielebs <piotr.wielebski@nokia.com>
prh-aai-client/src/main/java/org/onap/dcaegen2/services/prh/service/AAIConsumerClient.java
prh-aai-client/src/main/java/org/onap/dcaegen2/services/prh/service/AAIExtendedHttpClient.java
prh-aai-client/src/main/java/org/onap/dcaegen2/services/prh/service/AAIProducerClient.java
prh-aai-client/src/test/java/org/onap/dcaegen2/services/prh/service/AAIProducerClientTest.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImpl.java
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImplTest.java
prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/ConsumerDmaapModelForUnitTest.java
prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/CommonFunctionsTest.java

index 0ada907..99a4a8b 100644 (file)
@@ -42,7 +42,7 @@ import java.util.Optional;
 
 public class AAIConsumerClient {
 
-    Logger logger = LoggerFactory.getLogger(AAIConsumerClient.class);
+    private Logger logger = LoggerFactory.getLogger(AAIConsumerClient.class);
 
     private final CloseableHttpClient closeableHttpClient;
     private final String aaiHost;
index cb884ae..14c7e8f 100644 (file)
@@ -21,11 +21,11 @@ package org.onap.dcaegen2.services.prh.service;
 
 import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
 
-import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.Optional;
 
 
 @FunctionalInterface
 public interface AAIExtendedHttpClient {
-    Optional<Integer> getHttpResponse(ConsumerDmaapModel consumerDmaapModel) throws IOException;
+    Optional<Integer> getHttpResponse(ConsumerDmaapModel consumerDmaapModel) throws URISyntaxException;
 }
index 3a07e94..4f48c1c 100644 (file)
@@ -41,11 +41,10 @@ import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Optional;
 
 public class AAIProducerClient implements AAIExtendedHttpClient {
-    Logger logger = LoggerFactory.getLogger(AAIProducerClient.class);
+    private Logger logger = LoggerFactory.getLogger(AAIProducerClient.class);
 
     private final CloseableHttpClient closeableHttpClient;
     private final String aaiHost;
@@ -66,30 +65,34 @@ public class AAIProducerClient implements AAIExtendedHttpClient {
 
 
     @Override
-    public Optional<Integer> getHttpResponse(ConsumerDmaapModel consumerDmaapModel) throws IOException {
-        Optional<HttpRequestBase> request = createRequest(consumerDmaapModel);
+    public Optional<Integer> getHttpResponse(ConsumerDmaapModel consumerDmaapModel) throws
+            URISyntaxException {
         try {
-            return closeableHttpClient.execute(request.get(), aaiResponseHandler());
-        } catch (IOException e) {
+            return createRequest(consumerDmaapModel).flatMap(x->{
+                try {
+                    return closeableHttpClient.execute(x, aaiResponseHandler());
+                } catch (IOException e) {
+                    logger.warn("Exception while executing http client: ", e);
+                    return Optional.empty();
+                }
+            });
+        } catch (URISyntaxException e ) {
             logger.warn("Exception while executing http client: ", e);
-            throw new IOException();
+            throw e;
         }
     }
 
-    private URI createAAIExtendedURI(final String pnfName) {
-        URI extendedURI = null;
-        final URIBuilder uriBuilder = new URIBuilder()
+    private Optional<HttpRequestBase> createRequest(ConsumerDmaapModel consumerDmaapModel) throws URISyntaxException {
+        final URI extendedURI = createAAIExtendedURI(consumerDmaapModel.getPnfName());
+        return createHttpRequest(extendedURI, consumerDmaapModel);
+    }
+
+    private URI createAAIExtendedURI(final String pnfName) throws URISyntaxException {
+        return new URIBuilder()
                 .setScheme(aaiProtocol)
                 .setHost(aaiHost)
                 .setPort(aaiHostPortNumber)
-                .setPath(aaiPath + "/" + pnfName);
-        try {
-            extendedURI = uriBuilder.build();
-            logger.trace("Building extended URI: {}", extendedURI);
-        } catch (URISyntaxException e) {
-            logger.warn("Exception while building extended URI: ", e);
-        }
-        return extendedURI;
+                .setPath(aaiPath + "/" + pnfName).build();
     }
 
     private ResponseHandler<Optional<Integer>> aaiResponseHandler() {
@@ -109,47 +112,22 @@ public class AAIProducerClient implements AAIExtendedHttpClient {
         };
     }
 
-    private HttpRequestBase createHttpRequest(URI extendedURI, ConsumerDmaapModel consumerDmaapModel) {
-        String jsonBody = CommonFunctions.createJsonBody(consumerDmaapModel);
-
-        if (isExtendedURINotNull(extendedURI) && jsonBody != null && !"".equals(jsonBody)) {
-            return createHttpPatch(extendedURI, Optional.ofNullable(CommonFunctions.createJsonBody(consumerDmaapModel)));
-        } else {
-            return null;
-        }
-    }
-
-    private Boolean isExtendedURINotNull(URI extendedURI) {
-        return extendedURI != null;
-    }
-
-
-    private Optional<StringEntity> createStringEntity(Optional<String> jsonBody) {
-        return Optional.of(parseJson(jsonBody).get());
+    private Optional<HttpRequestBase> createHttpRequest(URI extendedURI, ConsumerDmaapModel consumerDmaapModel) {
+        return Optional.ofNullable(CommonFunctions.createJsonBody(consumerDmaapModel)).filter(x-> !x.isEmpty()).flatMap(myJson -> {
+            try {
+                return Optional.of(createHttpPatch(extendedURI, myJson));
+            } catch (UnsupportedEncodingException e) {
+                logger.warn("Exception while executing http client: ", e);
+            }
+            return Optional.empty();
+        });
     }
 
-    private HttpPatch createHttpPatch(URI extendedURI, Optional<String> jsonBody) {
+    private HttpPatch createHttpPatch(URI extendedURI, String jsonBody) throws UnsupportedEncodingException {
         HttpPatch httpPatch = new HttpPatch(extendedURI);
-        Optional<StringEntity> stringEntity = createStringEntity(jsonBody);
-        httpPatch.setEntity(stringEntity.get());
+        httpPatch.setEntity( new StringEntity(jsonBody));
+        aaiHeaders.forEach(httpPatch::addHeader);
+        httpPatch.addHeader("Content-Type", "application/merge-patch+json");
         return httpPatch;
     }
-
-    private Optional<StringEntity> parseJson(Optional<String> jsonBody) {
-        Optional<StringEntity> stringEntity = Optional.empty();
-        try {
-            stringEntity = Optional.of(new StringEntity(jsonBody.get()));
-        } catch (UnsupportedEncodingException e) {
-            logger.warn("Exception while parsing JSON: ", e);
-        }
-        return stringEntity;
-    }
-
-    private Optional<HttpRequestBase> createRequest(ConsumerDmaapModel consumerDmaapModel) {
-        final URI extendedURI = createAAIExtendedURI(consumerDmaapModel.getPnfName());
-        HttpRequestBase request = createHttpRequest(extendedURI, consumerDmaapModel);
-        aaiHeaders.forEach(Objects.requireNonNull(request)::addHeader);
-        Objects.requireNonNull(request).addHeader("Content-Type", "application/merge-patch+json");
-        return Optional.of(request);
-    }
 }
index dbe857e..ec92629 100644 (file)
@@ -24,15 +24,14 @@ import org.apache.http.client.ResponseHandler;
 import org.apache.http.client.methods.HttpPatch;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.onap.dcaegen2.services.prh.config.AAIClientConfiguration;
 import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
 import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModelForUnitTest;
 
-
 import java.io.IOException;
 import java.lang.reflect.Field;
+import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -50,8 +49,9 @@ public class AAIProducerClientTest {
     private static ConsumerDmaapModel consumerDmaapModel = new ConsumerDmaapModelForUnitTest();
 
 
-    @BeforeAll
-    public static void init() throws NoSuchFieldException, IllegalAccessException {
+    @Test
+    public void getHttpResponse_shouldReturnSuccessStatusCode()
+            throws IOException, URISyntaxException, NoSuchFieldException, IllegalAccessException {
 
         //given
         Map<String, String> aaiHeaders = new HashMap<>();
@@ -61,7 +61,6 @@ public class AAIProducerClientTest {
         aaiHeaders.put("Real-Time", "true");
         aaiHeaders.put("Content-Type", "application/merge-patch+json");
 
-        //when
         when(aaiHttpClientConfigurationMock.aaiHost()).thenReturn("eucalyptus.es-si-eu-dhn-20.eecloud.nsn-net.net");
         when(aaiHttpClientConfigurationMock.aaiProtocol()).thenReturn("https");
         when(aaiHttpClientConfigurationMock.aaiHostPortNumber()).thenReturn(1234);
@@ -73,11 +72,6 @@ public class AAIProducerClientTest {
 
         testedObject = new AAIProducerClient(aaiHttpClientConfigurationMock);
         setField();
-    }
-
-    @Test
-    public void getHttpResponsePatch_shouldReturnSuccessStatusCode() throws IOException {
-        //when
         when(closeableHttpClientMock.execute(any(HttpPatch.class), any(ResponseHandler.class)))
                 .thenReturn(Optional.of(SUCCESS));
         Optional<Integer> actualResult = testedObject.getHttpResponse(consumerDmaapModel);
index 7487d08..ba3fade 100644 (file)
  */
 package org.onap.dcaegen2.services.prh.tasks;
 
-import java.io.IOException;
-import java.util.Optional;
 import org.onap.dcaegen2.services.prh.config.AAIClientConfiguration;
-import org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
 import org.onap.dcaegen2.services.prh.configuration.AppConfig;
 import org.onap.dcaegen2.services.prh.configuration.Config;
 import org.onap.dcaegen2.services.prh.exceptions.AAINotFoundException;
+import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
 import org.onap.dcaegen2.services.prh.service.AAIProducerClient;
 import org.onap.dcaegen2.services.prh.service.HttpUtils;
 import org.slf4j.Logger;
@@ -34,6 +31,9 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.net.URISyntaxException;
+import java.util.Optional;
+
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
  */
@@ -58,7 +58,7 @@ public class AAIProducerTaskImpl extends
             return aaiProducerClient.getHttpResponse(consumerDmaapModel)
                 .filter(HttpUtils::isSuccessfulResponseCode).map(response -> consumerDmaapModel).orElseThrow(() ->
                     new AAINotFoundException("Incorrect response code for continuation of tasks workflow"));
-        } catch (IOException e) {
+        } catch ( URISyntaxException e) {
             logger.warn("Patch request not successful", e);
             throw new AAINotFoundException("Patch request not successful");
         }
index c82a98e..70da39b 100644 (file)
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.Optional;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
@@ -95,7 +96,7 @@ class AAIProducerTaskImplTest {
     }
 
     @Test
-    public void whenPassedObjectFits_ReturnsCorrectStatus() throws AAINotFoundException, IOException {
+    public void whenPassedObjectFits_ReturnsCorrectStatus() throws AAINotFoundException, URISyntaxException {
         //given/when
         getAAIProducerTask_whenMockingResponseObject(200, false);
         ConsumerDmaapModel response = aaiProducerTask.execute(consumerDmaapModel);
@@ -109,7 +110,7 @@ class AAIProducerTaskImplTest {
 
 
     @Test
-    public void whenPassedObjectFits_butIncorrectResponseReturns() throws IOException {
+    public void whenPassedObjectFits_butIncorrectResponseReturns() throws IOException, URISyntaxException {
         //given/when
         getAAIProducerTask_whenMockingResponseObject(400, false);
         Executable executableCode = () -> aaiProducerTask.execute(consumerDmaapModel);
@@ -121,7 +122,7 @@ class AAIProducerTaskImplTest {
     }
 
     @Test
-    public void whenPassedObjectFits_butHTTPClientThrowsIOExceptionHandleIt() throws IOException {
+    public void whenPassedObjectFits_butHTTPClientThrowsIOExceptionHandleIt() throws URISyntaxException {
         //given/when
         getAAIProducerTask_whenMockingResponseObject(0, true);
 
@@ -135,10 +136,11 @@ class AAIProducerTaskImplTest {
 
 
     private static void getAAIProducerTask_whenMockingResponseObject(int statusCode, boolean throwsException)
-        throws IOException {
+        throws URISyntaxException {
+        //given
         aaiProducerClient = mock(AAIProducerClient.class);
         if (throwsException) {
-            when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenThrow(IOException.class);
+            when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenThrow(URISyntaxException.class);
         } else {
             when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenReturn(Optional.of(statusCode));
         }
index c875317..9e272aa 100644 (file)
@@ -22,21 +22,21 @@ package org.onap.dcaegen2.services.prh.model;
 
 public class ConsumerDmaapModelForUnitTest implements ConsumerDmaapModel {
 
-    private String pnfName = "NOKnhfsadhff";
-    private String ipv4 = "11.22.33.155";
-    private String ipv6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
+    private final String PNF_NAME = "NOKnhfsadhff";
+    private final String IPv4 = "256.22.33.155";
+    private final String IPv6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
 
 
     public String getPnfName() {
-        return pnfName;
+        return PNF_NAME;
     }
 
     public String getIpv4() {
-        return ipv4;
+        return IPv4;
     }
 
     public String getIpv6() {
-        return ipv6;
+        return IPv6;
     }
 
 }
index 2b9f2a9..6f99f1c 100644 (file)
@@ -26,7 +26,7 @@ import org.junit.jupiter.api.Test;
 public class CommonFunctionsTest {
 
     private ConsumerDmaapModel model = new ConsumerDmaapModelForUnitTest();
-    private String expectedResult = "{\"pnfName\":\"NOKnhfsadhff\",\"ipv4\":\"11.22.33.155\",\"ipv6\":\"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"}";
+    private String expectedResult = "{\"PNF_NAME\":\"NOKnhfsadhff\",\"IPv4\":\"256.22.33.155\",\"IPv6\":\"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"}";
 
     @Test
     public void createJsonBody_shouldReturnJsonInString() {