Merge "Fix frontend docker"
diff --git a/pom.xml b/pom.xml
index 7f93b58..e14aef5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,7 @@
 		<docker.skip.tag>true</docker.skip.tag>
 		<skip.staging.artifacts>false</skip.staging.artifacts>
 		<python.http.proxy.param />
-		<tomcat.version>9.0.27</tomcat.version>
+		<tomcat.version>9.0.33</tomcat.version>
 		<ui.react.src>ui-react</ui.react.src>
 		<ui.react.lib.src>ui-react-lib</ui.react.lib.src>
 		<npm.publish.url>https://nexus3.onap.org/repository/npm.snapshot/</npm.publish.url>
@@ -428,6 +428,10 @@
 					<groupId>javax.servlet</groupId>
 					<artifactId>servlet-api</artifactId>
 				</exclusion>
+				<exclusion>
+					<groupId>log4j</groupId>
+					<artifactId>log4j</artifactId>
+				</exclusion>
 			</exclusions>
 		</dependency>
 		<dependency>
diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java
index aecc8f4..260bd1e 100644
--- a/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java
@@ -30,6 +30,7 @@
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.ExchangeBuilder;
@@ -153,13 +154,14 @@
         logger.info("Downloading the policy model " + policyType + "/" + policyVersion);
         DumperOptions options = new DumperOptions();
         options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN);
-        options.setIndent(2);
+        options.setIndent(4);
         options.setPrettyFlow(true);
         options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
-        return (new Yaml(options)).dump(callCamelRoute(
+        Yaml yamlParser = new Yaml(options);
+        return yamlParser.dump((Map<String, Object>) yamlParser.load(callCamelRoute(
                 ExchangeBuilder.anExchange(camelContext).withProperty("policyModelName", policyType)
                         .withProperty("policyModelVersion", policyVersion).build(), "direct:get-policy-model",
-                "Get one policy"));
+                "Get one policy")));
     }
 
     /**
diff --git a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java
index 89332bb..8fce5ca 100644
--- a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java
+++ b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java
@@ -47,6 +47,7 @@
     private static final String DEPLOYMENT_PARAMETER = "dcaeDeployParameters";
     private static final String DCAE_SERVICETYPE_ID = "serviceTypeId";
     private static final String DCAE_INPUTS = "inputs";
+    private static final String SINGLE_BLUEPRINT_POLICYID = "loop template blueprint";
 
     private String name;
 
@@ -131,7 +132,7 @@
      */
     public static String getDeployPayload(Loop loop) {
         JsonObject globalProp = loop.getGlobalPropertiesJson();
-        JsonObject deploymentProp = globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER);
+        JsonObject deploymentProp = globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER).getAsJsonObject(SINGLE_BLUEPRINT_POLICYID);
 
         String serviceTypeId = loop.getLoopTemplate().getDcaeBlueprintId();
 
diff --git a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java
index 99b0219..2d7b807 100644
--- a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java
+++ b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java
@@ -28,15 +28,12 @@
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map.Entry;
-
 import javax.persistence.Transient;
-
 import org.apache.camel.Exchange;
 import org.onap.clamp.loop.Loop;
 import org.onap.clamp.policy.microservice.MicroServicePolicy;
@@ -82,11 +79,11 @@
      * @return The json, payload to send
      */
     public static String createPoliciesPayloadPdpGroup(Loop loop) {
-        HashMap<String,HashMap<String, List<JsonObject>>> pdpGroupMap = new HashMap <String,HashMap<String, List<JsonObject>>>();
+        HashMap<String, HashMap<String, List<JsonObject>>> pdpGroupMap = new HashMap<>();
         for (OperationalPolicy opPolicy : loop.getOperationalPolicies()) {
             pdpGroupMap = updatePdpGroupMap(opPolicy.getPdpGroup(), opPolicy.getPdpSubgroup(),
-                  opPolicy.getName(),
-                  opPolicy.getPolicyModel().getVersion(), pdpGroupMap);
+                    opPolicy.getName(),
+                    opPolicy.getPolicyModel().getVersion(), pdpGroupMap);
         }
 
         for (MicroServicePolicy msPolicy : loop.getMicroServicePolicies()) {
@@ -96,13 +93,17 @@
         }
 
         String payload = new GsonBuilder().setPrettyPrinting().create()
-              .toJson(generateActivatePdpGroupPayload(pdpGroupMap));
+                .toJson(generateActivatePdpGroupPayload(pdpGroupMap));
         logger.info("PdpGroup policy payload: " + payload);
         return payload;
     }
 
-    private static HashMap<String,HashMap<String, List<JsonObject>>> updatePdpGroupMap (String pdpGroup, String pdpSubGroup, String policyName,
-        String policyModelVersion, HashMap<String,HashMap<String, List<JsonObject>>> pdpGroupMap){
+    private static HashMap<String, HashMap<String, List<JsonObject>>> updatePdpGroupMap(String pdpGroup,
+                                                                                        String pdpSubGroup,
+                                                                                        String policyName,
+                                                                                        String policyModelVersion,
+                                                                                        HashMap<String, HashMap<String,
+                                                                                                List<JsonObject>>> pdpGroupMap) {
 
         JsonObject policyJson = new JsonObject();
         policyJson.addProperty("name", policyName);
@@ -110,14 +111,16 @@
         HashMap<String, List<JsonObject>> pdpSubGroupMap;
         List<JsonObject> policyList;
         if (pdpGroupMap.get(pdpGroup) == null) {
-            pdpSubGroupMap = new HashMap <String, List<JsonObject>>();
+            pdpSubGroupMap = new HashMap<String, List<JsonObject>>();
             policyList = new LinkedList<JsonObject>();
-        } else {
+        }
+        else {
             pdpSubGroupMap = pdpGroupMap.get(pdpGroup);
             if (pdpSubGroupMap.get(pdpSubGroup) == null) {
                 policyList = new LinkedList<JsonObject>();
-            } else {
-                policyList = (List<JsonObject>)pdpSubGroupMap.get(pdpSubGroup);
+            }
+            else {
+                policyList = (List<JsonObject>) pdpSubGroupMap.get(pdpSubGroup);
             }
         }
         policyList.add(policyJson);
@@ -127,7 +130,8 @@
         return pdpGroupMap;
     }
 
-    private static JsonObject generateActivatePdpGroupPayload(HashMap<String,HashMap<String, List<JsonObject>>> pdpGroupMap) {
+    private static JsonObject generateActivatePdpGroupPayload(
+            HashMap<String, HashMap<String, List<JsonObject>>> pdpGroupMap) {
         JsonArray payloadArray = new JsonArray();
         for (Entry<String, HashMap<String, List<JsonObject>>> pdpGroupInfo : pdpGroupMap.entrySet()) {
             JsonObject pdpGroupNode = new JsonObject();
@@ -181,16 +185,18 @@
         ExternalComponentState newState = NOT_SENT;
         if (found && deployed) {
             newState = SENT_AND_DEPLOYED;
-        } else if (found) {
+        }
+        else if (found) {
             newState = SENT;
-        } else if (deployed) {
+        }
+        else if (deployed) {
             newState = IN_ERROR;
         }
         return newState;
     }
 
     private static ExternalComponentState mergeStates(ExternalComponentState oldState,
-            ExternalComponentState newState) {
+                                                      ExternalComponentState newState) {
         return (oldState.compareTo(newState) < 0) ? newState : oldState;
     }
 
@@ -201,7 +207,6 @@
      * this method is called multiple times from the camel route and must be reset
      * for a new global policy state retrieval. The state to compute the global
      * policy state is stored in this class.
-     * 
      */
     @Override
     public ExternalComponentState computeState(Exchange camelExchange) {
diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
index e997b43..77627a3 100644
--- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
+++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
@@ -128,7 +128,9 @@
     public MicroServicePolicy(Loop loop, Service service, LoopElementModel loopElementModel,
                               ToscaConverterWithDictionarySupport toscaConverter) {
         this(Policy.generatePolicyName("MICROSERVICE", service.getName(), service.getVersion(),
-                RandomStringUtils.randomAlphanumeric(3), RandomStringUtils.randomAlphanumeric(3)),
+                loopElementModel.getPolicyModels().first().getPolicyAcronym() + '_'
+                        + loopElementModel.getPolicyModels().first().getVersion(),
+                RandomStringUtils.randomAlphanumeric(3)),
                 loopElementModel.getPolicyModels().first(), false, new JsonObject(), loopElementModel, null, null);
         this.updateJsonRepresentation(toscaConverter, service);
     }
diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
index b5a88b3..18ee84f 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
@@ -123,7 +123,9 @@
     public OperationalPolicy(Loop loop, Service service, LoopElementModel loopElementModel,
                              ToscaConverterWithDictionarySupport toscaConverter) {
         this(Policy.generatePolicyName("OPERATIONAL", service.getName(), service.getVersion(),
-                RandomStringUtils.randomAlphanumeric(3), RandomStringUtils.randomAlphanumeric(3)), new JsonObject(),
+                loopElementModel.getPolicyModels().first().getPolicyAcronym() + '_'
+                        + loopElementModel.getPolicyModels().first().getVersion(),
+                RandomStringUtils.randomAlphanumeric(3)), new JsonObject(),
                 new JsonObject(), loopElementModel.getPolicyModels().first(), loopElementModel, null, null);
         this.setLoop(loop);
         this.updateJsonRepresentation(toscaConverter, service);
@@ -141,7 +143,9 @@
     public OperationalPolicy(Loop loop, Service service, PolicyModel policyModel,
                              ToscaConverterWithDictionarySupport toscaConverter) throws IOException {
         this(Policy.generatePolicyName("OPERATIONAL", service.getName(), service.getVersion(),
-                RandomStringUtils.randomAlphanumeric(3), RandomStringUtils.randomAlphanumeric(3)), new JsonObject(),
+                policyModel.getPolicyAcronym() + '_' + policyModel.getVersion(),
+                RandomStringUtils.randomAlphanumeric(3)),
+                new JsonObject(),
                 new JsonObject(), policyModel, null, null, null);
         this.setLoop(loop);
         this.updateJsonRepresentation(toscaConverter, service);
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index 086cc53..ffa497f 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -1,5 +1,4 @@
-<configuration scan="true" scanPeriod="60 seconds"
-	debug="true">
+<configuration debug="true">
 	<springProperty name="logbackFilePath"
 		source="clamp.config.logback.path" />
 	<springProperty name="logbackFileName"
@@ -17,6 +16,4 @@
 			<include file="${logbackFilePath}/${logbackFileName}" />
 		</else>
 	</if>
-
-
 </configuration>
\ No newline at end of file
diff --git a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
index fc7e1c9..b42ba98 100644
--- a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
+++ b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
@@ -47,7 +47,7 @@
     private Loop createTestLoop() {
         Loop loopTest = new Loop("ControlLoopTest", "<xml></xml>");
         loopTest.setGlobalPropertiesJson(
-                new Gson().fromJson("{\"dcaeDeployParameters\":" + "{\"policy_id\": \"name\"}}", JsonObject.class));
+                new Gson().fromJson("{\"dcaeDeployParameters\":{\"loop template blueprint\": {\"policy_id\": \"name\"}}}", JsonObject.class));
         loopTest.setLastComputedState(LoopState.DESIGN);
         loopTest.setDcaeDeploymentId("123456789");
         loopTest.setDcaeDeploymentStatusUrl("http4://localhost:8085");
diff --git a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
index f1d2992..98134e8 100644
--- a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
+++ b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
@@ -71,7 +71,8 @@
     @Test
     @Transactional
     public void deployWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
-        Loop loopTest = createLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
+        Loop loopTest = createLoop("ControlLoopTest", "<xml></xml>", "yamlcontent",
+                "{\"dcaeDeployParameters\":{\"loop template blueprint\": {\"policy_id\": \"name\"}}}",
                 "UUID-blueprint");
         LoopTemplate template = new LoopTemplate();
         template.setName("templateName");
diff --git a/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java b/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java
index ccaa417..2b3b482 100644
--- a/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java
+++ b/src/test/java/org/onap/clamp/loop/deploy/BlueprintInputParametersTest.java
@@ -27,10 +27,8 @@
 package org.onap.clamp.loop.deploy;
 
 import com.google.gson.JsonObject;
-
 import java.io.IOException;
 import java.util.LinkedHashSet;
-
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
@@ -44,9 +42,15 @@
 
 public class BlueprintInputParametersTest {
 
+    /**
+     * getDeploymentParametersinJsonMultiBlueprintsTest.
+     *
+     * @throws IOException             in case of failure
+     * @throws SdcToscaParserException in case of failure
+     */
     @Test
     public void getDeploymentParametersinJsonMultiBlueprintsTest() throws IOException, SdcToscaParserException {
-        Loop loop = Mockito.mock(Loop.class);
+
 
         MicroServicePolicy umService1 = Mockito.mock(MicroServicePolicy.class);
         Mockito.when(umService1.getName()).thenReturn("testName1");
@@ -72,10 +76,11 @@
         Mockito.when(loopElement3.getBlueprint()).thenReturn(blueprint3);
         Mockito.when(umService3.getLoopElementModel()).thenReturn(loopElement3);
 
-        LinkedHashSet<MicroServicePolicy> umServiceSet = new LinkedHashSet<MicroServicePolicy>();
+        LinkedHashSet<MicroServicePolicy> umServiceSet = new LinkedHashSet<>();
         umServiceSet.add(umService1);
         umServiceSet.add(umService2);
         umServiceSet.add(umService3);
+        Loop loop = Mockito.mock(Loop.class);
         Mockito.when(loop.getMicroServicePolicies()).thenReturn(umServiceSet);
 
         LoopTemplate template = Mockito.mock(LoopTemplate.class);
@@ -85,9 +90,16 @@
         JsonObject paramJson = DcaeDeployParameters.getDcaeDeploymentParametersInJson(loop);
 
         Assert.assertEquals(JsonUtils.GSON_JPA_MODEL.toJson(paramJson),
-            ResourceFileUtil.getResourceAsString("example/sdc/expected-result/deployment-parameters-multi-blueprints.json"));
+                ResourceFileUtil.getResourceAsString(
+                        "example/sdc/expected-result/deployment-parameters-multi-blueprints.json"));
     }
 
+    /**
+     * getDeploymentParametersInJsonSingleBlueprintTest.
+     *
+     * @throws IOException In case of failure
+     * @throws SdcToscaParserException In case of failure
+     */
     @Test
     public void getDeploymentParametersInJsonSingleBlueprintTest() throws IOException, SdcToscaParserException {
         Loop loop = Mockito.mock(Loop.class);
@@ -107,6 +119,7 @@
         JsonObject paramJson = DcaeDeployParameters.getDcaeDeploymentParametersInJson(loop);
 
         Assert.assertEquals(JsonUtils.GSON_JPA_MODEL.toJson(paramJson),
-            ResourceFileUtil.getResourceAsString("example/sdc/expected-result/deployment-parameters-single-blueprint.json"));
+                ResourceFileUtil.getResourceAsString(
+                        "example/sdc/expected-result/deployment-parameters-single-blueprint.json"));
     }
 }
diff --git a/ui-react/src/components/dialogs/Loop/DeployLoopModal.js b/ui-react/src/components/dialogs/Loop/DeployLoopModal.js
index 6468e9f..d034ee5 100644
--- a/ui-react/src/components/dialogs/Loop/DeployLoopModal.js
+++ b/ui-react/src/components/dialogs/Loop/DeployLoopModal.js
@@ -75,14 +75,14 @@
 	}
 
 	handleClose(){
+		this.setState({ show: false });
 		this.props.history.push('/');
 	}
+
 	handleSave() {
 		const loopName = this.props.loopCache.getLoopName();
 		// save the global propserties
 		LoopService.updateGlobalProperties(loopName, this.state.temporaryPropertiesJson).then(resp => {
-			this.setState({ show: false });
-
 			LoopActionService.performAction(loopName, "deploy").then(pars => {
 				this.props.showAlert("Action deploy successfully performed");
 				// refresh status and update loop logs
@@ -94,16 +94,16 @@
 				this.refreshStatus(loopName);
 			});
 		});
+		this.setState({ show: false });
+		this.props.history.push('/');
 	}
 
 	refreshStatus(loopName) {
 		LoopActionService.refreshStatus(loopName).then(data => {
 			this.props.updateLoopFunction(data);
-			this.props.history.push('/');
 		})
 		.catch(error => {
 			this.props.showAlert("Refresh status failed");
-			this.props.history.push('/');
 		});
 	}
 	handleChange(event) {