# Package Files #
*.jar
*.war
+*.nar
*.ear
+*.zip
+*.tar.gz
+*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.idea
*.iml
+# Maven
target
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+.mvn/wrapper/maven-wrapper.jar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
\ No newline at end of file
+++ /dev/null
-image: archive.docker-registry.eecloud.nsn-net.net/imp/matryoshka:18.02.0
-
-stages:
- - build
- - publish
-
-build:
- stage: build
- script:
- - mvn -e clean install -T2 docker:build
- artifacts:
- expire_in: 5 days
- paths:
- - prh-commons/target/site/jacoco
- - prh-aai-client/target/site/jacoco
- - prh-dmaap-client/target/site/jacoco
- - prh-app-server/target/site/jacoco
-publish:
- stage: publish
- only:
- - master
- script:
- - docker login $DOCKER_REPO_ADDR -u $DOCKER_REPO_USER -p $DOCKER_REPO_PASS
- - mvn -e -DskipTests -Ddocker.repo.url="$DOCKER_REPO_ADDR" -Dnexus.staging="true" deploy
package org.onap.dcaegen2.services.prh.exceptions;
public class AaiRequestException extends Exception {
- public AaiRequestException() {
- super();
- }
public AaiRequestException(String message) {
super(message);
private Map<String, String> aaiHeaders;
/**
- * Creating AaiReactiveWebClient
+ * Creating AaiReactiveWebClient.
* @param configuration - configuration object
* @return AaiReactiveWebClient
*/
/**
- * Constructor
+ * Constructor of AaiProducerReactiveHttpClient.
*
* @param configuration - AAI producer configuration object
*/
}
/**
- * Function for calling AAI Http producer - patch request to AAI database
+ * Function for calling AAI Http producer - patch request to AAI database.
*
* @param consumerDmaapModelMono - object which will be sent to AAI database
* @return status code of operation
private Mono<Integer> patchAaiRequest(ConsumerDmaapModel dmaapModel) {
try {
return webClient.patch()
- .uri(getUri(dmaapModel.getPnfName()))
- .body(BodyInserters.fromObject(dmaapModel))
- .retrieve()
- .onStatus(HttpStatus::is4xxClientError, clientResponse -> Mono.error(new AaiRequestException("HTTP 400")))
- .onStatus(HttpStatus::is5xxServerError, clientResponse -> Mono.error(new AaiRequestException("HTTP 500")))
- .bodyToMono(Integer.class);
+ .uri(getUri(dmaapModel.getPnfName()))
+ .body(BodyInserters.fromObject(dmaapModel))
+ .retrieve()
+ .onStatus(
+ HttpStatus::is4xxClientError,
+ clientResponse -> Mono.error(new AaiRequestException("HTTP 400"))
+ )
+ .onStatus(HttpStatus::is5xxServerError,
+ clientResponse -> Mono.error(new AaiRequestException("HTTP 500")))
+ .bodyToMono(Integer.class);
} catch (URISyntaxException e) {
return Mono.error(e);
}
URI getUri(String pnfName) throws URISyntaxException {
return new URIBuilder()
- .setScheme(aaiProtocol)
- .setHost(aaiHost)
- .setPort(aaiHostPortNumber)
- .setPath(aaiBasePath + "/" + pnfName)
- .build();
+ .setScheme(aaiProtocol)
+ .setHost(aaiHost)
+ .setPort(aaiHostPortNumber)
+ .setPath(aaiBasePath + "/" + pnfName)
+ .build();
}
}
import reactor.test.StepVerifier;
-
class AaiProducerReactiveHttpClientTest {
private static AaiProducerReactiveHttpClient aaiProducerReactiveHttpClient;
aaiProducerReactiveHttpClient = new AaiProducerReactiveHttpClient(aaiConfigurationMock);
webClient = spy(WebClient.builder()
- .defaultHeaders(httpHeaders -> httpHeaders.setAll(aaiHeaders))
- .filter(basicAuthentication(aaiConfigurationMock.aaiUserName(), aaiConfigurationMock.aaiUserPassword()))
- .build());
+ .defaultHeaders(httpHeaders -> httpHeaders.setAll(aaiHeaders))
+ .filter(basicAuthentication(aaiConfigurationMock.aaiUserName(), aaiConfigurationMock.aaiUserPassword()))
+ .build());
requestBodyUriSpec = mock(WebClient.RequestBodyUriSpec.class);
responseSpec = mock(ResponseSpec.class);
//then
StepVerifier.create(response).expectSubscription()
- .expectNextMatches(results -> {
- Assertions.assertEquals(results, expectedResult.block());
- return true;
- }).verifyComplete();
+ .expectNextMatches(results -> {
+ Assertions.assertEquals(results, expectedResult.block());
+ return true;
+ }).verifyComplete();
}
@Test
when(aaiProducerReactiveHttpClient.getUri("pnfName")).thenThrow(URISyntaxException.class);
//then
- StepVerifier.create(aaiProducerReactiveHttpClient.getAaiProducerResponse(Mono.just(dmaapModel))).expectSubscription()
- .expectError(Exception.class).verify();
+ StepVerifier.create(
+ aaiProducerReactiveHttpClient.getAaiProducerResponse(
+ Mono.just(dmaapModel)
+ )).expectSubscription().expectError(Exception.class).verify();
}
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
import java.util.ServiceLoader;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
}
JsonElement getJsonElement(JsonParser parser, InputStream inputStream) {
- return parser.parse(new InputStreamReader(inputStream));
+ return parser.parse(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
}
private <T> T deserializeType(@NotNull GsonBuilder gsonBuilder, @NotNull JsonObject jsonObject,
private String printMessage(String pnfVendorName, String pnfSerialNumber, String pnfOamIpv4Address,
String pnfOamIpv6Address) {
- return String.format("\n{"
+ return String.format("%n{"
+ "\"pnfVendorName\" : \"%s\","
+ "\"pnfSerialNumber\": \"%s\","
+ "\"pnfOamIpv4Address\": \"%s\","
+ "\"pnfOamIpv6Address\": \"%s\""
- + "\n}", pnfVendorName, pnfSerialNumber, pnfOamIpv4Address, pnfOamIpv6Address);
+ + "%n}", pnfVendorName, pnfSerialNumber, pnfOamIpv4Address, pnfOamIpv6Address);
}
}
package org.onap.dcaegen2.services.prh.tasks;
-import java.util.Optional;
import java.util.concurrent.Callable;
import org.onap.dcaegen2.services.prh.exceptions.DmaapEmptyResponseException;
import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
+++ /dev/null
-/*
- * ============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.prh.tasks;
-
-import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException;
-
-/**
- * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
- */
-
-
-public abstract class Task<R, S, C> {
-
- Task taskProcess;
-
- protected abstract void receiveRequest(R body) throws PrhTaskException;
-
- protected abstract S execute(R object) throws PrhTaskException;
-
- protected abstract C resolveConfiguration();
-
- void setNext(Task task) {
- this.taskProcess = task;
- }
-}
+ "\"localhost\",\"aaiPort\":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\",\"Content-Type\":\"application/merge-patch+json\",\"Authorization\":\"Basic QUFJOkFBSQ==\"}}},"
+ + "\"Accept\":\"application/json\",\"Real-Time\":\"true\",\"Content-Type\":\"application/merge-patch+json\","
+ + "\"Authorization\":\"Basic QUFJOkFBSQ==\"}}},"
+ "\"dmaap\":{\"dmaapConsumerConfiguration\":{\"consumerGroup\":\"other\",\"consumerId\":\"1\","
+ "\"dmaapContentType\":\"application/json\",\"dmaapHostName\":\"localhost\",\"dmaapPortNumber\":2222,"
+ "\"dmaapProtocol\":\"http\",\"dmaapTopicName\":\"temp\",\"dmaapUserName\":\"admin\",\"dmaapUserPassword\""
+ "\"localhost\",\"aaiPort\":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\",\"Content-Type\":\"application/merge-patch+json\",\"Authorization\":\"Basic QUFJOkFBSQ==\"}}},\"dmaap\""
+ + "\"application/json\",\"Real-Time\":\"true\",\"Content-Type\":\"application/merge-patch+json\","
+ + "\"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\""