aboutsummaryrefslogtreecommitdiffstats
path: root/prh-app-server/src/main/java
diff options
context:
space:
mode:
authorwasala <przemyslaw.wasala@nokia.com>2018-08-08 13:39:14 +0200
committerwasala <przemyslaw.wasala@nokia.com>2018-08-09 07:55:43 +0200
commit5005d7463fb8ef25f0b4e975d4392367037c7239 (patch)
treee1ef2c5f5bc99d9514c13e1068f3b56c1881a4c1 /prh-app-server/src/main/java
parent7679a6f8177d47116aa8dbae0b38f8b0a8174dc5 (diff)
Reactive A&AI client
*plugged reactiveHttpClient in prh workflow *added junit tests for workflow Change-Id: I74f3fa7354de9b0f7f164c070ea61b70e74bde23 Issue-ID: DCAEGEN2-609 Signed-off-by: wasala <przemyslaw.wasala@nokia.com>
Diffstat (limited to 'prh-app-server/src/main/java')
-rw-r--r--prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AaiProducerTask.java19
-rw-r--r--prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AaiProducerTaskImpl.java47
-rw-r--r--prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImpl.java6
-rw-r--r--prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasks.java12
4 files changed, 49 insertions, 35 deletions
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 abd4fc45..f58fed61 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,19 +20,30 @@
package org.onap.dcaegen2.services.prh.tasks;
+import org.onap.dcaegen2.services.prh.config.AaiClientConfiguration;
import org.onap.dcaegen2.services.prh.exceptions.AaiNotFoundException;
import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
-import org.onap.dcaegen2.services.prh.service.AaiProducerClient;
+import org.onap.dcaegen2.services.prh.service.AaiReactiveWebClient;
+import org.onap.dcaegen2.services.prh.service.producer.AaiProducerReactiveHttpClient;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.core.publisher.Mono;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
*/
public abstract class AaiProducerTask {
- abstract ConsumerDmaapModel publish(ConsumerDmaapModel message) throws AaiNotFoundException;
+ abstract Mono<ConsumerDmaapModel> publish(Mono<ConsumerDmaapModel> message) throws AaiNotFoundException;
- abstract AaiProducerClient resolveClient();
+ abstract AaiProducerReactiveHttpClient resolveClient();
- protected abstract ConsumerDmaapModel execute(ConsumerDmaapModel consumerDmaapModel) throws PrhTaskException;
+ protected abstract AaiClientConfiguration resolveConfiguration();
+
+ protected abstract Mono<ConsumerDmaapModel> execute(Mono<ConsumerDmaapModel> consumerDmaapModel)
+ throws PrhTaskException;
+
+ WebClient buildWebClient() {
+ return new AaiReactiveWebClient().fromConfiguration(resolveConfiguration()).build();
+ }
}
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 124a5c63..eed65c64 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,19 +20,20 @@
package org.onap.dcaegen2.services.prh.tasks;
-import java.net.URISyntaxException;
-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;
import org.onap.dcaegen2.services.prh.exceptions.AaiNotFoundException;
+import org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException;
+import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.prh.model.utils.HttpUtils;
-import org.onap.dcaegen2.services.prh.service.AaiProducerClient;
+import org.onap.dcaegen2.services.prh.service.producer.AaiProducerReactiveHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import reactor.core.publisher.Mono;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
@@ -44,7 +45,7 @@ public class AaiProducerTaskImpl extends
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final Config prhAppConfig;
- private AaiProducerClient aaiProducerClient;
+ private AaiProducerReactiveHttpClient aaiProducerReactiveHttpClient;
@Autowired
public AaiProducerTaskImpl(AppConfig prhAppConfig) {
@@ -52,33 +53,37 @@ public class AaiProducerTaskImpl extends
}
@Override
- ConsumerDmaapModel publish(ConsumerDmaapModel consumerDmaapModel) throws AaiNotFoundException {
+ Mono<ConsumerDmaapModel> publish(Mono<ConsumerDmaapModel> consumerDmaapModel) {
logger.info("Sending PNF model to AAI {}", consumerDmaapModel);
- try {
- return aaiProducerClient.getHttpResponse(consumerDmaapModel)
- .filter(HttpUtils::isSuccessfulResponseCode).map(response -> consumerDmaapModel).orElseThrow(() ->
- new AaiNotFoundException("Incorrect response code for continuation of tasks workflow"));
- } catch (URISyntaxException e) {
- logger.warn("Patch request not successful", e);
- throw new AaiNotFoundException("Patch request not successful");
- }
+ return aaiProducerReactiveHttpClient.getAaiProducerResponse(consumerDmaapModel)
+ .flatMap(response -> {
+ if (HttpUtils.isSuccessfulResponseCode(response)) {
+ return consumerDmaapModel;
+ }
+ return Mono
+ .error(new AaiNotFoundException("Incorrect response code for continuation of tasks workflow"));
+ });
}
@Override
- 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);
+ AaiProducerReactiveHttpClient resolveClient() {
+ return aaiProducerReactiveHttpClient == null ? new AaiProducerReactiveHttpClient(resolveConfiguration())
+ .createAaiWebClient(buildWebClient()) : aaiProducerReactiveHttpClient;
}
+ @Override
protected AaiClientConfiguration resolveConfiguration() {
return prhAppConfig.getAaiClientConfiguration();
}
@Override
- AaiProducerClient resolveClient() {
- return Optional.ofNullable(aaiProducerClient).orElseGet(() -> new AaiProducerClient(resolveConfiguration()));
+ protected Mono<ConsumerDmaapModel> execute(Mono<ConsumerDmaapModel> consumerDmaapModel) throws PrhTaskException {
+ if (consumerDmaapModel == null) {
+ throw new DmaapNotFoundException("Invoked null object to DMaaP task");
+ }
+ aaiProducerReactiveHttpClient = resolveClient();
+ logger.trace("Method called with arg {}", consumerDmaapModel);
+ return publish(consumerDmaapModel);
+
}
} \ No newline at end of file
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 4949faa7..1a641fd4 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
@@ -20,7 +20,6 @@
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;
@@ -57,8 +56,9 @@ public class DmaapPublisherTaskImpl extends DmaapPublisherTask {
@Override
public Mono<String> execute(Mono<ConsumerDmaapModel> consumerDmaapModel) throws DmaapNotFoundException {
- consumerDmaapModel = Optional.ofNullable(consumerDmaapModel)
- .orElseThrow(() -> new DmaapNotFoundException("Invoked null object to DMaaP task"));
+ if (consumerDmaapModel == null) {
+ throw new DmaapNotFoundException("Invoked null object to DMaaP task");
+ }
dmaapProducerReactiveHttpClient = resolveClient();
logger.trace("Method called with arg {}", consumerDmaapModel);
return publish(consumerDmaapModel);
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 664eb33c..c021abe2 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
@@ -95,13 +95,11 @@ public class ScheduledTasks {
}
private Mono<ConsumerDmaapModel> publishToAaiConfiguration(Mono<ConsumerDmaapModel> monoDMaaPModel) {
- return monoDMaaPModel.flatMap(dmaapModel -> {
- try {
- return Mono.just(aaiProducerTask.execute(dmaapModel));
- } catch (PrhTaskException e) {
- return Mono.error(e);
- }
- });
+ try {
+ return aaiProducerTask.execute(monoDMaaPModel);
+ } catch (PrhTaskException e) {
+ return Mono.error(e);
+ }
}
private Mono<String> publishToDmaapConfiguration(Mono<ConsumerDmaapModel> monoAaiModel) {