fix PRH dmaap content type configuration after breaking changes introduced to SDK 81/90581/3
authorgrabinsk <maciej.grabinski@nokia.com>
Thu, 27 Jun 2019 10:25:59 +0000 (12:25 +0200)
committergrabinsk <maciej.grabinski@nokia.com>
Fri, 28 Jun 2019 13:15:33 +0000 (15:15 +0200)
and mix of minor code cleanups

Change-Id: I568f49b8b6635f23b2089a4355eb78451102c2b1
Issue-ID: DCAEGEN2-1647
Signed-off-by: grabinsk <maciej.grabinski@nokia.com>
12 files changed:
prh-app-server/src/main/java/org/onap/dcaegen2/services/bootstrap/CbsBootstrapConfiguration.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/CbsContentParser.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/exceptions/EnvironmentLoaderException.java [deleted file]
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AaiProducerTask.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/AaiProducerTaskImpl.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasks.java
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/TestAppConfiguration.java
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/configuration/ConsulConfigurationParserTest.java
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapPublisherTaskImplTest.java
prh-app-server/src/test/resources/configurationFromCbs.json

index 0297a67..df31855 100644 (file)
@@ -28,7 +28,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration
-@EnableConfigurationProperties
+@EnableConfigurationProperties(CbsProperties.class)
 public class CbsBootstrapConfiguration {
 
     @Bean
index 84d9fcd..1d2a65d 100644 (file)
@@ -23,14 +23,12 @@ package org.onap.dcaegen2.services.prh;
 import java.util.Map;
 import java.util.UUID;
 
-import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.providers.CloudConfigurationClient;
 import org.slf4j.MDC;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.TaskScheduler;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler;
@@ -41,7 +39,6 @@ import static org.onap.dcaegen2.services.sdk.rest.services.model.logging.MdcVari
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
  */
 @SpringBootApplication(exclude = {JacksonAutoConfiguration.class})
-@Configuration
 @EnableScheduling
 @EnableConfigurationProperties
 public class MainApp {
@@ -61,10 +58,4 @@ public class MainApp {
         return new ConcurrentTaskScheduler();
     }
 
-
-    @Bean
-    CloudConfigurationClient getCloudConfigurationClient(){
-        return new CloudConfigurationClient();
-    }
-
 }
index a57a539..85b4c03 100644 (file)
@@ -69,21 +69,18 @@ class CbsContentParser {
     }
 
     MessageRouterPublishRequest getMessageRouterPublishRequest() {
-        RawDataStream<JsonObject> sink = DataStreams.namedSinks(jsonObject).find(streamWithName(PNF_READY)).get();
-        MessageRouterSink parsedSink = StreamFromGsonParsers.messageRouterSinkParser().unsafeParse(sink);
-
-        return ImmutableMessageRouterPublishRequest.builder()
-                .contentType(jsonObject.get("dmaap.dmaapProducerConfiguration.dmaapContentType").getAsString())
-                .sinkDefinition(parsedSink)
-                .build();
+        return getMessageRouterPublishRequest(PNF_READY);
     }
 
     MessageRouterPublishRequest getMessageRouterUpdatePublishRequest() {
-        RawDataStream<JsonObject> sink = DataStreams.namedSinks(jsonObject).find(streamWithName(PNF_UPDATE)).get();
+        return getMessageRouterPublishRequest(PNF_UPDATE);
+    }
+
+    private MessageRouterPublishRequest getMessageRouterPublishRequest(String streamName) {
+        RawDataStream<JsonObject> sink = DataStreams.namedSinks(jsonObject).find(streamWithName(streamName)).get();
         MessageRouterSink parsedSink = StreamFromGsonParsers.messageRouterSinkParser().unsafeParse(sink);
 
         return ImmutableMessageRouterPublishRequest.builder()
-                .contentType(jsonObject.get("dmaap.dmaapProducerConfiguration.dmaapContentType").getAsString())
                 .sinkDefinition(parsedSink)
                 .build();
     }
index 31794f6..c21fd40 100644 (file)
@@ -43,8 +43,8 @@ public class PrhAppConfig {
     private Resource gitInfo;
 
 
-    @EventListener
-    public void onApplicationStartedEvent(ApplicationStartedEvent applicationStartedEvent) throws IOException {
+    @EventListener(ApplicationStartedEvent.class)
+    public void onApplicationStarted() throws IOException {
         if(LOGGER.isDebugEnabled()) {
             LOGGER.debug("Git info={}", StreamUtils.copyToString(gitInfo.getInputStream(), Charset.defaultCharset()));
         }
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/exceptions/EnvironmentLoaderException.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/exceptions/EnvironmentLoaderException.java
deleted file mode 100644 (file)
index 5fef80d..0000000
+++ /dev/null
@@ -1,31 +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.prh.exceptions;
-
-/**
- * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 8/10/18
- */
-public class EnvironmentLoaderException extends Exception {
-
-    public EnvironmentLoaderException(String message) {
-        super(message);
-    }
-}
index f49723e..123eb5a 100644 (file)
 
 package org.onap.dcaegen2.services.prh.tasks;
 
-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 reactor.core.publisher.Mono;
 
-import javax.net.ssl.SSLException;
-
-
-/**
- * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
- */
-public abstract class AaiProducerTask {
-
-    abstract Mono<ConsumerDmaapModel> publish(ConsumerDmaapModel message) throws AaiNotFoundException;
-
-    protected abstract Mono<ConsumerDmaapModel> execute(ConsumerDmaapModel consumerDmaapModel)
-            throws PrhTaskException, SSLException;
+@FunctionalInterface
+interface AaiProducerTask {
+    Mono<ConsumerDmaapModel> execute(ConsumerDmaapModel consumerDmaapModel) throws PrhTaskException;
 }
index e0dcf0b..7aaff47 100644 (file)
@@ -39,7 +39,7 @@ import reactor.core.publisher.Mono;
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
  */
 @Component
-public class AaiProducerTaskImpl extends AaiProducerTask {
+public class AaiProducerTaskImpl implements AaiProducerTask {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(AaiProducerTaskImpl.class);
 
@@ -50,8 +50,7 @@ public class AaiProducerTaskImpl extends AaiProducerTask {
         this.aaiHttpPatchClient = aaiHttpPatchClient;
     }
 
-    @Override
-    Mono<ConsumerDmaapModel> publish(ConsumerDmaapModel consumerDmaapModel) {
+    private Mono<ConsumerDmaapModel> publish(ConsumerDmaapModel consumerDmaapModel) {
         Mono<HttpResponse> response = aaiHttpPatchClient.getAaiResponse(consumerDmaapModel);
         return response.flatMap(r -> {
             if (HttpUtils.isSuccessfulResponseCode(r.statusCode())) {
@@ -63,7 +62,7 @@ public class AaiProducerTaskImpl extends AaiProducerTask {
     }
 
     @Override
-    protected Mono<ConsumerDmaapModel> execute(ConsumerDmaapModel consumerDmaapModel) throws PrhTaskException {
+    public Mono<ConsumerDmaapModel> execute(ConsumerDmaapModel consumerDmaapModel) throws PrhTaskException {
         if (consumerDmaapModel == null) {
             throw new DmaapNotFoundException("Invoked null object to DMaaP task");
         }
index 670d214..74c6c42 100644 (file)
@@ -37,7 +37,6 @@ import org.springframework.stereotype.Component;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
-import javax.net.ssl.SSLException;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.CountDownLatch;
@@ -167,7 +166,7 @@ public class ScheduledTasks {
                     : aaiProducerTask
                     .execute(state.dmaapModel)
                         .map(x -> state);
-        } catch (PrhTaskException | SSLException e) {
+        } catch (PrhTaskException e) {
             LOGGER.warn("AAIProducerTask exception has been registered: ", e);
             return Mono.error(e);
         }
index b398c50..c11fe49 100644 (file)
@@ -23,6 +23,7 @@ package org.onap.dcaegen2.services.prh;
 import org.onap.dcaegen2.services.sdk.model.streams.dmaap.ImmutableMessageRouterSink;
 import org.onap.dcaegen2.services.sdk.model.streams.dmaap.ImmutableMessageRouterSource;
 import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.ImmutableAaiClientConfiguration;
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.ContentType;
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterPublishRequest;
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.ImmutableMessageRouterSubscribeRequest;
 
@@ -44,7 +45,7 @@ public class TestAppConfiguration {
 
     public static ImmutableMessageRouterPublishRequest createDefaultMessageRouterPublishRequest() {
         return ImmutableMessageRouterPublishRequest.builder()
-                .contentType("application/json")
+                .contentType(ContentType.APPLICATION_JSON)
                 .sinkDefinition(ImmutableMessageRouterSink.builder()
                         .name("the topic")
                         .topicUrl(String.format("http://%s:%d/events/TOPIC", "www", 1234))
index 79a3873..3a4db1d 100644 (file)
@@ -27,6 +27,7 @@ import org.junit.jupiter.api.Test;
 import org.onap.dcaegen2.services.prh.TestAppConfiguration;
 import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration;
 import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.ImmutableAaiClientConfiguration;
+import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.ContentType;
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest;
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterSubscribeRequest;
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.config.MessageRouterPublisherConfig;
@@ -84,10 +85,20 @@ class ConsulConfigurationParserTest {
         MessageRouterPublishRequest messageRouterPublishRequest = consulConfigurationParser.getMessageRouterPublishRequest();
 
         // then
-        assertThat(messageRouterPublishRequest.contentType()).isEqualTo("application/json");
+        assertThat(messageRouterPublishRequest.contentType()).isEqualTo(ContentType.APPLICATION_JSON);
         assertThat(messageRouterPublishRequest.sinkDefinition().topicUrl()).isEqualTo("http://dmaap-mr:2222/events/unauthenticated.PNF_READY");
     }
 
+    @Test
+    void shouldCreateMessageRouterUpdatePublishConfigurationCorrectly() {
+        // when
+        MessageRouterPublishRequest messageRouterPublishRequest = consulConfigurationParser.getMessageRouterUpdatePublishRequest();
+
+        // then
+        assertThat(messageRouterPublishRequest.contentType()).isEqualTo(ContentType.APPLICATION_JSON);
+        assertThat(messageRouterPublishRequest.sinkDefinition().topicUrl()).isEqualTo("http://dmaap-mr:2222/events/unauthenticated.PNF_UPDATE");
+    }
+
     @Test
     void whenDmaapCertAuthIsDisabled_MessageRouterPublisherConfigSecurityKeysShouldBeIgnored() {
         assumeFalse(correctConfig.getAsJsonObject("config").get("security.enableDmaapCertAuth").getAsBoolean());
index a540506..7e00a44 100644 (file)
@@ -108,7 +108,6 @@ class DmaapPublisherTaskImplTest {
 
         return ImmutableMessageRouterPublishRequest.builder()
                 .sinkDefinition(sinkDefinition)
-                .contentType("application/json")
                 .build();
     }
 }
\ No newline at end of file
index 85dd4de..d76aab4 100644 (file)
@@ -2,17 +2,14 @@
   "config":{
     "dmaap.dmaapConsumerConfiguration.dmaapUserName":"admin",
     "dmaap.dmaapConsumerConfiguration.dmaapUserPassword":"admin",
-    "dmaap.dmaapConsumerConfiguration.dmaapContentType":"application/json",
     "dmaap.dmaapConsumerConfiguration.consumerId":"c12",
     "dmaap.dmaapConsumerConfiguration.consumerGroup":"OpenDCAE-c12",
     "dmaap.dmaapConsumerConfiguration.timeoutMs":-1,
 
     "dmaap.dmaapProducerConfiguration.dmaapUserName":"admin",
     "dmaap.dmaapProducerConfiguration.dmaapUserPassword":"admin",
-    "dmaap.dmaapProducerConfiguration.dmaapContentType":"application/json",
     "dmaap.dmaapUpdateProducerConfiguration.dmaapUserName":"admin",
     "dmaap.dmaapUpdateProducerConfiguration.dmaapUserPassword":"admin",
-    "dmaap.dmaapUpdateProducerConfiguration.dmaapContentType":"application/json",
     "aai.aaiClientConfiguration.pnfUrl": "https://aai.onap.svc.cluster.local:8443/aai/v12/network/pnfs/pnf",
     "aai.aaiClientConfiguration.aaiUserName":"AAI",
     "aai.aaiClientConfiguration.aaiUserPassword":"AAI",