Improve code quality in Appconfig 26/113426/6
authorJoanna Jeremicz <joanna.jeremicz@nokia.com>
Thu, 1 Oct 2020 10:33:44 +0000 (12:33 +0200)
committerJoanna Jeremicz <joanna.jeremicz@nokia.com>
Thu, 8 Oct 2020 07:34:05 +0000 (09:34 +0200)
- Add unit test
- Refactor Appconfig class (break the public method into smaller private methods, get rid of unnecessary parameter object reference copies)
- Top up version to 1.6.0

Issue-ID: DCAEGEN2-2460
Signed-off-by: Joanna Jeremicz <joanna.jeremicz@nokia.com>
Change-Id: Ia34b5c8ed3d6eafe765075a1a2b4274beb1868e6

mod/bpgenerator/TestCases/expects/createAppConfigResult.txt [new file with mode: 0644]
mod/bpgenerator/pom.xml
mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Appconfig.java
mod/bpgenerator/src/test/java/org/onap/blueprintgenerator/models/blueprint/AppconfigTest.java [new file with mode: 0644]
mod/bpgenerator/version.properties

diff --git a/mod/bpgenerator/TestCases/expects/createAppConfigResult.txt b/mod/bpgenerator/TestCases/expects/createAppConfigResult.txt
new file mode 100644 (file)
index 0000000..11ce552
--- /dev/null
@@ -0,0 +1 @@
+{TEST-PUB-DR_delivery_url={type=string}, TEST-PUB-DR_location={type=string}, TEST-PUB-DR_password={type=string}, TEST-PUB-DR_subscriber_id={type=string}, TEST-PUB-DR_username={type=string}, TEST-SUB-DR_delivery_url={type=string}, TEST-SUB-DR_location={type=string}, TEST-SUB-DR_password={type=string}, TEST-SUB-DR_subscriber_id={type=string}, TEST-SUB-DR_username={type=string}, TEST_PUB_MR_publish_url={type=string}, TEST_SUB_MR_subscribe_url={type=string}, service_component_name_override={type=string, default=}, testParam1={type=string, default=test-param-1}}
index 86009f3..c8f8fdb 100644 (file)
@@ -29,7 +29,7 @@
        </parent>
        <groupId>org.onap.dcaegen2.platform.mod</groupId>
        <artifactId>blueprint-generator</artifactId>
-       <version>1.5.2-SNAPSHOT</version>
+       <version>1.6.0-SNAPSHOT</version>
        <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <sonar.junit.reportsPath>${project.basedir}/target/surefire-reports</sonar.junit.reportsPath>
index 75864be..e9157ad 100644 (file)
 
 package org.onap.blueprintgenerator.models.blueprint;
 
+import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isDataRouterType;
+import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isMessageRouterType;
+import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.createStringInput;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
 import java.util.LinkedHashMap;
 import java.util.TreeMap;
-
+import lombok.Getter;
+import lombok.Setter;
 import org.onap.blueprintgenerator.models.blueprint.dmaap.DmaapObj;
 import org.onap.blueprintgenerator.models.componentspec.CallsObj;
 import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
@@ -31,125 +37,116 @@ import org.onap.blueprintgenerator.models.componentspec.Parameters;
 import org.onap.blueprintgenerator.models.componentspec.Publishes;
 import org.onap.blueprintgenerator.models.componentspec.Subscribes;
 
-import com.fasterxml.jackson.annotation.JsonAnyGetter;
-
-
-import lombok.Getter;
-import lombok.Setter;
-
 @Getter
 @Setter
 public class Appconfig {
-       private CallsObj[] service_calls;
-       private TreeMap<String, DmaapObj> streams_publishes;
-       private TreeMap<String, DmaapObj> streams_subscribes;
-       private TreeMap<String, Object> params;
-
-       @JsonAnyGetter
-       public TreeMap<String, Object> getParams(){
-               return params;
-       }
-
-       public TreeMap<String, LinkedHashMap<String, Object>> createAppconfig(TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec cs, String override,
-                                                                                                                                                 boolean isDmaap) {
-               TreeMap<String, LinkedHashMap<String, Object>> retInputs = inps;
-
-               //set service calls
-               CallsObj[] call = new CallsObj[0];
-               this.setService_calls(call);
-
-               //set the stream publishes
-               TreeMap<String, DmaapObj> streamPublishes = new TreeMap<String, DmaapObj>();
-               if(cs.getStreams().getPublishes().length != 0) {
-                       for(Publishes p: cs.getStreams().getPublishes()) {
-                               if(p.getType().equals("data_router") || p.getType().equals("data router")) {
-                                       //in this case the data router information gets added to the params so for now leave it alone
-                                       String config = p.getConfig_key();
-                                       DmaapObj pub = new DmaapObj();
-                                       String name = p.getConfig_key() +"_feed";
-                                       retInputs = pub.createOnapDmaapDRObj(retInputs, config, 'p', name, name, isDmaap);
-                                       pub.setType(p.getType());
-                                       streamPublishes.put(config, pub);
-                               } else if(p.getType().equals("message_router") || p.getType().equals("message router")) {
-                                       String config = p.getConfig_key();
-                                       DmaapObj pub = new DmaapObj();
-                                       String name =  p.getConfig_key() + "_topic";
-                                       retInputs = pub.createOnapDmaapMRObj(retInputs, config, 'p', name, name, isDmaap);
-                                       pub.setType(p.getType());
-                                       streamPublishes.put(config, pub);
-                               }
-                       }
-               }
-
-               //set the stream publishes
-               TreeMap<String, DmaapObj> streamSubscribes = new TreeMap<>();
-
-               if(cs.getStreams().getSubscribes().length != 0) {
-                       for(Subscribes s: cs.getStreams().getSubscribes()) {
-                               if(s.getType().equals("data_router") || s.getType().equals("data router")) {
-                                       //in this case the data router information gets added to the params so for now leave it alone
-                                       String config = s.getConfig_key();
-                                       DmaapObj sub = new DmaapObj();
-                                       String name = s.getConfig_key() + "_feed";
-                                       retInputs = sub.createOnapDmaapDRObj(retInputs, config, 'p', name, name, isDmaap);
-                                       sub.setType(s.getType());
-                                       streamSubscribes.put(config, sub);
-                               } else if(s.getType().equals("message_router") || s.getType().equals("message router")) {
-                                       String config = s.getConfig_key();
-                                       DmaapObj sub = new DmaapObj();
-                                       String name = s.getConfig_key() + "_topic";
-                                       retInputs = sub.createOnapDmaapMRObj(retInputs, config, 's', name, name, isDmaap);
-                                       sub.setType(s.getType());
-                                       streamSubscribes.put(config, sub);
-                               }
-                       }
-               }
-
-               this.setStreams_publishes(streamPublishes);
-               this.setStreams_subscribes(streamSubscribes);
-
-               //set the parameters into the appconfig
-               TreeMap<String, Object> parameters = new TreeMap<>();
-               for(Parameters p: cs.getParameters()) {
-                       String pName = p.getName();
-                       if(p.isSourced_at_deployment()) {
-                               GetInput paramInput = new GetInput();
-                               paramInput.setBpInputName(pName);
-                               parameters.put(pName, paramInput);
-
-                               if(!p.getValue().equals("")) {
-                                       LinkedHashMap<String, Object> inputs = new LinkedHashMap<>();
-                                       inputs.put("type", "string");
-                                       inputs.put("default", p.getValue());
-                                       retInputs.put(pName, inputs);
-                               } else {
-                                       LinkedHashMap<String, Object> inputs = new LinkedHashMap<>();
-                                       inputs.put("type", "string");
-                                       retInputs.put(pName, inputs);
-                               }
-                       } else {
-                               if("string".equals(p.getType())) {
-                                       String val  =(String) p.getValue();
-                                       val = '"' + val + '"';
-                                       parameters.put(pName, val);
-                               }
-                               else {
-                                       parameters.put(pName, p.getValue());
-                               }
-                       }
-               }
-               if(override != null) {
-                       GetInput ov = new GetInput();
-                       ov.setBpInputName("service_component_name_override");
-                       parameters.put("service_component_name_override", ov);
-                       LinkedHashMap<String, Object> over = new LinkedHashMap<>();
-                       over.put("type", "string");
-                       over.put("default", override);
-                       retInputs.put("service_component_name_override", over);
-               }
-               this.setParams(parameters);
-               return retInputs;
-       }
 
+    private CallsObj[] service_calls;
+    private TreeMap<String, DmaapObj> streams_publishes;
+    private TreeMap<String, DmaapObj> streams_subscribes;
+    private TreeMap<String, Object> params;
+
+    @JsonAnyGetter
+    public TreeMap<String, Object> getParams() {
+        return params;
+    }
+
+    public TreeMap<String, LinkedHashMap<String, Object>> createAppconfig(
+        TreeMap<String, LinkedHashMap<String, Object>> inps, ComponentSpec componentSpec, String override,
+        boolean isDmaap) {
+
+        service_calls = new CallsObj[0];
+        streams_publishes = createStreamPublishes(componentSpec, inps, isDmaap);
+        streams_subscribes = createStreamSubscribes(componentSpec, inps, isDmaap);
+        params = createParameters(componentSpec, inps, override);
+
+        return inps;
+    }
+
+    private TreeMap<String, DmaapObj> createStreamPublishes(ComponentSpec componentSpec,
+        TreeMap<String, LinkedHashMap<String, Object>> inps, boolean isDmaap) {
+        TreeMap<String, DmaapObj> streamPublishes = new TreeMap<>();
+        for (Publishes publishes : componentSpec.getStreams().getPublishes()) {
+            String config = publishes.getConfig_key();
+            DmaapObj pub = new DmaapObj();
+            if (isDataRouterType(publishes.getType())) {
+                //in this case the data router information gets added to the params so for now leave it alone
+                String name = publishes.getConfig_key() + "_feed";
+                pub.createOnapDmaapDRObj(inps, config, 'p', name, name, isDmaap);
+            } else if (isMessageRouterType(publishes.getType())) {
+                String name = publishes.getConfig_key() + "_topic";
+                pub.createOnapDmaapMRObj(inps, config, 'p', name, name, isDmaap);
+            }
+            pub.setType(publishes.getType());
+            streamPublishes.put(config, pub);
+        }
+        return streamPublishes;
+    }
+
+    private TreeMap<String, DmaapObj> createStreamSubscribes(ComponentSpec componentSpec,
+        TreeMap<String, LinkedHashMap<String, Object>> inputs, boolean isDmaap) {
+        TreeMap<String, DmaapObj> streamSubscribes = new TreeMap<>();
+        for (Subscribes subscribes : componentSpec.getStreams().getSubscribes()) {
+            String config = subscribes.getConfig_key();
+            DmaapObj sub = new DmaapObj();
+            if (isDataRouterType(subscribes.getType())) {
+                //in this case the data router information gets added to the params so for now leave it alone
+                String name = subscribes.getConfig_key() + "_feed";
+                sub.createOnapDmaapDRObj(inputs, config, 'p', name, name, isDmaap);
+            } else if (isMessageRouterType(subscribes.getType())) {
+                String name = subscribes.getConfig_key() + "_topic";
+                sub.createOnapDmaapMRObj(inputs, config, 's', name, name, isDmaap);
+            }
+            sub.setType(subscribes.getType());
+            streamSubscribes.put(config, sub);
+        }
+        return streamSubscribes;
+    }
+
+    private TreeMap<String, Object> createParameters(ComponentSpec componentSpec,
+        TreeMap<String, LinkedHashMap<String, Object>> inputs,
+        String override) {
+        TreeMap<String, Object> parameters = new TreeMap<>();
+        for (Parameters params : componentSpec.getParameters()) {
+            String pName = params.getName();
+            if (params.isSourced_at_deployment()) {
+                GetInput paramInput = new GetInput();
+                paramInput.setBpInputName(pName);
+                parameters.put(pName, paramInput);
+
+                if (!params.getValue().equals("")) {
+                    LinkedHashMap<String, Object> input = createStringInput(params.getValue());
+                    inputs.put(pName, input);
+                } else {
+                    LinkedHashMap<String, Object> input = new LinkedHashMap<>();
+                    input.put("type", "string");
+                    inputs.put(pName, input);
+                }
+            } else {
+                if ("string".equals(params.getType())) {
+                    String val = (String) params.getValue();
+                    val = '"' + val + '"';
+                    parameters.put(pName, val);
+                } else {
+                    parameters.put(pName, params.getValue());
+                }
+            }
+        }
+        handleOverride(override, parameters, inputs);
+        return parameters;
+    }
+
+    private void handleOverride(String override, TreeMap<String, Object> parameters,
+        TreeMap<String, LinkedHashMap<String, Object>> inps) {
+        if (override != null) {
+            GetInput ov = new GetInput();
+            ov.setBpInputName("service_component_name_override");
+            parameters.put("service_component_name_override", ov);
+            LinkedHashMap<String, Object> over = new LinkedHashMap<>();
+            over.put("type", "string");
+            over.put("default", override);
+            inps.put("service_component_name_override", over);
+        }
+    }
 
 }
diff --git a/mod/bpgenerator/src/test/java/org/onap/blueprintgenerator/models/blueprint/AppconfigTest.java b/mod/bpgenerator/src/test/java/org/onap/blueprintgenerator/models/blueprint/AppconfigTest.java
new file mode 100644 (file)
index 0000000..173d230
--- /dev/null
@@ -0,0 +1,62 @@
+/*============LICENSE_START=======================================================
+ org.onap.dcae
+ ================================================================================
+ Copyright (c) 2020 Nokia. 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.blueprintgenerator.models.blueprint;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.LinkedHashMap;
+import java.util.TreeMap;
+import java.util.stream.Collectors;
+import org.junit.Test;
+import org.onap.blueprintgenerator.models.componentspec.ComponentSpec;
+
+public class AppconfigTest {
+
+    @Test
+    public void createAppconfigShouldReturnExpectedResult() throws FileNotFoundException {
+        TreeMap<String, LinkedHashMap<String, Object>> inputs = new TreeMap<String, LinkedHashMap<String, Object>>();
+        ComponentSpec cs = new ComponentSpec();
+        cs.createComponentSpecFromFile("TestCases/testComponentSpec.json");
+
+        TreeMap<String, LinkedHashMap<String, Object>> result = new Appconfig().createAppconfig(inputs, cs, "", false);
+
+        assertEquals(getExpectedStringFromFile(), result.toString());
+    }
+
+    private String getExpectedStringFromFile() throws FileNotFoundException {
+        File file = new File("TestCases/expects/createAppConfigResult.txt");
+        InputStream inputStream = new FileInputStream(file);
+        return readFromInputStream(inputStream);
+    }
+
+    private String readFromInputStream(InputStream inputStream) {
+        return new BufferedReader(
+            new InputStreamReader(inputStream, StandardCharsets.UTF_8))
+            .lines()
+            .collect(Collectors.joining(""));
+    }
+}
index 3f9d877..eabef1f 100644 (file)
@@ -1,6 +1,6 @@
 major=1
-minor=5
-patch=2
+minor=6
+patch=0
 base_version=${major}.${minor}.${patch}
 release_version=${base_version}
 snapshot_version=${base_version}-SNAPSHOT