Fix too many method parameter 59/79759/3
authorArindam Mondal <arind.mondal@samsung.com>
Wed, 6 Mar 2019 07:48:09 +0000 (16:48 +0900)
committerOren Kleks <orenkle@amdocs.com>
Thu, 7 Mar 2019 09:10:31 +0000 (09:10 +0000)
Implement builder to fix too many method parameter issue

Issue-ID: SDC-2164
Change-Id: I6f071a7c704002ba523efca942ab51a00c0272ee
Signed-off-by: Arindam Mondal <arind.mondal@samsung.com>
catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java [new file with mode: 0644]
catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java [new file with mode: 0644]

diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java
new file mode 100644 (file)
index 0000000..54047b4
--- /dev/null
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Samsung Electronics Co., Ltd. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.openecomp.sdc.be.components.distribution.engine;
+
+import org.openecomp.sdc.be.model.Service;
+import org.openecomp.sdc.be.model.User;
+
+public class AuditDistributionNotificationBuilder {
+
+    private String topicName;
+    private String distributionId;
+    private CambriaErrorResponse status;
+    private Service service;
+    private String envId;
+    private User modifier;
+    private String workloadContext;
+    private String tenant;
+
+    public AuditDistributionNotificationBuilder() {}
+
+    public String getTopicName() {
+        return topicName;
+    }
+
+    public AuditDistributionNotificationBuilder setTopicName(String topicName) {
+        this.topicName = topicName;
+        return this;
+    }
+
+    public String getDistributionId() {
+        return distributionId;
+    }
+
+    public AuditDistributionNotificationBuilder setDistributionId(String distributionId) {
+        this.distributionId = distributionId;
+        return this;
+    }
+
+    public CambriaErrorResponse getStatus() {
+        return status;
+    }
+
+    public AuditDistributionNotificationBuilder setStatus(CambriaErrorResponse status) {
+        this.status = status;
+        return this;
+    }
+
+    public Service getService() {
+        return service;
+    }
+
+    public AuditDistributionNotificationBuilder setService(Service service) {
+        this.service = service;
+        return this;
+    }
+
+    public String getEnvId() {
+        return envId;
+    }
+
+    public AuditDistributionNotificationBuilder setEnvId(String envId) {
+        this.envId = envId;
+        return this;
+    }
+
+    public User getModifier() {
+        return modifier;
+    }
+
+    public AuditDistributionNotificationBuilder setModifier(User modifier) {
+        this.modifier = modifier;
+        return this;
+    }
+
+    public String getWorkloadContext() {
+        return workloadContext;
+    }
+
+    public AuditDistributionNotificationBuilder setWorkloadContext(String workloadContext) {
+        this.workloadContext = workloadContext;
+        return this;
+    }
+
+    public String getTenant() {
+        return tenant;
+    }
+
+    public AuditDistributionNotificationBuilder setTenant(String tenant) {
+        this.tenant = tenant;
+        return this;
+    }
+}
index 80518c2..1c6afe5 100644 (file)
@@ -40,29 +40,47 @@ public class DistributionNotificationSender {
     @javax.annotation.Resource
     protected ComponentsUtils componentUtils;
     private CambriaHandler cambriaHandler = new CambriaHandler();
-    private DistributionEngineConfiguration deConfiguration = ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration();
+    private DistributionEngineConfiguration deConfiguration =
+            ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration();
 
-    public ActionStatus sendNotification(String topicName, String distributionId, EnvironmentMessageBusData messageBusData, INotificationData notificationData, Service service, User modifier) {
+    public ActionStatus sendNotification(String topicName, String distributionId,
+            EnvironmentMessageBusData messageBusData, INotificationData notificationData, Service service,
+            User modifier) {
         long startTime = System.currentTimeMillis();
-        CambriaErrorResponse status = cambriaHandler.sendNotificationAndClose(topicName, messageBusData.getUebPublicKey(), messageBusData.getUebPrivateKey(), messageBusData.getDmaaPuebEndpoints(), notificationData,
-                deConfiguration.getDistributionNotificationTopic().getMaxWaitingAfterSendingSeconds());
-        logger.info("After publishing service {} of version {}. Status is {}", service.getName(), service.getVersion(), status.getHttpCode());
-        auditDistributionNotification(topicName, distributionId, status, service, messageBusData.getEnvId(), modifier, notificationData.getWorkloadContext(), messageBusData.getTenant());
+        CambriaErrorResponse status =
+                cambriaHandler.sendNotificationAndClose(topicName, messageBusData.getUebPublicKey(),
+                        messageBusData.getUebPrivateKey(), messageBusData.getDmaaPuebEndpoints(), notificationData,
+                        deConfiguration.getDistributionNotificationTopic().getMaxWaitingAfterSendingSeconds());
+
+        logger.info("After publishing service {} of version {}. Status is {}", service.getName(), service.getVersion(),
+                status.getHttpCode());
+
+        auditDistributionNotification(new AuditDistributionNotificationBuilder().setTopicName(topicName)
+                .setDistributionId(distributionId).setStatus(status).setService(service)
+                .setEnvId(messageBusData.getEnvId()).setModifier(modifier)
+                .setWorkloadContext(notificationData.getWorkloadContext()).setTenant(messageBusData.getTenant()));
+
         long endTime = System.currentTimeMillis();
-        logger.debug("After building and publishing artifacts object. Total took {} milliseconds", (endTime - startTime));
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("After building and publishing artifacts object. Total took {} milliseconds",
+                    endTime - startTime);
+        }
+
         return convertCambriaResponse(status);
     }
 
-    private void auditDistributionNotification(String topicName, String distributionId, CambriaErrorResponse status, Service service, String envId, User modifier
-            , String workloadContext, String tenant) {
+    private void auditDistributionNotification(AuditDistributionNotificationBuilder builder) {
         if (this.componentUtils != null) {
-            Integer httpCode = status.getHttpCode();
+            Integer httpCode = builder.getStatus().getHttpCode();
             String httpCodeStr = String.valueOf(httpCode);
 
-            String desc = getDescriptionFromErrorResponse(status);
+            String desc = getDescriptionFromErrorResponse(builder.getStatus());
 
-            this.componentUtils.auditDistributionNotification(service.getUUID(), service.getName(), "Service", service.getVersion(), modifier, envId, service.getLifecycleState().name(), topicName,
-                    distributionId, desc, httpCodeStr, workloadContext, tenant);
+            this.componentUtils.auditDistributionNotification(builder.getService().getUUID(),
+                    builder.getService().getName(), "Service", builder.getService().getVersion(), builder.getModifier(),
+                    builder.getEnvId(), builder.getService().getLifecycleState().name(), builder.getTopicName(),
+                    builder.getDistributionId(), desc, httpCodeStr, builder.getWorkloadContext(), builder.getTenant());
         }
     }
 
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java
new file mode 100644 (file)
index 0000000..f3d901c
--- /dev/null
@@ -0,0 +1,65 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Samsung Electronics Co., Ltd. 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.openecomp.sdc.be.components.distribution.engine;
+
+import static org.mockito.Mockito.RETURNS_DEFAULTS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.openecomp.sdc.be.model.Service;
+import org.openecomp.sdc.be.model.User;
+
+public class AuditDistributionNotificationBuilderTest {
+    
+    
+     public class SelfReturningAnswer implements Answer<Object>{
+
+        public Object answer(InvocationOnMock invocation) throws Throwable {
+            Object mock = invocation.getMock();
+            if( invocation.getMethod().getReturnType().isInstance( mock )){
+                return mock;
+            }
+            else{
+                return RETURNS_DEFAULTS.answer(invocation);
+            }
+        }
+    }
+     
+     private CambriaErrorResponse status;
+     private Service service;
+     private User modifier;
+     
+    @Test
+    public void testBuilder() {
+
+        AuditDistributionNotificationBuilder mockBuilder =
+                mock(AuditDistributionNotificationBuilder.class, new SelfReturningAnswer());
+
+        when(mockBuilder.setTopicName("topicName").setDistributionId("distributionId").setStatus(status)
+                .setService(service).setEnvId("envId").setModifier(modifier).setWorkloadContext("workloadContext")
+                .setTenant("tenant")).thenReturn(mockBuilder);
+        assert mockBuilder.setTopicName("topicName").setDistributionId("distributionId").setStatus(status)
+                .setService(service).setEnvId("envId").setModifier(modifier).setWorkloadContext("workloadContext")
+                .setTenant("tenant") == mockBuilder;
+    }
+}