Merge "Exclusion for auto-generated classes"
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTask.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTask.java
index ffc8132..09de5cc 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTask.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTask.java
@@ -20,11 +20,14 @@
 
 package org.onap.dcaegen2.services.prh.tasks;
 
+import java.util.Optional;
 import org.onap.dcaegen2.services.prh.exceptions.AAINotFoundException;
+import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.service.AAIConsumerClient;
 
-public abstract class AAIConsumerTask<T, U, V, Z> extends Task<Z> {
+public abstract class AAIConsumerTask<Request, Response, Conf> extends Task<Request, Response, Conf> {
 
-    protected abstract V consume(U message) throws AAINotFoundException;
+    abstract Optional<String> consume(ConsumerDmaapModel message) throws AAINotFoundException;
 
-    protected abstract T resolveClient();
+    abstract AAIConsumerClient resolveClient();
 }
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImpl.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImpl.java
index 3c2b297..d0948ae 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImpl.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImpl.java
@@ -1,4 +1,4 @@
-/*-
+/*
  * ============LICENSE_START=======================================================
  * PNF-REGISTRATION-HANDLER
  * ================================================================================
@@ -17,10 +17,10 @@
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
 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.configuration.AppConfig;
 import org.onap.dcaegen2.services.prh.configuration.Config;
@@ -34,7 +34,7 @@
 
 @Component
 public class AAIConsumerTaskImpl extends
-    AAIConsumerTask<AAIConsumerClient, ConsumerDmaapModel, Object, AAIClientConfiguration> {
+    AAIConsumerTask<ConsumerDmaapModel, String, AAIClientConfiguration> {
 
     private static final Logger logger = LoggerFactory.getLogger(AAIConsumerTaskImpl.class);
 
@@ -47,7 +47,7 @@
     }
 
     @Override
-    protected Object consume(ConsumerDmaapModel consumerDmaapModel) throws AAINotFoundException {
+    Optional<String> consume(ConsumerDmaapModel consumerDmaapModel) throws AAINotFoundException {
         logger.trace("Method called with arg {}", consumerDmaapModel);
         try {
             return aaiConsumerClient.getHttpResponse(consumerDmaapModel);
@@ -58,17 +58,12 @@
     }
 
     @Override
-    public Object execute(Object object) throws AAINotFoundException {
-        setAAIClientConfig();
-        logger.trace("Method called with arg {}", object);
-        if (object instanceof ConsumerDmaapModel) {
-            return consume((ConsumerDmaapModel) object);
-        }
-        throw new AAINotFoundException("Incorrect object type");
-    }
-
-    protected void setAAIClientConfig() {
+    public String execute(ConsumerDmaapModel consumerDmaapModel) throws AAINotFoundException {
+        consumerDmaapModel = Optional.ofNullable(consumerDmaapModel)
+            .orElseThrow(() -> new AAINotFoundException("Invoked null object to AAI task"));
+        logger.trace("Method called with arg {}", consumerDmaapModel);
         aaiConsumerClient = resolveClient();
+        return consume(consumerDmaapModel).orElseThrow(() -> new AAINotFoundException("Null response code"));
     }
 
     @Override
@@ -77,7 +72,7 @@
     }
 
     @Override
-    protected AAIConsumerClient resolveClient() {
-        return new AAIConsumerClient(resolveConfiguration());
+    AAIConsumerClient resolveClient() {
+        return Optional.ofNullable(aaiConsumerClient).orElseGet(() -> new AAIConsumerClient(resolveConfiguration()));
     }
 }
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTask.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTask.java
index 23d5e93..8236280 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTask.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTask.java
@@ -20,13 +20,15 @@
 package org.onap.dcaegen2.services.prh.tasks;
 
 import org.onap.dcaegen2.services.prh.exceptions.AAINotFoundException;
+import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.service.AAIProducerClient;
 
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
  */
-public abstract class AAIProducerTask<T, U, V> extends Task {
+public abstract class AAIProducerTask<Request, Response, Config> extends Task<Request, Response, Config> {
 
-    protected abstract V publish(U message) throws AAINotFoundException;
+    abstract ConsumerDmaapModel publish(ConsumerDmaapModel message) throws AAINotFoundException;
 
-    protected abstract T resolveClient();
+    abstract AAIProducerClient resolveClient();
 }
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImpl.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImpl.java
index 79d9b88..7487d08 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImpl.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImpl.java
@@ -20,7 +20,9 @@
 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;
@@ -36,7 +38,8 @@
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
  */
 @Component
-public class AAIProducerTaskImpl extends AAIProducerTask<AAIProducerClient, ConsumerDmaapModel, Object> {
+public class AAIProducerTaskImpl extends
+    AAIProducerTask<ConsumerDmaapModel, ConsumerDmaapModel, AAIClientConfiguration> {
 
     private static final Logger logger = LoggerFactory.getLogger(AAIProducerTaskImpl.class);
 
@@ -49,9 +52,8 @@
     }
 
     @Override
-    protected Object publish(ConsumerDmaapModel consumerDmaapModel) throws AAINotFoundException {
+    ConsumerDmaapModel publish(ConsumerDmaapModel consumerDmaapModel) throws AAINotFoundException {
         logger.trace("Method called with arg {}", consumerDmaapModel);
-
         try {
             return aaiProducerClient.getHttpResponse(consumerDmaapModel)
                 .filter(HttpUtils::isSuccessfulResponseCode).map(response -> consumerDmaapModel).orElseThrow(() ->
@@ -63,19 +65,12 @@
     }
 
     @Override
-    public Object execute(Object object) throws AAINotFoundException {
-        setAAIClientConfig();
-        logger.trace("Method called with arg {}", object);
-
-        if (object instanceof ConsumerDmaapModel) {
-            return publish((ConsumerDmaapModel) object);
-        }
-
-        throw new AAINotFoundException("Incorrect object type");
-    }
-
-    void setAAIClientConfig() {
+    public ConsumerDmaapModel execute(ConsumerDmaapModel consumerDmaapModel) throws AAINotFoundException {
+        consumerDmaapModel = Optional.ofNullable(consumerDmaapModel)
+            .orElseThrow(() -> new AAINotFoundException("Invoked null object to AAI task"));
+        logger.trace("Method called with arg {}", consumerDmaapModel);
         aaiProducerClient = resolveClient();
+        return publish(consumerDmaapModel);
     }
 
     AAIClientConfiguration resolveConfiguration() {
@@ -83,7 +78,7 @@
     }
 
     @Override
-    protected AAIProducerClient resolveClient() {
-        return new AAIProducerClient(resolveConfiguration());
+    AAIProducerClient resolveClient() {
+        return Optional.ofNullable(aaiProducerClient).orElseGet(() -> new AAIProducerClient(resolveConfiguration()));
     }
-}
+}
\ No newline at end of file
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java
index 195eee7..4bd8731 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java
@@ -20,15 +20,17 @@
 package org.onap.dcaegen2.services.prh.tasks;
 
 import org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException;
+import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.service.consumer.ExtendedDmaapConsumerHttpClientImpl;
 
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
  */
-public abstract class DmaapConsumerTask<T, U, V, Z> extends Task<Z> {
+abstract class DmaapConsumerTask<Request, Response, Config> extends Task<Request, Response, Config> {
 
-    protected abstract V consume(U message) throws DmaapNotFoundException;
+    abstract ConsumerDmaapModel consume(String message) throws DmaapNotFoundException;
 
-    protected abstract T resolveClient();
+    abstract ExtendedDmaapConsumerHttpClientImpl resolveClient();
 
     abstract void initConfigs();
 }
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImpl.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImpl.java
index dc868b3..a78d33b 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImpl.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImpl.java
@@ -19,6 +19,7 @@
  */
 package org.onap.dcaegen2.services.prh.tasks;
 
+import java.util.Optional;
 import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
 import org.onap.dcaegen2.services.prh.config.DmaapConsumerConfiguration;
 import org.onap.dcaegen2.services.prh.configuration.AppConfig;
@@ -38,11 +39,9 @@
  */
 @Component
 public class DmaapConsumerTaskImpl extends
-    DmaapConsumerTask<ExtendedDmaapConsumerHttpClientImpl, String, ConsumerDmaapModel, DmaapConsumerConfiguration> {
-
+    DmaapConsumerTask<String, ConsumerDmaapModel, DmaapConsumerConfiguration> {
 
     private static final Logger logger = LoggerFactory.getLogger(DmaapConsumerTaskImpl.class);
-
     private final Config prhAppConfig;
     private ExtendedDmaapConsumerHttpClientImpl extendedDmaapConsumerHttpClient;
 
@@ -52,14 +51,14 @@
     }
 
     @Override
-    protected ConsumerDmaapModel consume(String message) throws DmaapNotFoundException {
+    ConsumerDmaapModel consume(String message) throws DmaapNotFoundException {
         logger.trace("Method called with arg {}", message);
         return DmaapConsumerJsonParser.getJsonObject(message);
     }
 
     @Override
-    public Object execute(Object object) throws PrhTaskException {
-        setDmaapClientConfig();
+    public ConsumerDmaapModel execute(String object) throws PrhTaskException {
+        extendedDmaapConsumerHttpClient = resolveClient();
         logger.trace("Method called with arg {}", object);
         return consume((extendedDmaapConsumerHttpClient.getHttpConsumerResponse().orElseThrow(() ->
             new PrhTaskException("DmaapConsumerTask has returned null"))));
@@ -75,14 +74,9 @@
         return prhAppConfig.getDmaapConsumerConfiguration();
     }
 
-    protected void setDmaapClientConfig() {
-        extendedDmaapConsumerHttpClient = resolveClient();
-    }
-
     @Override
-    protected ExtendedDmaapConsumerHttpClientImpl resolveClient() {
-        return new ExtendedDmaapConsumerHttpClientImpl(resolveConfiguration());
+    ExtendedDmaapConsumerHttpClientImpl resolveClient() {
+        return Optional.ofNullable(extendedDmaapConsumerHttpClient)
+            .orElseGet(() -> new ExtendedDmaapConsumerHttpClientImpl(resolveConfiguration()));
     }
-
-
 }
\ No newline at end of file
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTask.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTask.java
index 8985133..ab3e469 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTask.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTask.java
@@ -20,13 +20,15 @@
 package org.onap.dcaegen2.services.prh.tasks;
 
 import org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException;
+import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.service.producer.ExtendedDmaapProducerHttpClientImpl;
 
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
  */
-public abstract class DmaapPublisherTask<T, U, V> extends Task<V> {
+abstract class DmaapPublisherTask<Request, Response, Config> extends Task<Request, Response, Config> {
 
-    protected abstract String publish(U message) throws DmaapNotFoundException;
+    abstract String publish(ConsumerDmaapModel consumerDmaapModel) throws DmaapNotFoundException;
 
-    protected abstract T resolveClient();
+    abstract ExtendedDmaapProducerHttpClientImpl resolveClient();
 }
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImpl.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImpl.java
index 6450b18..1a8f60f 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImpl.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImpl.java
@@ -19,6 +19,7 @@
  */
 package org.onap.dcaegen2.services.prh.tasks;
 
+import java.util.Optional;
 import org.onap.dcaegen2.services.prh.config.DmaapPublisherConfiguration;
 import org.onap.dcaegen2.services.prh.configuration.AppConfig;
 import org.onap.dcaegen2.services.prh.configuration.Config;
@@ -37,7 +38,7 @@
  */
 @Component
 public class DmaapPublisherTaskImpl extends
-    DmaapPublisherTask<ExtendedDmaapProducerHttpClientImpl, ConsumerDmaapModel, DmaapPublisherConfiguration> {
+    DmaapPublisherTask<ConsumerDmaapModel, String, DmaapPublisherConfiguration> {
 
     private static final Logger logger = LoggerFactory.getLogger(DmaapPublisherTaskImpl.class);
     private final Config prhAppConfig;
@@ -49,7 +50,7 @@
     }
 
     @Override
-    protected String publish(ConsumerDmaapModel consumerDmaapModel) throws DmaapNotFoundException {
+    String publish(ConsumerDmaapModel consumerDmaapModel) throws DmaapNotFoundException {
         logger.trace("Method called with arg {}", consumerDmaapModel);
         return extendedDmaapProducerHttpClient.getHttpProducerResponse(consumerDmaapModel)
             .filter(response -> !response.isEmpty() && response.equals(String.valueOf(HttpStatus.OK.value())))
@@ -57,13 +58,12 @@
     }
 
     @Override
-    public Object execute(Object object) throws PrhTaskException {
-        if (object instanceof ConsumerDmaapModel) {
-            setDmaapClientConfig();
-            logger.trace("Method called with arg {}", object);
-            return publish((ConsumerDmaapModel) object);
-        }
-        throw new DmaapNotFoundException("Incorrect object type");
+    public String execute(ConsumerDmaapModel consumerDmaapModel) throws DmaapNotFoundException {
+        consumerDmaapModel = Optional.ofNullable(consumerDmaapModel)
+            .orElseThrow(() -> new DmaapNotFoundException("Invoked null object to Dmaap task"));
+        extendedDmaapProducerHttpClient = resolveClient();
+        logger.trace("Method called with arg {}", consumerDmaapModel);
+        return publish(consumerDmaapModel);
     }
 
     @Override
@@ -72,11 +72,8 @@
     }
 
     @Override
-    protected ExtendedDmaapProducerHttpClientImpl resolveClient() {
-        return null;
-    }
-
-    protected void setDmaapClientConfig() {
-        extendedDmaapProducerHttpClient = resolveClient();
+    ExtendedDmaapProducerHttpClientImpl resolveClient() {
+        return Optional.ofNullable(extendedDmaapProducerHttpClient)
+            .orElseGet(() -> new ExtendedDmaapProducerHttpClientImpl(resolveConfiguration()));
     }
 }
\ No newline at end of file
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasks.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasks.java
index 6b868d6..052de05 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasks.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasks.java
@@ -50,7 +50,7 @@
         setTaskExecutionFlow();
         try {
             dmaapConsumerTask.initConfigs();
-            dmaapConsumerTask.receiveRequest(null);
+            dmaapConsumerTask.receiveRequest("");
         } catch (PrhTaskException e) {
             logger
                 .warn("Chain of tasks have been aborted, because some errors occur in prh workflow ", e);
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/Task.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/Task.java
index 42f0405..46e19da 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/Task.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/Task.java
@@ -26,7 +26,7 @@
  */
 
 
-public abstract class Task<T> {
+public abstract class Task<Request, Response, Config> {
 
     private Task taskProcess;
 
@@ -34,15 +34,15 @@
         this.taskProcess = task;
     }
 
-    public void receiveRequest(Object body) throws PrhTaskException {
+    public void receiveRequest(Request body) throws PrhTaskException {
 
-        Object response = execute(body);
+        Response response = execute(body);
         if (taskProcess != null) {
             taskProcess.receiveRequest(response);
         }
     }
 
-    abstract Object execute(Object object) throws PrhTaskException;
+    abstract Response execute(Request object) throws PrhTaskException;
 
-    abstract T resolveConfiguration();
+    abstract Config resolveConfiguration();
 }
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImplTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImplTest.java
index 112b696..570cb2a 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImplTest.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskImplTest.java
@@ -33,6 +33,7 @@
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.function.Executable;
 import org.onap.dcaegen2.services.prh.config.AAIClientConfiguration;
 import org.onap.dcaegen2.services.prh.config.ImmutableAAIClientConfiguration;
 import org.onap.dcaegen2.services.prh.configuration.AppConfig;
@@ -81,91 +82,66 @@
     }
 
     @Test
-    public void whenPassedObjectDoesntFit_ThrowsPrhTaskException() throws IOException {
-        //given
-        Object response = null;
-
-        //when
+    public void whenPassedObjectDoesntFit_ThrowsPrhTaskException() {
+        //given/when
         when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        try {
-            aaiConsumerTask = new AAIConsumerTaskImpl(appConfig);
-            response = aaiConsumerTask.execute("Some string");
-        } catch (PrhTaskException e) {
-            e.printStackTrace();
-        }
+        aaiConsumerTask = new AAIConsumerTaskImpl(appConfig);
+        Executable executableCode = () -> aaiConsumerTask.execute(null);
         //then
-        Assertions.assertNull(response);
+        Assertions
+            .assertThrows(PrhTaskException.class, executableCode, "Passing wrong object type to execute function");
+
     }
 
     @Test
     public void whenPassedObjectFits_ReturnsCorrectStatus() throws PrhTaskException, IOException {
-        //given
-        Object response;
-        aaiConsumerClient = mock(AAIConsumerClient.class);
-
-        //when
-        when(aaiConsumerClient.getHttpResponse(consumerDmaapModel)).thenReturn(Optional.of("200"));
-        when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        aaiConsumerTask = spy(new AAIConsumerTaskImpl(appConfig));
-        when(aaiConsumerTask.resolveConfiguration()).thenReturn(aaiClientConfiguration);
-        doReturn(aaiConsumerClient).when(aaiConsumerTask).resolveClient();
-        aaiConsumerTask.setAAIClientConfig();
-        response = aaiConsumerTask.execute(consumerDmaapModel);
+        //given/when
+        getAAIConsumerTask_WhenMockingHttpResponseCode("200", false);
+        String response = aaiConsumerTask.execute(consumerDmaapModel);
 
         //then
         verify(aaiConsumerClient, times(1)).getHttpResponse(any(ConsumerDmaapModel.class));
         verifyNoMoreInteractions(aaiConsumerClient);
-        Assertions.assertNotNull(response);
-        Assertions.assertEquals(Optional.of("200"), response);
-
+        Assertions.assertEquals("200", response);
     }
 
     @Test
-    public void whenPassedObjectFits_butIncorrectResponseReturns() throws IOException {
-        //given
-        Object response = null;
-        aaiConsumerClient = mock(AAIConsumerClient.class);
-        //when
-        when(aaiConsumerClient.getHttpResponse(consumerDmaapModel)).thenReturn(Optional.of("400"));
-        when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        aaiConsumerTask = spy(new AAIConsumerTaskImpl(appConfig));
-        when(aaiConsumerTask.resolveConfiguration()).thenReturn(aaiClientConfiguration);
-        doReturn(aaiConsumerClient).when(aaiConsumerTask).resolveClient();
-        aaiConsumerTask.setAAIClientConfig();
-        try {
-            response = aaiConsumerTask.execute(consumerDmaapModel);
-        } catch (PrhTaskException e) {
-            e.printStackTrace();
-        }
+    public void whenPassedObjectFits_butIncorrectResponseReturns() throws IOException, AAINotFoundException {
+        //given/when
+        getAAIConsumerTask_WhenMockingHttpResponseCode("400", false);
+        String response = aaiConsumerTask.execute(consumerDmaapModel);
 
         //then
         verify(aaiConsumerClient, times(1)).getHttpResponse(any(ConsumerDmaapModel.class));
         verifyNoMoreInteractions(aaiConsumerClient);
-        Assertions.assertEquals(Optional.of("400"), response);
+        Assertions.assertEquals("400", response);
     }
 
     @Test
-    public void whenPassedObjectFits_ThrowsIOException() throws IOException {
-        //given
-        Object response = null;
+    public void whenPassedObjectFits_ThrowsIOExceptionAndHandleIt() throws IOException {
+        //given/when
+        getAAIConsumerTask_WhenMockingHttpResponseCode(null, true);
+        Executable executableCode = () -> aaiConsumerTask.execute(any(ConsumerDmaapModel.class));
+        Assertions
+            .assertThrows(PrhTaskException.class, executableCode, "HttpClient throws IOException");
+
+        //then
+        verifyNoMoreInteractions(aaiConsumerClient);
+    }
+
+
+    private static void getAAIConsumerTask_WhenMockingHttpResponseCode(String httpResponseCode, boolean throwsException)
+        throws IOException {
         aaiConsumerClient = mock(AAIConsumerClient.class);
-        //when
+        if (throwsException) {
+            when(aaiConsumerClient.getHttpResponse(consumerDmaapModel)).thenThrow(IOException.class);
+        } else {
+            when(aaiConsumerClient.getHttpResponse(consumerDmaapModel)).thenReturn(Optional.of(httpResponseCode));
+        }
         when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        when(aaiConsumerClient.getHttpResponse(consumerDmaapModel)).thenThrow(IOException.class);
         aaiConsumerTask = spy(new AAIConsumerTaskImpl(appConfig));
         when(aaiConsumerTask.resolveConfiguration()).thenReturn(aaiClientConfiguration);
         doReturn(aaiConsumerClient).when(aaiConsumerTask).resolveClient();
-        aaiConsumerTask.setAAIClientConfig();
-        try {
-            response = aaiConsumerTask.execute(consumerDmaapModel);
-        } catch (AAINotFoundException e) {
-            e.printStackTrace();
-        }
-
-        //then
-        verify(aaiConsumerClient, times(1)).getHttpResponse(any(ConsumerDmaapModel.class));
-        verifyNoMoreInteractions(aaiConsumerClient);
-        Assertions.assertNull(response);
     }
 
 }
\ No newline at end of file
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImplTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImplTest.java
index 40fd20a..c82a98e 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImplTest.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIProducerTaskImplTest.java
@@ -34,13 +34,14 @@
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.function.Executable;
 import org.onap.dcaegen2.services.prh.config.AAIClientConfiguration;
 import org.onap.dcaegen2.services.prh.config.ImmutableAAIClientConfiguration;
+import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
 import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
 import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel;
 import org.onap.dcaegen2.services.prh.configuration.AppConfig;
 import org.onap.dcaegen2.services.prh.exceptions.AAINotFoundException;
-import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
 import org.onap.dcaegen2.services.prh.service.AAIProducerClient;
 
 /**
@@ -48,8 +49,6 @@
  */
 class AAIProducerTaskImplTest {
 
-    private static ConsumerDmaapModel consumerDmaapModel;
-    private static AAIProducerTaskImpl aaiProducerTask;
 
     private static final String AAI_HOST = "/aai/v11/network/pnfs/pnf/NOKQTFCOC540002E";
     private static final Integer PORT = 1234;
@@ -58,6 +57,8 @@
     private static final String BASE_PATH = "/aai/v11";
     private static final String PNF_PATH = "/network/pnfs/pnf";
 
+    private static ConsumerDmaapModel consumerDmaapModel;
+    private static AAIProducerTaskImpl aaiProducerTask;
     private static AAIClientConfiguration aaiClientConfiguration;
     private static AAIProducerClient aaiProducerClient;
     private static AppConfig appConfig;
@@ -82,91 +83,68 @@
     }
 
     @Test
-    public void whenPassedObjectDoesntFit_ThrowsPrhTaskException() throws IOException {
-        //given
-        Object response = null;
-
-        //when
+    public void whenPassedObjectDoesntFit_ThrowsPrhTaskException() {
+        //given/when/
         when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        try {
-            aaiProducerTask = new AAIProducerTaskImpl(appConfig);
-            response = aaiProducerTask.execute("Some string");
-        } catch (PrhTaskException e) {
-            e.printStackTrace();
-        }
+        aaiProducerTask = new AAIProducerTaskImpl(appConfig);
+        Executable executableCode = () -> aaiProducerTask.execute(null);
 
         //then
-        Assertions.assertNull(response);
+        Assertions
+            .assertThrows(PrhTaskException.class, executableCode, "Passing wrong object type to execute function");
     }
 
     @Test
     public void whenPassedObjectFits_ReturnsCorrectStatus() throws AAINotFoundException, IOException {
-        //given
-        Object response;
-        aaiProducerClient = mock(AAIProducerClient.class);
-
-        //when
-        when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenReturn(Optional.of(200));
-        when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        aaiProducerTask = spy(new AAIProducerTaskImpl(appConfig));
-        when(aaiProducerTask.resolveConfiguration()).thenReturn(aaiClientConfiguration);
-        doReturn(aaiProducerClient).when(aaiProducerTask).resolveClient();
-        aaiProducerTask.setAAIClientConfig();
-        response = aaiProducerTask.execute(consumerDmaapModel);
+        //given/when
+        getAAIProducerTask_whenMockingResponseObject(200, false);
+        ConsumerDmaapModel response = aaiProducerTask.execute(consumerDmaapModel);
 
         //then
         verify(aaiProducerClient, times(1)).getHttpResponse(any(ConsumerDmaapModel.class));
         verifyNoMoreInteractions(aaiProducerClient);
-        Assertions.assertNotNull(response);
         Assertions.assertEquals(consumerDmaapModel, response);
 
     }
 
+
     @Test
     public void whenPassedObjectFits_butIncorrectResponseReturns() throws IOException {
-        //given
-        Object response = null;
-        aaiProducerClient = mock(AAIProducerClient.class);
-        //when
-        when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenReturn(Optional.of(400));
-        when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        aaiProducerTask = spy(new AAIProducerTaskImpl(appConfig));
-        when(aaiProducerTask.resolveConfiguration()).thenReturn(aaiClientConfiguration);
-        doReturn(aaiProducerClient).when(aaiProducerTask).resolveClient();
-        aaiProducerTask.setAAIClientConfig();
-        try {
-            response = aaiProducerTask.execute(consumerDmaapModel);
-        } catch (AAINotFoundException e) {
-            e.printStackTrace();
-        }
-
+        //given/when
+        getAAIProducerTask_whenMockingResponseObject(400, false);
+        Executable executableCode = () -> aaiProducerTask.execute(consumerDmaapModel);
+        Assertions
+            .assertThrows(PrhTaskException.class, executableCode, "Incorrect status code in response message");
         //then
         verify(aaiProducerClient, times(1)).getHttpResponse(any(ConsumerDmaapModel.class));
         verifyNoMoreInteractions(aaiProducerClient);
-        Assertions.assertNull(response);
     }
 
     @Test
-    public void whenPassedObjectFits_ThrowsIOException() throws IOException {
-        //given
-        Object response = null;
-        aaiProducerClient = mock(AAIProducerClient.class);
-        //when
-        when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
-        when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenThrow(IOException.class);
-        aaiProducerTask = spy(new AAIProducerTaskImpl(appConfig));
-        when(aaiProducerTask.resolveConfiguration()).thenReturn(aaiClientConfiguration);
-        doReturn(aaiProducerClient).when(aaiProducerTask).resolveClient();
-        aaiProducerTask.setAAIClientConfig();
-        try {
-            response = aaiProducerTask.execute(consumerDmaapModel);
-        } catch (AAINotFoundException e) {
-            e.printStackTrace();
-        }
+    public void whenPassedObjectFits_butHTTPClientThrowsIOExceptionHandleIt() throws IOException {
+        //given/when
+        getAAIProducerTask_whenMockingResponseObject(0, true);
 
+        Executable executableCode = () -> aaiProducerTask.execute(consumerDmaapModel);
+        Assertions
+            .assertThrows(PrhTaskException.class, executableCode, "");
         //then
         verify(aaiProducerClient, times(1)).getHttpResponse(any(ConsumerDmaapModel.class));
         verifyNoMoreInteractions(aaiProducerClient);
-        Assertions.assertNull(response);
+    }
+
+
+    private static void getAAIProducerTask_whenMockingResponseObject(int statusCode, boolean throwsException)
+        throws IOException {
+        aaiProducerClient = mock(AAIProducerClient.class);
+        if (throwsException) {
+            when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenThrow(IOException.class);
+        } else {
+            when(aaiProducerClient.getHttpResponse(consumerDmaapModel)).thenReturn(Optional.of(statusCode));
+        }
+        when(appConfig.getAAIClientConfiguration()).thenReturn(aaiClientConfiguration);
+        aaiProducerTask = spy(new AAIProducerTaskImpl(appConfig));
+        when(aaiProducerTask.resolveConfiguration()).thenReturn(aaiClientConfiguration);
+        doReturn(aaiProducerClient).when(aaiProducerTask).resolveClient();
     }
 }
\ No newline at end of file
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java
index 786c04f..373fc28 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskImplTest.java
@@ -31,6 +31,7 @@
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.function.Executable;
 import org.onap.dcaegen2.services.prh.config.DmaapConsumerConfiguration;
 import org.onap.dcaegen2.services.prh.config.ImmutableDmaapConsumerConfiguration;
 import org.onap.dcaegen2.services.prh.configuration.AppConfig;
@@ -49,7 +50,7 @@
     private static ExtendedDmaapConsumerHttpClientImpl extendedDmaapConsumerHttpClient;
     private static AppConfig appConfig;
     private static DmaapConsumerConfiguration dmaapConsumerConfiguration;
-
+    private static String message;
 
     @BeforeAll
     public static void setUp() {
@@ -62,39 +63,7 @@
             .ipv6("0:0:0:0:0:FFFF:0A10:7BEA")
             .pnfName("NOKQTFCOC540002E").build();
         appConfig = mock(AppConfig.class);
-    }
-
-    @Test
-    public void whenPassedObjectDoesntFit_DoNotThrowsPrhTaskException() {
-        //given
-        Object response = null;
-        extendedDmaapConsumerHttpClient = mock(ExtendedDmaapConsumerHttpClientImpl.class);
-
-        //when
-        when(extendedDmaapConsumerHttpClient.getHttpConsumerResponse()).thenReturn(Optional.empty());
-        when(appConfig.getDmaapConsumerConfiguration()).thenReturn(dmaapConsumerConfiguration);
-        dmaapConsumerTask = spy(new DmaapConsumerTaskImpl(appConfig));
-        when(dmaapConsumerTask.resolveConfiguration()).thenReturn(dmaapConsumerConfiguration);
-        doReturn(extendedDmaapConsumerHttpClient).when(dmaapConsumerTask).resolveClient();
-        dmaapConsumerTask.setDmaapClientConfig();
-        try {
-            response = dmaapConsumerTask.execute(consumerDmaapModel);
-        } catch (PrhTaskException e) {
-            e.printStackTrace();
-        }
-
-        //then
-        verify(extendedDmaapConsumerHttpClient, times(1)).getHttpConsumerResponse();
-        verifyNoMoreInteractions(extendedDmaapConsumerHttpClient);
-        Assertions.assertNull(response);
-    }
-
-    @Test
-    public void whenPassedObjectFits_ReturnsCorrectResponse() throws PrhTaskException {
-        //given
-        Object response;
-        extendedDmaapConsumerHttpClient = mock(ExtendedDmaapConsumerHttpClientImpl.class);
-        String message =
+        message =
             "{\"event\":{\"commonEventHeader\":{\"domain\":\"other\",\"eventId\":\"<<SerialNumber>>-reg\",\"eventName\""
                 + ":\"pnfRegistration_5GDU\",\"eventType\":\"pnfRegistration\",\"internalHeaderFields\":{},"
                 + "\"lastEpochMicrosec\":1519837825682,\"nfNamingCode\":\"5GRAN\",\"nfcNamingCode\":\"5DU\","
@@ -104,14 +73,30 @@
                 + "\"pnfManufactureDate\":1516406400,\"pnfModelNumber\":\"AJ02\",\"pnfOamIpv4Address\":\"10.16.123.234\","
                 + "\"pnfOamIpv6Address\":\"0:0:0:0:0:FFFF:0A10:7BEA\",\"pnfSerialNumber\":\"QTFCOC540002E\","
                 + "\"pnfSoftwareVersion\":\"v4.5.0.1\",\"pnfType\":\"AirScale\",\"pnfVendorName\":\"Nokia\"}}}";
+    }
+
+    @Test
+    public void whenPassedObjectDoesntFit_DoesNotThrowPrhTaskException() {
+        //given
+        prepareMocksForDmaapConsumer(Optional.empty());
+
         //when
-        when(extendedDmaapConsumerHttpClient.getHttpConsumerResponse()).thenReturn(Optional.of(message));
-        when(appConfig.getDmaapConsumerConfiguration()).thenReturn(dmaapConsumerConfiguration);
-        dmaapConsumerTask = spy(new DmaapConsumerTaskImpl(appConfig));
-        when(dmaapConsumerTask.resolveConfiguration()).thenReturn(dmaapConsumerConfiguration);
-        doReturn(extendedDmaapConsumerHttpClient).when(dmaapConsumerTask).resolveClient();
-        dmaapConsumerTask.setDmaapClientConfig();
-        response = dmaapConsumerTask.execute(consumerDmaapModel);
+        Executable executableFunction = () -> dmaapConsumerTask.execute("Sample input");
+
+        //then
+        Assertions
+            .assertThrows(PrhTaskException.class, executableFunction,
+                "Throwing exception when http response code won't fit to assignment range");
+        verify(extendedDmaapConsumerHttpClient, times(1)).getHttpConsumerResponse();
+        verifyNoMoreInteractions(extendedDmaapConsumerHttpClient);
+    }
+
+    @Test
+    public void whenPassedObjectFits_ReturnsCorrectResponse() throws PrhTaskException {
+        //given
+        prepareMocksForDmaapConsumer(Optional.of(message));
+        //when
+        ConsumerDmaapModel response = dmaapConsumerTask.execute("Sample input");
 
         //then
         verify(extendedDmaapConsumerHttpClient, times(1)).getHttpConsumerResponse();
@@ -120,4 +105,13 @@
         Assertions.assertEquals(consumerDmaapModel, response);
 
     }
+
+    private void prepareMocksForDmaapConsumer(Optional<String> message) {
+        extendedDmaapConsumerHttpClient = mock(ExtendedDmaapConsumerHttpClientImpl.class);
+        when(extendedDmaapConsumerHttpClient.getHttpConsumerResponse()).thenReturn(message);
+        when(appConfig.getDmaapConsumerConfiguration()).thenReturn(dmaapConsumerConfiguration);
+        dmaapConsumerTask = spy(new DmaapConsumerTaskImpl(appConfig));
+        when(dmaapConsumerTask.resolveConfiguration()).thenReturn(dmaapConsumerConfiguration);
+        doReturn(extendedDmaapConsumerHttpClient).when(dmaapConsumerTask).resolveClient();
+    }
 }
\ No newline at end of file
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java
index e460919..41d46f6 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java
@@ -28,11 +28,11 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
-import java.io.IOException;
 import java.util.Optional;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.function.Executable;
 import org.onap.dcaegen2.services.prh.config.DmaapPublisherConfiguration;
 import org.onap.dcaegen2.services.prh.config.ImmutableDmaapPublisherConfiguration;
 import org.onap.dcaegen2.services.prh.configuration.AppConfig;
@@ -66,67 +66,57 @@
     }
 
     @Test
-    public void whenPassedObjectDoesntFit_ThrowsPrhTaskException() throws IOException {
+    public void whenPassedObjectDoesntFit_ThrowsPrhTaskException() {
         //given
-        Object response = null;
+        when(appConfig.getDmaapPublisherConfiguration()).thenReturn(dmaapPublisherConfiguration);
+        dmaapPublisherTask = new DmaapPublisherTaskImpl(appConfig);
 
         //when
-        when(appConfig.getDmaapPublisherConfiguration()).thenReturn(dmaapPublisherConfiguration);
-        try {
-            dmaapPublisherTask = new DmaapPublisherTaskImpl(appConfig);
-            response = dmaapPublisherTask.execute("");
-        } catch (PrhTaskException e) {
-            e.printStackTrace();
-        }
+        Executable executableFunction = () -> dmaapPublisherTask.execute(null);
 
         //then
-        Assertions.assertNull(response);
+        Assertions
+            .assertThrows(PrhTaskException.class, executableFunction, "The specified parameter is incorrect");
     }
 
     @Test
     public void whenPassedObjectFits_ReturnsCorrectStatus() throws PrhTaskException {
         //given
-        Object response;
-        extendedDmaapProducerHttpClient = mock(ExtendedDmaapProducerHttpClientImpl.class);
+        prepareMocksForTests(HttpStatus.OK.toString());
 
         //when
-        when(extendedDmaapProducerHttpClient.getHttpProducerResponse(consumerDmaapModel))
-            .thenReturn(Optional.of(HttpStatus.OK.toString()));
-        when(appConfig.getDmaapPublisherConfiguration()).thenReturn(dmaapPublisherConfiguration);
-        dmaapPublisherTask = spy(new DmaapPublisherTaskImpl(appConfig));
-        when(dmaapPublisherTask.resolveConfiguration()).thenReturn(dmaapPublisherConfiguration);
-        doReturn(extendedDmaapProducerHttpClient).when(dmaapPublisherTask).resolveClient();
-        response = dmaapPublisherTask.execute(consumerDmaapModel);
+        String response = dmaapPublisherTask.execute(consumerDmaapModel);
 
         //then
         verify(extendedDmaapProducerHttpClient, times(1))
             .getHttpProducerResponse(any(ConsumerDmaapModel.class));
         verifyNoMoreInteractions(extendedDmaapProducerHttpClient);
-        Assertions.assertNotNull(response);
         Assertions.assertEquals(HttpStatus.OK.toString(), response);
     }
 
     @Test
     public void whenPassedObjectFits_butIncorrectResponseReturns() {
         //given
-        Object response = null;
-        extendedDmaapProducerHttpClient = mock(ExtendedDmaapProducerHttpClientImpl.class);
+        prepareMocksForTests("400");
+
         //when
+        Executable executableFunction = () -> dmaapPublisherTask.execute(consumerDmaapModel);
+
+        //then
+        Assertions
+            .assertThrows(PrhTaskException.class, executableFunction, "Incorrect response from DMAAP");
+        verify(extendedDmaapProducerHttpClient, times(1)).getHttpProducerResponse(any(ConsumerDmaapModel.class));
+        verifyNoMoreInteractions(extendedDmaapProducerHttpClient);
+    }
+
+
+    private void prepareMocksForTests(String httpResponseCode) {
+        extendedDmaapProducerHttpClient = mock(ExtendedDmaapProducerHttpClientImpl.class);
         when(extendedDmaapProducerHttpClient.getHttpProducerResponse(consumerDmaapModel))
-            .thenReturn(Optional.of("400"));
+            .thenReturn(Optional.of(httpResponseCode));
         when(appConfig.getDmaapPublisherConfiguration()).thenReturn(dmaapPublisherConfiguration);
         dmaapPublisherTask = spy(new DmaapPublisherTaskImpl(appConfig));
         when(dmaapPublisherTask.resolveConfiguration()).thenReturn(dmaapPublisherConfiguration);
         doReturn(extendedDmaapProducerHttpClient).when(dmaapPublisherTask).resolveClient();
-        try {
-            response = dmaapPublisherTask.execute(consumerDmaapModel);
-        } catch (PrhTaskException e) {
-            e.printStackTrace();
-        }
-
-        //then
-        verify(extendedDmaapProducerHttpClient, times(1)).getHttpProducerResponse(any(ConsumerDmaapModel.class));
-        verifyNoMoreInteractions(extendedDmaapProducerHttpClient);
-        Assertions.assertNull(response);
     }
 }
\ No newline at end of file