Add Holmes to the Backend 61/11061/1
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Fri, 8 Sep 2017 10:14:08 +0000 (12:14 +0200)
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Fri, 8 Sep 2017 10:14:08 +0000 (12:14 +0200)
Add support for Holmes boxes defined in GUI, Holmes model has been added
and also policy calls.

Change-Id: I2bbef0030b5174075792b459b7ced74aa2e8aad2
Issue-Id: CLAMP-27
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
17 files changed:
src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/prop/Holmes.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java
src/main/java/org/onap/clamp/clds/model/prop/ModelElement.java
src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
src/main/java/org/onap/clamp/clds/model/prop/Policy.java
src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java
src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java
src/main/java/org/onap/clamp/clds/model/prop/Tca.java
src/main/java/org/onap/clamp/clds/transform/XslTransformer.java
src/main/resources/bpmn/clds-process-action.bpmn
src/main/resources/xsl/clds-bpmn-transformer.xsl
src/test/java/org/onap/clamp/clds/transform/XslTransformerTest.java [new file with mode: 0644]
src/test/resources/example/modelBpmn.xml [deleted file]
src/test/resources/example/xsl-validation/modelBpmn.xml [new file with mode: 0644]
src/test/resources/example/xsl-validation/modelBpmnForVerif.json [new file with mode: 0644]

diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
new file mode 100644 (file)
index 0000000..db7b524
--- /dev/null
@@ -0,0 +1,72 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T 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.
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.client;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.onap.clamp.clds.model.prop.Holmes;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.model.refprop.RefProp;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Send Holmes info to policy api.
+ */
+public class HolmesPolicyDelegate implements JavaDelegate {
+    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(HolmesPolicyDelegate.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+    @Autowired
+    private PolicyClient              policyClient;
+
+    @Autowired
+    private RefProp                   refProp;
+
+    /**
+     * Perform activity. Send Holmes info to policy api.
+     *
+     * @param execution
+     */
+    @Override
+    public void execute(DelegateExecution execution) throws Exception {
+        String holmesPolicyRequestUuid = UUID.randomUUID().toString();
+        execution.setVariable("holmesPolicyRequestUuid", holmesPolicyRequestUuid);
+
+        ModelProperties prop = ModelProperties.create(execution);
+        Holmes holmes = prop.getType(Holmes.class);
+        if (holmes.isFound()) {
+            String responseMessage = policyClient.sendMicroServiceInJson(holmes.getCorrelationLogic(), prop,
+                    holmesPolicyRequestUuid);
+            if (responseMessage != null) {
+                execution.setVariable("holmesPolicyResponseMessage", responseMessage.getBytes());
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java
new file mode 100644 (file)
index 0000000..46b33ff
--- /dev/null
@@ -0,0 +1,62 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T 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.
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.client;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.onap.clamp.clds.model.prop.Holmes;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Delete Holmes Policy via policy api.
+ */
+public class HolmesPolicyDeleteDelegate implements JavaDelegate {
+    protected static final EELFLogger logger        = EELFManager.getInstance()
+            .getLogger(HolmesPolicyDeleteDelegate.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+    @Autowired
+    private PolicyClient              policyClient;
+
+    /**
+     * Perform activity. Delete Holmes Policy via policy api.
+     *
+     * @param execution
+     */
+    @Override
+    public void execute(DelegateExecution execution) throws Exception {
+        ModelProperties prop = ModelProperties.create(execution);
+        Holmes holmes = prop.getType(Holmes.class);
+        if (holmes.isFound()) {
+            prop.setCurrentModelElementId(holmes.getId());
+
+            policyClient.deleteMicrosService(prop);
+        }
+    }
+
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Holmes.java b/src/main/java/org/onap/clamp/clds/model/prop/Holmes.java
new file mode 100644 (file)
index 0000000..233f656
--- /dev/null
@@ -0,0 +1,71 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T 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.
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.model.prop;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Parse Holmes bpmn parameters json properties.
+ * <p>
+ * Example json:
+ * [{"name":"correlationalLogic","value":"vcwx"},{"name":"operationalPolicy","value":"cccc"}]
+ *
+ */
+public class Holmes extends ModelElement {
+
+    private static final String TYPE_HOLMES = "holmes";
+
+    private String              correlationLogic;
+
+    private String              operationalPolicy;
+
+    /**
+     * Default constructor for Holmes Element
+     * 
+     * @param modelProp
+     *            The ModelProperties containing the all the info, like bpmn,
+     *            bpmn params, etc ...
+     * @param modelBpmn
+     * @param modelJson
+     */
+    public Holmes(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) {
+        super(TYPE_HOLMES, modelProp, modelBpmn, modelJson);
+
+        correlationLogic = this.getValueByName("correlationalLogic");
+        operationalPolicy = this.getValueByName("operationalPolicy");
+    }
+
+    public static final String getType() {
+        return TYPE_HOLMES;
+    }
+
+    public String getCorrelationLogic() {
+        return correlationLogic;
+    }
+
+    public String getOperationalPolicy() {
+        return operationalPolicy;
+    }
+
+}
index 63a0305..ae7028d 100644 (file)
 
 package org.onap.clamp.clds.model.prop;
 
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -33,15 +42,6 @@ import java.util.Map.Entry;
 
 import org.onap.clamp.clds.service.CldsService;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
 /**
  * Parse Model BPMN properties.
  * <p>
@@ -50,9 +50,9 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
  * :[{"id":"Policy_0oxeocn", "from":"StringMatch_0h6cbdv"}]}
  */
 public class ModelBpmn {
-    protected static final EELFLogger                       logger        = EELFManager.getInstance()
+    protected static final EELFLogger               logger        = EELFManager.getInstance()
             .getLogger(CldsService.class);
-    protected static final EELFLogger                 auditLogger   = EELFManager.getInstance().getAuditLogger();
+    protected static final EELFLogger               auditLogger   = EELFManager.getInstance().getAuditLogger();
 
     // for each type, an array of entries
     private final Map<String, List<ModelBpmnEntry>> entriesByType = new HashMap<>();
@@ -123,12 +123,14 @@ public class ModelBpmn {
     }
 
     /**
-     *
+     * This method verifies if the ModelElement Type (collector, holmes, tca,
+     * ...) is in the list.
      *
      * @param type
+     *            A model Element type (tca, collector, ...)
      * @return true if the element is found or false otherwise
      */
-    public boolean getModelElementFound(String type) {
+    public boolean isModelElementTypeInList(String type) {
         return entriesByType.get(type) != null;
     }
 
index 42d11f4..edf1142 100644 (file)
@@ -32,20 +32,19 @@ import java.util.Iterator;
 import java.util.List;
 
 /**
- * Provide base ModelElement functionality.
+ * Provide base ModelElement functionality. Perform base parsing of properties
+ * for a ModelElement (such as, Collector, StringMatch, Policy, Tca, Holmes,
+ * ...)
  */
 public abstract class ModelElement {
     protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(ModelElement.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    public static final String        TYPE_POLICY = "policy";
-    public static final String        TYPE_TCA    = "tca";
-
     private final String              type;
     private final ModelBpmn           modelBpmn;
     private final String              id;
     protected String                  topicPublishes;
-    protected final JsonNode          meNode;
+    protected final JsonNode          modelElementJsonNode;
     private boolean                   isFound;
 
     private final ModelProperties     modelProp;
@@ -64,12 +63,13 @@ public abstract class ModelElement {
         this.modelProp = modelProp;
         this.modelBpmn = modelBpmn;
         this.id = modelBpmn.getId(type);
-        this.meNode = modelJson.get(id);
-        this.isFound = modelBpmn.getModelElementFound(type);
+        this.modelElementJsonNode = modelJson.get(id);
+        this.isFound = modelBpmn.isModelElementTypeInList(type);
     }
 
     /**
-     * topicSubscribes is the topicPublishes of the from Model Element
+     * topicSubscribes is the topicPublishes of the from Model Element (the
+     * previous one in the chain).
      *
      * @return the topicSubscribes
      */
@@ -159,16 +159,14 @@ public abstract class ModelElement {
             while (i.hasNext()) {
                 JsonNode node = i.next();
                 if (node.path("name").asText().equals(name)) {
-                    String value;
                     JsonNode vnode = node.path("value");
                     if (vnode.isArray()) {
                         // if array, assume value is in first element
-                        value = vnode.path(0).asText();
+                        values.add(vnode.path(0).asText());
                     } else {
                         // otherwise, just return text
-                        value = vnode.asText();
+                        values.add(vnode.asText());
                     }
-                    values.add(value);
                 }
             }
         }
@@ -241,7 +239,7 @@ public abstract class ModelElement {
      * @return
      */
     public String getValueByName(String name) {
-        return getValueByName(meNode, name);
+        return getValueByName(modelElementJsonNode, name);
     }
 
     /**
@@ -252,7 +250,7 @@ public abstract class ModelElement {
      * @return
      */
     public Integer getIntValueByName(String name) {
-        return getIntValueByName(meNode, name);
+        return getIntValueByName(modelElementJsonNode, name);
     }
 
     /**
@@ -263,7 +261,7 @@ public abstract class ModelElement {
      * @return
      */
     public List<String> getValuesByName(String name) {
-        return getValuesByName(meNode, name);
+        return getValuesByName(modelElementJsonNode, name);
     }
 
     /**
index 1cfd461..9684eea 100644 (file)
 
 package org.onap.clamp.clds.model.prop;
 
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.util.HashSet;
@@ -36,19 +42,13 @@ import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.CldsModel;
 import org.onap.clamp.clds.service.CldsService;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 /**
  * Parse model properties.
  */
 public class ModelProperties {
-    protected static final EELFLogger                                 logger              = EELFManager.getInstance()
+    protected static final EELFLogger                         logger              = EELFManager.getInstance()
             .getLogger(CldsService.class);
-    protected static final EELFLogger                           auditLogger         = EELFManager.getInstance()
+    protected static final EELFLogger                         auditLogger         = EELFManager.getInstance()
             .getAuditLogger();
 
     private ModelBpmn                                         modelBpmn;
@@ -58,10 +58,9 @@ public class ModelProperties {
     private final String                                      controlName;
     private final String                                      actionCd;
     // Flag indicate whether it is triggered by Validation Test button from UI
-    private final boolean                                                                        isTest;
+    private final boolean                                     isTest;
 
     private Global                                            global;
-    private Tca                                               tca;
 
     private final Map<String, ModelElement>                   modelElements       = new ConcurrentHashMap<>();
 
@@ -93,8 +92,8 @@ public class ModelProperties {
      * @throws JsonProcessingException
      * @throws IOException
      */
-    public ModelProperties(String modelName, String controlName, String actionCd, boolean isTest, String modelBpmnPropText,
-            String modelPropText) throws IOException {
+    public ModelProperties(String modelName, String controlName, String actionCd, boolean isTest,
+            String modelBpmnPropText, String modelPropText) throws IOException {
         this.modelName = modelName;
         this.controlName = controlName;
         this.actionCd = actionCd;
@@ -150,7 +149,7 @@ public class ModelProperties {
             Global global = new Global(modelJson);
             vfs = global.getResourceVf();
         } catch (IOException e) {
-            // VF is null
+            logger.warn("no VF found", e);
         }
         String vf = null;
         if (vfs != null && !vfs.isEmpty()) {
@@ -168,13 +167,12 @@ public class ModelProperties {
      * @throws IOException
      */
     public static ModelProperties create(DelegateExecution execution) throws IOException {
-        // String modelProp = (String) execution.getVariable("modelProp");
         String modelProp = new String((byte[]) execution.getVariable("modelProp"));
         String modelBpmnProp = (String) execution.getVariable("modelBpmnProp");
         String modelName = (String) execution.getVariable("modelName");
         String controlName = (String) execution.getVariable("controlName");
         String actionCd = (String) execution.getVariable("actionCd");
-        boolean isTest = (boolean)execution.getVariable("isTest");
+        boolean isTest = (boolean) execution.getVariable("isTest");
 
         return new ModelProperties(modelName, controlName, actionCd, isTest, modelBpmnProp, modelProp);
     }
@@ -303,12 +301,12 @@ public class ModelProperties {
         return actionCd;
     }
 
-       /**
-        * @return the isTest
-        */
-       public boolean isTest() {
-               return isTest;
-       }
+    /**
+     * @return the isTest
+     */
+    public boolean isTest() {
+        return isTest;
+    }
 
     /**
      * @return the isCreateRequest
@@ -352,14 +350,4 @@ public class ModelProperties {
         String type = modelElementClasses.get(clazz);
         return (type != null ? (T) modelElements.get(type) : null);
     }
-
-    /**
-     * @return the tca
-     */
-    public Tca getTca() {
-        if (tca == null) {
-            tca = new Tca(this, modelBpmn, modelJson);
-        }
-        return tca;
-    }
 }
index 6673af2..452af20 100644 (file)
 
 package org.onap.clamp.clds.model.prop;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * Parse Policy json properties.
  * <p>
@@ -49,12 +49,12 @@ import com.fasterxml.jackson.databind.JsonNode;
  * "vf3RtPi"]}]]}]
  */
 public class Policy extends ModelElement {
-    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(Policy.class);
+    protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(Policy.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private List<PolicyChain>       policyChains;
+    private List<PolicyChain>         policyChains;
 
-    private static final String     TYPE_POLICY = "policy";
+    private static final String       TYPE_POLICY = "policy";
 
     /**
      * Parse Policy given json node.
@@ -64,12 +64,12 @@ public class Policy extends ModelElement {
      * @param modelJson
      */
     public Policy(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) {
-        super(ModelElement.TYPE_POLICY, modelProp, modelBpmn, modelJson);
+        super(TYPE_POLICY, modelProp, modelBpmn, modelJson);
 
         // process policies
-        if (meNode != null) {
-            Iterator<JsonNode> itr = meNode.elements();
-            policyChains = new ArrayList<PolicyChain>();
+        if (modelElementJsonNode != null) {
+            Iterator<JsonNode> itr = modelElementJsonNode.elements();
+            policyChains = new ArrayList<>();
             while (itr.hasNext()) {
                 policyChains.add(new PolicyChain(itr.next()));
             }
index de98333..6e986bb 100644 (file)
 
 package org.onap.clamp.clds.model.prop;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * Parse Resource Group json properties.
  *
@@ -63,8 +63,8 @@ import com.fasterxml.jackson.databind.JsonNode;
  */
 public class ResourceGroup {
 
-    protected static final EELFLogger          logger      = EELFManager.getInstance().getLogger(ResourceGroup.class);
-    protected static final EELFLogger    auditLogger = EELFManager.getInstance().getAuditLogger();
+    protected static final EELFLogger  logger      = EELFManager.getInstance().getLogger(ResourceGroup.class);
+    protected static final EELFLogger  auditLogger = EELFManager.getInstance().getAuditLogger();
 
     private String                     groupNumber;
     private String                     policyId;
@@ -84,7 +84,7 @@ public class ResourceGroup {
         // process Server_Configurations
         JsonNode serviceConfigurationsNode = node.get(node.size() - 1).get("serviceConfigurations");
         Iterator<JsonNode> itr = serviceConfigurationsNode.elements();
-        serviceConfigurations = new ArrayList<ServiceConfiguration>();
+        serviceConfigurations = new ArrayList<>();
         while (itr.hasNext()) {
             serviceConfigurations.add(new ServiceConfiguration(itr.next()));
         }
index b20db0a..7fcc1b1 100644 (file)
 
 package org.onap.clamp.clds.model.prop;
 
+import com.fasterxml.jackson.databind.JsonNode;
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.databind.JsonNode;
-
 /**
  * Parse StringMatch json properties.
  * <p>
@@ -62,12 +60,10 @@ import com.fasterxml.jackson.databind.JsonNode;
  *
  */
 public class StringMatch extends ModelElement {
-    protected static final EELFLogger       logger            = EELFManager.getInstance().getLogger(StringMatch.class);
-    protected static final EELFLogger auditLogger       = EELFManager.getInstance().getAuditLogger();
 
-    private List<ResourceGroup>     resourceGroups;
+    private List<ResourceGroup> resourceGroups;
 
-    private static final String     TYPE_STRING_MATCH = "stringMatch";
+    private static final String TYPE_STRING_MATCH = "stringMatch";
 
     /**
      * Parse StringMatch given json node.
@@ -79,9 +75,9 @@ public class StringMatch extends ModelElement {
         super(TYPE_STRING_MATCH, modelProp, modelBpmn, modelJson);
 
         // process Server_Configurations
-        if (meNode != null) {
-            Iterator<JsonNode> itr = meNode.elements();
-            resourceGroups = new ArrayList<ResourceGroup>();
+        if (modelElementJsonNode != null) {
+            Iterator<JsonNode> itr = modelElementJsonNode.elements();
+            resourceGroups = new ArrayList<>();
             while (itr.hasNext()) {
                 resourceGroups.add(new ResourceGroup(itr.next()));
             }
index b94f523..6bc68e2 100644 (file)
 
 package org.onap.clamp.clds.model.prop;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * Parse Tca json properties.
  *
@@ -50,12 +50,12 @@ import com.fasterxml.jackson.databind.JsonNode;
  */
 public class Tca extends ModelElement {
 
-    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(Tca.class);
+    protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(Tca.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private List<TcaItem>           tcaItems;
+    private List<TcaItem>             tcaItems;
 
-    private static final String     TYPE_TCA    = "tca";
+    private static final String       TYPE_TCA    = "tca";
 
     /**
      * Parse Tca given json node
@@ -68,9 +68,9 @@ public class Tca extends ModelElement {
         super(TYPE_TCA, modelProp, modelBpmn, modelJson);
 
         // process Server_Configurations
-        if (meNode != null) {
-            Iterator<JsonNode> itr = meNode.elements();
-            tcaItems = new ArrayList<TcaItem>();
+        if (modelElementJsonNode != null) {
+            Iterator<JsonNode> itr = modelElementJsonNode.elements();
+            tcaItems = new ArrayList<>();
             while (itr.hasNext()) {
                 tcaItems.add(new TcaItem(itr.next()));
             }
index d15f67c..684bae3 100644 (file)
@@ -34,6 +34,8 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 
+import org.onap.clamp.clds.util.ResourceFileUtil;
+
 /**
  * XSL Transformer.
  */
@@ -43,7 +45,7 @@ public class XslTransformer {
 
     public void setXslResourceName(String xslResourceName) throws TransformerConfigurationException {
         TransformerFactory tfactory = TransformerFactory.newInstance();
-        templates = tfactory.newTemplates(new StreamSource(TransformUtil.getResourceAsStream(xslResourceName)));
+        templates = tfactory.newTemplates(new StreamSource(ResourceFileUtil.getResourceAsStream(xslResourceName)));
     }
 
     /**
@@ -53,7 +55,7 @@ public class XslTransformer {
      * @throws TransformerException
      */
     public String doXslTransformToString(String xml) throws TransformerException {
-        StringWriter output = new StringWriter(4000);
+        StringWriter output = new StringWriter(4096);
 
         Transformer transformer = templates.newTransformer();
         transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(output));
index d9f8619..7801624 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_-A31MBMpEea185sFktMJ7Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_-A31MBMpEea185sFktMJ7Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:collaboration id="_Collaboration_2">
     <bpmn2:participant id="_Participant_2" name="Process Action" processRef="clds-process-action-wf" />
   </bpmn2:collaboration>
         <bpmn2:flowNodeRef>sendOpPolicyReqDistribute</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>StartEvent_1</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>ServiceTask_0x8ypxf</bpmn2:flowNodeRef>
-        <bpmn2:flowNodeRef>sendStringMatchingReqDistribute</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendTcaReqDistribute</bpmn2:flowNodeRef>
+        <bpmn2:flowNodeRef>sendStringMatchingReqDistribute</bpmn2:flowNodeRef>
+        <bpmn2:flowNodeRef>sendHolmesReqDistribute</bpmn2:flowNodeRef>
       </bpmn2:lane>
       <bpmn2:lane id="Lane_5" name="Delete">
         <bpmn2:flowNodeRef>sendStringMatchingReqDelete</bpmn2:flowNodeRef>
-        <bpmn2:flowNodeRef>sendOpPolicyReqDelete</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendTcaReqDelete</bpmn2:flowNodeRef>
+        <bpmn2:flowNodeRef>sendOpPolicyReqDelete</bpmn2:flowNodeRef>
+        <bpmn2:flowNodeRef>sendHolmesReqDelete</bpmn2:flowNodeRef>
       </bpmn2:lane>
       <bpmn2:lane id="Lane_4" name="Update">
         <bpmn2:flowNodeRef>sendOpPolicyReqUpdate</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendStringMatchingReqUpdate</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendTcaReqUpdate</bpmn2:flowNodeRef>
+        <bpmn2:flowNodeRef>sendHolmesReqUpdate</bpmn2:flowNodeRef>
       </bpmn2:lane>
       <bpmn2:lane id="Lane_6" name="Stop">
         <bpmn2:flowNodeRef>sendOpPolicyReqStop</bpmn2:flowNodeRef>
-        <bpmn2:flowNodeRef>ServiceTask_0d5zgbw</bpmn2:flowNodeRef>
       </bpmn2:lane>
       <bpmn2:lane id="Lane_7" name="Restart">
         <bpmn2:flowNodeRef>sendOpPolicyReqRestart</bpmn2:flowNodeRef>
-        <bpmn2:flowNodeRef>ServiceTask_04d5jlr</bpmn2:flowNodeRef>
       </bpmn2:lane>
     </bpmn2:laneSet>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_2">
       <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ExclusiveGateway_3" targetRef="insEvent" />
-    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="sendStringMatchingReqDistribute" targetRef="sendTcaReqDistribute" />
     <bpmn2:serviceTask id="sendOpPolicyReqDistribute" name="Send Operation Policy Request [Submit]" camunda:delegateExpression="${operationalPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_1rga27p</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1tu9g11</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="sendOpPolicyReqDistribute" targetRef="ExclusiveGateway_3" />
     <bpmn2:serviceTask id="sendOpPolicyReqUpdate" name="Send Operation Policy Request [Update]" camunda:delegateExpression="${operationalPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_1kegg6u</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0ejpmee</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="sendStringMatchingReqUpdate" targetRef="sendTcaReqUpdate" />
     <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ExclusiveGateway_2" targetRef="sendStringMatchingReqUpdate">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'UPDATE' }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="sendOpPolicyReqUpdate" targetRef="ExclusiveGateway_3" />
     <bpmn2:serviceTask id="sendOpPolicyReqStop" name="Send Operation Policy Request [Stop]" camunda:delegateExpression="${operationalPolicyDeleteDelegate}">
-      <bpmn2:incoming>SequenceFlow_17snsdc</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="ExclusiveGateway_2" targetRef="ServiceTask_0d5zgbw">
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="ExclusiveGateway_2" targetRef="sendOpPolicyReqStop">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'STOP' }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_30" name="" sourceRef="sendOpPolicyReqStop" targetRef="ExclusiveGateway_3" />
     <bpmn2:serviceTask id="sendOpPolicyReqRestart" name="Send Operation Policy Request [Restart]" camunda:delegateExpression="${operationalPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_188n2z7</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_31</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_31" name="" sourceRef="ExclusiveGateway_2" targetRef="ServiceTask_04d5jlr">
+    <bpmn2:sequenceFlow id="SequenceFlow_31" name="" sourceRef="ExclusiveGateway_2" targetRef="sendOpPolicyReqRestart">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'RESTART' }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="sendOpPolicyReqRestart" targetRef="ExclusiveGateway_3" />
       <bpmn2:incoming>SequenceFlow_1xlfq66</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0w39hon</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_188n2z7" sourceRef="ServiceTask_04d5jlr" targetRef="sendOpPolicyReqRestart" />
-    <bpmn2:serviceTask id="ServiceTask_04d5jlr" name="Send HighlandPark  Service request to Policy[Restart]" camunda:delegateExpression="${highlandParkPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_31</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_188n2z7</bpmn2:outgoing>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rga27p" sourceRef="sendTcaReqDistribute" targetRef="sendHolmesReqDistribute" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0tpegxf" sourceRef="sendTcaReqDelete" targetRef="sendHolmesReqDelete" />
+    <bpmn2:serviceTask id="sendTcaReqDelete" name="Send Tca Micro Service request to Policy [Delete]" camunda:delegateExpression="${tcaPolicyDeleteDelegate}">
+      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0tpegxf</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_17snsdc" sourceRef="ServiceTask_0d5zgbw" targetRef="sendOpPolicyReqStop" />
-    <bpmn2:serviceTask id="ServiceTask_0d5zgbw" name="Send HighlandPark  Service request to Policy[Stop]" camunda:delegateExpression="${highlandParkPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_17snsdc</bpmn2:outgoing>
+    <bpmn2:sequenceFlow id="SequenceFlow_1kegg6u" sourceRef="sendTcaReqUpdate" targetRef="sendHolmesReqUpdate" />
+    <bpmn2:serviceTask id="sendTcaReqDistribute" name="Send Tca Micro Service request to Policy [Submit]" camunda:delegateExpression="${tcaPolicyDelegate}">
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1rga27p</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:serviceTask id="sendStringMatchingReqDistribute" name="Send String Match Micro Service request to Policy [Submit]" camunda:delegateExpression="${stringMatchPolicyDelegate}">
       <bpmn2:incoming>SequenceFlow_0w39hon</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1rga27p" sourceRef="sendTcaReqDistribute" targetRef="sendOpPolicyReqDistribute" />
-    <bpmn2:serviceTask id="sendTcaReqDistribute" name="Send Tca Micro Service request to Policy [Submit]" camunda:delegateExpression="${tcaPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1rga27p</bpmn2:outgoing>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="sendStringMatchingReqDistribute" targetRef="sendTcaReqDistribute" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1tu9g11" sourceRef="sendHolmesReqDistribute" targetRef="sendOpPolicyReqDistribute" />
+    <bpmn2:serviceTask id="sendHolmesReqDistribute" name="Send Holmes Micro Service request to Policy [Submit]" camunda:delegateExpression="${holmesPolicyDelegate}">
+      <bpmn2:incoming>SequenceFlow_1rga27p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1tu9g11</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:serviceTask id="sendOpPolicyReqDelete" name="Send Operation Policy Request [Delete]" camunda:delegateExpression="${operationalPolicyDeleteDelegate}">
-      <bpmn2:incoming>SequenceFlow_0tpegxf</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1mtizad</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_0tpegxf" sourceRef="sendTcaReqDelete" targetRef="sendOpPolicyReqDelete" />
-    <bpmn2:serviceTask id="sendTcaReqDelete" name="Send Tca Micro Service request to Policy [Delete]" camunda:delegateExpression="${tcaPolicyDeleteDelegate}">
-      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0tpegxf</bpmn2:outgoing>
+    <bpmn2:serviceTask id="sendHolmesReqDelete" name="Send Holmes Micro Service request to Policy [Delete]" camunda:delegateExpression="${holmesPolicyDeleteDelegate}">
+      <bpmn2:incoming>SequenceFlow_0tpegxf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1mtizad</bpmn2:outgoing>
     </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1mtizad" sourceRef="sendHolmesReqDelete" targetRef="sendOpPolicyReqDelete" />
     <bpmn2:serviceTask id="sendStringMatchingReqUpdate" name="Send String Match Micro Service request to Policy [Update]" camunda:delegateExpression="${stringMatchPolicyDelegate}">
       <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_26</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1kegg6u" sourceRef="sendTcaReqUpdate" targetRef="sendOpPolicyReqUpdate" />
     <bpmn2:serviceTask id="sendTcaReqUpdate" name="Send Tca Micro Service request to Policy [Update]" camunda:delegateExpression="${tcaPolicyDelegate}">
       <bpmn2:incoming>SequenceFlow_26</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1kegg6u</bpmn2:outgoing>
     </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="sendStringMatchingReqUpdate" targetRef="sendTcaReqUpdate" />
+    <bpmn2:serviceTask id="sendHolmesReqUpdate" name="Send Holmes Micro Service request to Policy [Update]" camunda:delegateExpression="${holmesPolicyDelegate}">
+      <bpmn2:incoming>SequenceFlow_1kegg6u</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ejpmee</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ejpmee" sourceRef="sendHolmesReqUpdate" targetRef="sendOpPolicyReqUpdate" />
   </bpmn2:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="_Collaboration_2">
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_8" bpmnElement="sendStringMatchingReqDistribute">
-        <dc:Bounds x="615" y="89" width="100" height="80" />
+        <dc:Bounds x="400" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_6" bpmnElement="sendOpPolicyReqDistribute">
         <dc:Bounds x="912" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_8" targetElement="_BPMNShape_ServiceTask_6">
-        <di:waypoint xsi:type="dc:Point" x="715" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="761" y="129" />
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_8" targetElement="ServiceTask_1r1brt6_di">
+        <di:waypoint xsi:type="dc:Point" x="500" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="546" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="881" y="192" width="6" height="6" />
+          <dc:Bounds x="624" y="192" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_7" bpmnElement="insEvent">
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ServiceTask_6" targetElement="_BPMNShape_ExclusiveGateway_4">
-        <di:waypoint xsi:type="dc:Point" x="1012" y="127" />
-        <di:waypoint xsi:type="dc:Point" x="1052" y="125" />
-        <di:waypoint xsi:type="dc:Point" x="1052" y="229" />
-        <di:waypoint xsi:type="dc:Point" x="1104" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="1012" y="130" />
+        <di:waypoint xsi:type="dc:Point" x="1057" y="130" />
+        <di:waypoint xsi:type="dc:Point" x="1057" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="1104" y="233" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1049" y="192" width="6" height="6" />
+          <dc:Bounds x="1027" y="178.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_11" bpmnElement="sendStringMatchingReqDelete">
         <dc:Bounds x="348" y="385" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_12" bpmnElement="sendOpPolicyReqDelete">
-        <dc:Bounds x="645" y="385" width="100" height="80" />
+        <dc:Bounds x="831" y="385" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ServiceTask_11" targetElement="_BPMNShape_ServiceTask_12">
         <di:waypoint xsi:type="dc:Point" x="448" y="425" />
         <dc:Bounds x="30" y="484" width="1339" height="117" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_14" bpmnElement="sendStringMatchingReqUpdate">
-        <dc:Bounds x="615" y="500" width="100" height="80" />
+        <dc:Bounds x="350" y="500" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_15" bpmnElement="sendOpPolicyReqUpdate">
         <dc:Bounds x="912" y="500" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_ServiceTask_14" targetElement="_BPMNShape_ServiceTask_15">
-        <di:waypoint xsi:type="dc:Point" x="715" y="540" />
-        <di:waypoint xsi:type="dc:Point" x="761" y="540" />
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_ServiceTask_14" targetElement="ServiceTask_08pqhb3_di">
+        <di:waypoint xsi:type="dc:Point" x="450" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="540" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="887" y="540" width="6" height="6" />
+          <dc:Bounds x="580" y="540" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_14">
         <di:waypoint xsi:type="dc:Point" x="169" y="262" />
         <di:waypoint xsi:type="dc:Point" x="169" y="540" />
-        <di:waypoint xsi:type="dc:Point" x="615" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="350" y="540" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="139" y="398" width="90" height="6" />
         </bpmndi:BPMNLabel>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ServiceTask_15" targetElement="_BPMNShape_ExclusiveGateway_4">
         <di:waypoint xsi:type="dc:Point" x="1012" y="539" />
         <di:waypoint xsi:type="dc:Point" x="1058" y="538" />
-        <di:waypoint xsi:type="dc:Point" x="1058" y="230" />
-        <di:waypoint xsi:type="dc:Point" x="1104" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="1104" y="233" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1055" y="381" width="6" height="6" />
+          <dc:Bounds x="1028" y="382.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_Lane_10" bpmnElement="Lane_6" isHorizontal="true">
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_16">
         <di:waypoint xsi:type="dc:Point" x="169" y="262" />
-        <di:waypoint xsi:type="dc:Point" x="169" y="658" />
-        <di:waypoint xsi:type="dc:Point" x="553" y="659" />
-        <di:waypoint xsi:type="dc:Point" x="615" y="659" />
+        <di:waypoint xsi:type="dc:Point" x="169" y="659" />
+        <di:waypoint xsi:type="dc:Point" x="912" y="659" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="344" y="658" width="6" height="6" />
+          <dc:Bounds x="139" y="457.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ServiceTask_16" targetElement="_BPMNShape_ExclusiveGateway_4">
         <di:waypoint xsi:type="dc:Point" x="1058" y="233" />
         <di:waypoint xsi:type="dc:Point" x="1104" y="233" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1055" y="441" width="6" height="6" />
+          <dc:Bounds x="1028" y="442.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_Lane_11" bpmnElement="Lane_7" isHorizontal="true">
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_31" bpmnElement="SequenceFlow_31" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_17">
         <di:waypoint xsi:type="dc:Point" x="169" y="262" />
         <di:waypoint xsi:type="dc:Point" x="169" y="775" />
-        <di:waypoint xsi:type="dc:Point" x="615" y="775" />
+        <di:waypoint xsi:type="dc:Point" x="912" y="775" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="285" y="775" width="6" height="6" />
+          <dc:Bounds x="139" y="515.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ServiceTask_17" targetElement="_BPMNShape_ExclusiveGateway_4">
         <di:waypoint xsi:type="dc:Point" x="1012" y="775" />
         <di:waypoint xsi:type="dc:Point" x="1058" y="775" />
-        <di:waypoint xsi:type="dc:Point" x="1058" y="232" />
-        <di:waypoint xsi:type="dc:Point" x="1104" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="234" />
+        <di:waypoint xsi:type="dc:Point" x="1105" y="234" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1055" y="500" width="6" height="6" />
+          <dc:Bounds x="1028" y="501.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_11">
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0w39hon_di" bpmnElement="SequenceFlow_0w39hon">
         <di:waypoint xsi:type="dc:Point" x="304" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="615" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="400" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="414.5" y="114" width="90" height="0" />
+          <dc:Bounds x="307" y="114" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1xlfq66_di" bpmnElement="SequenceFlow_1xlfq66">
           <dc:Bounds x="184" y="170.5" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_188n2z7_di" bpmnElement="SequenceFlow_188n2z7">
-        <di:waypoint xsi:type="dc:Point" x="715" y="775" />
-        <di:waypoint xsi:type="dc:Point" x="912" y="775" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1rga27p_di" bpmnElement="SequenceFlow_1rga27p">
+        <di:waypoint xsi:type="dc:Point" x="646" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="729" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="768" y="750" width="90" height="20" />
+          <dc:Bounds x="642.5" y="104" width="90" height="20" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_04d5jlr_di" bpmnElement="ServiceTask_04d5jlr">
-        <dc:Bounds x="615" y="735" width="100" height="80" />
+      <bpmndi:BPMNShape id="ServiceTask_1r1brt6_di" bpmnElement="sendTcaReqDistribute">
+        <dc:Bounds x="546" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_17snsdc_di" bpmnElement="SequenceFlow_17snsdc">
-        <di:waypoint xsi:type="dc:Point" x="715" y="659" />
-        <di:waypoint xsi:type="dc:Point" x="912" y="659" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0tpegxf_di" bpmnElement="SequenceFlow_0tpegxf">
+        <di:waypoint xsi:type="dc:Point" x="596" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="665" y="425" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="768.5" y="634" width="90" height="20" />
+          <dc:Bounds x="585.5" y="400" width="90" height="20" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_0d5zgbw_di" bpmnElement="ServiceTask_0d5zgbw">
-        <dc:Bounds x="615" y="619" width="100" height="80" />
+      <bpmndi:BPMNShape id="ServiceTask_0y2gwy4_di" bpmnElement="sendTcaReqDelete">
+        <dc:Bounds x="495.71500000000003" y="385" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1rga27p_di" bpmnElement="SequenceFlow_1rga27p">
-        <di:waypoint xsi:type="dc:Point" x="861" y="129" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1kegg6u_di" bpmnElement="SequenceFlow_1kegg6u">
+        <di:waypoint xsi:type="dc:Point" x="596" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="688" y="540" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="597" y="515" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_08pqhb3_di" bpmnElement="sendTcaReqUpdate">
+        <dc:Bounds x="496" y="500" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1a6a3ro_di" bpmnElement="sendHolmesReqDistribute">
+        <dc:Bounds x="729" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tu9g11_di" bpmnElement="SequenceFlow_1tu9g11">
+        <di:waypoint xsi:type="dc:Point" x="829" y="129" />
         <di:waypoint xsi:type="dc:Point" x="912" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="841.5" y="119" width="90" height="20" />
+          <dc:Bounds x="870.5" y="108" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_1r1brt6_di" bpmnElement="sendTcaReqDistribute">
-        <dc:Bounds x="760.715" y="89" width="100" height="80" />
+      <bpmndi:BPMNShape id="ServiceTask_1234ame_di" bpmnElement="sendHolmesReqDelete">
+        <dc:Bounds x="665" y="385" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0tpegxf_di" bpmnElement="SequenceFlow_0tpegxf">
-        <di:waypoint xsi:type="dc:Point" x="596" y="425" />
-        <di:waypoint xsi:type="dc:Point" x="645" y="425" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1mtizad_di" bpmnElement="SequenceFlow_1mtizad">
+        <di:waypoint xsi:type="dc:Point" x="765" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="831" y="425" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="575.5" y="415" width="90" height="20" />
+          <dc:Bounds x="798" y="404" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_0y2gwy4_di" bpmnElement="sendTcaReqDelete">
-        <dc:Bounds x="495.71500000000003" y="385" width="100" height="80" />
+      <bpmndi:BPMNShape id="ServiceTask_17vvyrl_di" bpmnElement="sendHolmesReqUpdate">
+        <dc:Bounds x="688" y="500" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1kegg6u_di" bpmnElement="SequenceFlow_1kegg6u">
-        <di:waypoint xsi:type="dc:Point" x="861" y="540" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0ejpmee_di" bpmnElement="SequenceFlow_0ejpmee">
+        <di:waypoint xsi:type="dc:Point" x="788" y="540" />
         <di:waypoint xsi:type="dc:Point" x="912" y="540" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="841.5" y="530" width="90" height="20" />
+          <dc:Bounds x="850" y="519" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_08pqhb3_di" bpmnElement="sendTcaReqUpdate">
-        <dc:Bounds x="761" y="500" width="100" height="80" />
-      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
index 94af952..8a39be5 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ============LICENSE_START=======================================================
   ONAP CLAMP
                 <xsl:for-each select="bpmn2:tCA" >
                        <xsl:call-template name="network-element" />
                 </xsl:for-each>
+                <xsl:text>],</xsl:text>
+                
+                <xsl:text>"holmes":[</xsl:text>
+                <xsl:for-each select="bpmn2:holmes" >
+                       <xsl:call-template name="network-element" />
+                </xsl:for-each>
+                <xsl:text>],</xsl:text>
+                
+                <xsl:text>"vesCollector":[</xsl:text>
+                <xsl:for-each select="bpmn2:vesCollector" >
+                       <xsl:call-template name="network-element" />
+                </xsl:for-each>
                 <xsl:text>]</xsl:text>
                 
                 <xsl:text>}</xsl:text>
diff --git a/src/test/java/org/onap/clamp/clds/transform/XslTransformerTest.java b/src/test/java/org/onap/clamp/clds/transform/XslTransformerTest.java
new file mode 100644 (file)
index 0000000..8ee60e7
--- /dev/null
@@ -0,0 +1,34 @@
+package org.onap.clamp.clds.transform;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+
+import javax.xml.transform.TransformerException;
+
+import org.junit.Test;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+
+public class XslTransformerTest {
+
+    /**
+     * This test validates the XSLT to convert BPMN xml to BPMN JSON.
+     * 
+     * @throws TransformerException
+     *             In case of issues
+     * @throws IOException
+     *             In case of issues
+     */
+    @Test
+    public void xslTransformTest() throws TransformerException, IOException {
+        XslTransformer xslTransformer = new XslTransformer();
+        xslTransformer.setXslResourceName("xsl/clds-bpmn-transformer.xsl");
+
+        String bpmnJson = xslTransformer
+                .doXslTransformToString(ResourceFileUtil.getResourceAsString("example/xsl-validation/modelBpmn.xml"));
+        assertNotNull(bpmnJson);
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("example/xsl-validation/modelBpmnForVerif.json"),
+                bpmnJson, true);
+    }
+}
diff --git a/src/test/resources/example/modelBpmn.xml b/src/test/resources/example/modelBpmn.xml
deleted file mode 100644 (file)
index d84f790..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<!--
-  ============LICENSE_START=======================================================
-  ONAP CLAMP
-  ================================================================================
-  Copyright (C) 2017 AT&T 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. 
-  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============================================
-  ===================================================================
-  ECOMP is a trademark and service mark of AT&T Intellectual Property.
-  -->
-
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
-  <bpmn:process id="Process_1" isExecutable="false">
-    <bpmn:startEvent id="StartEvent_1">
-      <bpmn:outgoing>SequenceFlow_0ex3w2w</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:collector id="Collector_">
-      <bpmn:incoming>SequenceFlow_0ex3w2w</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_185iyma</bpmn:outgoing>
-    </bpmn:collector>
-    <bpmn:stringMatch id="StringMatch_">
-      <bpmn:incoming>SequenceFlow_185iyma</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_092429t</bpmn:outgoing>
-    </bpmn:stringMatch>
-    <bpmn:policy id="Policy_">
-      <bpmn:incoming>SequenceFlow_092429t</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0hghw7g</bpmn:outgoing>
-    </bpmn:policy>
-    <bpmn:tCA id="TCA_">
-      <bpmn:incoming>SequenceFlow_08j3fsl</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0hghw7g</bpmn:outgoing>
-    </bpmn:tCA>
-    <bpmn:endEvent id="EndEvent_0lg612k">
-      <bpmn:incoming>SequenceFlow_0hghw7g</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0ex3w2w" sourceRef="StartEvent_1" targetRef="Collector_" />
-    <bpmn:sequenceFlow id="SequenceFlow_185iyma" sourceRef="Collector_" targetRef="StringMatch_" />
-    <bpmn:sequenceFlow id="SequenceFlow_092429t" sourceRef="StringMatch_" targetRef="Policy_" />
-    <bpmn:sequenceFlow id="SequenceFlow_0hghw7g" sourceRef="Policy_" targetRef="EndEvent_0lg612k" />
-  </bpmn:process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="60" y="25" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="33" y="61" width="90" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Collector__di" bpmnElement="Collector_">
-        <dc:Bounds x="169" y="140" width="120" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="StringMatch__di" bpmnElement="StringMatch_">
-        <dc:Bounds x="578" y="140" width="120" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Policy__di" bpmnElement="Policy_">
-        <dc:Bounds x="768" y="140" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0lg612k_di" bpmnElement="EndEvent_0lg612k">
-        <dc:Bounds x="949" y="162" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="922" y="198" width="90" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ex3w2w_di" bpmnElement="SequenceFlow_0ex3w2w">
-        <di:waypoint xsi:type="dc:Point" x="96" y="43" />
-        <di:waypoint xsi:type="dc:Point" x="128" y="43" />
-        <di:waypoint xsi:type="dc:Point" x="128" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="169" y="180" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="83" y="101.5" width="90" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_185iyma_di" bpmnElement="SequenceFlow_185iyma">
-        <di:waypoint xsi:type="dc:Point" x="500" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="578" y="180" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="494" y="170" width="90" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_092429t_di" bpmnElement="SequenceFlow_092429t">
-        <di:waypoint xsi:type="dc:Point" x="698" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="768" y="180" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="688" y="170" width="90" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0hghw7g_di" bpmnElement="SequenceFlow_0hghw7g">
-        <di:waypoint xsi:type="dc:Point" x="868" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="907" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="907" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="949" y="180" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="862" y="170" width="90" height="20" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/src/test/resources/example/xsl-validation/modelBpmn.xml b/src/test/resources/example/xsl-validation/modelBpmn.xml
new file mode 100644 (file)
index 0000000..3021902
--- /dev/null
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
+       xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
+       xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
+       <bpmn:process id="Process_1" isExecutable="false">
+               <bpmn:startEvent id="StartEvent_1">
+                       <bpmn:outgoing>SequenceFlow_1nvvr00</bpmn:outgoing>
+               </bpmn:startEvent>
+               <bpmn:stringMatch id="StringMatch_0tw2y4f">
+                       <bpmn:incoming>SequenceFlow_0qf2552</bpmn:incoming>
+                       <bpmn:outgoing>SequenceFlow_1a2oxpd</bpmn:outgoing>
+               </bpmn:stringMatch>
+               <bpmn:vesCollector id="VesCollector_1kxjxy6" name="AAAAA">
+                       <bpmn:incoming>SequenceFlow_0jeu0gv</bpmn:incoming>
+                       <bpmn:outgoing>SequenceFlow_15gkgs5</bpmn:outgoing>
+               </bpmn:vesCollector>
+               <bpmn:collector id="Collector_">
+                       <bpmn:incoming>SequenceFlow_1nvvr00</bpmn:incoming>
+                       <bpmn:outgoing>SequenceFlow_0qf2552</bpmn:outgoing>
+               </bpmn:collector>
+               <bpmn:tCA id="TCA_09hcdsx">
+                       <bpmn:incoming>SequenceFlow_15gkgs5</bpmn:incoming>
+                       <bpmn:outgoing>SequenceFlow_0ev75ss</bpmn:outgoing>
+               </bpmn:tCA>
+               <bpmn:policy id="Policy_">
+                       <bpmn:incoming>SequenceFlow_0ev75ss</bpmn:incoming>
+                       <bpmn:outgoing>SequenceFlow_103hvmr</bpmn:outgoing>
+               </bpmn:policy>
+               <bpmn:endEvent id="EndEvent_0zjiuu5">
+                       <bpmn:incoming>SequenceFlow_103hvmr</bpmn:incoming>
+               </bpmn:endEvent>
+               <bpmn:holmes id="Holmes_1fzdqp9">
+                       <bpmn:incoming>SequenceFlow_1a2oxpd</bpmn:incoming>
+                       <bpmn:outgoing>SequenceFlow_0jeu0gv</bpmn:outgoing>
+               </bpmn:holmes>
+               <bpmn:sequenceFlow id="SequenceFlow_1nvvr00"
+                       sourceRef="StartEvent_1" targetRef="Collector_" />
+               <bpmn:sequenceFlow id="SequenceFlow_0qf2552"
+                       sourceRef="Collector_" targetRef="StringMatch_0tw2y4f" />
+               <bpmn:sequenceFlow id="SequenceFlow_1a2oxpd"
+                       sourceRef="StringMatch_0tw2y4f" targetRef="Holmes_1fzdqp9" />
+               <bpmn:sequenceFlow id="SequenceFlow_0jeu0gv"
+                       sourceRef="Holmes_1fzdqp9" targetRef="VesCollector_1kxjxy6" />
+               <bpmn:sequenceFlow id="SequenceFlow_15gkgs5"
+                       sourceRef="VesCollector_1kxjxy6" targetRef="TCA_09hcdsx" />
+               <bpmn:sequenceFlow id="SequenceFlow_0ev75ss"
+                       sourceRef="TCA_09hcdsx" targetRef="Policy_" />
+               <bpmn:sequenceFlow id="SequenceFlow_103hvmr"
+                       sourceRef="Policy_" targetRef="EndEvent_0zjiuu5" />
+       </bpmn:process>
+       <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+               <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
+                       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2"
+                               bpmnElement="StartEvent_1">
+                               <dc:Bounds x="50" y="162" width="36" height="36" />
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNShape id="StringMatch_0tw2y4f_di"
+                               bpmnElement="StringMatch_0tw2y4f">
+                               <dc:Bounds x="324" y="192" width="120" height="80" />
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNShape id="VesCollector_1kxjxy6_di"
+                               bpmnElement="VesCollector_1kxjxy6">
+                               <dc:Bounds x="492" y="192" width="120" height="80" />
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNShape id="Collector__di" bpmnElement="Collector_">
+                               <dc:Bounds x="159" y="206" width="120" height="80" />
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNShape id="TCA_09hcdsx_di" bpmnElement="TCA_09hcdsx">
+                               <dc:Bounds x="651" y="192" width="120" height="80" />
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNShape id="Policy__di" bpmnElement="Policy_">
+                               <dc:Bounds x="844" y="206" width="120" height="80" />
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNShape id="EndEvent_0zjiuu5_di"
+                               bpmnElement="EndEvent_0zjiuu5">
+                               <dc:Bounds x="703" y="396" width="36" height="36" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="676" y="432" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNShape id="Holmes_1fzdqp9_di"
+                               bpmnElement="Holmes_1fzdqp9">
+                               <dc:Bounds x="358" y="74" width="120" height="80" />
+                       </bpmndi:BPMNShape>
+                       <bpmndi:BPMNEdge id="SequenceFlow_1nvvr00_di"
+                               bpmnElement="SequenceFlow_1nvvr00">
+                               <di:waypoint xsi:type="dc:Point" x="86" y="180" />
+                               <di:waypoint xsi:type="dc:Point" x="123" y="180" />
+                               <di:waypoint xsi:type="dc:Point" x="123" y="246" />
+                               <di:waypoint xsi:type="dc:Point" x="159" y="246" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="78" y="203" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNEdge>
+                       <bpmndi:BPMNEdge id="SequenceFlow_0qf2552_di"
+                               bpmnElement="SequenceFlow_0qf2552">
+                               <di:waypoint xsi:type="dc:Point" x="279" y="246" />
+                               <di:waypoint xsi:type="dc:Point" x="302" y="246" />
+                               <di:waypoint xsi:type="dc:Point" x="302" y="232" />
+                               <di:waypoint xsi:type="dc:Point" x="324" y="232" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="257" y="229" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNEdge>
+                       <bpmndi:BPMNEdge id="SequenceFlow_1a2oxpd_di"
+                               bpmnElement="SequenceFlow_1a2oxpd">
+                               <di:waypoint xsi:type="dc:Point" x="384" y="192" />
+                               <di:waypoint xsi:type="dc:Point" x="384" y="173" />
+                               <di:waypoint xsi:type="dc:Point" x="418" y="173" />
+                               <di:waypoint xsi:type="dc:Point" x="418" y="154" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="356" y="163" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNEdge>
+                       <bpmndi:BPMNEdge id="SequenceFlow_0jeu0gv_di"
+                               bpmnElement="SequenceFlow_0jeu0gv">
+                               <di:waypoint xsi:type="dc:Point" x="418" y="154" />
+                               <di:waypoint xsi:type="dc:Point" x="418" y="173" />
+                               <di:waypoint xsi:type="dc:Point" x="552" y="173" />
+                               <di:waypoint xsi:type="dc:Point" x="552" y="192" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="440" y="163" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNEdge>
+                       <bpmndi:BPMNEdge id="SequenceFlow_15gkgs5_di"
+                               bpmnElement="SequenceFlow_15gkgs5">
+                               <di:waypoint xsi:type="dc:Point" x="612" y="232" />
+                               <di:waypoint xsi:type="dc:Point" x="651" y="232" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="586.5" y="222" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNEdge>
+                       <bpmndi:BPMNEdge id="SequenceFlow_0ev75ss_di"
+                               bpmnElement="SequenceFlow_0ev75ss">
+                               <di:waypoint xsi:type="dc:Point" x="771" y="232" />
+                               <di:waypoint xsi:type="dc:Point" x="808" y="232" />
+                               <di:waypoint xsi:type="dc:Point" x="808" y="246" />
+                               <di:waypoint xsi:type="dc:Point" x="844" y="246" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="763" y="229" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNEdge>
+                       <bpmndi:BPMNEdge id="SequenceFlow_103hvmr_di"
+                               bpmnElement="SequenceFlow_103hvmr">
+                               <di:waypoint xsi:type="dc:Point" x="844" y="246" />
+                               <di:waypoint xsi:type="dc:Point" x="792" y="246" />
+                               <di:waypoint xsi:type="dc:Point" x="792" y="414" />
+                               <di:waypoint xsi:type="dc:Point" x="739" y="414" />
+                               <bpmndi:BPMNLabel>
+                                       <dc:Bounds x="747" y="320" width="90" height="20" />
+                               </bpmndi:BPMNLabel>
+                       </bpmndi:BPMNEdge>
+               </bpmndi:BPMNPlane>
+       </bpmndi:BPMNDiagram>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/src/test/resources/example/xsl-validation/modelBpmnForVerif.json b/src/test/resources/example/xsl-validation/modelBpmnForVerif.json
new file mode 100644 (file)
index 0000000..1bef49a
--- /dev/null
@@ -0,0 +1,38 @@
+{
+       "collector": [
+               {
+                       "id": "Collector_",
+                       "from": "StartEvent_1"
+               }
+       ],
+       "stringMatch": [
+               {
+                       "id": "StringMatch_0tw2y4f",
+                       "from": "Collector_"
+               }
+       ],
+       "policy": [
+               {
+                       "id": "Policy_",
+                       "from": "TCA_09hcdsx"
+               }
+       ],
+       "tca": [
+               {
+                       "id": "TCA_09hcdsx",
+                       "from": "VesCollector_1kxjxy6"
+               }
+       ],
+       "vesCollector": [
+               {
+                       "id": "VesCollector_1kxjxy6",
+                       "from": "Holmes_1fzdqp9"
+               }
+       ],
+       "holmes": [
+               {
+                       "id": "Holmes_1fzdqp9",
+                       "from": "StringMatch_0tw2y4f"
+               }
+       ]
+}
\ No newline at end of file