AT&T 1712 and 1802 release code
[so.git] / bpmn / MSOCommonBPMN / src / test / java / org / openecomp / mso / bpmn / common / WorkflowTest.java
index df15a2a..9b8a249 100644 (file)
@@ -22,6 +22,8 @@ package org.openecomp.mso.bpmn.common;
 \r
 import static org.junit.Assert.assertEquals;\r
 import static org.junit.Assert.fail;\r
+import static org.openecomp.mso.bpmn.core.json.JsonUtils.getJsonValue;\r
+import static org.openecomp.mso.bpmn.core.json.JsonUtils.updJsonValue;\r
 \r
 import java.io.IOException;\r
 import java.io.StringReader;\r
@@ -30,8 +32,6 @@ import java.lang.management.RuntimeMXBean;
 import java.lang.reflect.Field;\r
 import java.lang.reflect.Modifier;\r
 import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.Comparator;\r
 import java.util.HashMap;\r
 import java.util.Iterator;\r
 import java.util.List;\r
@@ -61,6 +61,7 @@ import org.custommonkey.xmlunit.DetailedDiff;
 import org.custommonkey.xmlunit.XMLUnit;\r
 import org.jboss.resteasy.spi.AsynchronousResponse;\r
 import org.json.JSONArray;\r
+import org.json.JSONObject;\r
 import org.junit.Before;\r
 import org.junit.Rule;\r
 import org.openecomp.mso.bpmn.common.adapter.sdnc.CallbackHeader;\r
@@ -77,12 +78,10 @@ import org.openecomp.mso.bpmn.common.workflow.service.VnfAdapterNotifyServiceImp
 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;\r
 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowMessageResource;\r
 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;\r
-import org.openecomp.mso.bpmn.core.utils.CamundaDBSetup;\r
 import org.openecomp.mso.bpmn.core.PropertyConfigurationSetup;\r
 import org.openecomp.mso.bpmn.core.domain.Resource;\r
 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;\r
-\r
-import static org.openecomp.mso.bpmn.core.json.JsonUtils.*;\r
+import org.openecomp.mso.bpmn.core.utils.CamundaDBSetup;\r
 import org.w3c.dom.Document;\r
 import org.w3c.dom.Element;\r
 import org.w3c.dom.Node;\r
@@ -133,8 +132,7 @@ public class WorkflowTest {
                List<ResponseTransformer> transformerList = new ArrayList<ResponseTransformer>();\r
 \r
                for (Field field : getClass().getFields()) {\r
-                       WorkflowTestTransformer annotation = (WorkflowTestTransformer)\r
-                               field.getAnnotation(WorkflowTestTransformer.class);\r
+                       WorkflowTestTransformer annotation = field.getAnnotation(WorkflowTestTransformer.class);\r
 \r
                        if (annotation == null) {\r
                                continue;\r
@@ -327,7 +325,7 @@ public class WorkflowTest {
                        String businessKey, String request, Map<String, Object> injectedVariables,\r
                        boolean serviceInstantiationModel) {\r
 \r
-               Map<String, Object> variables = new HashMap<String, Object>();\r
+               Map<String, Object> variables = new HashMap<>();\r
 \r
                // These variables may be overridded by injected variables.\r
                variables.put("mso-service-request-timeout", "180");\r
@@ -422,7 +420,7 @@ public class WorkflowTest {
         * @return a VariableMap\r
         */\r
        private VariableMapImpl createVariableMapImpl(Map<String, Object> variables) {\r
-               Map<String, Object> wrappedVariables = new HashMap<String, Object>();\r
+               Map<String, Object> wrappedVariables = new HashMap<>();\r
 \r
                for (String key : variables.keySet()) {\r
                        Object value = variables.get(key);\r
@@ -441,7 +439,7 @@ public class WorkflowTest {
         * @return the wrapped variable\r
         */\r
        private Map<String, Object> wrapVariableValue(Object value) {\r
-               HashMap<String, Object> valueMap = new HashMap<String, Object>();\r
+               HashMap<String, Object> valueMap = new HashMap<>();\r
                valueMap.put("value", value);\r
                return valueMap;\r
        }\r
@@ -1502,17 +1500,72 @@ public class WorkflowTest {
                                        for(Resource resource:resourceList){\r
                                                resourceId = resource.getResourceId();\r
                                        }\r
+                                       //TODO.. most other locations refer to solutionInfo.placementInfo \r
                                        String homingList = getJsonValue(content, "solutionInfo.placement");\r
-                                       JSONArray placementArr = new JSONArray(homingList);\r
+                                       JSONArray placementArr = null;\r
+                                       try {\r
+                                               placementArr = new JSONArray(homingList);\r
+                                       }\r
+                                       catch (Exception e) {\r
+                                               return false;\r
+                                       }\r
                                        if(placementArr.length() == 1){\r
                                                content = content.replace("((SERVICE_RESOURCE_ID))", resourceId);\r
                                        }\r
                                        String licenseInfoList = getJsonValue(content, "solutionInfo.licenseInfo");\r
-                                       JSONArray licenseArr = new JSONArray(licenseInfoList);\r
+                                       JSONArray licenseArr = null;\r
+                                       try {\r
+                                               licenseArr = new JSONArray(licenseInfoList);\r
+                                       }\r
+                                       catch (Exception e) {\r
+                                               return false;\r
+                                       }\r
                                        if(licenseArr.length() == 1){\r
                                                content = content.replace("((SERVICE_RESOURCE_ID))", resourceId);\r
                                        }\r
                                }\r
+                               else {\r
+                                       try {\r
+                                               String homingList = getJsonValue(content, "solutionInfo.placementInfo");\r
+                                               String licenseInfoList = getJsonValue(content, "solutionInfo.licenseInfo");\r
+                                               JSONArray placementArr = new JSONArray(homingList);\r
+                                               JSONArray licenseArr = new JSONArray(licenseInfoList);\r
+                                               for (Resource resource: resourceList) {\r
+                                                       String resourceModuleName = resource.getModelInfo().getModelInstanceName();\r
+                                                       String resourceId = resource.getResourceId();\r
+\r
+                                                       for (int i=0; i<placementArr.length(); i++) {\r
+                                                               JSONObject placementObj = placementArr.getJSONObject(i);\r
+                                                               String placementModuleName = placementObj.getString("resourceModuleName");\r
+                                                               if (placementModuleName.equalsIgnoreCase(resourceModuleName)) {\r
+                                                                       String placementString = placementObj.toString();\r
+                                                                       placementString = placementString.replace("((SERVICE_RESOURCE_ID))", resourceId);\r
+                                                                       JSONObject newPlacementObj = new JSONObject(placementString);\r
+                                                                       placementArr.put(i, newPlacementObj);\r
+                                                               }\r
+                                                       }\r
+                                                       \r
+                                                       for (int i=0; i<licenseArr.length(); i++) {\r
+                                                               JSONObject licenseObj = licenseArr.getJSONObject(i);\r
+                                                               String licenseModuleName = licenseObj.getString("resourceModuleName");\r
+                                                               if (licenseModuleName.equalsIgnoreCase(resourceModuleName)) {\r
+                                                                       String licenseString = licenseObj.toString();\r
+                                                                       licenseString = licenseString.replace("((SERVICE_RESOURCE_ID))", resourceId);\r
+                                                                       JSONObject newLicenseObj = new JSONObject(licenseString);\r
+                                                                       licenseArr.put(i, newLicenseObj);\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                               String newPlacementInfos = placementArr.toString();\r
+                                               String newLicenseInfos = licenseArr.toString();\r
+                                               content = updJsonValue(content, "solutionInfo.placementInfo", newPlacementInfos);\r
+                                               content = updJsonValue(content, "solutionInfo.licenseInfo", newLicenseInfos);\r
+                                       }\r
+                                       catch(Exception e) {\r
+                                               return false;\r
+                                       }\r
+                                       \r
+                               }\r
                        }\r
                }\r
                System.out.println("Injecting " + messageType + " message");\r
@@ -1634,11 +1687,7 @@ public class WorkflowTest {
                                return null;\r
                        }\r
 \r
-                       processInstanceList.sort(new Comparator<HistoricProcessInstance>() {\r
-                               public int compare(HistoricProcessInstance m1, HistoricProcessInstance m2) {\r
-                                       return m1.getStartTime().compareTo(m2.getStartTime());\r
-                               }\r
-                       });\r
+                       processInstanceList.sort((m1, m2) -> m1.getStartTime().compareTo(m2.getStartTime()));\r
 \r
                        HistoricProcessInstance processInstance = processInstanceList.get(0);\r
 \r
@@ -1672,11 +1721,7 @@ public class WorkflowTest {
                                return null;\r
                        }\r
 \r
-                       processInstanceList.sort(new Comparator<HistoricProcessInstance>() {\r
-                               public int compare(HistoricProcessInstance m1, HistoricProcessInstance m2) {\r
-                                       return m1.getStartTime().compareTo(m2.getStartTime());\r
-                               }\r
-                       });\r
+                       processInstanceList.sort((m1, m2) -> m1.getStartTime().compareTo(m2.getStartTime()));\r
 \r
                        HistoricProcessInstance processInstance = processInstanceList.get(subflowInstanceIndex);\r
 \r
@@ -1784,7 +1829,7 @@ public class WorkflowTest {
         * An object that contains callback data for a "program".\r
         */\r
        public class CallbackSet {\r
-               private final Map<String, CallbackData> map = new HashMap<String, CallbackData>();\r
+               private final Map<String, CallbackData> map = new HashMap<>();\r
 \r
                /**\r
                 * Add untyped callback data to the set.\r
@@ -1837,7 +1882,7 @@ public class WorkflowTest {
                /**\r
                 * Constructor\r
                 * @param contentType the HTTP content type (optional)\r
-                * @param type the callback message type (optional)\r
+                * @param messageType the callback message type (optional)\r
                 * @param content the content\r
                 */\r
                public CallbackData(String contentType, String messageType, String content) {\r
@@ -1983,8 +2028,8 @@ public class WorkflowTest {
         * A NamespaceContext class based on a Map.\r
         */\r
        private class SimpleNamespaceContext implements NamespaceContext {\r
-               private Map<String, String> prefixMap = new HashMap<String, String>();\r
-               private Map<String, String> uriMap = new HashMap<String, String>();\r
+               private Map<String, String> prefixMap = new HashMap<>();\r
+               private Map<String, String> uriMap = new HashMap<>();\r
 \r
                public synchronized void add(String prefix, String uri) {\r
                        prefixMap.put(prefix, uri);\r
@@ -1998,7 +2043,7 @@ public class WorkflowTest {
 \r
                @Override\r
                public Iterator<String> getPrefixes(String uri) {\r
-                       List<String> list = new ArrayList<String>();\r
+                       List<String> list = new ArrayList<>();\r
                        String prefix = uriMap.get(uri);\r
                        if (prefix != null) {\r
                                list.add(prefix);\r