Fix mongodb errors on application startup 44/119944/10 1.3.0-tca-gen2
authorKai <lukai@chinamobile.com>
Mon, 29 Mar 2021 03:48:10 +0000 (11:48 +0800)
committerRemigiusz Janeczek <remigiusz.janeczek@nokia.com>
Wed, 12 May 2021 15:11:08 +0000 (17:11 +0200)
Revert Dockerfile refactor due to permissions issues

Issue-ID: DCAEGEN2-2747
Issue-ID: DCAEGEN2-2590
Signed-off-by: Kai Lu <lukai@chinamobile.com>
Change-Id: I84075575cc75090876416cb13e0ac197a8e0f6e3
Signed-off-by: Remigiusz Janeczek <remigiusz.janeczek@nokia.com>
16 files changed:
dcae-analytics/dcae-analytics-model/pom.xml
dcae-analytics/dcae-analytics-tca-core/pom.xml
dcae-analytics/dcae-analytics-tca-model/pom.xml
dcae-analytics/dcae-analytics-tca-web/Dockerfile
dcae-analytics/dcae-analytics-tca-web/pom.xml
dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/config/TcaMrConfig.java
dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaAlertTransformer.java
dcae-analytics/dcae-analytics-tca-web/src/main/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandler.java
dcae-analytics/dcae-analytics-tca-web/src/test/java/org/onap/dcae/analytics/tca/web/integration/TcaPublisherResponseHandlerTest.java
dcae-analytics/dcae-analytics-web/pom.xml
dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/DmaapMrConfig.java
dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/DmaapPollerConfig.java
dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/DmaapRetryConfig.java
dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/config/MessageStoreConfig.java
dcae-analytics/dcae-analytics-web/src/main/java/org/onap/dcae/analytics/web/dmaap/MrSubscriberPollingAdvice.java
dcae-analytics/pom.xml

index 96f235d..ff8382d 100644 (file)
             <artifactId>dmaap-client</artifactId>
             <version>${sdk.version}</version>
         </dependency>
-        <dependency>
-            <groupId>io.projectreactor.netty</groupId>
-            <artifactId>reactor-netty</artifactId>
-            <version>0.9.12.RELEASE</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler-proxy</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
index 81a97f1..f7393ac 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>dcae-analytics-test</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler-proxy</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
 
     </dependencies>
 
 
     <dependencyManagement>
-       <dependencies>
-               <dependency>
-                       <groupId>org.springframework</groupId>
-                       <artifactId>spring-context</artifactId>
-                       <version>5.0.11.RELEASE</version>
-               </dependency>
-       </dependencies>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-context</artifactId>
+                <version>5.0.11.RELEASE</version>
+            </dependency>
+        </dependencies>
     </dependencyManagement>
 </project>
index 0510883..076125d 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>dcae-analytics-test</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler-proxy</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
 
     </dependencies>
 
index 2791e03..a2c59c4 100644 (file)
@@ -9,23 +9,23 @@ ARG DOCKER_ARTIFACT_DIR
 ARG user=tca-gen2
 ARG group=tca-gen2
 
-WORKDIR ${DOCKER_ARTIFACT_DIR}
-#Copy dependencies and executable jar
-COPY ${PROJECT_BUILD_DIR_NAME}/${FINAL_JAR} .
-
 USER root
 
-#Symlink to overcome Docker limitation to put ARG inside ENTRYPOINT
-RUN mkdir -p /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \
-    addgroup $group && adduser --system --disabled-password --no-create-home --ingroup $group $user && \
-    chmod g+rwx /opt; \
-    chmod u+rw /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \
-    chown -R $user /opt && \
-    chown -R $user /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \
-    ln -s ${FINAL_JAR} tca-gen2.jar && \
-    chown $user ${FINAL_JAR} tca-gen2.jar
+RUN mkdir -p /var/log/ONAP/dcaegen2/analytics/tca-gen2
+#Add a new user and group to allow container to be run as non-root
+RUN addgroup $group && adduser --system --disabled-password --no-create-home --ingroup $group $user && \
+    chmod 775 /opt && \
+    chmod 775 /var/log/ONAP/dcaegen2/analytics/tca-gen2 && \
+    chown -R $user:$group /opt && \
+    chown -R $user:$group /var/log/ONAP/dcaegen2/analytics/tca-gen2
+
+#Copy dependencies and executable jar
+WORKDIR ${DOCKER_ARTIFACT_DIR}
+COPY ${PROJECT_BUILD_DIR_NAME}/${FINAL_JAR} .
+#Overcome Docker limitation to put ARG inside ENTRYPOINT
+RUN ln -s ${FINAL_JAR} tca-gen2.jar
 
 EXPOSE 8100
 
-USER $user
+USER $user:$group
 ENTRYPOINT ["java", "-Dspring.profiles.active=configBindingService,dmaap,mongo", "-jar", "tca-gen2.jar"]
index 86d332f..7c81f4f 100644 (file)
@@ -3,6 +3,7 @@
   ~ ================================================================================
   ~ Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
   ~ Copyright (c) 2021 Samsung Electronics. All rights reserved.
+  ~ Copyright (c) 2021 Nokia Intellectual Property. All rights reserved.
   ~ ================================================================================
   ~ Modifications Copyright (C) 2019 IBM
   ~ ================================================================================
@@ -43,7 +44,7 @@
     <properties>
         <main.basedir>${project.parent.basedir}</main.basedir>
         <docker.image.name>onap/${project.groupId}.${project.artifactId}</docker.image.name>
-       <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format>  
+    <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format>
     </properties>
 
     <dependencies>
@@ -69,7 +70,6 @@
                     <artifactId>undertow-core</artifactId>
               </exclusion>
             </exclusions>
-
         </dependency>
         <dependency>
             <groupId>io.micrometer</groupId>
             <groupId>io.springfox</groupId>
             <artifactId>springfox-swagger2</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.plugin</groupId>
+            <artifactId>spring-plugin-core</artifactId>
+        </dependency>
         <dependency>
             <groupId>io.springfox</groupId>
             <artifactId>springfox-swagger-ui</artifactId>
             <artifactId>dcae-analytics-test</artifactId>
         </dependency>
         <!-- https://mvnrepository.com/artifact/io.undertow/undertow-core -->
-      <dependency>
-        <groupId>io.undertow</groupId>
-        <artifactId>undertow-core</artifactId>
-      </dependency>
         <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler-proxy</artifactId>
-            <version>4.1.54.Final</version>
+            <groupId>io.undertow</groupId>
+            <artifactId>undertow-core</artifactId>
         </dependency>
 
     </dependencies>
 
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework</groupId>
-                <artifactId>spring-core</artifactId>
-                <version>5.1.12.RELEASE</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
     <build>
         <resources>
             <resource>
             </plugin>
             <!-- DOCKER PLUGIN -->
             <plugin>
-                  <groupId>com.spotify</groupId>
-                  <artifactId>dockerfile-maven-plugin</artifactId>
-                  <version>1.4.10</version>
-                    <configuration>
-                         <contextDirectory>${project.basedir}</contextDirectory>
-                         <repository>${docker.repository}/${docker.image.name}</repository>
-                         <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
-                      <buildArgs>
-                            <PROJECT_BUILD_DIR_NAME>target</PROJECT_BUILD_DIR_NAME>
-                            <DEPENDENCIES_DIR>${dependency.dir.name}</DEPENDENCIES_DIR>
-                            <DOCKER_ARTIFACT_DIR>/opt</DOCKER_ARTIFACT_DIR>
-                            <FINAL_JAR>${project.build.finalName}.jar</FINAL_JAR>
-                      </buildArgs>
-                </configuration>
-                <executions>
-                       <execution>
-                               <id>build-image</id>
-                               <phase>install</phase>
-                               <goals>
-                                       <goal>build</goal>
-                               </goals>
-                       </execution>
-                       <execution>
-                              <id>tag-version</id>
-                              <phase>install</phase>
-                              <goals>
-                                     <goal>tag</goal>
-                                     <goal>push</goal>
-                              </goals>
-                               <configuration>
-                                       <tag>${project.version}</tag>
-                               </configuration>
-                       </execution>
+               <groupId>com.spotify</groupId>
+               <artifactId>dockerfile-maven-plugin</artifactId>
+               <version>1.4.10</version>
+                 <configuration>
+                  <contextDirectory>${project.basedir}</contextDirectory>
+                  <repository>${docker.repository}/${docker.image.name}</repository>
+                  <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+               <buildArgs>
+                 <PROJECT_BUILD_DIR_NAME>target</PROJECT_BUILD_DIR_NAME>
+                 <DEPENDENCIES_DIR>${dependency.dir.name}</DEPENDENCIES_DIR>
+                 <DOCKER_ARTIFACT_DIR>/opt</DOCKER_ARTIFACT_DIR>
+                 <FINAL_JAR>${project.build.finalName}.jar</FINAL_JAR>
+               </buildArgs>
+             </configuration>
+             <executions>
+            <execution>
+                <id>build-image</id>
+                <phase>install</phase>
+                <goals>
+                    <goal>build</goal>
+                </goals>
+            </execution>
+            <execution>
+                   <id>tag-version</id>
+                   <phase>install</phase>
+                   <goals>
+                      <goal>tag</goal>
+                      <goal>push</goal>
+                   </goals>
+                        <configuration>
+                              <tag>${project.version}</tag>
+                        </configuration>
+                  </execution>
                         <execution>
                                <id>tag-version-ts</id>
                                <phase>install</phase>
                                       <goal>push</goal>
                                </goals>
                                 <configuration>
-                                       <tag>${project.version}-${maven.build.timestamp}Z</tag>
+                              <tag>${project.version}-${maven.build.timestamp}Z</tag>
                                 </configuration>
                         </execution>
-               </executions>
+            </executions>
            </plugin>
         </plugins>
     </build>
index 3579d3e..ed8e7ea 100644 (file)
@@ -1,6 +1,8 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile Property. All rights reserved.
+ * Copyright (c) 2021 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.
@@ -23,8 +25,6 @@ import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_ID_HE
 import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_TRANSACTION_ID_HEADER_KEY;
 
 import java.util.List;
-import java.util.Map;
-
 import org.onap.dcae.analytics.model.AnalyticsProfile;
 import org.onap.dcae.analytics.model.DmaapMrConstants;
 import org.onap.dcae.analytics.tca.web.TcaAppProperties;
@@ -44,6 +44,7 @@ import org.springframework.integration.channel.NullChannel;
 import org.springframework.integration.channel.QueueChannel;
 import org.springframework.integration.dsl.IntegrationFlow;
 import org.springframework.integration.dsl.IntegrationFlows;
+import org.springframework.integration.handler.GenericHandler;
 import org.springframework.messaging.MessageHeaders;
 
 /**
@@ -82,11 +83,15 @@ public class TcaMrConfig {
         // get messages from dmaap subscriber channel
         return IntegrationFlows.from(mrSubscriberOutputChannel)
                 // handle incoming message from dmaap
-                .handle((List<String> cefMessages, Map<String, Object> headers) ->
-                        tcaProcessingService.getTcaExecutionResults(
+                .handle(new GenericHandler<List<String>>() {
+                    @Override
+                    public Object handle(List<String> cefMessages, MessageHeaders headers) {
+                        return tcaProcessingService.getTcaExecutionResults(
                                 headers.getOrDefault(REQUEST_ID_HEADER_KEY, headers.get(MessageHeaders.ID)).toString(),
                                 headers.getOrDefault(REQUEST_TRANSACTION_ID_HEADER_KEY, "").toString(),
-                                tcaPolicyWrapper, cefMessages))
+                                tcaPolicyWrapper, cefMessages);
+                    }
+                })
                 // transform tca execution results to alerts - if not alerts are detected terminate further processing
                 .transform(tcaAlertTransformer, c -> c.requiresReply(false))
                 // post messages to dmaap publisher input channel
index 9bade85..ff086ed 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile 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.
@@ -71,7 +72,7 @@ public class TcaAlertTransformer extends AbstractTransformer {
 
     @Override
     @SuppressWarnings("unchecked")
-    protected Object doTransform(final Message<?> message) throws Exception {
+    protected Object doTransform(final Message<?> message) {
 
         final Object messagePayload = message.getPayload();
 
@@ -158,3 +159,4 @@ public class TcaAlertTransformer extends AbstractTransformer {
                 Integer.toString(abatedExecutionContexts.size()), Integer.toString(tcaAlerts.size()));
     }
 }
+
index 7cd542c..024e4bf 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile 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.
@@ -24,7 +25,6 @@ import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_BEGIN
 import static org.onap.dcae.analytics.model.AnalyticsHttpConstants.REQUEST_END_TS_HEADER_KEY;
 
 import java.util.Date;
-import java.util.Map;
 
 import org.onap.dcae.analytics.model.ecomplogger.AnalyticsErrorType;
 import org.onap.dcae.analytics.tca.core.util.TcaUtils;
@@ -60,7 +60,7 @@ public class TcaPublisherResponseHandler implements GenericHandler<String> {
     }
 
     @Override
-    public Object handle(final String payload, final Map<String, Object> headers) {
+    public Object handle(final String payload, MessageHeaders headers) {
 
         final MessageHeaders messageHeaders = new MessageHeaders(headers);
         final String requestId = AnalyticsHttpUtils.getRequestId(messageHeaders);
@@ -99,3 +99,4 @@ public class TcaPublisherResponseHandler implements GenericHandler<String> {
     }
 
 }
+
index 66043aa..2637a39 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * ================================================================================
  * Copyright (c) 2019 IBM Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile 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.
@@ -26,17 +27,19 @@ import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 import org.onap.dcae.analytics.tca.web.TcaAppProperties;
 import org.onap.dcae.analytics.tca.web.TcaAppProperties.Tca;
+import org.springframework.messaging.MessageHeaders;
 
 public class TcaPublisherResponseHandlerTest {
 
-    static Map<String, Object> headers;
+    static MessageHeaders messageHeaders;
 
     @BeforeAll
     static void initialize() {
-        headers = new HashMap<>();
+        Map headers = new HashMap<>();
         headers.put("X-ECOMP-RequestID", "TestRequestID");
         headers.put("X-ECOMP-TransactionID", "TestTransactionID");
         headers.put("X-ECOMP-FromAppID", "TestFromAppID");
+        messageHeaders = new MessageHeaders(headers);
 
     }
 
@@ -49,7 +52,7 @@ public class TcaPublisherResponseHandlerTest {
         Mockito.when(tcaAppProperties.getTca().getEnableEcompLogging()).thenReturn(true);
 
         TcaPublisherResponseHandler responseHandler = new TcaPublisherResponseHandler(tcaAppProperties);
-        responseHandler.handle("testpayload", headers);
+        responseHandler.handle("testpayload", messageHeaders);
 
     }
 
@@ -62,8 +65,9 @@ public class TcaPublisherResponseHandlerTest {
         Mockito.when(tcaAppProperties.getTca().getEnableEcompLogging()).thenReturn(false);
 
         TcaPublisherResponseHandler responseHandler = new TcaPublisherResponseHandler(tcaAppProperties);
-        responseHandler.handle("testpayload", headers);
+        responseHandler.handle("testpayload", messageHeaders);
 
     }
 
 }
+
index 4d7efb7..856a8ed 100644 (file)
@@ -3,6 +3,7 @@
   ~ ================================================================================
   ~ Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
   ~ Copyright (c) 2021 Samsung Electronics. All rights reserved.
+  ~ Copyright (c) 2021 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.
             <groupId>org.springframework.integration</groupId>
             <artifactId>spring-integration-mongodb</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
 
         <!-- APACHE HTTP CLIENT -->
         <dependency>
             <groupId>io.undertow</groupId>
             <artifactId>undertow-core</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler-proxy</artifactId>
-            <version>4.1.54.Final</version>
-        </dependency>
 
     </dependencies>
 
-
-    <dependencyManagement>
-      <dependencies>
-        <dependency>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring-core</artifactId>
-          <version>5.0.11.RELEASE</version>
-        </dependency>
-      </dependencies>
-    </dependencyManagement>
 </project>
index 1fe9e51..705a724 100644 (file)
@@ -1,6 +1,8 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile Property. All rights reserved.
+ * Copyright (c) 2021 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.
 
 package org.onap.dcae.analytics.web.config;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.util.Map;
-
 import org.onap.dcae.analytics.model.AnalyticsHttpConstants;
 import org.onap.dcae.analytics.model.AnalyticsProfile;
 import org.onap.dcae.analytics.model.DmaapMrConstants;
@@ -44,16 +42,20 @@ import org.springframework.integration.channel.QueueChannel;
 import org.springframework.integration.core.MessageSource;
 import org.springframework.integration.dsl.IntegrationFlow;
 import org.springframework.integration.dsl.IntegrationFlows;
-import org.springframework.integration.dsl.channel.MessageChannels;
+import org.springframework.integration.dsl.MessageChannels;
 import org.springframework.integration.endpoint.MethodInvokingMessageSource;
+import org.springframework.integration.handler.GenericHandler;
 import org.springframework.integration.handler.advice.RequestHandlerRetryAdvice;
 import org.springframework.integration.http.dsl.Http;
 import org.springframework.integration.scheduling.PollerMetadata;
 import org.springframework.integration.store.BasicMessageGroupStore;
 import org.springframework.integration.store.MessageGroupQueue;
 import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.MessageHeaders;
 import org.springframework.web.client.RestTemplate;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 /**
  * @author Rajiv Singla
  */
@@ -139,21 +141,23 @@ public class DmaapMrConfig {
                                            final RestTemplate mrPublisherRestTemplate,
                                            final DirectChannel mrPublisherInputChannel,
                                            final RequestHandlerRetryAdvice requestHandlerRetryAdvice) {
-
         return IntegrationFlows.from(mrPublisherInputChannel)
                 .handle(Http.outboundGateway(mrPublisherPreferences.getRequestURL(), mrPublisherRestTemplate)
                         .mappedRequestHeaders(DMAAP_MAPPED_REQUEST_HEADERS)
                         .httpMethod(HttpMethod.POST)
                         .extractPayload(true)
                         .expectedResponseType(String.class), c -> c.advice(requestHandlerRetryAdvice))
-                // add end timestamp
-                .handle((String p, Map<String, Object> headers) ->
-                        MessageBuilder.withPayload(p).copyHeaders(headers)
-                                .setHeader(AnalyticsHttpConstants.REQUEST_END_TS_HEADER_KEY,
-                                        AnalyticsWebUtils.CREATION_TIMESTAMP_SUPPLIER.get()).build()
-                )
+                .handle(new GenericHandler<String>() {
+                    @Override
+                    public Object handle(String payload, MessageHeaders headers) {
+                          return MessageBuilder.withPayload(payload).copyHeaders(headers)
+                          .setHeader(AnalyticsHttpConstants.REQUEST_END_TS_HEADER_KEY,
+                                  AnalyticsWebUtils.CREATION_TIMESTAMP_SUPPLIER.get()).build();
+                    }
+                })
                 .channel(DmaapMrConstants.DMAAP_MR_PUBLISHER_OUTPUT_CHANNEL)
                 .get();
     }
 
 }
+
index ab85d5f..9fec649 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile 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.
@@ -19,8 +20,6 @@
 
 package org.onap.dcae.analytics.web.config;
 
-import java.util.concurrent.TimeUnit;
-
 import org.onap.dcae.analytics.model.AnalyticsProfile;
 import org.onap.dcae.analytics.web.dmaap.MrSubscriberPollingAdvice;
 import org.onap.dcae.analytics.web.dmaap.MrSubscriberPollingPreferences;
@@ -56,7 +55,7 @@ public class DmaapPollerConfig {
         final MrSubscriberPollingPreferences pollingPreferences = mrSubscriberPreferences.getPollingPreferences();
         final int minInterval = pollingPreferences.getMinPollingInterval();
         final DynamicPeriodicTrigger dynamicPeriodicTrigger =
-                new DynamicPeriodicTrigger(minInterval, TimeUnit.MILLISECONDS);
+                new DynamicPeriodicTrigger(minInterval);
         dynamicPeriodicTrigger.setFixedRate(true);
         return dynamicPeriodicTrigger;
     }
@@ -77,3 +76,4 @@ public class DmaapPollerConfig {
     }
 
 }
+
index 48f0144..319be8b 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile 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.
@@ -31,7 +32,7 @@ import org.springframework.context.annotation.Profile;
 import org.springframework.integration.channel.QueueChannel;
 import org.springframework.integration.dsl.IntegrationFlow;
 import org.springframework.integration.dsl.IntegrationFlows;
-import org.springframework.integration.dsl.channel.MessageChannels;
+import org.springframework.integration.dsl.MessageChannels;
 import org.springframework.integration.handler.LoggingHandler;
 import org.springframework.integration.handler.advice.ErrorMessageSendingRecoverer;
 import org.springframework.integration.handler.advice.RequestHandlerRetryAdvice;
index aa1c502..c645b6c 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 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.
@@ -23,7 +24,7 @@ import org.onap.dcae.analytics.model.AnalyticsProfile;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Profile;
-import org.springframework.data.mongodb.MongoDbFactory;
+import org.springframework.data.mongodb.MongoDatabaseFactory;
 import org.springframework.integration.mongodb.store.MongoDbChannelMessageStore;
 import org.springframework.integration.store.BasicMessageGroupStore;
 import org.springframework.integration.store.SimpleMessageStore;
@@ -43,7 +44,7 @@ public class MessageStoreConfig {
 
     @Bean
     @Profile(AnalyticsProfile.MONGO_PROFILE_NAME)
-    public BasicMessageGroupStore mongoMessageGroupStore(final MongoDbFactory mongoDbFactory) {
+    public BasicMessageGroupStore mongoMessageGroupStore(final MongoDatabaseFactory mongoDbFactory) {
         final MongoDbChannelMessageStore store = new MongoDbChannelMessageStore(mongoDbFactory);
         store.setPriorityEnabled(true);
         return store;
index 2ebb38d..6572a25 100644 (file)
@@ -1,6 +1,8 @@
 /*
  * ================================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2021 China Mobile Property. All rights reserved.
+ * Copyright (c) 2021 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.
@@ -19,6 +21,7 @@
 
 package org.onap.dcae.analytics.web.dmaap;
 
+import java.time.Duration;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -84,8 +87,7 @@ public class MrSubscriberPollingAdvice extends AbstractRequestHandlerAdvice {
 
     @Override
     @SuppressWarnings("unchecked")
-    protected Object doInvoke(final ExecutionCallback callback, final Object target, final Message<?> message)
-            throws Exception {
+    protected Object doInvoke(final ExecutionCallback callback, final Object target, final Message<?> message) {
 
         // execute call back
         Object result = callback.execute();
@@ -98,14 +100,7 @@ public class MrSubscriberPollingAdvice extends AbstractRequestHandlerAdvice {
         final MessageBuilder<String> resultMessageBuilder = (MessageBuilder<String>) result;
         final String payload = resultMessageBuilder.getPayload();
         final Map<String, Object> headers = resultMessageBuilder.getHeaders();
-        final Object httpStatusCode = headers.get(AnalyticsHttpConstants.HTTP_STATUS_CODE_HEADER_KEY);
-
-        // get http status code
-        if (httpStatusCode == null) {
-            return result;
-        }
-        final HttpStatus httpStatus = HttpStatus.resolve(Integer.parseInt(httpStatusCode.toString()));
-
+        final HttpStatus httpStatus = (HttpStatus) headers.get(AnalyticsHttpConstants.HTTP_STATUS_CODE_HEADER_KEY);
 
         // if status code is present and successful apply polling adjustments
         if (httpStatus != null && httpStatus.is2xxSuccessful()) {
@@ -119,7 +114,7 @@ public class MrSubscriberPollingAdvice extends AbstractRequestHandlerAdvice {
                             "Next Polling Interval will be: {}", debugLogSpec, requestId, transactionId,
                             String.valueOf(areMessagesPresent), nextPollingInterval.toString());
 
-            trigger.setPeriod(nextPollingInterval.get());
+            trigger.setDuration(Duration.ofMillis(nextPollingInterval.get()));
 
             // if no messages were found in dmaap poll - terminate further processing
             if (!areMessagesPresent) {
@@ -148,3 +143,4 @@ public class MrSubscriberPollingAdvice extends AbstractRequestHandlerAdvice {
         }
     }
 }
+
index 4f8fc42..d3d924f 100644 (file)
@@ -3,6 +3,7 @@
   ~ ================================================================================
   ~ Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
   ~ Copyright (c) 2021 Samsung Electronics. All rights reserved.
+  ~ Copyright (c) 2021 China Mobile 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.
@@ -56,9 +57,8 @@
 
         <!-- DEPENDENCIES VERSION -->
         <eelf.logger.version>1.0.1-SNAPSHOT</eelf.logger.version>
-        <spring.boot.version>2.0.9.RELEASE</spring.boot.version>
+        <spring.boot.version>2.4.4</spring.boot.version>
         <spring.cloud.version>Finchley.RC2</spring.cloud.version>
-        <spring.version>5.0.11.RELEASE</spring.version>
         <commons.text.version>1.4</commons.text.version>
         <springfox-swagger2.version>3.0.0</springfox-swagger2.version>
         <findbugs.jsr305.version>3.0.2</findbugs.jsr305.version>
         <snapshots.path>content/repositories/snapshots/</snapshots.path>
         <releases.path>content/repositories/releases/</releases.path>
         <docker.repository>nexus3.onap.org:10003</docker.repository>
-        <jackson.version>2.11.0</jackson.version>
-        <undertow.version>2.2.2.Final</undertow.version>
-        <spring-webflux.version>5.2.7.RELEASE</spring-webflux.version>
+        <spring-swagger-ui.version>2.10.5</spring-swagger-ui.version>
 
         <!-- SONAR EXCLUSIONS -->
         <!-- EXCLUDE TEST COVERAGE ON
                 <groupId>io.springfox</groupId>
                 <artifactId>springfox-swagger2</artifactId>
                 <version>${springfox-swagger2.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>io.springfox</groupId>
-                <artifactId>springfox-swagger-ui</artifactId>
-                <version>${springfox-swagger2.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.springframework.plugin</groupId>
+                        <artifactId>spring-plugin-core</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <dependency>
                 <groupId>org.springframework.plugin</groupId>
                 <version>2.0.0.RELEASE</version>
             </dependency>
             <dependency>
-                <groupId>org.springframework.plugin</groupId>
-                <artifactId>spring-plugin-metadata</artifactId>
-                <version>2.0.0.RELEASE</version>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger-ui</artifactId>
+                <version>${spring-swagger-ui.version}</version>
             </dependency>
 
             <!-- FIND BUGS -->
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-dependencies</artifactId>
                 <version>${spring.boot.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>org.springframework</groupId>
-                        <artifactId>spring-web</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>org.springframework.boot</groupId>
-                        <artifactId>spring-boot-starter-test</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>org.mockito</groupId>
-                        <artifactId>mockito-core</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>io.undertow</groupId>
-                        <artifactId>undertow-core</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>org.springframework</groupId>
-                        <artifactId>spring-webflux</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>com.fasterxml.jackson.core</groupId>
-                        <artifactId>jackson-databind</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>com.fasterxml.jackson.core</groupId>
-                        <artifactId>jackson-core</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>com.fasterxml.jackson.dataformat</groupId>
-                        <artifactId>jackson-dataformat-smile</artifactId>
-                    </exclusion>
-                </exclusions>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
-            <dependency>
-                <groupId>org.springframework</groupId>
-                <artifactId>spring-webflux</artifactId>
-                <version>${spring-webflux.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.springframework</groupId>
-                <artifactId>spring-web</artifactId>
-                <version>${spring.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-starter-test</artifactId>
-                <version>2.2.0.RELEASE</version>
-            </dependency>
-            <dependency>
-                <groupId>org.mockito</groupId>
-                <artifactId>mockito-core</artifactId>
-                <version>2.23.4</version>
-            </dependency>
-            <dependency>
-                <groupId>io.undertow</groupId>
-                <artifactId>undertow-core</artifactId>
-                <version>${undertow.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.core</groupId>
-                <artifactId>jackson-databind</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.core</groupId>
-                <artifactId>jackson-core</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.dataformat</groupId>
-                <artifactId>jackson-dataformat-smile</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
 
         </dependencies>
     </dependencyManagement>
                     <version>${maven-surefire-plugin.version}</version>
                     <configuration>
                         <skipTests>${skip.unit.tests}</skipTests>
-                        <argLine>-Xmx2048m -Djava.awt.headless=true
-                            -XX:+UseConcMarkSweepGC
+                        <argLine>-Xmx2048m -Djava.awt.headless=true -XX:+UseConcMarkSweepGC
                             -XX:OnOutOfMemoryError="kill -9 %p" -XX:+HeapDumpOnOutOfMemoryError ${surefireArgLine}
                         </argLine>
                         <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>
                             <id>validate</id>
                             <phase>validate</phase>
                             <configuration>
-                                <skip>true</skip>
+                                    <skip>true</skip>
                                 <configLocation>${checkstyle.file.name}</configLocation>
                                 <suppressionsLocation>${checkstyle.suppression.file.name}</suppressionsLocation>
                                 <encoding>UTF-8</encoding>
                         </execution>
                     </executions>
                 </plugin>
-
-                <!-- DOCKER PLUGIN -->
-                <!-- <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> 
-                    <version>${docker-maven-version}</version> <configuration> <repository>${docker.repository}/onap/${project.groupId}.${project.artifactId}</repository> 
-                    <tag>${project.version}</tag> </configuration> </plugin> -->
-
             </plugins>
 
         </pluginManagement>