AAI client configuration & tasks changed
Change-Id: I86a2f2ed62565263f2be2c9078a092f993234a19
Issue-ID: DCAEGEN2-451
Signed-off-by: pwielebs <piotr.wielebski@nokia.com>
diff --git a/pom.xml b/pom.xml
index 2f750fc..20d01aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -583,6 +583,7 @@
<module>prh-app-server</module>
<module>prh-aai-client</module>
<module>prh-dmaap-client</module>
+ <module>prh-commons</module>
</modules>
</project>
diff --git a/prh-aai-client/pom.xml b/prh-aai-client/pom.xml
index 1b2b199..8d4161f 100644
--- a/prh-aai-client/pom.xml
+++ b/prh-aai-client/pom.xml
@@ -66,6 +66,11 @@
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.onap.dcaegen2.services.commons</groupId>
+ <artifactId>commons</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
<!-- LOGGING DEPENDENCIES-->
<dependency>
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/config/AAIClientConfiguration.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/config/AAIClientConfiguration.java
index 60a022b..5a3bffc 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/config/AAIClientConfiguration.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/config/AAIClientConfiguration.java
@@ -22,6 +22,8 @@
import java.io.Serializable;
+import java.util.Map;
+
import org.immutables.gson.Gson;
import org.immutables.value.Value;
import org.springframework.stereotype.Component;
@@ -53,4 +55,13 @@
@Value.Parameter
public abstract Boolean aaiIgnoreSSLCertificateErrors();
+ @Value.Parameter
+ public abstract String aaiBasePath();
+
+ @Value.Parameter
+ public abstract String aaiPnfPath();
+
+ @Value.Parameter
+ public abstract Map<String,String> aaiHeaders();
+
}
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIClientImpl.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIClientImpl.java
index c2b40b9..f58919e 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIClientImpl.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIClientImpl.java
@@ -34,7 +34,6 @@
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
@@ -46,7 +45,7 @@
private AAIClientConfiguration aaiHttpClientConfig;
- @Autowired
+
public AAIClientImpl(AAIClientConfiguration aaiHttpClientConfiguration) {
this.aaiHttpClientConfig = aaiHttpClientConfiguration;
}
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIConsumerClient.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIConsumerClient.java
index 24790be..ffaf1af 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIConsumerClient.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIConsumerClient.java
@@ -28,7 +28,7 @@
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.utils.HttpUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,9 +36,11 @@
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
-public class AAIConsumerClient implements AAIExtendedHttpClient {
+public class AAIConsumerClient {
Logger logger = LoggerFactory.getLogger(AAIConsumerClient.class);
@@ -46,33 +48,30 @@
private final String aaiHost;
private final String aaiProtocol;
private final Integer aaiHostPortNumber;
+ private final String aaiPath;
+ private final Map<String,String> aaiHeaders;
public AAIConsumerClient(AAIClientConfiguration aaiHttpClientConfiguration) {
- final AAIClient aaiClient = new AAIClientImpl(aaiHttpClientConfiguration);
- closeableHttpClient = aaiClient.getAAIHttpClient();
+ closeableHttpClient = new AAIClientImpl(aaiHttpClientConfiguration).getAAIHttpClient();
aaiHost = aaiHttpClientConfiguration.aaiHost();
aaiProtocol = aaiHttpClientConfiguration.aaiProtocol();
aaiHostPortNumber = aaiHttpClientConfiguration.aaiHostPortNumber();
+ aaiPath = aaiHttpClientConfiguration.aaiBasePath() + aaiHttpClientConfiguration.aaiPnfPath();
+ aaiHeaders = aaiHttpClientConfiguration.aaiHeaders();
}
- @Override
- public Optional<String> getHttpResponse(HttpRequestDetails requestDetails) {
-
- Optional<String> extendedDetails = Optional.empty();
- Optional<HttpRequestBase> request = createRequest(requestDetails);
-
+ public Optional<String> getHttpResponse(ConsumerDmaapModel consumerDmaapModel) throws IOException {
+ Optional<HttpRequestBase> request = createRequest(consumerDmaapModel);
try {
- extendedDetails = closeableHttpClient.execute(request.get(), aaiResponseHandler());
+ return closeableHttpClient.execute(request.get(), aaiResponseHandler());
} catch (IOException e) {
- logger.error("Exception while executing HTTP request: {}", e);
+ logger.warn("Exception while executing http client: ", e);
+ throw new IOException();
}
-
- return extendedDetails;
}
-
- private URI createAAIExtendedURI(final String path, String pnfName) {
+ private URI createAAIExtendedURI(String pnfName) {
URI extendedURI = null;
@@ -80,13 +79,13 @@
.setScheme(aaiProtocol)
.setHost(aaiHost)
.setPort(aaiHostPortNumber)
- .setPath(path + "/" + pnfName);
+ .setPath(aaiPath + "/" + pnfName);
try {
extendedURI = uriBuilder.build();
- logger.info("Building extended URI: {}", extendedURI);
+ logger.trace("Building extended URI: {}", extendedURI);
} catch (URISyntaxException e) {
- logger.error("Exception while building extended URI: {}", e);
+ logger.warn("Exception while building extended URI: {}", e);
}
return extendedURI;
@@ -95,39 +94,34 @@
private ResponseHandler<Optional<String>> aaiResponseHandler() {
return httpResponse -> {
final int responseCode = httpResponse.getStatusLine().getStatusCode();
- logger.info("Status code of operation: {}", responseCode);
+ logger.trace("Status code of operation: {}", responseCode);
final HttpEntity responseEntity = httpResponse.getEntity();
if (HttpUtils.isSuccessfulResponseCode(responseCode) ) {
- logger.info("HTTP response successful.");
+ logger.trace("HTTP response successful.");
final String aaiResponse = EntityUtils.toString(responseEntity);
return Optional.of(aaiResponse);
} else {
String aaiResponse = responseEntity != null ? EntityUtils.toString(responseEntity) : "";
- logger.error("HTTP response not successful : {}", aaiResponse);
- return Optional.of("" + responseCode);
+ logger.warn("HTTP response not successful : {}", aaiResponse);
+ return Optional.of(String.valueOf(responseCode));
}
};
}
private HttpRequestBase createHttpRequest(URI extendedURI) {
-
- if (isExtendedURINotNull(extendedURI)) {
- return new HttpGet(extendedURI);
- } else {
- return null;
- }
+ return isExtendedURINotNull(extendedURI) ? new HttpGet(extendedURI) : null;
}
private Boolean isExtendedURINotNull(URI extendedURI) {
return extendedURI != null;
}
- private Optional<HttpRequestBase> createRequest(HttpRequestDetails requestDetails) {
-
- final URI extendedURI = createAAIExtendedURI(requestDetails.aaiAPIPath(), requestDetails.pnfName());
+ private Optional<HttpRequestBase> createRequest(ConsumerDmaapModel consumerDmaapModel) {
+ final URI extendedURI = createAAIExtendedURI(consumerDmaapModel.getPnfName());
HttpRequestBase request = createHttpRequest(extendedURI);
- requestDetails.headers().forEach(request::addHeader);
+ aaiHeaders.forEach(Objects.requireNonNull(request)::addHeader);
+ Objects.requireNonNull(request).addHeader("Content-Type", "application/json");
return Optional.of(request);
}
}
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClient.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClient.java
index 24149e6..71c94b6 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClient.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClient.java
@@ -19,12 +19,13 @@
*/
package org.onap.dcaegen2.services.service;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
+import java.io.IOException;
import java.util.Optional;
@FunctionalInterface
public interface AAIExtendedHttpClient {
- Optional<String> getHttpResponse(HttpRequestDetails httpRequestDetails);
+ Optional<Integer> getHttpResponse(ConsumerDmaapModel consumerDmaapModel) throws IOException;
}
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIProducerClient.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIProducerClient.java
index 0b82578..788d997 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIProducerClient.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIProducerClient.java
@@ -30,7 +30,8 @@
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
+import org.onap.dcaegen2.services.model.CommonFunctions;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.utils.HttpUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +40,8 @@
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 {
@@ -48,71 +51,69 @@
private final String aaiHost;
private final String aaiProtocol;
private final Integer aaiHostPortNumber;
+ private final String aaiPath;
+ private final Map<String,String> aaiHeaders;
public AAIProducerClient(AAIClientConfiguration aaiHttpClientConfiguration) {
- final AAIClient aaiHttpClient = new AAIClientImpl(aaiHttpClientConfiguration);
- closeableHttpClient = aaiHttpClient.getAAIHttpClient();
+ closeableHttpClient = new AAIClientImpl(aaiHttpClientConfiguration).getAAIHttpClient();
aaiHost = aaiHttpClientConfiguration.aaiHost();
aaiProtocol = aaiHttpClientConfiguration.aaiProtocol();
aaiHostPortNumber = aaiHttpClientConfiguration.aaiHostPortNumber();
+ aaiPath = aaiHttpClientConfiguration.aaiBasePath() + aaiHttpClientConfiguration.aaiPnfPath();
+ aaiHeaders = aaiHttpClientConfiguration.aaiHeaders();
}
+
@Override
- public Optional<String> getHttpResponse(HttpRequestDetails requestDetails) {
-
- Optional<String> extendedDetails = Optional.empty();
- Optional<HttpRequestBase> request = createRequest(requestDetails);
-
+ public Optional<Integer> getHttpResponse(ConsumerDmaapModel consumerDmaapModel) throws IOException {
+ Optional<HttpRequestBase> request = createRequest(consumerDmaapModel);
try {
- extendedDetails = closeableHttpClient.execute(request.get(), aaiResponseHandler());
+ return closeableHttpClient.execute(request.get(), aaiResponseHandler());
} catch (IOException e) {
- logger.error("Exception while executing HTTP request: {}", e);
+ logger.warn("Exception while executing http client: ", e);
+ throw new IOException();
}
-
- return extendedDetails;
}
- private URI createAAIExtendedURI(final String path, final String pnfName) {
-
+ private URI createAAIExtendedURI(final String pnfName) {
URI extendedURI = null;
-
final URIBuilder uriBuilder = new URIBuilder()
.setScheme(aaiProtocol)
.setHost(aaiHost)
.setPort(aaiHostPortNumber)
- .setPath(path + "/" + pnfName);
-
+ .setPath(aaiPath + "/" + pnfName);
try {
extendedURI = uriBuilder.build();
- logger.info("Building extended URI: {}", extendedURI);
+ logger.trace("Building extended URI: {}", extendedURI);
} catch (URISyntaxException e) {
- logger.error("Exception while building extended URI: {}", e);
+ logger.warn("Exception while building extended URI: ", e);
}
-
return extendedURI;
}
- private ResponseHandler<Optional<String>> aaiResponseHandler() {
+ private ResponseHandler<Optional<Integer>> aaiResponseHandler() {
return (HttpResponse httpResponse) -> {
- final int responseCode = httpResponse.getStatusLine().getStatusCode();
- logger.info("Status code of operation: {}", responseCode);
+ final Integer responseCode = httpResponse.getStatusLine().getStatusCode();
+ logger.trace("Status code of operation: {}", responseCode);
final HttpEntity responseEntity = httpResponse.getEntity();
if (HttpUtils.isSuccessfulResponseCode(responseCode)) {
- logger.info("HTTP response successful.");
- return Optional.of("" + responseCode);
+ logger.trace("HTTP response successful.");
+ return Optional.of(responseCode);
} else {
String aaiResponse = responseEntity != null ? EntityUtils.toString(responseEntity) : "";
- logger.error("HTTP response not successful : {}", aaiResponse);
- return Optional.of("" + responseCode);
+ logger.warn("HTTP response not successful : {}", aaiResponse);
+ return Optional.of(responseCode);
}
};
}
- private HttpRequestBase createHttpRequest(URI extendedURI, HttpRequestDetails httpRequestDetails) {
- if (isExtendedURINotNull(extendedURI) && httpRequestDetails.jsonBody().isPresent()) {
- return createHttpPatch(extendedURI, httpRequestDetails.jsonBody());
+ 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;
}
@@ -122,6 +123,7 @@
return extendedURI != null;
}
+
private Optional<StringEntity> createStringEntity(Optional<String> jsonBody) {
return Optional.of(parseJson(jsonBody).get());
}
@@ -135,21 +137,19 @@
private Optional<StringEntity> parseJson(Optional<String> jsonBody) {
Optional<StringEntity> stringEntity = Optional.empty();
-
try {
stringEntity = Optional.of(new StringEntity(jsonBody.get()));
} catch (UnsupportedEncodingException e) {
- logger.error("Exception while parsing JSON: {}", e);
+ logger.warn("Exception while parsing JSON: ", e);
}
-
return stringEntity;
}
- private Optional<HttpRequestBase> createRequest(HttpRequestDetails requestDetails) {
-
- final URI extendedURI = createAAIExtendedURI(requestDetails.aaiAPIPath(), requestDetails.pnfName());
- HttpRequestBase request = createHttpRequest(extendedURI, requestDetails);
- requestDetails.headers().forEach(request::addHeader);
+ 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);
}
}
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java
deleted file mode 100644
index 37e6b86..0000000
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PNF-REGISTRATION-HANDLER
- * ================================================================================
- * Copyright (C) 2018 NOKIA 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.dcaegen2.services.utils;
-
-
-import org.immutables.value.Value;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.Optional;
-
-@Value.Immutable(prehash = true)
-@Value.Style(stagedBuilder = true)
-public abstract class HttpRequestDetails implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- @Value.Parameter
- public abstract String aaiAPIPath();
-
- @Value.Parameter
- public abstract Optional<String> jsonBody();
-
- @Value.Parameter
- public abstract String pnfName();
-
- @Value.Parameter
- public abstract Map<String,String> headers();
-}
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpUtils.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpUtils.java
index eac7f83..20bc7e0 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpUtils.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpUtils.java
@@ -23,8 +23,6 @@
public final class HttpUtils implements HttpStatus {
- public static final String JSON_APPLICATION_TYPE = "application/json";
-
private HttpUtils() {}
public static boolean isSuccessfulResponseCode(Integer statusCode) {
diff --git a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIConsumerClientTest.java b/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIConsumerClientTest.java
index b95cc8d..5e45d84 100644
--- a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIConsumerClientTest.java
+++ b/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIConsumerClientTest.java
@@ -27,7 +27,7 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
import java.io.IOException;
import java.lang.reflect.Field;
@@ -44,8 +44,9 @@
private static AAIConsumerClient testedObject;
private static AAIClientConfiguration aaiHttpClientConfigurationMock = mock(AAIClientConfiguration.class);
private static CloseableHttpClient closeableHttpClientMock = mock(CloseableHttpClient.class);
- private static HttpRequestDetails httpRequestDetailsMock = mock(HttpRequestDetails.class);
private static final String JSON_MESSAGE = "{ \"pnf-id\": \"example-pnf-id-val-22343\", \"regional-resource-zone\":null, \"ipaddress-v4-oam\": \"11.22.33.44\" }";
+ private static ConsumerDmaapModel consumerDmaapModelMock = mock(ConsumerDmaapModel.class);
+ private static final String PNF_NAME = "nokia-pnf-nhfsadhff";
@BeforeAll
public static void setup() throws NoSuchFieldException, IllegalAccessException {
@@ -54,7 +55,7 @@
aaiHeaders.put("X-FromAppId", "prh");
aaiHeaders.put("X-TransactionId", "9999");
aaiHeaders.put("Accept", "application/json");
- aaiHeaders.put("authentication", "Basic QUFJOkFBSQ==");
+ aaiHeaders.put("Authorization", "Basic QUFJOkFBSQ==");
aaiHeaders.put("Real-Time", "true");
aaiHeaders.put("Content-Type", "application/json");
@@ -63,11 +64,11 @@
when(aaiHttpClientConfigurationMock.aaiHostPortNumber()).thenReturn(1234);
when(aaiHttpClientConfigurationMock.aaiUserName()).thenReturn("PRH");
when(aaiHttpClientConfigurationMock.aaiUserPassword()).thenReturn("PRH");
+ when(aaiHttpClientConfigurationMock.aaiBasePath()).thenReturn("/aai/v11");
+ when(aaiHttpClientConfigurationMock.aaiPnfPath()).thenReturn("/network/pnfs/pnf");
+ when(aaiHttpClientConfigurationMock.aaiHeaders()).thenReturn(aaiHeaders);
- when(httpRequestDetailsMock.aaiAPIPath()).thenReturn("/aai/v11/network/pnfs/pnf");
- when(httpRequestDetailsMock.headers()).thenReturn(aaiHeaders);
- when(httpRequestDetailsMock.pnfName()).thenReturn("pnf-nokia-45fsfcx");
- when(httpRequestDetailsMock.jsonBody()).thenReturn(Optional.of(JSON_MESSAGE));
+ when(consumerDmaapModelMock.getPnfName()).thenReturn(PNF_NAME);
testedObject = new AAIConsumerClient(aaiHttpClientConfigurationMock);
setField();
@@ -79,7 +80,7 @@
when(closeableHttpClientMock.execute(any(HttpGet.class), any(ResponseHandler.class))).
thenReturn(Optional.of(JSON_MESSAGE));
- Optional<String> actualResult = testedObject.getHttpResponse(httpRequestDetailsMock);
+ Optional<String> actualResult = testedObject.getHttpResponse(consumerDmaapModelMock);
Assertions.assertEquals(Optional.of(JSON_MESSAGE),actualResult);
}
diff --git a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIProducerClientTest.java b/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIProducerClientTest.java
index 7f3978b..59c90dc 100644
--- a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIProducerClientTest.java
+++ b/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/AAIProducerClientTest.java
@@ -27,7 +27,9 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModelForUnitTest;
+
import java.io.IOException;
import java.lang.reflect.Field;
@@ -41,17 +43,17 @@
public class AAIProducerClientTest {
+ private static final Integer SUCCESS = 200;
private static AAIProducerClient testedObject;
private static AAIClientConfiguration aaiHttpClientConfigurationMock = mock(AAIClientConfiguration.class);
private static CloseableHttpClient closeableHttpClientMock = mock(CloseableHttpClient.class);
- private static HttpRequestDetails httpRequestDetailsMock = mock(HttpRequestDetails.class);
- private static final String JsonBody = "{\"ipaddress-v4-oam\":\"11.22.33.155\"}";
- private static final String SUCCESS = "200";
- private static final String PNF_NAME = "nokia-pnf-nhfsadhff";
+ private static ConsumerDmaapModel consumerDmaapModel = new ConsumerDmaapModelForUnitTest();
+
@BeforeAll
public static void init() throws NoSuchFieldException, IllegalAccessException {
+ //given
Map<String, String> aaiHeaders = new HashMap<>();
aaiHeaders.put("X-FromAppId", "prh");
aaiHeaders.put("X-TransactionId", "vv-temp");
@@ -59,29 +61,28 @@
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);
when(aaiHttpClientConfigurationMock.aaiUserName()).thenReturn("PRH");
when(aaiHttpClientConfigurationMock.aaiUserPassword()).thenReturn("PRH");
-
- when(httpRequestDetailsMock.aaiAPIPath()).thenReturn("/aai/v11/network/pnfs/pnf");
-
- when(httpRequestDetailsMock.headers()).thenReturn(aaiHeaders);
- when(httpRequestDetailsMock.pnfName()).thenReturn(PNF_NAME);
- when(httpRequestDetailsMock.jsonBody()).thenReturn(Optional.of(JsonBody));
+ when(aaiHttpClientConfigurationMock.aaiBasePath()).thenReturn("/aai/v11");
+ when(aaiHttpClientConfigurationMock.aaiPnfPath()).thenReturn("/network/pnfs/pnf");
+ when(aaiHttpClientConfigurationMock.aaiHeaders()).thenReturn(aaiHeaders);
testedObject = new AAIProducerClient(aaiHttpClientConfigurationMock);
setField();
}
@Test
- public void getHttpResponsePatch_success() throws IOException {
-
+ public void getHttpResponsePatch_shouldReturnSuccessStatusCode() throws IOException {
+ //when
when(closeableHttpClientMock.execute(any(HttpPatch.class), any(ResponseHandler.class)))
.thenReturn(Optional.of(SUCCESS));
- Optional<String> actualResult = testedObject.getHttpResponse(httpRequestDetailsMock);
+ Optional<Integer> actualResult = testedObject.getHttpResponse(consumerDmaapModel);
+ //then
Assertions.assertEquals(SUCCESS, actualResult.get());
}
diff --git a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/config/AAIHttpClientConfigurationTest.java b/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/config/AAIHttpClientConfigurationTest.java
index 29a0092..447e0ec 100644
--- a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/config/AAIHttpClientConfigurationTest.java
+++ b/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/config/AAIHttpClientConfigurationTest.java
@@ -33,6 +33,8 @@
private static final Integer PORT = 1234;
private static final String PROTOCOL = "https";
private static final String USER_NAME_PASSWORD = "PRH";
+ private static final String BASE_PATH = "/aai/v11";
+ private static final String PNF_PATH = "/network/pnfs/pnf";
@BeforeAll
public static void init() {
@@ -43,6 +45,8 @@
.aaiUserName(USER_NAME_PASSWORD)
.aaiUserPassword(USER_NAME_PASSWORD)
.aaiIgnoreSSLCertificateErrors(true)
+ .aaiBasePath(BASE_PATH)
+ .aaiPnfPath(PNF_PATH)
.build();
}
diff --git a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/utils/HttpRequestDetailsTest.java b/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/utils/HttpRequestDetailsTest.java
deleted file mode 100644
index 0deb8ad..0000000
--- a/prh-aai-client/src/test/java/org/onap/dcaegen2/services/service/utils/HttpRequestDetailsTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PNF-REGISTRATION-HANDLER
- * ================================================================================
- * Copyright (C) 2018 NOKIA 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.dcaegen2.services.service.utils;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
-import org.onap.dcaegen2.services.utils.ImmutableHttpRequestDetails;
-import org.onap.dcaegen2.services.utils.RequestVerbs;
-
-import java.util.Optional;
-
-
-public class HttpRequestDetailsTest {
-
- private static HttpRequestDetails testObject;
-
- private static final String AAI_PATH = "aaiPathTest";
- private static final String HEADERS_KEY1 = "headersKey1";
- private static final String HEADERS_VALUE1 = "headersValue1";
- private static final String JSON_MESSAGE = "{\"dare_to\": \"dream_big\"}";
- private static final String PNF_NAME = "pnf-nokia-5454885485";
-
- @BeforeAll
- public static void init() {
- testObject = ImmutableHttpRequestDetails.builder()
- .aaiAPIPath(AAI_PATH)
- .pnfName(PNF_NAME)
- .putHeaders(HEADERS_KEY1,HEADERS_VALUE1)
- .jsonBody(JSON_MESSAGE)
- .build();
- }
-
- @Test
- public void testGetters_success() {
- Assertions.assertEquals(AAI_PATH, testObject.aaiAPIPath());
- Assertions.assertEquals(HEADERS_VALUE1, testObject.headers().get(HEADERS_KEY1));
- Assertions.assertEquals(PNF_NAME, testObject.pnfName());
- Assertions.assertEquals(Optional.of(JSON_MESSAGE), testObject.jsonBody());
- }
-}
diff --git a/prh-app-server/config/prh_endpoints.json b/prh-app-server/config/prh_endpoints.json
index 2e709e9..1a3ebad 100644
--- a/prh-app-server/config/prh_endpoints.json
+++ b/prh-app-server/config/prh_endpoints.json
@@ -17,7 +17,7 @@
"dmaapProducerConfiguration": {
"dmaapHostName": "localhost",
"dmaapPortNumber": 2223,
- "dmaapTopicName": "temp",
+ "dmaapTopicName": "/events/pnfReady",
"dmaapProtocol": "http",
"dmaapUserName": "admin",
"dmaapUserPassword": "admin",
@@ -31,7 +31,16 @@
"aaiProtocol": "https",
"aaiUserName": "admin",
"aaiUserPassword": "admin",
- "aaiIgnoreSSLCertificateErrors": true
+ "aaiIgnoreSSLCertificateErrors": true,
+ "aaiBasePath": "/aai/v11",
+ "aaiPnfPath": "/network/pnfs/pnf",
+ "aaiHeaders": {
+ "X-FromAppId": "prh",
+ "X-TransactionId": "9999",
+ "Accept": "application/json",
+ "Real-Time": "true",
+ "Authorization": "Basic QUFJOkFBSQ=="
+ }
}
}
}
diff --git a/prh-app-server/pom.xml b/prh-app-server/pom.xml
index f9d53c2..d1345c5 100644
--- a/prh-app-server/pom.xml
+++ b/prh-app-server/pom.xml
@@ -182,6 +182,12 @@
<groupId>org.immutables</groupId>
<artifactId>gson</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.onap.dcaegen2.services.commons</groupId>
+ <artifactId>commons</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+
<!-- LOGGING DEPENDENCIES-->
<dependency>
@@ -268,6 +274,7 @@
<version>1.0.0-SNAPSHOT</version>
</dependency>
+
</dependencies>
<dependencyManagement>
<dependencies>
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AppConfig.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AppConfig.java
index fba8985..19c8d49 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AppConfig.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AppConfig.java
@@ -106,6 +106,12 @@
@Value("${aai.aaiHttpClientConfiguration.aaiIgnoreSSLCertificateErrors:}")
public Boolean aaiIgnoreSSLCertificateErrors;
+ @Value("${aai.aaiHttpClientConfiguration.aaiBasePath:}")
+ public String aaiBasePath;
+
+ @Value("${aai.aaiHttpClientConfiguration.aaiPnfPath:}")
+ public String aaiPnfPath;
+
@Override
public DmaapConsumerConfiguration getDmaapConsumerConfiguration() {
return new ImmutableDmaapConsumerConfiguration.Builder()
@@ -134,18 +140,19 @@
@Override
public AAIClientConfiguration getAAIClientConfiguration() {
return new ImmutableAAIClientConfiguration.Builder()
- .aaiHost(Optional.ofNullable(aaiHost).orElse(aaiClientConfiguration.aaiHost()))
- .aaiHostPortNumber(
- Optional.ofNullable(aaiHostPortNumber).orElse(aaiClientConfiguration.aaiHostPortNumber()))
- .aaiIgnoreSSLCertificateErrors(
- Optional.ofNullable(aaiIgnoreSSLCertificateErrors)
- .orElse(aaiClientConfiguration.aaiIgnoreSSLCertificateErrors()))
- .aaiProtocol(Optional.ofNullable(aaiProtocol).orElse(aaiClientConfiguration.aaiProtocol()))
- .aaiUserName(
- Optional.ofNullable(aaiUserName).orElse(aaiClientConfiguration.aaiUserName()))
- .aaiUserPassword(Optional.ofNullable(
- aaiUserPassword).orElse(aaiClientConfiguration.aaiUserPassword()))
- .build();
+ .aaiHost(Optional.ofNullable(aaiHost).orElse(aaiClientConfiguration.aaiHost()))
+ .aaiHostPortNumber(
+ Optional.ofNullable(aaiHostPortNumber).orElse(aaiClientConfiguration.aaiHostPortNumber()))
+ .aaiIgnoreSSLCertificateErrors(
+ Optional.ofNullable(aaiIgnoreSSLCertificateErrors)
+ .orElse(aaiClientConfiguration.aaiIgnoreSSLCertificateErrors()))
+ .aaiProtocol(Optional.ofNullable(aaiProtocol).orElse(aaiClientConfiguration.aaiProtocol()))
+ .aaiUserName(Optional.ofNullable(aaiUserName).orElse(aaiClientConfiguration.aaiUserName()))
+ .aaiUserPassword(Optional.ofNullable(aaiUserPassword).orElse(aaiClientConfiguration.aaiUserPassword()))
+ .aaiBasePath(Optional.ofNullable(aaiBasePath).orElse(aaiClientConfiguration.aaiBasePath()))
+ .aaiPnfPath(Optional.ofNullable(aaiPnfPath).orElse(aaiClientConfiguration.aaiPnfPath()))
+ .aaiHeaders(aaiClientConfiguration.aaiHeaders())
+ .build();
}
@Override
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java
index 3df25d0..c4cb20d 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java
@@ -32,8 +32,6 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.*;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
import java.util.ServiceLoader;
/**
@@ -47,7 +45,7 @@
private static final String CONFIG = "configs";
private static final String AAI = "aai";
private static final String DMAAP = "dmaap";
- private static final String AAI_CONFIG = "aaiHttpClientConfiguration";
+ private static final String AAI_CONFIG = "aaiClientConfiguration";
private static final String DMAAP_PRODUCER = "dmaapProducerConfiguration";
private static final String DMAAP_CONSUMER = "dmaapConsumerConfiguration";
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java
index 269e7a2..8db4f0b 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java
@@ -23,7 +23,6 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
-import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
@@ -40,21 +39,21 @@
@Api(value = "HeartbeatController", description = "Check liveness of PRH service")
public class HeartbeatController {
- private static final Logger logger = LoggerFactory.getLogger(PrhAppConfig.class);
+ private static final Logger logger = LoggerFactory.getLogger(HeartbeatController.class);
@RequestMapping(value = "heartbeat", method = RequestMethod.GET)
@ApiOperation(value = "Returns liveness of PRH service")
@ApiResponses(value = {
- @ApiResponse(code = 200, message = "PRH sevice is living"),
- @ApiResponse(code = 401, message = "You are not authorized to view the resource"),
- @ApiResponse(code = 403, message = "Accessing the resource you were trying to reach is forbidden"),
- @ApiResponse(code = 404, message = "The resource you were trying to reach is not found")
+ @ApiResponse(code = 200, message = "PRH sevice is living"),
+ @ApiResponse(code = 401, message = "You are not authorized to view the resource"),
+ @ApiResponse(code = 403, message = "Accessing the resource you were trying to reach is forbidden"),
+ @ApiResponse(code = 404, message = "The resource you were trying to reach is not found")
}
)
public Mono<ResponseEntity<String>> heartbeat() {
logger.trace("Receiving heartbeat request");
return Mono.defer(() ->
- Mono.just(new ResponseEntity<>("I'm living", HttpStatus.OK))
+ Mono.just(new ResponseEntity<>("I'm living", HttpStatus.OK))
);
}
-}
+}
\ No newline at end of file
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java
index cd3347f..96b69b7 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java
@@ -21,10 +21,6 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ScheduledFuture;
-import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig;
import org.onap.dcaegen2.services.prh.tasks.ScheduledTasks;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,21 +28,23 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.TaskScheduler;
-import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ScheduledFuture;
+
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/5/18
*/
@RestController
-@Component
@Api(value = "ScheduleController", description = "Schedule Controller")
public class ScheduleController {
- private static final Logger logger = LoggerFactory.getLogger(PrhAppConfig.class);
+ private static final Logger logger = LoggerFactory.getLogger(ScheduleController.class);
private static final int SCHEDULING_DELAY = 20000;
private static volatile List<ScheduledFuture> scheduledFutureList = new ArrayList<>();
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParser.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParser.java
index 0ef7e4f..ae5d922 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParser.java
+++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParser.java
@@ -23,8 +23,8 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
-import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.model.ImmutableConsumerDmaapModel;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
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 95352d4..136f5b7 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
@@ -20,21 +20,21 @@
package org.onap.dcaegen2.services.prh.tasks;
-import java.util.Optional;
import org.onap.dcaegen2.services.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.service.AAIProducerClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.Optional;
+
@Component
public class AAIConsumerTaskImpl extends AAIConsumerTask<AAIClientConfiguration> {
- private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
+ private static final Logger logger = LoggerFactory.getLogger(AAIConsumerTaskImpl.class);
private final Config prhAppConfig;
private Optional<String> response;
@@ -46,15 +46,11 @@
@Override
protected void consume() throws AAINotFoundException {
- //TODO: @Piotr Wielebski
- AAIProducerClient producerClient = new AAIProducerClient(prhAppConfig.getAAIClientConfiguration());
-
}
@Override
public Object execute(Object object) throws AAINotFoundException {
consume();
- //TODO: @Piotr Wielebski
return null;
}
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 4a7d928..505d2a9 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
@@ -19,25 +19,19 @@
*/
package org.onap.dcaegen2.services.prh.tasks;
-import com.google.gson.Gson;
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
+import org.onap.dcaegen2.services.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.exceptions.PrhTaskException;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
-import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel;
import org.onap.dcaegen2.services.service.AAIProducerClient;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
+import org.onap.dcaegen2.services.service.HttpUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Optional;
+import java.io.IOException;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
@@ -45,11 +39,10 @@
@Component
public class AAIProducerTaskImpl extends AAIProducerTask<AAIClientConfiguration, ConsumerDmaapModel, Object> {
- private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
+ private static final Logger logger = LoggerFactory.getLogger(AAIProducerTaskImpl.class);
private final Config prhAppConfig;
- private AAIProducerClient producerClient;
- private Optional<String> response;
+
@Autowired
public AAIProducerTaskImpl(AppConfig prhAppConfig) {
@@ -59,19 +52,24 @@
@Override
protected Object publish(ConsumerDmaapModel consumerDmaapModel) throws AAINotFoundException {
logger.trace("Method %M called with arg {}", consumerDmaapModel);
- producerClient = new AAIProducerClient(prhAppConfig.getAAIClientConfiguration());
- //TODO: @Piotr Wielebski
- response = producerClient.getHttpResponse(null);
- return response.get();
+ AAIProducerClient producerClient = new AAIProducerClient(resolveConfiguration());
+ try {
+ return producerClient.getHttpResponse(consumerDmaapModel)
+ .filter(HttpUtils::isSuccessfulResponseCode);
+ } catch (IOException e) {
+ logger.warn("Patch request not successful", e);
+ throw new AAINotFoundException("Patch request not successful");
+ }
}
@Override
- public Object execute(Object object) throws PrhTaskException {
+ public Object execute(Object object) throws AAINotFoundException {
logger.trace("Method %M called with arg {}", object);
+
if (object instanceof ConsumerDmaapModel) {
- //TODO: @Piotr Wielebski
return publish((ConsumerDmaapModel) object);
}
+
throw new AAINotFoundException("Incorrect object type");
}
@@ -84,5 +82,4 @@
protected AAIClientConfiguration resolveConfiguration() {
return prhAppConfig.getAAIClientConfiguration();
}
-
}
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 a2129fc..69911f3 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,12 +19,13 @@
*/
package org.onap.dcaegen2.services.prh.tasks;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.config.DmaapConsumerConfiguration;
import org.onap.dcaegen2.services.prh.configuration.AppConfig;
import org.onap.dcaegen2.services.prh.configuration.Config;
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.service.DmaapConsumerJsonParser;
import org.onap.dcaegen2.services.service.consumer.ExtendedDmaapConsumerHttpClientImpl;
import org.slf4j.Logger;
@@ -32,9 +33,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
*/
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 60ab64f..4fef035 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
@@ -21,14 +21,12 @@
import com.google.gson.Gson;
import org.onap.dcaegen2.services.config.DmaapPublisherConfiguration;
+import org.onap.dcaegen2.services.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.DmaapNotFoundException;
import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
-import org.onap.dcaegen2.services.service.producer.DmaapPublisherRequestDetails;
import org.onap.dcaegen2.services.service.producer.ExtendedDmaapProducerHttpClientImpl;
-import org.onap.dcaegen2.services.service.producer.ImmutableDmaapPublisherRequestDetails;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,9 +38,9 @@
*/
@Component
public class DmaapPublisherTaskImpl extends
- DmaapPublisherTask<DmaapPublisherConfiguration, ConsumerDmaapModel> {
+ DmaapPublisherTask<DmaapPublisherConfiguration, ConsumerDmaapModel> {
- private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
+ private static final Logger logger = LoggerFactory.getLogger(DmaapPublisherTaskImpl.class);
private static final Gson gson = new Gson();
private final Config prhAppConfig;
@@ -55,13 +53,11 @@
protected String publish(ConsumerDmaapModel consumerDmaapModel) throws DmaapNotFoundException {
logger.trace("Method %M called with arg {}", consumerDmaapModel);
ExtendedDmaapProducerHttpClientImpl dmaapProducerHttpClient = new ExtendedDmaapProducerHttpClientImpl(
- resolveConfiguration());
- DmaapPublisherRequestDetails dmaapPublisherRequestDetails = new ImmutableDmaapPublisherRequestDetails.Builder()
- .dmaapAPIPath("events").jsonBody(gson.toJson(consumerDmaapModel)).build();
- return dmaapProducerHttpClient.getHttpProducerResponse(dmaapPublisherRequestDetails)
- .filter(x -> !x.isEmpty() && x.equals(String.valueOf(HttpStatus.OK.value())))
- .orElseThrow(() -> new DmaapNotFoundException("Incorrect response from Dmmap"));
+ resolveConfiguration());
+ return dmaapProducerHttpClient.getHttpProducerResponse(consumerDmaapModel)
+ .filter(x -> !x.isEmpty() && x.equals(String.valueOf(HttpStatus.OK.value())))
+ .orElseThrow(() -> new DmaapNotFoundException("Incorrect response from Dmaap"));
}
@Override
@@ -82,4 +78,4 @@
protected DmaapPublisherConfiguration resolveConfiguration() {
return prhAppConfig.getDmaapPublisherConfiguration();
}
-}
+}
\ 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 84c75e0..07c0a58 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
@@ -25,9 +25,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
*/
@@ -39,15 +36,13 @@
private final Task dmaapConsumerTask;
private final Task dmaapProducerTask;
private final Task aaiProducerTask;
- private final Task aaiConsumerTask;
@Autowired
public ScheduledTasks(DmaapConsumerTask dmaapConsumerTask, DmaapPublisherTask dmaapPublisherTask,
- AAIProducerTask aaiPublisherTask, AAIConsumerTask aaiConsumerTask) {
+ AAIProducerTask aaiPublisherTask) {
this.dmaapConsumerTask = dmaapConsumerTask;
this.dmaapProducerTask = dmaapPublisherTask;
this.aaiProducerTask = aaiPublisherTask;
- this.aaiConsumerTask = aaiConsumerTask;
}
public void scheduleMainPrhEventTask() {
@@ -64,8 +59,6 @@
private void setTaskExecutionFlow() {
dmaapConsumerTask.setNext(aaiProducerTask);
- aaiProducerTask.setNext(aaiConsumerTask);
- aaiConsumerTask.setNext(dmaapProducerTask);
+ aaiProducerTask.setNext(dmaapProducerTask);
}
-
}
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 a9b10d4..9720214 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
@@ -20,7 +20,6 @@
package org.onap.dcaegen2.services.prh.tasks;
import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
-import org.springframework.http.ResponseEntity;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java
index 8094c99..38a4436 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java
@@ -28,10 +28,10 @@
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.prh.IT.junit5.mockito.MockitoExtension;
import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig;
import org.onap.dcaegen2.services.prh.tasks.ScheduledTasks;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -75,8 +75,8 @@
}
@Bean
- public HttpRequestDetails getRequestDetails() {
- return mock(HttpRequestDetails.class);
+ public ConsumerDmaapModel getRequestDetails() {
+ return mock(ConsumerDmaapModel.class);
}
}
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfigTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfigTest.java
index e7d5541..2efffd8 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfigTest.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfigTest.java
@@ -44,8 +44,8 @@
class PrhAppConfigTest {
private static final String PRH_ENDPOINTS = "prh_endpoints.json";
- private static final String jsonString = "{\"configs\":{\"aai\":{\"aaiHttpClientConfiguration\":{\"aaiHost\":\"\",\"aaiHostPortNumber\":8080,\"aaiIgnoreSSLCertificateErrors\":true,\"aaiProtocol\":\"https\",\"aaiUserName\":\"admin\",\"aaiUserPassword\":\"admin\"}},\"dmaap\":{\"dmaapConsumerConfiguration\":{\"consumerGroup\":\"other\",\"consumerId\":\"1\",\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2222,\"dmaapProtocol\":\"http\",\"dmaapTopicName\":\"temp\",\"dmaapUserName\":\"admin\",\"dmaapUserPassword\":\"admin\",\"messageLimit\":1000,\"timeoutMS\":1000},\"dmaapProducerConfiguration\":{\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2223,\"dmaapProtocol\":\"http\",\"dmaapTopicName\":\"temp\",\"dmaapUserName\":\"admin\",\"dmaapUserPassword\":\"admin\"}}}}";
- private static final String incorrectJsonString = "{\"configs\":{\"aai\":{\"aaiHttpClientConfiguration\":{\"aaiHost\":\"\",\"aaiHostPortNumber\":8080,\"aaiIgnoreSSLCertificateErrors\":true,\"aaiProtocol\":\"https\",\"aaiUserName\":\"admin\",\"aaiUserPassword\":\"admin\"}},\"dmaap\":{\"dmaapConsumerConfiguration\":{\"consumerGroup\":\"other\",\"consumerId\":\"1\",\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2222,\"dmaapProtocol\":\"http\",\"dmaapTopicName\":\"temp\",\"dmaapUserName\":\"admin\",\"dmaapUserPassword\":\"admin\",\"messageLimit\":1000,\"timeoutMS\":1000},\"dmaapProducerConfiguration\":{\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2223,\"dmaapProtocol\":\"http\",\"dmaaptopicName\":\"temp\",\"dmaapuserName\":\"admin\",\"dmaapuserPassword\":\"admin\"}}}}";
+ private static final String jsonString = "{\"configs\":{\"aai\":{\"aaiClientConfiguration\":{\"aaiHost\":\"localhost\",\"aaiHostPortNumber\":8080,\"aaiIgnoreSSLCertificateErrors\":true,\"aaiProtocol\":\"https\",\"aaiUserName\":\"admin\",\"aaiUserPassword\":\"admin\",\"aaiBasePath\":\"/aai/v11\",\"aaiPnfPath\":\"/network/pnfs/pnf\",\"aaiHeaders\":{\"X-FromAppId\":\"prh\",\"X-TransactionId\":\"9999\",\"Accept\":\"application/json\",\"Real-Time\":\"true\",\"Authorization\":\"Basic QUFJOkFBSQ==\"}}},\"dmaap\":{\"dmaapConsumerConfiguration\":{\"consumerGroup\":\"other\",\"consumerId\":\"1\",\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2222,\"dmaapProtocol\":\"http\",\"dmaapTopicName\":\"temp\",\"dmaapUserName\":\"admin\",\"dmaapUserPassword\":\"admin\",\"messageLimit\":1000,\"timeoutMS\":1000},\"dmaapProducerConfiguration\":{\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2223,\"dmaapProtocol\":\"http\",\"dmaapTopicName\":\"temp\",\"dmaapUserName\":\"admin\",\"dmaapUserPassword\":\"admin\"}}}}";
+ private static final String incorrectJsonString = "{\"configs\":{\"aai\":{\"aaiClientConfiguration\":{\"aaiHost\":\"localhost\",\"aaiHostPortNumber\":8080,\"aaiIgnoreSSLCertificateErrors\":true,\"aaiProtocol\":\"https\",\"aaiUserName\":\"admin\",\"aaiUserPassword\":\"admin\",\"aaiBasePath\":\"/aai/v11\",\"aaiPnfPath\":\"/network/pnfs/pnf\",\"aaiHeaders\":{\"X-FromAppId\":\"prh\",\"X-TransactionId\":\"9999\",\"Accept\":\"application/json\",\"Real-Time\":\"true\",\"Authorization\":\"Basic QUFJOkFBSQ==\"}}},\"dmaap\":{\"dmaapConsumerConfiguration\":{\"consumerGroup\":\"other\",\"consumerId\":\"1\",\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2222,\"dmaapProtocol\":\"http\",\"dmaapTopicName\":\"temp\",\"dmaapUserName\":\"admin\",\"dmaapUserPassword\":\"admin\",\"messageLimit\":1000,\"timeoutMS\":1000},\"dmaapProducerConfiguration\":{\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2223,\"dmaapProtocol\":\"http\",\"dmaaptopicName\":\"temp\",\"dmaapuserName\":\"admin\",\"dmaapuserPassword\":\"admin\"}}}}";
private static PrhAppConfig prhAppConfig;
private static AppConfig appConfig;
@@ -107,7 +107,7 @@
}
@Test
- public void whenFileIsNotExist_ThrowFileNotFoundExcepton() {
+ public void whenFileIsNotExist_ThrowFileNotFoundException() {
//
// Given
//
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java
index a097037..aad3c2f 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/service/DmaapConsumerJsonParserTest.java
@@ -22,8 +22,8 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.onap.dcaegen2.services.prh.exceptions.DmaapNotFoundException;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
-import org.onap.dcaegen2.services.prh.model.ImmutableConsumerDmaapModel;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.model.ImmutableConsumerDmaapModel;
/**
* @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskSpy.java
index 929e5a4..288a896 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskSpy.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIConsumerTaskSpy.java
@@ -22,7 +22,6 @@
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
import org.onap.dcaegen2.services.prh.configuration.AppConfig;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIPublisherTaskSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIPublisherTaskSpy.java
index 9564bf9..77323ab 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIPublisherTaskSpy.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AAIPublisherTaskSpy.java
@@ -21,7 +21,6 @@
import org.onap.dcaegen2.services.config.AAIClientConfiguration;
import org.onap.dcaegen2.services.prh.configuration.AppConfig;
-import org.onap.dcaegen2.services.utils.HttpRequestDetails;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java
index 73f21a2..27083c0 100644
--- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java
+++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java
@@ -42,13 +42,10 @@
@Autowired
private AAIProducerTask aaiPublisherTaskImplSpy;
- @Autowired
- private AAIConsumerTask aaiConsumerTaskImplSpy;
@Bean
@Primary
public ScheduledTasks registerSimpleScheduledTask() {
- return spy(new ScheduledTasks(dmaapConsumerTaskImplSpy, dmaapPublisherTaskImplSpy, aaiPublisherTaskImplSpy,
- aaiConsumerTaskImplSpy));
+ return spy(new ScheduledTasks(dmaapConsumerTaskImplSpy, dmaapPublisherTaskImplSpy, aaiPublisherTaskImplSpy));
}
}
diff --git a/prh-app-server/src/test/resources/prh_endpoints.json b/prh-app-server/src/test/resources/prh_endpoints.json
index b401b90..a67ee02 100644
--- a/prh-app-server/src/test/resources/prh_endpoints.json
+++ b/prh-app-server/src/test/resources/prh_endpoints.json
@@ -7,7 +7,15 @@
"aaiIgnoreSSLCertificateErrors": true,
"aaiProtocol": "https",
"aaiUserName": "admin",
- "aaiUserPassword": "admin"
+ "aaiUserPassword": "admin",
+ "aaiBasePath": "/aai/v11",
+ "aaiPnfPath": "/network/pnfs/pnf",
+ "aaiHeaders": {
+ "X-FromAppId": "prh",
+ "X-TransactionId": "9999",
+ "Accept": "application/json",
+ "Real-Time": "true"
+ }
}
},
"dmaap": {
@@ -18,7 +26,7 @@
"dmaapHostName": "localhost",
"dmaapPortNumber": 2222,
"dmaapProtocol": "http",
- "dmaapTopicName": "temp",
+ "dmaapTopicName": "/events/pnfReady",
"dmaapUserName": "admin",
"dmaapUserPassword": "admin",
"messageLimit": 1000,
@@ -29,7 +37,7 @@
"dmaapHostName": "localhost",
"dmaapPortNumber": 2223,
"dmaapProtocol": "http",
- "dmaapTopicName": "temp",
+ "dmaapTopicName": "/events/pnfReady",
"dmaapUserName": "admin",
"dmaapUserPassword": "admin"
}
diff --git a/prh-commons/pom.xml b/prh-commons/pom.xml
new file mode 100644
index 0000000..08ce5fd
--- /dev/null
+++ b/prh-commons/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>prh</artifactId>
+ <groupId>org.onap.dcaegen2.services</groupId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.onap.dcaegen2.services.commons</groupId>
+ <artifactId>commons</artifactId>
+
+ <version>1.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.immutables</groupId>
+ <artifactId>value</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.immutables</groupId>
+ <artifactId>gson</artifactId>
+ </dependency>
+
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/DmaapPublisherRequestDetails.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/model/CommonFunctions.java
similarity index 72%
rename from prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/DmaapPublisherRequestDetails.java
rename to prh-commons/src/main/java/org/onap/dcaegen2/services/model/CommonFunctions.java
index a0877fe..d10ab32 100644
--- a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/DmaapPublisherRequestDetails.java
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/model/CommonFunctions.java
@@ -1,4 +1,4 @@
-/*-
+/*
* ============LICENSE_START=======================================================
* PNF-REGISTRATION-HANDLER
* ================================================================================
@@ -18,19 +18,19 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.dcaegen2.services.service.producer;
+package org.onap.dcaegen2.services.model;
-import org.immutables.value.Value;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
-import java.util.Optional;
+public class CommonFunctions {
-@Value.Immutable(prehash = true)
-@Value.Style(builder = "new")
-public abstract class DmaapPublisherRequestDetails {
+ private static Gson gson = new GsonBuilder().create();
- @Value.Parameter
- public abstract String dmaapAPIPath();
- @Value.Parameter
- public abstract String jsonBody();
+ private CommonFunctions() {}
+
+ public static String createJsonBody(ConsumerDmaapModel consumerDmaapModel) {
+ return gson.toJson(consumerDmaapModel);
+ }
}
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/model/ConsumerDmaapModel.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/model/ConsumerDmaapModel.java
similarity index 96%
rename from prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/model/ConsumerDmaapModel.java
rename to prh-commons/src/main/java/org/onap/dcaegen2/services/model/ConsumerDmaapModel.java
index c687994..3143362 100644
--- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/model/ConsumerDmaapModel.java
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/model/ConsumerDmaapModel.java
@@ -17,7 +17,7 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-package org.onap.dcaegen2.services.prh.model;
+package org.onap.dcaegen2.services.model;
import com.google.gson.annotations.SerializedName;
import org.immutables.gson.Gson;
@@ -39,5 +39,4 @@
@SerializedName("ipaddress-v6-oam")
String getIpv6();
-
}
diff --git a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/DmaapPublisherRequestDetails.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/model/ConsumerDmaapModelForUnitTest.java
similarity index 65%
copy from prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/DmaapPublisherRequestDetails.java
copy to prh-commons/src/main/java/org/onap/dcaegen2/services/model/ConsumerDmaapModelForUnitTest.java
index a0877fe..df691fc 100644
--- a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/DmaapPublisherRequestDetails.java
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/model/ConsumerDmaapModelForUnitTest.java
@@ -18,19 +18,27 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.dcaegen2.services.service.producer;
+package org.onap.dcaegen2.services.model;
-import org.immutables.value.Value;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
-import java.util.Optional;
+public class ConsumerDmaapModelForUnitTest implements ConsumerDmaapModel {
-@Value.Immutable(prehash = true)
-@Value.Style(builder = "new")
-public abstract class DmaapPublisherRequestDetails {
+ private String pnfName = "NOKnhfsadhff";
+ private String ipv4 = "11.22.33.155";
+ private String ipv6 = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
- @Value.Parameter
- public abstract String dmaapAPIPath();
- @Value.Parameter
- public abstract String jsonBody();
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public String getIpv4() {
+ return ipv4;
+ }
+
+ public String getIpv6() {
+ return ipv6;
+ }
+
}
diff --git a/prh-dmaap-client/pom.xml b/prh-dmaap-client/pom.xml
index ff6a0b3..40d4df9 100644
--- a/prh-dmaap-client/pom.xml
+++ b/prh-dmaap-client/pom.xml
@@ -99,5 +99,10 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.onap.dcaegen2.services.commons</groupId>
+ <artifactId>commons</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImpl.java b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImpl.java
index 98c9a83..def9dd8 100644
--- a/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImpl.java
+++ b/prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImpl.java
@@ -29,6 +29,8 @@
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.onap.dcaegen2.services.config.DmaapPublisherConfiguration;
+import org.onap.dcaegen2.services.model.CommonFunctions;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.service.DmaapHttpClientImpl;
import org.onap.dcaegen2.services.service.HttpUtils;
import org.slf4j.Logger;
@@ -61,17 +63,14 @@
this.dmaapContentType = configuration.dmaapContentType();
}
- public Optional<String> getHttpProducerResponse(DmaapPublisherRequestDetails requestDetails) {
-
+ public Optional<String> getHttpProducerResponse(ConsumerDmaapModel consumerDmaapModel) {
Optional<String> extendedDetails = Optional.empty();
- Optional<HttpRequestBase> request = createRequest(requestDetails);
-
+ Optional<HttpRequestBase> request = createRequest(consumerDmaapModel);
try {
extendedDetails = closeableHttpClient.execute(request.get(), dmaapProducerResponseHandler());
} catch (IOException | NullPointerException e) {
logger.warn("Exception while executing HTTP request: ", e);
}
-
return extendedDetails;
}
@@ -81,51 +80,45 @@
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(DmaapPublisherRequestDetails requestDetails) {
-
+ private Optional<HttpRequestBase> createRequest(ConsumerDmaapModel consumerDmaapModel) {
Optional<HttpRequestBase> request = Optional.empty();
- final URI extendedURI = createDmaapPublisherExtendedURI(requestDetails);
+ final URI extendedURI = createDmaapPublisherExtendedURI();
if ("application/json".equals(dmaapContentType)) {
- request = Optional.ofNullable(createRequest(extendedURI, requestDetails));
+ request = Optional.ofNullable(createRequest(extendedURI, consumerDmaapModel));
request.get().addHeader("Content-type", dmaapContentType);
}
return request;
}
- private URI createDmaapPublisherExtendedURI(DmaapPublisherRequestDetails requestDetails) {
+ private URI createDmaapPublisherExtendedURI() {
URI extendedURI = null;
-
final URIBuilder uriBuilder = new URIBuilder()
.setScheme(dmaapProtocol)
.setHost(dmaapHostName)
.setPort(dmaapPortNumber)
- .setPath(requestDetails.dmaapAPIPath() + "/" + dmaapTopicName);
-
+ .setPath(dmaapTopicName);
try {
extendedURI = uriBuilder.build();
logger.trace("Building extended URI: {}", extendedURI);
} catch (URISyntaxException e) {
logger.warn("Exception while building extended URI: ", e);
}
-
return extendedURI;
}
- private HttpRequestBase createRequest(URI extendedURI, DmaapPublisherRequestDetails requestDetails) {
+ private HttpRequestBase createRequest(URI extendedURI, ConsumerDmaapModel consumerDmaapModel) {
if (extendedURI != null) {
- return createHttpPost(extendedURI, Optional.ofNullable(requestDetails.jsonBody()));
+ return createHttpPost(extendedURI, Optional.ofNullable(CommonFunctions.createJsonBody(consumerDmaapModel)));
} else {
return null;
}
diff --git a/prh-dmaap-client/src/test/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImplTest.java b/prh-dmaap-client/src/test/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImplTest.java
index 3f64fd5..6ca815a 100644
--- a/prh-dmaap-client/src/test/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImplTest.java
+++ b/prh-dmaap-client/src/test/java/org/onap/dcaegen2/services/service/producer/ExtendedDmaapProducerHttpClientImplTest.java
@@ -27,6 +27,8 @@
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.onap.dcaegen2.services.config.DmaapPublisherConfiguration;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.model.ConsumerDmaapModelForUnitTest;
import java.io.IOException;
import java.lang.reflect.Field;
@@ -43,10 +45,9 @@
private static DmaapPublisherConfiguration configurationMock = mock(DmaapPublisherConfiguration.class);
private static CloseableHttpClient closeableHttpClientMock = mock(CloseableHttpClient.class);
- private static DmaapPublisherRequestDetails requestDetailsMock = mock(DmaapPublisherRequestDetails.class);
+ private static ConsumerDmaapModel consumerDmaapModel = new ConsumerDmaapModelForUnitTest();
private static Optional<String> expectedResult = Optional.empty();
- private static final String JSON_MESSAGE = "{ \"ipaddress-v4-oam\": \"11.22.33.44\" }";
private static final String RESPONSE_SUCCESS = "200";
private static final String RESPONSE_FAILURE = "404";
@@ -61,9 +62,6 @@
when(configurationMock.dmaapContentType()).thenReturn("application/json");
when(configurationMock.dmaapTopicName()).thenReturn("pnfReady");
- when(requestDetailsMock.dmaapAPIPath()).thenReturn("events");
- when(requestDetailsMock.jsonBody()).thenReturn(JSON_MESSAGE);
-
objectUnderTest = new ExtendedDmaapProducerHttpClientImpl(configurationMock);
setField();
@@ -77,7 +75,7 @@
when(closeableHttpClientMock.execute(any(HttpPost.class), any(ResponseHandler.class)))
.thenReturn(expectedResult);
- Optional<String> actualResult = objectUnderTest.getHttpProducerResponse(requestDetailsMock);
+ Optional<String> actualResult = objectUnderTest.getHttpProducerResponse(consumerDmaapModel);
Assertions.assertEquals(expectedResult.get(), actualResult.get());
}
@@ -87,7 +85,7 @@
expectedResult = Optional.of(RESPONSE_FAILURE);
when(closeableHttpClientMock.execute(any(HttpPost.class), any(ResponseHandler.class)))
.thenReturn(Optional.empty());
- Optional<String> actualResult = objectUnderTest.getHttpProducerResponse(requestDetailsMock);
+ Optional<String> actualResult = objectUnderTest.getHttpProducerResponse(consumerDmaapModel);
Assertions.assertEquals(Optional.empty(), actualResult);
}