Merge "Misc simple sonar issue fixes"
authorLiam Fallon <liam.fallon@est.tech>
Fri, 20 Mar 2020 09:31:29 +0000 (09:31 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 20 Mar 2020 09:31:29 +0000 (09:31 +0000)
39 files changed:
models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java
models-base/src/main/java/org/onap/policy/models/base/PfConceptGetterImpl.java
models-base/src/main/java/org/onap/policy/models/base/PfKeyImpl.java
models-base/src/test/java/org/onap/policy/models/base/ModelServiceTest.java
models-base/src/test/java/org/onap/policy/models/base/PfConceptContainerTest.java
models-base/src/test/java/org/onap/policy/models/base/PfConceptFilterTest.java [new file with mode: 0644]
models-base/src/test/java/org/onap/policy/models/base/PfConceptKeyTest.java
models-base/src/test/java/org/onap/policy/models/base/PfKeyImplTest.java
models-base/src/test/java/org/onap/policy/models/base/PfKeyUseTest.java
models-base/src/test/java/org/onap/policy/models/base/PfModelTest.java
models-base/src/test/java/org/onap/policy/models/base/PfReferenceKeyTest.java
models-base/src/test/java/org/onap/policy/models/base/PfSearchableKeyTest.java
models-base/src/test/java/org/onap/policy/models/base/PfTimestampKeyTest.java
models-examples/src/main/resources/policies/vCPE.apex.policy.operational.input.tosca.json [new file with mode: 0644]
models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProviderTest.java
models-interactions/model-impl/sdc/src/main/java/org/onap/policy/sdc/Resource.java
models-interactions/model-impl/sdc/src/main/java/org/onap/policy/sdc/ResourceInstance.java
models-interactions/model-impl/sdc/src/main/java/org/onap/policy/sdc/Service.java
models-interactions/model-impl/sdc/src/main/java/org/onap/policy/sdc/ServiceInstance.java
models-interactions/model-impl/sdc/src/test/java/org/onap/policy/sdc/ResourceInstanceTest.java
models-interactions/model-impl/sdc/src/test/java/org/onap/policy/sdc/ServiceInstanceTest.java
models-interactions/model-impl/sdc/src/test/java/org/onap/policy/sdc/ServiceTest.java
models-interactions/model-yaml/pom.xml
models-interactions/model-yaml/src/main/java/org/onap/policy/controlloop/policy/builder/impl/ControlLoopPolicyBuilderImpl.java
models-interactions/model-yaml/src/test/java/org/onap/policy/controlloop/compiler/ControlLoopCompilerTest.java
models-interactions/model-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopPolicyBuilderTest.java
models-interactions/model-yaml/src/test/java/org/onap/policy/controlloop/policy/ControlLoopPolicyTest.java
models-interactions/model-yaml/src/test/resources/v1.0.0/policy_Test.yaml
models-interactions/model-yaml/src/test/resources/v1.0.0/policy_vService.yaml
models-interactions/model-yaml/src/test/resources/v2.0.0/policy_ONAP_demo_vFirewall.yaml
models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java [new file with mode: 0644]
models-provider/src/test/resources/servicetemplates/MultipleRevisionServiceTemplate.yaml [new file with mode: 0644]
models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-keystore
models-sim/policy-models-sim-pdp/src/main/resources/ssl/policy-keystore
models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java
models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java
models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java
models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java

index 949cb96..d259fa2 100644 (file)
@@ -30,6 +30,8 @@ import java.util.Map.Entry;
 import java.util.NavigableMap;
 import java.util.Set;
 import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.function.Function;
 
 import javax.persistence.CascadeType;
 import javax.persistence.EmbeddedId;
@@ -45,6 +47,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NonNull;
 
+import org.apache.commons.lang3.StringUtils;
 import org.onap.policy.models.base.PfValidationResult.ValidationResult;
 
 // @formatter:off
@@ -67,7 +70,7 @@ import org.onap.policy.models.base.PfValidationResult.ValidationResult;
 @EqualsAndHashCode(callSuper = false)
 
 public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> extends PfConcept
-        implements PfConceptGetter<C>, PfAuthorative<List<Map<String, A>>> {
+    implements PfConceptGetter<C>, PfAuthorative<List<Map<String, A>>> {
     private static final long serialVersionUID = -324211738823208318L;
 
     @EmbeddedId
@@ -151,7 +154,7 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
     public List<Map<String, A>> toAuthorative() {
         // The returned list is a list of map singletons with one map for each map
         // entry in the concept container
-        List<Map<String, A>> toscaPolicyMapList = new ArrayList<>();
+        List<Map<String, A>> toscaConceptMapList = new ArrayList<>();
 
         for (Entry<PfConceptKey, C> conceptEntry : getConceptMap().entrySet()) {
             // Create a map to hold this entry
@@ -163,10 +166,10 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
             toscaPolicyMap.put(conceptEntry.getKey().getName(), authoritiveImpl.toAuthorative());
 
             // Add the map to the returned list
-            toscaPolicyMapList.add(toscaPolicyMap);
+            toscaConceptMapList.add(toscaPolicyMap);
         }
 
-        return toscaPolicyMapList;
+        return toscaConceptMapList;
     }
 
     @Override
@@ -178,31 +181,32 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
         for (Map<String, A> incomingConceptMap : authorativeList) {
             // Add the map entries one by one
             for (Entry<String, A> incomingConceptEntry : incomingConceptMap.entrySet()) {
-                C jpaConcept = getConceptNewInstance();
 
+                PfConceptKey conceptKey = new PfConceptKey();
+                if (incomingConceptEntry.getKey().matches(PfKey.KEY_ID_REGEXP)) {
+                    conceptKey = new PfConceptKey(incomingConceptEntry.getKey());
+                } else {
+                    conceptKey.setName(incomingConceptEntry.getKey());
+                    if (incomingConceptEntry.getValue().getVersion() != null) {
+                        conceptKey.setVersion(incomingConceptEntry.getValue().getVersion());
+                    } else {
+                        conceptKey.setVersion(PfKey.NULL_KEY_VERSION);
+                    }
+                }
+
+                incomingConceptEntry.getValue().setName(findConceptField(conceptKey, conceptKey.getName(),
+                    incomingConceptEntry.getValue(), PfNameVersion::getName));
+                incomingConceptEntry.getValue().setVersion(findConceptField(conceptKey, conceptKey.getVersion(),
+                    incomingConceptEntry.getValue(), PfNameVersion::getVersion));
+
+                C jpaConcept = getConceptNewInstance();
                 // This cast allows us to call the fromAuthorative method
                 @SuppressWarnings("unchecked")
                 PfAuthorative<A> authoritiveImpl = (PfAuthorative<A>) jpaConcept;
 
-                if (incomingConceptEntry.getValue().getName() == null) {
-                    incomingConceptEntry.getValue().setName(incomingConceptEntry.getKey());
-                }
-
                 // Set the key name and the rest of the values on the concept
                 authoritiveImpl.fromAuthorative(incomingConceptEntry.getValue());
 
-                // This cast gets the key of the concept
-                PfConceptKey conceptKey = (PfConceptKey) jpaConcept.getKey();
-
-                // Set the concept key of the concept
-                conceptKey.setName(incomingConceptEntry.getValue().getName());
-
-                if (incomingConceptEntry.getValue().getVersion() != null) {
-                    conceptKey.setVersion(incomingConceptEntry.getValue().getVersion());
-                } else {
-                    conceptKey.setVersion(PfKey.NULL_KEY_VERSION);
-                }
-
                 // After all that, save the map entry
                 conceptMap.put(conceptKey, jpaConcept);
             }
@@ -210,8 +214,23 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
 
         if (conceptMap.isEmpty()) {
             throw new PfModelRuntimeException(Response.Status.BAD_REQUEST,
-                    "An incoming list of concepts must have at least one entry");
+                "An incoming list of concepts must have at least one entry");
+        }
+    }
+
+    /**
+     * Get an authorative list of the concepts in this container.
+     *
+     * @return the authorative list of concepts
+     */
+    public List<A> toAuthorativeList() {
+        List<A> toscaConceptList = new ArrayList<>();
+
+        for (Map<String, A> toscaConceptMap : toAuthorative()) {
+            toscaConceptList.addAll(toscaConceptMap.values());
         }
+
+        return toscaConceptList;
     }
 
     @Override
@@ -229,7 +248,7 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
 
         if (key.equals(PfConceptKey.getNullKey())) {
             result.addValidationMessage(
-                    new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key"));
+                new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key"));
         }
 
         result = key.validate(result);
@@ -253,14 +272,14 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
         for (final Entry<PfConceptKey, C> conceptEntry : conceptMap.entrySet()) {
             if (conceptEntry.getKey().equals(PfConceptKey.getNullKey())) {
                 result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
-                        "key on concept entry " + conceptEntry.getKey() + " may not be the null key"));
+                    "key on concept entry " + conceptEntry.getKey() + " may not be the null key"));
             } else if (conceptEntry.getValue() == null) {
                 result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
-                        "value on concept entry " + conceptEntry.getKey() + " may not be null"));
+                    "value on concept entry " + conceptEntry.getKey() + " may not be null"));
             } else if (!conceptEntry.getKey().equals(conceptEntry.getValue().getKey())) {
                 result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
-                        "key on concept entry key " + conceptEntry.getKey() + " does not equal concept value key "
-                                + conceptEntry.getValue().getKey()));
+                    "key on concept entry key " + conceptEntry.getKey() + " does not equal concept value key "
+                        + conceptEntry.getValue().getKey()));
                 result = conceptEntry.getValue().validate(result);
             } else {
                 result = conceptEntry.getValue().validate(result);
@@ -295,9 +314,33 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
         return 0;
     }
 
+    /**
+     * Get all the concepts that match the given name and version.
+     *
+     * @param conceptKeyName the name of the concept, if null, return all names
+     * @param conceptKeyVersion the version of the concept, if null, return all versions
+     * @return conceptKeyVersion
+     */
+    public Set<C> getAllNamesAndVersions(final String conceptKeyName, final String conceptKeyVersion) {
+        if (conceptKeyName == null || conceptKeyVersion == null) {
+            return getAll(conceptKeyName, conceptKeyVersion);
+        } else {
+            final Set<C> returnSet = new TreeSet<>();
+            C foundConcept = get(conceptKeyName, conceptKeyVersion);
+            if (foundConcept != null) {
+                returnSet.add(foundConcept);
+            }
+            return returnSet;
+        }
+    }
+
     @Override
     public C get(final PfConceptKey conceptKey) {
-        return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKey);
+        if (conceptKey.isNullVersion()) {
+            return get(conceptKey.getName());
+        } else {
+            return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKey);
+        }
     }
 
     @Override
@@ -308,7 +351,7 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
     @Override
     public C get(final String conceptKeyName, final String conceptKeyVersion) {
         return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKeyName,
-                conceptKeyVersion);
+            conceptKeyVersion);
     }
 
     @Override
@@ -319,7 +362,7 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
     @Override
     public Set<C> getAll(final String conceptKeyName, final String conceptKeyVersion) {
         return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).getAll(conceptKeyName,
-                conceptKeyVersion);
+            conceptKeyVersion);
     }
 
     /**
@@ -331,11 +374,24 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
     private C getConceptNewInstance() {
         try {
             String conceptClassName =
-                    ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0].getTypeName();
+                ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0].getTypeName();
             return (C) Class.forName(conceptClassName).getDeclaredConstructor().newInstance();
         } catch (Exception ex) {
             throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR,
-                    "failed to instantiate instance of container concept class", ex);
+                "failed to instantiate instance of container concept class", ex);
+        }
+    }
+
+    private String findConceptField(final PfConceptKey conceptKey, final String keyFieldValue,
+        final PfNameVersion concept, final Function<PfNameVersion, String> fieldGetterFunction) {
+
+        String conceptField = fieldGetterFunction.apply(concept);
+
+        if (StringUtils.isBlank(conceptField) || keyFieldValue.equals(conceptField)) {
+            return keyFieldValue;
+        } else {
+            throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, "Key " + conceptKey.getId() + " field "
+                + keyFieldValue + " does not match the value " + conceptField + " in the concept field");
         }
     }
 }
index c641a80..033a7dd 100644 (file)
@@ -55,7 +55,7 @@ public class PfConceptGetterImpl<C> implements PfConceptGetter<C> {
         Assertions.argumentNotNull(conceptKeyName, "conceptKeyName may not be null");
 
         // The very fist key that could have this name
-        final PfConceptKey lowestArtifactKey = new PfConceptKey(conceptKeyName, "0.0.1");
+        final PfConceptKey lowestArtifactKey = new PfConceptKey(conceptKeyName, PfKey.NULL_KEY_VERSION);
 
         // Check if we found a key for our name
         PfConceptKey foundKey = conceptMap.ceilingKey(lowestArtifactKey);
index 461fd24..61028f9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,9 +23,11 @@ package org.onap.policy.models.base;
 
 import java.util.ArrayList;
 import java.util.List;
+
 import lombok.Getter;
 import lombok.NonNull;
 import lombok.ToString;
+
 import org.onap.policy.common.utils.validation.Assertions;
 import org.onap.policy.models.base.PfValidationResult.ValidationResult;
 
@@ -115,6 +117,15 @@ public abstract class PfKeyImpl extends PfKey {
         return (PfKey.NULL_KEY_NAME.equals(getName()) && PfKey.NULL_KEY_VERSION.equals(getVersion()));
     }
 
+    /**
+     * Determines if the name is "null".
+     *
+     * @return {@code true} if the name is null, {@code false} otherwise
+     */
+    public boolean isNullName() {
+        return PfKey.NULL_KEY_NAME.equals(getName());
+    }
+
     /**
      * Determines if the version is "null".
      *
@@ -147,7 +158,7 @@ public abstract class PfKeyImpl extends PfKey {
         }
 
         if (thisVersionArray.length >= 2 && otherVersionArray.length >= 2
-                        && !thisVersionArray[1].equals(otherVersionArray[1])) {
+            && !thisVersionArray[1].equals(otherVersionArray[1])) {
             return Compatibility.MINOR;
         }
 
@@ -189,12 +200,12 @@ public abstract class PfKeyImpl extends PfKey {
         }
 
         if (thisVersionArray.length >= 2 && otherVersionArray.length >= 2
-                        && !thisVersionArray[1].equals(otherVersionArray[1])) {
+            && !thisVersionArray[1].equals(otherVersionArray[1])) {
             return Integer.valueOf(thisVersionArray[1]) > Integer.valueOf(otherVersionArray[1]);
         }
 
         if (thisVersionArray.length >= 3 && otherVersionArray.length >= 3
-                        && !thisVersionArray[2].equals(otherVersionArray[2])) {
+            && !thisVersionArray[2].equals(otherVersionArray[2])) {
             return Integer.valueOf(thisVersionArray[2]) > Integer.valueOf(otherVersionArray[2]);
         }
 
@@ -215,8 +226,7 @@ public abstract class PfKeyImpl extends PfKey {
 
         if (versionArray.length >= 2) {
             return Integer.parseInt(versionArray[1]);
-        }
-        else {
+        } else {
             return 0;
         }
     }
@@ -227,26 +237,25 @@ public abstract class PfKeyImpl extends PfKey {
 
         if (versionArray.length >= 3) {
             return Integer.parseInt(versionArray[2]);
-        }
-        else {
+        } else {
             return 0;
         }
     }
 
     @Override
     public PfValidationResult validate(final PfValidationResult result) {
-        final String nameValidationErrorMessage = Assertions.getStringParameterValidationMessage(NAME_TOKEN, getName(),
-                        getNameRegEx());
+        final String nameValidationErrorMessage =
+            Assertions.getStringParameterValidationMessage(NAME_TOKEN, getName(), getNameRegEx());
         if (nameValidationErrorMessage != null) {
             result.addValidationMessage(new PfValidationMessage(this, this.getClass(), ValidationResult.INVALID,
-                            "name invalid-" + nameValidationErrorMessage));
+                "name invalid-" + nameValidationErrorMessage));
         }
 
-        final String versionValidationErrorMessage = Assertions.getStringParameterValidationMessage(VERSION_TOKEN,
-                        getVersion(), getVersionRegEx());
+        final String versionValidationErrorMessage =
+            Assertions.getStringParameterValidationMessage(VERSION_TOKEN, getVersion(), getVersionRegEx());
         if (versionValidationErrorMessage != null) {
             result.addValidationMessage(new PfValidationMessage(this, this.getClass(), ValidationResult.INVALID,
-                            "version invalid-" + versionValidationErrorMessage));
+                "version invalid-" + versionValidationErrorMessage));
         }
 
         return result;
index 1b7a996..60ae85d 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@ import org.onap.policy.models.base.testconcepts.DummyPfModel;
 
 public class ModelServiceTest {
 
-    private static final String MODEL_KEY_IS_NULL = "modelKey is marked @NonNull but is null";
+    private static final String MODEL_KEY_IS_NULL = "modelKey is marked .*on.*ull but is null$";
     private static final String MODEL_NAME = "ModelName";
 
     @Test
@@ -40,7 +40,7 @@ public class ModelServiceTest {
 
         assertFalse(PfModelService.existsModel("NonExistantName"));
         assertThatThrownBy(() -> PfModelService.getModel("NonExistantName"))
-                        .hasMessage("Model for name NonExistantName not found in model service");
+            .hasMessage("Model for name NonExistantName not found in model service");
 
         PfModelService.registerModel(MODEL_NAME, new DummyPfModel());
         assertTrue(PfModelService.existsModel(MODEL_NAME));
@@ -50,7 +50,7 @@ public class ModelServiceTest {
 
         assertFalse(PfModelService.existsModel(MODEL_NAME));
         assertThatThrownBy(() -> PfModelService.getModel(MODEL_NAME))
-                        .hasMessage("Model for name ModelName not found in model service");
+            .hasMessage("Model for name ModelName not found in model service");
 
         PfModelService.registerModel(MODEL_NAME, new DummyPfModel());
         assertTrue(PfModelService.existsModel(MODEL_NAME));
@@ -59,20 +59,18 @@ public class ModelServiceTest {
         PfModelService.clear();
         assertFalse(PfModelService.existsModel(MODEL_NAME));
         assertThatThrownBy(() -> PfModelService.getModel(MODEL_NAME))
-                        .hasMessage("Model for name ModelName not found in model service");
+            .hasMessage("Model for name ModelName not found in model service");
 
-        assertThatThrownBy(() -> PfModelService.registerModel(null, null))
-                        .hasMessage(MODEL_KEY_IS_NULL);
+        assertThatThrownBy(() -> PfModelService.registerModel(null, null)).hasMessageMatching(MODEL_KEY_IS_NULL);
 
         assertThatThrownBy(() -> PfModelService.registerModel("nullModelName", null))
-                        .hasMessage("model is marked @NonNull but is null");
+            .hasMessageMatching("^model is marked .*on.*ull but is null$");
 
         assertThatThrownBy(() -> PfModelService.registerModel(null, new DummyPfModel()))
-                        .hasMessage(MODEL_KEY_IS_NULL);
+            .hasMessageMatching(MODEL_KEY_IS_NULL);
 
-        assertThatThrownBy(() -> PfModelService.deregisterModel(null))
-                        .hasMessage(MODEL_KEY_IS_NULL);
+        assertThatThrownBy(() -> PfModelService.deregisterModel(null)).hasMessageMatching(MODEL_KEY_IS_NULL);
 
-        assertThatThrownBy(() -> PfModelService.getModel(null)).hasMessage(MODEL_KEY_IS_NULL);
+        assertThatThrownBy(() -> PfModelService.getModel(null)).hasMessageMatching(MODEL_KEY_IS_NULL);
     }
 }
index b760e17..600605a 100644 (file)
@@ -48,12 +48,14 @@ import org.onap.policy.models.base.testconcepts.DummyPfConceptSub;
  */
 public class PfConceptContainerTest {
 
-    private static final String NAME2 = "name2";
-    private static final String NAME1 = "name1";
     private static final String NAME0 = "name0";
-    private static final String KEY_IS_NULL = "key is marked @NonNull but is null";
+    private static final String NAME1 = "name1";
+    private static final String NAME2 = "name2";
+    private static final String NAME3 = "name3";
+    private static final String ID3 = "name3:0.0.1";
+    private static final String VERSION0_0_1 = "0.0.1";
+    private static final String KEY_IS_NULL = "^key is marked .*on.*ull but is null$";
     private static final String DUMMY_VALUE = "Dummy";
-    private static final String VERSION0 = "0.0.1";
 
     @SuppressWarnings({"unchecked", "rawtypes"})
     @Test
@@ -70,15 +72,16 @@ public class PfConceptContainerTest {
         container = new DummyPfConceptContainer(new PfConceptKey(), new TreeMap<PfConceptKey, DummyPfConcept>());
         assertNotNull(container);
 
-        assertThatThrownBy(() -> new PfConceptContainer((PfConceptKey) null, null)).hasMessage(KEY_IS_NULL);
+        assertThatThrownBy(() -> new PfConceptContainer((PfConceptKey) null, null)).hasMessageMatching(KEY_IS_NULL);
 
-        assertThatThrownBy(() -> new DummyPfConceptContainer((PfConceptKey) null, null)).hasMessage(KEY_IS_NULL);
+        assertThatThrownBy(() -> new DummyPfConceptContainer((PfConceptKey) null, null))
+            .hasMessageMatching(KEY_IS_NULL);
 
         assertThatThrownBy(() -> new DummyPfConceptContainer(new PfConceptKey(), null))
-                .hasMessage("conceptMap is marked @NonNull but is null");
+            .hasMessageMatching("^conceptMap is marked .*on.*ull but is null$");
 
         assertThatThrownBy(() -> new DummyPfConceptContainer(null, new TreeMap<PfConceptKey, DummyPfConcept>()))
-                .hasMessage(KEY_IS_NULL);
+            .hasMessageMatching(KEY_IS_NULL);
 
         container.getKey().setName(DUMMY_VALUE);
         DummyPfConceptContainer clonedContainer = new DummyPfConceptContainer(container);
@@ -86,12 +89,12 @@ public class PfConceptContainerTest {
         assertEquals(DUMMY_VALUE, clonedContainer.getKey().getName());
 
         assertThatThrownBy(() -> new DummyPfConceptContainer((DummyPfConceptContainer) null))
-                .hasMessage("copyConcept is marked @NonNull but is null");
+            .hasMessageMatching("^copyConcept is marked .*on.*ull but is null$");
 
         List<PfKey> keyList = container.getKeys();
         assertEquals(1, keyList.size());
 
-        PfConceptKey conceptKey = new PfConceptKey("Key", VERSION0);
+        PfConceptKey conceptKey = new PfConceptKey("Key", VERSION0_0_1);
         Map<PfConceptKey, DummyPfConcept> conceptMap = new TreeMap<>();
         conceptMap.put(conceptKey, new DummyPfConcept(conceptKey));
 
@@ -115,7 +118,7 @@ public class PfConceptContainerTest {
         assertEquals(0, container.compareTo(clonedContainer));
 
         assertThatThrownBy(() -> new DummyPfConceptContainer((DummyPfConceptContainer) null))
-                .isInstanceOf(NullPointerException.class);
+            .isInstanceOf(NullPointerException.class);
 
         assertFalse(container.compareTo(null) == 0);
         assertEquals(0, container.compareTo(container));
@@ -127,16 +130,17 @@ public class PfConceptContainerTest {
         testContainer.getKey().setVersion(container.getKey().getVersion());
         assertEquals(0, container.compareTo(testContainer));
 
-        PfConceptKey testConceptKey = new PfConceptKey("TestKey", VERSION0);
+        PfConceptKey testConceptKey = new PfConceptKey("TestKey", VERSION0_0_1);
         testContainer.getConceptMap().put(testConceptKey, new DummyPfConcept(testConceptKey));
         assertFalse(container.compareTo(testContainer) == 0);
 
         final DummyPfConceptContainer container3 = container;
-        assertThatThrownBy(() -> container3.validate(null)).hasMessage("resultIn is marked @NonNull but is null");
+        assertThatThrownBy(() -> container3.validate(null))
+            .hasMessageMatching("^resultIn is marked .*on.*ull but is null$");
 
         DummyPfConceptContainer validateContainer = new DummyPfConceptContainer();
         assertFalse(validateContainer.validate(new PfValidationResult()).isOk());
-        validateContainer.setKey(new PfConceptKey("VCKey", VERSION0));
+        validateContainer.setKey(new PfConceptKey("VCKey", VERSION0_0_1));
         assertTrue(validateContainer.validate(new PfValidationResult()).isOk());
 
         validateContainer.getConceptMap().put(testConceptKey, new DummyPfConcept(testConceptKey));
@@ -167,39 +171,83 @@ public class PfConceptContainerTest {
         returnSet = container.getAll(conceptKey.getName(), conceptKey.getVersion());
         assertEquals(conceptKey, returnSet.iterator().next().getKey());
 
+        returnSet = container.getAllNamesAndVersions(conceptKey.getName(), conceptKey.getVersion());
+        assertEquals(conceptKey, returnSet.iterator().next().getKey());
+        returnSet = container.getAllNamesAndVersions(null, conceptKey.getVersion());
+        assertEquals(conceptKey, returnSet.iterator().next().getKey());
+        returnSet = container.getAllNamesAndVersions(null, null);
+        assertEquals(conceptKey, returnSet.iterator().next().getKey());
+        returnSet = container.getAllNamesAndVersions(conceptKey.getName(), null);
+        assertEquals(conceptKey, returnSet.iterator().next().getKey());
+        returnSet = container.getAllNamesAndVersions("IDontExist", "1.0.0");
+        assertTrue(returnSet.isEmpty());
+
         container.getConceptMap().put(conceptKey, new DummyPfConceptSub(conceptKey));
+
+        PfConceptKey anotherKey = new PfConceptKey(conceptKey);
+        assertEquals(conceptKey, container.get(anotherKey).getKey());
+        anotherKey.setVersion(PfKey.NULL_KEY_VERSION);
+        assertEquals(conceptKey, container.get(anotherKey).getKey());
     }
 
     @Test
     public void testAuthorative() {
         Map<String, DummyAuthorativeConcept> dacMap = new LinkedHashMap<>();
         dacMap.put(NAME0, new DummyAuthorativeConcept(NAME0, "1.2.3", "Hello"));
-        dacMap.put(NAME1, new DummyAuthorativeConcept(PfKey.NULL_KEY_NAME, PfKey.NULL_KEY_VERSION, "Hi"));
+        dacMap.put(NAME1, new DummyAuthorativeConcept("IncorrectName", PfKey.NULL_KEY_VERSION, "Hi"));
         dacMap.put(NAME2, new DummyAuthorativeConcept(NAME2, "1.2.3", "Howdy"));
+        dacMap.put(ID3, new DummyAuthorativeConcept(NAME3, "9.9.9", "Ciao"));
+        dacMap.put("name4:1.2.3", new DummyAuthorativeConcept(null, null, "Slan"));
+        dacMap.put("name5", new DummyAuthorativeConcept(null, null, "Bye"));
 
         List<Map<String, DummyAuthorativeConcept>> authorativeList = new ArrayList<>();
         authorativeList.add(dacMap);
 
         DummyPfConceptContainer container = new DummyPfConceptContainer();
+
+        assertThatThrownBy(() -> container.fromAuthorative(authorativeList))
+            .hasMessage("Key name1:0.0.0 field name1 does not match the value IncorrectName in the concept field");
+
+        dacMap.put(NAME1, new DummyAuthorativeConcept(NAME1, PfKey.NULL_KEY_VERSION, "Hi"));
+
+        assertThatThrownBy(() -> container.fromAuthorative(authorativeList))
+            .hasMessage("Key name3:0.0.1 field 0.0.1 does not match the value 9.9.9 in the concept field");
+
+        dacMap.put(ID3, new DummyAuthorativeConcept(NAME3, "0.0.1", "Ciao"));
+
         container.fromAuthorative(authorativeList);
 
         assertEquals("Hello", container.getConceptMap().get(new PfConceptKey("name0:1.2.3")).getDescription());
-        assertEquals("Hi", container.getConceptMap().get(new PfConceptKey("NULL:0.0.0")).getDescription());
+        assertEquals("Hi", container.getConceptMap().get(new PfConceptKey("name1:0.0.0")).getDescription());
         assertEquals("Howdy", container.getConceptMap().get(new PfConceptKey("name2:1.2.3")).getDescription());
+        assertEquals("Ciao", container.getConceptMap().get(new PfConceptKey("name3:0.0.1")).getDescription());
+        assertEquals("name4", container.getConceptMap().get(new PfConceptKey("name4:1.2.3")).getName());
+        assertEquals("1.2.3", container.getConceptMap().get(new PfConceptKey("name4:1.2.3")).getVersion());
+        assertEquals("0.0.0", container.getConceptMap().get(new PfConceptKey("name5:0.0.0")).getVersion());
 
         List<Map<String, DummyAuthorativeConcept>> outMapList = container.toAuthorative();
 
-        assertEquals(dacMap.get(NAME1), outMapList.get(0).get("NULL"));
-        assertEquals(dacMap.get(NAME0).getDescription(), outMapList.get(1).get(NAME0).getDescription());
+        assertEquals(dacMap.get(NAME0), outMapList.get(0).get(NAME0));
+        assertEquals(dacMap.get(NAME1).getDescription(), outMapList.get(1).get(NAME1).getDescription());
         assertEquals(dacMap.get(NAME2), outMapList.get(2).get(NAME2));
+        assertEquals(dacMap.get(NAME3), outMapList.get(2).get(NAME3));
+
+        List<DummyAuthorativeConcept> outConceptList = container.toAuthorativeList();
+        assertEquals("Hello", outConceptList.get(0).getDescription());
+        assertEquals("Hi", outConceptList.get(1).getDescription());
+        assertEquals("Howdy", outConceptList.get(2).getDescription());
+        assertEquals("Ciao", outConceptList.get(3).getDescription());
+        assertEquals("name4", outConceptList.get(4).getName());
+        assertEquals("1.2.3", outConceptList.get(4).getVersion());
+        assertEquals("0.0.0", outConceptList.get(5).getVersion());
 
         DummyBadPfConceptContainer badContainer = new DummyBadPfConceptContainer();
         assertThatThrownBy(() -> badContainer.fromAuthorative(authorativeList))
-                .hasMessage("failed to instantiate instance of container concept class");
+            .hasMessage("failed to instantiate instance of container concept class");
 
         authorativeList.clear();
         assertThatThrownBy(() -> container.fromAuthorative(authorativeList))
-                .hasMessage("An incoming list of concepts must have at least one entry");
+            .hasMessage("An incoming list of concepts must have at least one entry");
     }
 
     @Test(expected = NullPointerException.class)
diff --git a/models-base/src/test/java/org/onap/policy/models/base/PfConceptFilterTest.java b/models-base/src/test/java/org/onap/policy/models/base/PfConceptFilterTest.java
new file mode 100644 (file)
index 0000000..e82ab41
--- /dev/null
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2020 Nordix Foundation.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.base;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+/**
+ * Test the {@link PfObjectFilter} interface.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class PfConceptFilterTest {
+
+    @Test
+    public void testPfConceptFilter() {
+        List<PfConcept> listToBeFiltered = new ArrayList<>();
+
+        PfConceptFilter conceptFilter = new PfConceptFilter(null, null, null);
+        List<PfConcept> filteredList = conceptFilter.filter(listToBeFiltered);
+        assertTrue(filteredList.isEmpty());
+
+        conceptFilter = new PfConceptFilter(null, PfConceptFilter.LATEST_VERSION, null);
+        filteredList = conceptFilter.filter(listToBeFiltered);
+        assertTrue(filteredList.isEmpty());
+
+        assertThatThrownBy(() -> {
+            final PfConceptFilter conceptFilterNull = new PfConceptFilter(null, null, null);
+            conceptFilterNull.filter(null);
+        }).hasMessageMatching("^originalList is marked .*on.*ull but is null$");
+    }
+}
index a298583..62d8d2b 100644 (file)
@@ -1,5 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -32,7 +33,7 @@ import org.onap.policy.models.base.testconcepts.DummyPfConcept;
 public class PfConceptKeyTest {
 
     private static final String VERSION001 = "0.0.1";
-    private static final String ID_IS_NULL = "id is marked @NonNull but is null";
+    private static final String ID_IS_NULL = "id is marked .*on.*ull but is null$";
 
     @Test
     public void testConceptKey() {
@@ -47,6 +48,7 @@ public class PfConceptKeyTest {
         assertEquals(someKey1, someKey2);
         assertEquals(someKey1, someKey3);
         assertFalse(someKey1.isNullVersion());
+        assertFalse(someKey1.isNullName());
         assertEquals("PfConceptKey(name=my-name, version=0.0.1)", someKey1.toString());
 
         assertEquals("my-name", someKey1.getName());
@@ -55,7 +57,6 @@ public class PfConceptKeyTest {
         assertEquals(someKey2, someKey1.getKey());
         assertEquals(1, someKey1.getKeys().size());
 
-
         PfConcept pfc = new DummyPfConcept();
         assertEquals(PfConceptKey.getNullKey().getId(), pfc.getId());
 
@@ -63,16 +64,16 @@ public class PfConceptKeyTest {
 
         assertTrue(PfConceptKey.getNullKey().isNullKey());
 
-        assertThatThrownBy(() -> PfConceptKey.getNullKey().matchesId(null)).hasMessage(ID_IS_NULL);
+        assertThatThrownBy(() -> PfConceptKey.getNullKey().matchesId(null)).hasMessageMatching(ID_IS_NULL);
 
         assertThatThrownBy(() -> someKey0.setName(null)).isInstanceOf(NullPointerException.class)
-                        .hasMessage("name is marked @NonNull but is null");
+            .hasMessageMatching("^name is marked .*on.*ull but is null$");
 
         assertThatThrownBy(() -> someKey0.setVersion(null)).isInstanceOf(NullPointerException.class)
-                        .hasMessage("version is marked @NonNull but is null");
+            .hasMessageMatching("^version is marked .*on.*ull but is null$");
 
         assertThatIllegalArgumentException().isThrownBy(() -> new PfConceptKey("my-name.*", VERSION001)).withMessage(
-                        "parameter 'name': value 'my-name.*', does not match regular expression '^[A-Za-z0-9\\-_\\.]+$'"
-                                        .replace('\'', '"'));
+            "parameter 'name': value 'my-name.*', does not match regular expression '^[A-Za-z0-9\\-_\\.]+$'"
+                .replace('\'', '"'));
     }
 }
index f467ec3..4210bc6 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,18 +29,20 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.lang.reflect.Field;
+
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
+
 import org.junit.Test;
 import org.onap.policy.models.base.PfKey.Compatibility;
 import org.onap.policy.models.base.testconcepts.DummyPfKey;
 
 public class PfKeyImplTest {
 
-    private static final String OTHER_IS_NULL = "otherKey is marked @NonNull but is null";
-    private static final String ID_IS_NULL = "id is marked @NonNull but is null";
+    private static final String OTHER_IS_NULL = "^otherKey is marked .*on.*ull but is null$";
+    private static final String ID_IS_NULL = "^id is marked .*on.*ull but is null$";
     private static final String VERSION123 = "1.2.3";
     private static final String VERSION100 = "1.0.0";
     private static final String VERSION001 = "0.0.1";
@@ -48,11 +50,11 @@ public class PfKeyImplTest {
     @Test
     public void testConceptKey() {
         assertThatIllegalArgumentException().isThrownBy(() -> new MyKey("some bad key id"))
-                        .withMessage("parameter \"id\": value \"some bad key id\", "
-                                        + "does not match regular expression \"" + PfKey.KEY_ID_REGEXP + "\"");
+            .withMessage("parameter \"id\": value \"some bad key id\", " + "does not match regular expression \""
+                + PfKey.KEY_ID_REGEXP + "\"");
 
         assertThatThrownBy(() -> new MyKey((MyKey) null))
-                        .hasMessage("copyConcept is marked @NonNull but is null");
+            .hasMessageMatching("^copyConcept is marked .*on.*ull but is null$");
 
         MyKey someKey0 = new MyKey();
         assertTrue(someKey0.isNullKey());
@@ -89,7 +91,7 @@ public class PfKeyImplTest {
         assertEquals("name:0.1.2", someKey4.getId());
 
         assertThatThrownBy(() -> someKey0.getCompatibility(null)).isInstanceOf(NullPointerException.class)
-                        .hasMessage("otherKey is marked @NonNull but is null");
+            .hasMessageMatching("^otherKey is marked .*on.*ull but is null$");
 
         assertEquals(Compatibility.DIFFERENT, someKey0.getCompatibility(new DummyPfKey()));
         assertEquals(Compatibility.DIFFERENT, someKey0.getCompatibility(someKey1));
@@ -109,19 +111,19 @@ public class PfKeyImplTest {
         assertFalse(someKey1.isCompatible(new DummyPfKey()));
 
         assertEquals(PfValidationResult.ValidationResult.VALID,
-                someKey0.validate(new PfValidationResult()).getValidationResult());
+            someKey0.validate(new PfValidationResult()).getValidationResult());
         assertEquals(PfValidationResult.ValidationResult.VALID,
-                someKey1.validate(new PfValidationResult()).getValidationResult());
+            someKey1.validate(new PfValidationResult()).getValidationResult());
         assertEquals(PfValidationResult.ValidationResult.VALID,
-                someKey2.validate(new PfValidationResult()).getValidationResult());
+            someKey2.validate(new PfValidationResult()).getValidationResult());
         assertEquals(PfValidationResult.ValidationResult.VALID,
-                someKey3.validate(new PfValidationResult()).getValidationResult());
+            someKey3.validate(new PfValidationResult()).getValidationResult());
         assertEquals(PfValidationResult.ValidationResult.VALID,
-                someKey4.validate(new PfValidationResult()).getValidationResult());
+            someKey4.validate(new PfValidationResult()).getValidationResult());
         assertEquals(PfValidationResult.ValidationResult.VALID,
-                someKey5.validate(new PfValidationResult()).getValidationResult());
+            someKey5.validate(new PfValidationResult()).getValidationResult());
         assertEquals(PfValidationResult.ValidationResult.VALID,
-                someKey6.validate(new PfValidationResult()).getValidationResult());
+            someKey6.validate(new PfValidationResult()).getValidationResult());
 
         someKey0.clean();
         assertNotNull(someKey0.toString());
@@ -132,7 +134,7 @@ public class PfKeyImplTest {
         assertEquals(-12, someKey7.compareTo(someKey0));
 
         assertThatThrownBy(() -> someKey0.compareTo(null)).isInstanceOf(NullPointerException.class)
-                        .hasMessage("otherObj is marked @NonNull but is null");
+            .hasMessageMatching("^otherObj is marked .*on.*ull but is null$");
 
         assertEquals(0, someKey0.compareTo(someKey0));
         assertEquals(-36, someKey0.compareTo(new DummyPfKey()));
@@ -148,18 +150,20 @@ public class PfKeyImplTest {
 
     @Test
     public void testNullArguments() {
-        assertThatThrownBy(() -> new MyKey((String) null)).hasMessage(ID_IS_NULL);
+        assertThatThrownBy(() -> new MyKey((String) null)).hasMessageMatching(ID_IS_NULL);
 
         assertThatThrownBy(() -> new MyKey((MyKey) null))
-                        .hasMessage("copyConcept is marked @NonNull but is null");
+            .hasMessageMatching("^copyConcept is marked .*on.*ull but is null$");
 
-        assertThatThrownBy(() -> new MyKey(null, null)).hasMessage("name is marked @NonNull but is null");
+        assertThatThrownBy(() -> new MyKey(null, null)).hasMessageMatching("name is marked .*on.*ull but is null$");
 
-        assertThatThrownBy(() -> new MyKey("name", null)).hasMessage("version is marked @NonNull but is null");
+        assertThatThrownBy(() -> new MyKey("name", null))
+            .hasMessageMatching("^version is marked .*on.*ull but is null$");
 
-        assertThatThrownBy(() -> new MyKey(null, VERSION001)).hasMessage("name is marked @NonNull but is null");
+        assertThatThrownBy(() -> new MyKey(null, VERSION001))
+            .hasMessageMatching("^name is marked .*on.*ull but is null$");
 
-        assertThatThrownBy(() -> new MyKey("AKey", VERSION001).isCompatible(null)).hasMessage(OTHER_IS_NULL);
+        assertThatThrownBy(() -> new MyKey("AKey", VERSION001).isCompatible(null)).hasMessageMatching(OTHER_IS_NULL);
     }
 
     @Test
@@ -174,10 +178,8 @@ public class PfKeyImplTest {
         testKey.validate(validationResult);
         nameField.set(testKey, "TheKey");
         nameField.setAccessible(false);
-        assertEquals(
-                "name invalid-parameter name with value Key Name "
-                        + "does not match regular expression " + PfKey.NAME_REGEXP,
-                validationResult.getMessageList().get(0).getMessage());
+        assertEquals("name invalid-parameter name with value Key Name " + "does not match regular expression "
+            + PfKey.NAME_REGEXP, validationResult.getMessageList().get(0).getMessage());
 
         Field versionField = testKey.getClass().getDeclaredField("version");
         versionField.setAccessible(true);
@@ -186,21 +188,18 @@ public class PfKeyImplTest {
         testKey.validate(validationResult2);
         versionField.set(testKey, VERSION001);
         versionField.setAccessible(false);
-        assertEquals(
-                "version invalid-parameter version with value Key Version "
-                        + "does not match regular expression " + PfKey.VERSION_REGEXP,
-                validationResult2.getMessageList().get(0).getMessage());
+        assertEquals("version invalid-parameter version with value Key Version " + "does not match regular expression "
+            + PfKey.VERSION_REGEXP, validationResult2.getMessageList().get(0).getMessage());
     }
 
     @Test
     public void testkeynewerThan() {
         MyKey key1 = new MyKey("Key1", VERSION123);
 
-        assertThatThrownBy(() -> key1.isNewerThan(null)).hasMessage(OTHER_IS_NULL);
+        assertThatThrownBy(() -> key1.isNewerThan(null)).hasMessageMatching(OTHER_IS_NULL);
 
-        assertThatThrownBy(() -> key1.isNewerThan(new PfReferenceKey()))
-                        .hasMessage("org.onap.policy.models.base.PfReferenceKey is not "
-                                        + "an instance of " + PfKeyImpl.class.getName());
+        assertThatThrownBy(() -> key1.isNewerThan(new PfReferenceKey())).hasMessage(
+            "org.onap.policy.models.base.PfReferenceKey is not " + "an instance of " + PfKeyImpl.class.getName());
 
         assertFalse(key1.isNewerThan(key1));
 
@@ -241,10 +240,10 @@ public class PfKeyImplTest {
 
         PfReferenceKey refKey = new PfReferenceKey();
 
-        assertThatThrownBy(() -> refKey.isNewerThan(null)).hasMessage(OTHER_IS_NULL);
+        assertThatThrownBy(() -> refKey.isNewerThan(null)).hasMessageMatching(OTHER_IS_NULL);
 
         assertThatThrownBy(() -> refKey.isNewerThan(new MyKey()))
-                        .hasMessage(MyKey.class.getName() + " is not an instance of " + PfReferenceKey.class.getName());
+            .hasMessage(MyKey.class.getName() + " is not an instance of " + PfReferenceKey.class.getName());
 
         assertFalse(refKey.isNewerThan(refKey));
     }
index 3e5d738..46a0066 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,7 +34,7 @@ import org.onap.policy.models.base.testconcepts.DummyPfConceptKeySub;
 
 public class PfKeyUseTest {
 
-    private static final String OTHER_KEY_IS_NULL = "otherKey is marked @NonNull but is null";
+    private static final String OTHER_KEY_IS_NULL = "^otherKey is marked .*on.*ull but is null$";
 
     @Test
     public void testKeyUse() {
@@ -43,7 +43,7 @@ public class PfKeyUseTest {
         assertNotNull(new PfKeyUse(new PfReferenceKey()));
 
         assertThatThrownBy(() -> new PfKeyUse((PfKeyUse) null))
-                        .hasMessage("copyConcept is marked @NonNull but is null");
+            .hasMessageMatching("^copyConcept is marked .*on.*ull but is null$");
 
         PfConceptKey key = new PfConceptKey("Key", "0.0.1");
         PfKeyUse keyUse = new PfKeyUse();
@@ -55,7 +55,7 @@ public class PfKeyUseTest {
 
         assertEquals(Compatibility.IDENTICAL, keyUse.getCompatibility(key));
 
-        assertThatThrownBy(() -> key.getCompatibility(null)).hasMessage(OTHER_KEY_IS_NULL);
+        assertThatThrownBy(() -> key.getCompatibility(null)).hasMessageMatching(OTHER_KEY_IS_NULL);
 
         assertTrue(keyUse.isCompatible(key));
 
@@ -87,20 +87,20 @@ public class PfKeyUseTest {
         PfValidationResult resultNull = new PfValidationResult();
         assertEquals(false, keyUseNull.validate(resultNull).isValid());
 
-        assertThatThrownBy(() -> keyUse.setKey(null)).hasMessage("key is marked @NonNull but is null");
+        assertThatThrownBy(() -> keyUse.setKey(null)).hasMessageMatching("^key is marked .*on.*ull but is null$");
 
-        assertThatThrownBy(() -> keyUse.getCompatibility(null)).hasMessage(OTHER_KEY_IS_NULL);
+        assertThatThrownBy(() -> keyUse.getCompatibility(null)).hasMessageMatching(OTHER_KEY_IS_NULL);
 
-        assertThatThrownBy(() -> keyUse.isCompatible(null)).hasMessage(OTHER_KEY_IS_NULL);
+        assertThatThrownBy(() -> keyUse.isCompatible(null)).hasMessageMatching(OTHER_KEY_IS_NULL);
 
-        assertThatThrownBy(() -> keyUse.validate(null)).hasMessage("result is marked @NonNull but is null");
+        assertThatThrownBy(() -> keyUse.validate(null)).hasMessageMatching("^result is marked .*on.*ull but is null$");
 
         PfKeyUse testKeyUse = new PfKeyUse(new DummyPfConceptKeySub(new PfConceptKey()));
         assertEquals(testKeyUse, new PfKeyUse(testKeyUse));
 
         assertThatThrownBy(() -> new PfKeyUse((PfKeyUse) null)).isInstanceOf(NullPointerException.class);
 
-        assertThatThrownBy(() -> keyUse.isNewerThan(null)).hasMessage(OTHER_KEY_IS_NULL);
+        assertThatThrownBy(() -> keyUse.isNewerThan(null)).hasMessageMatching(OTHER_KEY_IS_NULL);
 
         assertEquals(false, testKeyUse.isNewerThan(keyUse));
         assertEquals(false, testKeyUse.isNewerThan(testKeyUse));
index 9b1a778..c124393 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -46,10 +46,10 @@ public class PfModelTest {
         assertNotNull(new DummyPfModel(new DummyPfModel()));
 
         assertThatThrownBy(() -> new DummyPfModel((PfConceptKey) null))
-                        .hasMessage("key is marked @NonNull but is null");
+            .hasMessageMatching("^key is marked .*on.*ull but is null$");
 
         assertThatThrownBy(() -> new DummyPfModel((DummyPfModel) null))
-                        .hasMessage("copyConcept is marked @NonNull but is null");
+            .hasMessageMatching("^copyConcept is marked .*on.*ull but is null$");
 
         DummyPfModel dpm = new DummyPfModel(new PfConceptKey("modelKey", VERSION001));
         DummyPfModel dpmClone = new DummyPfModel(dpm);
@@ -74,7 +74,7 @@ public class PfModelTest {
         DummyPfModel dpm = new DummyPfModel(dpmKey);
         assertTrue(dpm.validate(new PfValidationResult()).isValid());
 
-        assertThatThrownBy(() -> dpm.validate(null)).hasMessage("resultIn is marked @NonNull but is null");
+        assertThatThrownBy(() -> dpm.validate(null)).hasMessageMatching("^resultIn is marked .*on.*ull but is null$");
 
         dpm.setKey(PfConceptKey.getNullKey());
         assertFalse(dpm.validate(new PfValidationResult()).isValid());
index b12ce4d..ba36b9e 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,6 +29,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.lang.reflect.Field;
+
 import org.junit.Test;
 
 public class PfReferenceKeyTest {
@@ -54,7 +55,7 @@ public class PfReferenceKeyTest {
         assertEquals("NULL:0.0.0:NULL:NULL", PfReferenceKey.getNullKey().getId());
 
         assertThatThrownBy(() -> new PfReferenceKey(new PfConceptKey(), null))
-                        .hasMessage("parameter \"localName\" is null");
+            .hasMessage("parameter \"localName\" is null");
 
         PfReferenceKey testReferenceKey = new PfReferenceKey();
         testReferenceKey.setParentConceptKey(new PfConceptKey("PN", VERSION001));
@@ -83,7 +84,7 @@ public class PfReferenceKeyTest {
         assertEquals("NLN", testReferenceKey.getLocalName());
 
         assertThatThrownBy(() -> testReferenceKey.isCompatible(null))
-                        .hasMessage("otherKey is marked @NonNull but is null");
+            .hasMessageMatching("^otherKey is marked .*on.*ull but is null$");
 
         assertFalse(testReferenceKey.isCompatible(PfConceptKey.getNullKey()));
         assertFalse(testReferenceKey.isCompatible(PfReferenceKey.getNullKey()));
@@ -101,7 +102,7 @@ public class PfReferenceKeyTest {
 
         PfReferenceKey clonedReferenceKey = new PfReferenceKey(testReferenceKey);
         assertEquals("PfReferenceKey(parentKeyName=NPKN, parentKeyVersion=0.0.1, parentLocalName=NPKLN, localName=NLN)",
-                clonedReferenceKey.toString());
+            clonedReferenceKey.toString());
 
         assertFalse(testReferenceKey.hashCode() == 0);
 
@@ -144,9 +145,9 @@ public class PfReferenceKeyTest {
         parentNameField.set(testReferenceKey, "ParentName");
         parentNameField.setAccessible(false);
         assertEquals(
-                "parentKeyName invalid-parameter parentKeyName with value Parent Name "
-                        + "does not match regular expression " + PfKey.NAME_REGEXP,
-                validationResult.getMessageList().get(0).getMessage());
+            "parentKeyName invalid-parameter parentKeyName with value Parent Name "
+                + "does not match regular expression " + PfKey.NAME_REGEXP,
+            validationResult.getMessageList().get(0).getMessage());
 
         Field parentVersionField = testReferenceKey.getClass().getDeclaredField("parentKeyVersion");
         parentVersionField.setAccessible(true);
@@ -156,9 +157,9 @@ public class PfReferenceKeyTest {
         parentVersionField.set(testReferenceKey, VERSION001);
         parentVersionField.setAccessible(false);
         assertEquals(
-                "parentKeyVersion invalid-parameter parentKeyVersion with value Parent Version "
-                        + "does not match regular expression " + PfKey.VERSION_REGEXP,
-                validationResult2.getMessageList().get(0).getMessage());
+            "parentKeyVersion invalid-parameter parentKeyVersion with value Parent Version "
+                + "does not match regular expression " + PfKey.VERSION_REGEXP,
+            validationResult2.getMessageList().get(0).getMessage());
 
         Field parentLocalNameField = testReferenceKey.getClass().getDeclaredField("parentLocalName");
         parentLocalNameField.setAccessible(true);
@@ -168,9 +169,9 @@ public class PfReferenceKeyTest {
         parentLocalNameField.set(testReferenceKey, PARENT_LOCAL_NAME);
         parentLocalNameField.setAccessible(false);
         assertEquals(
-                "parentLocalName invalid-parameter parentLocalName with value "
-                        + "Parent Local Name does not match regular expression [A-Za-z0-9\\-_\\.]+|^$",
-                validationResult3.getMessageList().get(0).getMessage());
+            "parentLocalName invalid-parameter parentLocalName with value "
+                + "Parent Local Name does not match regular expression [A-Za-z0-9\\-_\\.]+|^$",
+            validationResult3.getMessageList().get(0).getMessage());
 
         Field localNameField = testReferenceKey.getClass().getDeclaredField("localName");
         localNameField.setAccessible(true);
@@ -180,8 +181,8 @@ public class PfReferenceKeyTest {
         localNameField.set(testReferenceKey, LOCAL_NAME);
         localNameField.setAccessible(false);
         assertEquals(
-                "localName invalid-parameter localName with value Local Name "
-                        + "does not match regular expression [A-Za-z0-9\\-_\\.]+|^$",
-                validationResult4.getMessageList().get(0).getMessage());
+            "localName invalid-parameter localName with value Local Name "
+                + "does not match regular expression [A-Za-z0-9\\-_\\.]+|^$",
+            validationResult4.getMessageList().get(0).getMessage());
     }
 }
index 942f47c..e3a0e33 100644 (file)
@@ -1,5 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +32,7 @@ import org.onap.policy.models.base.testconcepts.DummyPfConcept;
 public class PfSearchableKeyTest {
 
     private static final String VERSION001 = "0.0.1";
-    private static final String ID_IS_NULL = "id is marked @NonNull but is null";
+    private static final String ID_IS_NULL = "^id is marked .*on.*ull but is null$";
 
     @Test
     public void testSearchableKey() {
@@ -54,7 +55,6 @@ public class PfSearchableKeyTest {
         assertEquals(someKey2, someKey1.getKey());
         assertEquals(1, someKey1.getKeys().size());
 
-
         PfConcept pfc = new DummyPfConcept();
         assertEquals(PfSearchableKey.getNullKey().getId(), pfc.getId());
 
@@ -62,13 +62,13 @@ public class PfSearchableKeyTest {
 
         assertTrue(PfSearchableKey.getNullKey().isNullKey());
 
-        assertThatThrownBy(() -> PfSearchableKey.getNullKey().matchesId(null)).hasMessage(ID_IS_NULL);
+        assertThatThrownBy(() -> PfSearchableKey.getNullKey().matchesId(null)).hasMessageMatching(ID_IS_NULL);
 
         assertThatThrownBy(() -> someKey0.setName(null)).isInstanceOf(NullPointerException.class)
-                        .hasMessage("name is marked @NonNull but is null");
+            .hasMessageMatching("^name is marked .*on.*ull but is null$");
 
         assertThatThrownBy(() -> someKey0.setVersion(null)).isInstanceOf(NullPointerException.class)
-                        .hasMessage("version is marked @NonNull but is null");
+            .hasMessageMatching("^version is marked .*on.*ull but is null$");
 
         PfSearchableKey someKey4 = new PfSearchableKey("my-name.*", VERSION001);
         assertEquals("my-name.*", someKey4.getName());
index 28b9fd9..1495fca 100644 (file)
@@ -1,8 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * ONAP Policy Model
- * ================================================================================
- * Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,14 +26,15 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Date;
+
 import org.junit.Test;
 
 public class PfTimestampKeyTest {
     private static final String VERSION001 = "0.0.1";
-    private static final String CONCEPT_IS_NULL = "copyConcept is marked @NonNull but is null";
-    private static final String NAME_IS_NULL = "name is marked @NonNull but is null";
-    private static final String VERSION_IS_NULL = "version is marked @NonNull but is null";
-    private static final String TIMESTAMP_IS_NULL = "timeStamp is marked @NonNull but is null";
+    private static final String CONCEPT_IS_NULL = "^copyConcept is marked .*on.*ull but is null$";
+    private static final String NAME_IS_NULL = "^name is marked .*on.*ull but is null$";
+    private static final String VERSION_IS_NULL = "^version is marked .*on.*ull but is null$";
+    private static final String TIMESTAMP_IS_NULL = "^timeStamp is marked .*on.*ull but is null$";
     private static final long timeStamp = 1574832537641L;
 
     @Test
@@ -60,24 +59,24 @@ public class PfTimestampKeyTest {
         assertEquals(1, someKey1.getKeys().size());
 
         assertThatThrownBy(() -> new PfTimestampKey((PfTimestampKey) null)).isInstanceOf(NullPointerException.class)
-                .hasMessage(CONCEPT_IS_NULL);
+            .hasMessageMatching(CONCEPT_IS_NULL);
         assertThatThrownBy(() -> new PfTimestampKey(null, null, null)).isInstanceOf(NullPointerException.class)
-                .hasMessage(NAME_IS_NULL);
+            .hasMessageMatching(NAME_IS_NULL);
         assertThatThrownBy(() -> new PfTimestampKey("my-name", null, null)).isInstanceOf(NullPointerException.class)
-                .hasMessage(VERSION_IS_NULL);
+            .hasMessageMatching(VERSION_IS_NULL);
         assertThatThrownBy(() -> new PfTimestampKey("my-name", VERSION001, null))
-                .isInstanceOf(NullPointerException.class).hasMessage(TIMESTAMP_IS_NULL);
+            .isInstanceOf(NullPointerException.class).hasMessageMatching(TIMESTAMP_IS_NULL);
 
         assertThatThrownBy(() -> someKey0.setName(null)).isInstanceOf(NullPointerException.class)
-                .hasMessage(NAME_IS_NULL);
+            .hasMessageMatching(NAME_IS_NULL);
         assertThatThrownBy(() -> someKey0.setVersion(null)).isInstanceOf(NullPointerException.class)
-                .hasMessage(VERSION_IS_NULL);
+            .hasMessageMatching(VERSION_IS_NULL);
         assertThatThrownBy(() -> someKey0.setTimeStamp(null)).isInstanceOf(NullPointerException.class)
-                .hasMessage(TIMESTAMP_IS_NULL);
+            .hasMessageMatching(TIMESTAMP_IS_NULL);
 
         assertFalse(someKey1.isNewerThan(someKey2));
         assertThatThrownBy(() -> someKey1.isNewerThan((PfKey) null)).isInstanceOf(NullPointerException.class)
-                .hasMessage("otherKey is marked @NonNull but is null");
+            .hasMessageMatching("^otherKey is marked .*on.*ull but is null$");
         someKey2.setTimeStamp(new Date(timeStamp + 1));
         assertTrue(someKey2.isNewerThan(someKey1));
         someKey3.setName("my-name3");
@@ -86,7 +85,7 @@ public class PfTimestampKeyTest {
         assertEquals(-1, someKey1.compareTo(someKey2));
         assertEquals(-1, someKey1.compareTo(someKey3));
         assertThatThrownBy(() -> someKey1.compareTo((PfConcept) null)).isInstanceOf(NullPointerException.class)
-                .hasMessage("otherObj is marked @NonNull but is null");
+            .hasMessageMatching("^otherObj is marked .*on.*ull but is null$");
 
         PfTimestampKey someKey4 = new PfTimestampKey("NULL", "0.0.0", new Date(timeStamp));
         assertFalse(someKey4.isNullKey());
diff --git a/models-examples/src/main/resources/policies/vCPE.apex.policy.operational.input.tosca.json b/models-examples/src/main/resources/policies/vCPE.apex.policy.operational.input.tosca.json
new file mode 100644 (file)
index 0000000..52a17a0
--- /dev/null
@@ -0,0 +1,2896 @@
+{
+  "tosca_definitions_version": "tosca_simple_yaml_1_1_0",
+  "topology_template": {
+    "policies": [
+      {
+        "operational.apex.vCPE": {
+          "type": "onap.policies.controlloop.operational.common.Apex",
+          "type_version": "1.0.0",
+          "derived_from": "tosca.policies.Root",
+          "name": "operational.apex.vCPE",
+          "version": "1.0.0",
+          "properties": {
+            "engineServiceParameters": {
+              "name": "MyApexEngine",
+              "version": "0.0.1",
+              "id": 45,
+              "instanceCount": 4,
+              "deploymentPort": 12561,
+              "policy_type_impl": {
+                "apexPolicyModel": {
+                  "key": {
+                    "name": "ONAPvCPEPolicyModel",
+                    "version": "0.0.1"
+                  },
+                  "keyInformation": {
+                    "key": {
+                      "name": "ONAPvCPEPolicyModel_KeyInfo",
+                      "version": "0.0.1"
+                    },
+                    "keyInfoMap": {
+                      "entry": [
+                        {
+                          "key": {
+                            "name": "AAILookupTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "AAILookupTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "bc77813f-e2fa-33e0-aef0-c5b6a8832698",
+                            "description": "Generated description for concept referred to by key \"AAILookupTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCLCMRequestType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCLCMRequestType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "ab26e475-d09d-36cd-a65c-8a8b556f0fa2",
+                            "description": "Generated description for concept referred to by key \"APPCLCMRequestType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCLCMResponseType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCLCMResponseType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "a60b42bb-c308-30ea-be59-5bc54864508b",
+                            "description": "Generated description for concept referred to by key \"APPCLCMResponseType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFRequestEvent",
+                            "version": "2.0.0"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFRequestEvent",
+                              "version": "2.0.0"
+                            },
+                            "UUID": "0b16f8d9-6ee9-30d7-bcd2-e4ded9fccf9b",
+                            "description": "Generated description for concept referred to by key \"APPCRestartVNFRequestEvent:2.0.0\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFRequestTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFRequestTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "719ae90e-ab01-322e-ace3-8c379e7c1fbf",
+                            "description": "Generated description for concept referred to by key \"APPCRestartVNFRequestTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFResponseEvent",
+                            "version": "2.0.0"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFResponseEvent",
+                              "version": "2.0.0"
+                            },
+                            "UUID": "7034c5a9-2ea7-3e9e-9ccf-3610c3bf80d9",
+                            "description": "Generated description for concept referred to by key \"APPCRestartVNFResponseEvent:2.0.0\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFResponseTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFResponseTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "fe641fd9-6583-37c5-b317-2a33a3ca5ac7",
+                            "description": "Generated description for concept referred to by key \"APPCRestartVNFResponseTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "AbatedTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "AbatedTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "0eb3974f-4fdc-3c90-b351-34e7e18ff1ab",
+                            "description": "Generated description for concept referred to by key \"AbatedTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+                            "version": "1.0.2"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+                              "version": "1.0.2"
+                            },
+                            "UUID": "63ff5c25-f245-37e9-a580-6ac274ced3a7",
+                            "description": "Generated description for concept referred to by key \"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e:1.0.2\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ControlLoopExecutionIDAlbum",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoopExecutionIDAlbum",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "5b2bc0cf-0807-3ab1-9004-f21806d800f0",
+                            "description": "Generated description for concept referred to by key \"ControlLoopExecutionIDAlbum:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ControlLoopLogEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoopLogEvent",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "ed8a82ad-52c2-3d58-8c08-601606894b86",
+                            "description": "Generated description for concept referred to by key \"ControlLoopLogEvent:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ControlLoopLogTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoopLogTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "1b175691-6b5d-31f6-bf2d-4be95a01f92e",
+                            "description": "Generated description for concept referred to by key \"ControlLoopLogTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "DeniedTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "DeniedTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "00142e3c-ee3b-323f-9490-6e4b7f34b09f",
+                            "description": "Generated description for concept referred to by key \"DeniedTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GetVCPEStateTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GetVCPEStateTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "644d2a3d-0f3a-3664-8000-280c400a5cc1",
+                            "description": "Generated description for concept referred to by key \"GetVCPEStateTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardDecisionAttributesType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardDecisionAttributesType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "5f6dff51-c183-322f-9aba-c6074aa0ece5",
+                            "description": "Generated description for concept referred to by key \"GuardDecisionAttributesType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardRequestEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardRequestEvent",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "fb383a58-715b-3972-a3e6-38010a8de234",
+                            "description": "Generated description for concept referred to by key \"GuardRequestEvent:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardRequestTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardRequestTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "0427d63c-da78-334c-a5bd-95fbbb162398",
+                            "description": "Generated description for concept referred to by key \"GuardRequestTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardResponseEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardResponseEvent",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "395f6d46-cf24-3d3e-b1fd-1a189a58993d",
+                            "description": "Generated description for concept referred to by key \"GuardResponseEvent:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardResponseTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardResponseTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "1a8b3f30-a7aa-330b-8131-4aea06ad6934",
+                            "description": "Generated description for concept referred to by key \"GuardResponseTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "NoAAILookupTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "NoAAILookupTask",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "648bc8f9-ad2b-3a1b-abe2-89401645f191",
+                            "description": "Generated description for concept referred to by key \"NoAAILookupTask:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ONAPvCPEPolicyModel",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ONAPvCPEPolicyModel",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "cf1aa7f4-6fe3-3cba-90b4-49dcf46f0d57",
+                            "description": "Generated description for concept referred to by key \"ONAPvCPEPolicyModel:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ONAPvCPEPolicyModel_Albums",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ONAPvCPEPolicyModel_Albums",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "13f8471b-2b9c-32e0-940b-fe640ea442cf",
+                            "description": "Generated description for concept referred to by key \"ONAPvCPEPolicyModel_Albums:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ONAPvCPEPolicyModel_Events",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ONAPvCPEPolicyModel_Events",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "4b8e6653-731d-38c5-a195-0cadf533a7a1",
+                            "description": "Generated description for concept referred to by key \"ONAPvCPEPolicyModel_Events:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ONAPvCPEPolicyModel_KeyInfo",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ONAPvCPEPolicyModel_KeyInfo",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "87a9d6da-7d4b-3041-8a70-49442750d590",
+                            "description": "Generated description for concept referred to by key \"ONAPvCPEPolicyModel_KeyInfo:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ONAPvCPEPolicyModel_Policies",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ONAPvCPEPolicyModel_Policies",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "6220cca4-66f5-3d1b-9f19-688a9b4b70f5",
+                            "description": "Generated description for concept referred to by key \"ONAPvCPEPolicyModel_Policies:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ONAPvCPEPolicyModel_Schemas",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ONAPvCPEPolicyModel_Schemas",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "3df4eef8-e764-3398-afe9-86730e20905a",
+                            "description": "Generated description for concept referred to by key \"ONAPvCPEPolicyModel_Schemas:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ONAPvCPEPolicyModel_Tasks",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ONAPvCPEPolicyModel_Tasks",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "1781b875-a3e8-3407-98bd-ba9580cfc543",
+                            "description": "Generated description for concept referred to by key \"ONAPvCPEPolicyModel_Tasks:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ReceiveEventPolicy",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ReceiveEventPolicy",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "568b7345-9de1-36d3-b6a3-9b857e6809a1",
+                            "description": "Generated description for concept referred to by key \"ReceiveEventPolicy:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "RequestIDVNFIDAlbum",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "RequestIDVNFIDAlbum",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "5d8e8298-ded6-30a5-9825-48111dc17a58",
+                            "description": "Generated description for concept referred to by key \"RequestIDVNFIDAlbum:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "RestartAPPCRequestPolicy",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "RestartAPPCRequestPolicy",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "33d02162-314b-352b-b8b9-2862e8883894",
+                            "description": "Generated description for concept referred to by key \"RestartAPPCRequestPolicy:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "RestartAPPCResponsePolicy",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "RestartAPPCResponsePolicy",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "ef4fcbd2-1609-377c-9875-8d27f7a901df",
+                            "description": "Generated description for concept referred to by key \"RestartAPPCResponsePolicy:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "SimpleBooleanType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "SimpleBooleanType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "7218fb2f-59e3-321d-9ae1-bc97b19eb4ae",
+                            "description": "Generated description for concept referred to by key \"SimpleBooleanType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "SimpleLongType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "SimpleLongType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "2dfcd9ec-a6f9-3f9f-958f-9b36cf4ac574",
+                            "description": "Generated description for concept referred to by key \"SimpleLongType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "SimpleStringType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "SimpleStringType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "8a4957cf-9493-3a76-8c22-a208e23259af",
+                            "description": "Generated description for concept referred to by key \"SimpleStringType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "UUIDType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "UUIDType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "6a8cc68e-dfc8-3403-9c6d-071c886b319c",
+                            "description": "Generated description for concept referred to by key \"UUIDType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VCPEClosedLoopStatusAlbum",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VCPEClosedLoopStatusAlbum",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "47a4403e-3074-3964-83ef-93eefaffd192",
+                            "description": "Generated description for concept referred to by key \"VCPEClosedLoopStatusAlbum:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VCPEClosedLoopStatusType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VCPEClosedLoopStatusType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "6e7dced1-53f1-39e2-b4e6-412b75d5b9e6",
+                            "description": "Generated description for concept referred to by key \"VCPEClosedLoopStatusType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VCPEStateUpdatedEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VCPEStateUpdatedEvent",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "5e56a3fd-f82a-3ced-821b-b9fbaf65d367",
+                            "description": "Generated description for concept referred to by key \"VCPEStateUpdatedEvent:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VirtualControlLoopEventType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VirtualControlLoopEventType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "15aca887-8f6c-3713-8114-0f49f03adab7",
+                            "description": "Generated description for concept referred to by key \"VirtualControlLoopEventType:0.0.1\""
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VirtualControlLoopNotificationType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VirtualControlLoopNotificationType",
+                              "version": "0.0.1"
+                            },
+                            "UUID": "283f5b0d-d8cd-31b0-91fa-89b9de2e1fda",
+                            "description": "Generated description for concept referred to by key \"VirtualControlLoopNotificationType:0.0.1\""
+                          }
+                        }
+                      ]
+                    }
+                  },
+                  "policies": {
+                    "key": {
+                      "name": "ONAPvCPEPolicyModel_Policies",
+                      "version": "0.0.1"
+                    },
+                    "policyMap": {
+                      "entry": [
+                        {
+                          "key": {
+                            "name": "ReceiveEventPolicy",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "policyKey": {
+                              "name": "ReceiveEventPolicy",
+                              "version": "0.0.1"
+                            },
+                            "template": "Freestyle",
+                            "state": {
+                              "entry": [
+                                {
+                                  "key": "AbatedState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "ReceiveEventPolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "AbatedState"
+                                    },
+                                    "trigger": {
+                                      "name": "VCPEStateUpdatedEvent",
+                                      "version": "0.0.1"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "AbatedOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "AbatedState",
+                                              "localName": "AbatedOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "ControlLoopLogEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "NULL",
+                                              "parentKeyVersion": "0.0.0",
+                                              "parentLocalName": "NULL",
+                                              "localName": "NULL"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [],
+                                    "taskSelectionLogic": {
+                                      "key": "NULL",
+                                      "logicFlavour": "UNDEFINED",
+                                      "logic": ""
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "ControlLoopLogTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "ControlLoopLogTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "AbatedState",
+                                              "localName": "ReceiveEventPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "AbatedState",
+                                              "localName": "AbatedOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                },
+                                {
+                                  "key": "GetVCPEState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "ReceiveEventPolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "GetVCPEState"
+                                    },
+                                    "trigger": {
+                                      "name": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+                                      "version": "1.0.2"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "GetVCPEStateOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "GetVCPEState",
+                                              "localName": "GetVCPEStateOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "VCPEStateUpdatedEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "NULL",
+                                              "localName": "RequestAAIState"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [],
+                                    "taskSelectionLogic": {
+                                      "key": "NULL",
+                                      "logicFlavour": "UNDEFINED",
+                                      "logic": ""
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "GetVCPEStateTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "GetVCPEStateTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "GetVCPEState",
+                                              "localName": "ReceiveEventPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "GetVCPEState",
+                                              "localName": "GetVCPEStateOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                },
+                                {
+                                  "key": "OnsetOrAbatedState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "ReceiveEventPolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "OnsetOrAbatedState"
+                                    },
+                                    "trigger": {
+                                      "name": "VCPEStateUpdatedEvent",
+                                      "version": "0.0.1"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "AbatedOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "OnsetOrAbatedState",
+                                              "localName": "AbatedOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "VCPEStateUpdatedEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "NULL",
+                                              "localName": "AbatedState"
+                                            }
+                                          }
+                                        },
+                                        {
+                                          "key": "OnsetOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "OnsetOrAbatedState",
+                                              "localName": "OnsetOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "GuardRequestEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "NULL",
+                                              "parentKeyVersion": "0.0.0",
+                                              "parentLocalName": "NULL",
+                                              "localName": "NULL"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [
+                                      {
+                                        "name": "VCPEClosedLoopStatusAlbum",
+                                        "version": "0.0.1"
+                                      }
+                                    ],
+                                    "taskSelectionLogic": {
+                                      "key": "TaskSelectionLogic",
+                                      "logicFlavour": "JAVASCRIPT",
+                                      "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar returnValue = true;\nvar status = null;\n\nif( executor.inFields.get(\"vnfID\") == null) {\n   executor.logger.info(\"OnsetOrAbatedStateTSL: vnfID is null\");\n   var vnfName = executor.inFields.get(\"vnfName\");\n   var vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfName\"));\n   status = vcpeClosedLoopStatus.get(\"closedLoopEventStatus\").toString();\n} else {\n   var vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfID\").toString());\n   status = vcpeClosedLoopStatus.get(\"closedLoopEventStatus\").toString();\n}\n\nif (status == \"ONSET\") {\n    executor.subject.getTaskKey(\"GuardRequestTask\").copyTo(executor.selectedTask);\n} else if (status == \"ABATED\") {\n    executor.subject.getTaskKey(\"AbatedTask\").copyTo(executor.selectedTask);\n    onsetFlag = executor.isFalse;\n} else {\n    executor.message = \"closedLoopEventStatus is \\\"\" + status + \"\\\", it must be either \\\"ONSET\\\" or \\\"ABATED\\\"\";\n    returnValue = false;\n}\n\nexecutor.logger.info(\"ReceiveEventPolicyOnsetOrAbatedStateTSL State Selected Task:\" + executor.selectedTask);\n\nreturnValue;"
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "AbatedTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "AbatedTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "OnsetOrAbatedState",
+                                              "localName": "ReceiveEventPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "OnsetOrAbatedState",
+                                              "localName": "AbatedOutput"
+                                            }
+                                          }
+                                        },
+                                        {
+                                          "key": {
+                                            "name": "GuardRequestTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "OnsetOrAbatedState",
+                                              "localName": "ReceiveEventPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "OnsetOrAbatedState",
+                                              "localName": "OnsetOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                },
+                                {
+                                  "key": "RequestAAIState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "ReceiveEventPolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "RequestAAIState"
+                                    },
+                                    "trigger": {
+                                      "name": "VCPEStateUpdatedEvent",
+                                      "version": "0.0.1"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "RequestAAIStateOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "RequestAAIState",
+                                              "localName": "RequestAAIStateOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "VCPEStateUpdatedEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "NULL",
+                                              "localName": "OnsetOrAbatedState"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [
+                                      {
+                                        "name": "VCPEClosedLoopStatusAlbum",
+                                        "version": "0.0.1"
+                                      }
+                                    ],
+                                    "taskSelectionLogic": {
+                                      "key": "NULL",
+                                      "logicFlavour": "UNDEFINED",
+                                      "logic": ""
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "AAILookupTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "AAILookupTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "RequestAAIState",
+                                              "localName": "ReceiveEventPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "ReceiveEventPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "RequestAAIState",
+                                              "localName": "RequestAAIStateOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                }
+                              ]
+                            },
+                            "firstState": "GetVCPEState"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "RestartAPPCRequestPolicy",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "policyKey": {
+                              "name": "RestartAPPCRequestPolicy",
+                              "version": "0.0.1"
+                            },
+                            "template": "Freestyle",
+                            "state": {
+                              "entry": [
+                                {
+                                  "key": "DeniedState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "RestartAPPCRequestPolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "DeniedState"
+                                    },
+                                    "trigger": {
+                                      "name": "VCPEStateUpdatedEvent",
+                                      "version": "0.0.1"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "DeniedOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "DeniedState",
+                                              "localName": "DeniedOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "ControlLoopLogEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "NULL",
+                                              "parentKeyVersion": "0.0.0",
+                                              "parentLocalName": "NULL",
+                                              "localName": "NULL"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [],
+                                    "taskSelectionLogic": {
+                                      "key": "NULL",
+                                      "logicFlavour": "UNDEFINED",
+                                      "logic": ""
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "ControlLoopLogTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "ControlLoopLogTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "DeniedState",
+                                              "localName": "RestartAPPCRequestPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "DeniedState",
+                                              "localName": "DeniedOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                },
+                                {
+                                  "key": "PermitOrDenyState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "RestartAPPCRequestPolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "PermitOrDenyState"
+                                    },
+                                    "trigger": {
+                                      "name": "VCPEStateUpdatedEvent",
+                                      "version": "0.0.1"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "DenyOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PermitOrDenyState",
+                                              "localName": "DenyOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "VCPEStateUpdatedEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "NULL",
+                                              "localName": "DeniedState"
+                                            }
+                                          }
+                                        },
+                                        {
+                                          "key": "PermitOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PermitOrDenyState",
+                                              "localName": "PermitOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "APPCRestartVNFRequestEvent",
+                                              "version": "2.0.0"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "NULL",
+                                              "parentKeyVersion": "0.0.0",
+                                              "parentLocalName": "NULL",
+                                              "localName": "NULL"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [
+                                      {
+                                        "name": "VCPEClosedLoopStatusAlbum",
+                                        "version": "0.0.1"
+                                      }
+                                    ],
+                                    "taskSelectionLogic": {
+                                      "key": "TaskSelectionLogic",
+                                      "logicFlavour": "JAVASCRIPT",
+                                      "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfID\").toString());\n\nvar guardResult = vcpeClosedLoopStatus.get(\"notification\");\n\nif (guardResult == \"OPERATION: GUARD_PERMIT\") {\n    executor.subject.getTaskKey(\"APPCRestartVNFRequestTask\").copyTo(executor.selectedTask);\n} else {\n    executor.subject.getTaskKey(\"DeniedTask\").copyTo(executor.selectedTask);\n}\n\nexecutor.logger.info(\"RestartAPPCRequestPolicyPermitOrDenyTSL State Selected Task:\" + executor.selectedTask);\n\ntrue;"
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "DeniedTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "APPCRestartVNFRequestTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PermitOrDenyState",
+                                              "localName": "RestartAPPCRequestPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PermitOrDenyState",
+                                              "localName": "PermitOutput"
+                                            }
+                                          }
+                                        },
+                                        {
+                                          "key": {
+                                            "name": "DeniedTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PermitOrDenyState",
+                                              "localName": "RestartAPPCRequestPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PermitOrDenyState",
+                                              "localName": "DenyOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                },
+                                {
+                                  "key": "PolicyGuardResponseState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "RestartAPPCRequestPolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "PolicyGuardResponseState"
+                                    },
+                                    "trigger": {
+                                      "name": "GuardResponseEvent",
+                                      "version": "0.0.1"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "GuardResponseOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PolicyGuardResponseState",
+                                              "localName": "GuardResponseOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "VCPEStateUpdatedEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "NULL",
+                                              "localName": "PermitOrDenyState"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [],
+                                    "taskSelectionLogic": {
+                                      "key": "NULL",
+                                      "logicFlavour": "UNDEFINED",
+                                      "logic": ""
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "GuardResponseTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "GuardResponseTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PolicyGuardResponseState",
+                                              "localName": "RestartAPPCRequestPolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "RestartAPPCRequestPolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "PolicyGuardResponseState",
+                                              "localName": "GuardResponseOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                }
+                              ]
+                            },
+                            "firstState": "PolicyGuardResponseState"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "RestartAPPCResponsePolicy",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "policyKey": {
+                              "name": "RestartAPPCResponsePolicy",
+                              "version": "0.0.1"
+                            },
+                            "template": "Freestyle",
+                            "state": {
+                              "entry": [
+                                {
+                                  "key": "ResponseLogState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "RestartAPPCResponsePolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "ResponseLogState"
+                                    },
+                                    "trigger": {
+                                      "name": "VCPEStateUpdatedEvent",
+                                      "version": "0.0.1"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "ResponseLogOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCResponsePolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "ResponseLogState",
+                                              "localName": "ResponseLogOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "ControlLoopLogEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "NULL",
+                                              "parentKeyVersion": "0.0.0",
+                                              "parentLocalName": "NULL",
+                                              "localName": "NULL"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [],
+                                    "taskSelectionLogic": {
+                                      "key": "NULL",
+                                      "logicFlavour": "UNDEFINED",
+                                      "logic": ""
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "ControlLoopLogTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "ControlLoopLogTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCResponsePolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "ResponseLogState",
+                                              "localName": "RestartAPPCResponsePolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "RestartAPPCResponsePolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "ResponseLogState",
+                                              "localName": "ResponseLogOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                },
+                                {
+                                  "key": "RestartAPPCResponseState",
+                                  "value": {
+                                    "stateKey": {
+                                      "parentKeyName": "RestartAPPCResponsePolicy",
+                                      "parentKeyVersion": "0.0.1",
+                                      "parentLocalName": "NULL",
+                                      "localName": "RestartAPPCResponseState"
+                                    },
+                                    "trigger": {
+                                      "name": "APPCRestartVNFResponseEvent",
+                                      "version": "2.0.0"
+                                    },
+                                    "stateOutputs": {
+                                      "entry": [
+                                        {
+                                          "key": "APPCRestartVNFResponseOutput",
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCResponsePolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "RestartAPPCResponseState",
+                                              "localName": "APPCRestartVNFResponseOutput"
+                                            },
+                                            "outgoingEvent": {
+                                              "name": "VCPEStateUpdatedEvent",
+                                              "version": "0.0.1"
+                                            },
+                                            "nextState": {
+                                              "parentKeyName": "RestartAPPCResponsePolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "NULL",
+                                              "localName": "ResponseLogState"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    },
+                                    "contextAlbumReference": [],
+                                    "taskSelectionLogic": {
+                                      "key": "NULL",
+                                      "logicFlavour": "UNDEFINED",
+                                      "logic": ""
+                                    },
+                                    "stateFinalizerLogicMap": {
+                                      "entry": []
+                                    },
+                                    "defaultTask": {
+                                      "name": "APPCRestartVNFResponseTask",
+                                      "version": "0.0.1"
+                                    },
+                                    "taskReferences": {
+                                      "entry": [
+                                        {
+                                          "key": {
+                                            "name": "APPCRestartVNFResponseTask",
+                                            "version": "0.0.1"
+                                          },
+                                          "value": {
+                                            "key": {
+                                              "parentKeyName": "RestartAPPCResponsePolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "RestartAPPCResponseState",
+                                              "localName": "RestartAPPCResponsePolicy"
+                                            },
+                                            "outputType": "DIRECT",
+                                            "output": {
+                                              "parentKeyName": "RestartAPPCResponsePolicy",
+                                              "parentKeyVersion": "0.0.1",
+                                              "parentLocalName": "RestartAPPCResponseState",
+                                              "localName": "APPCRestartVNFResponseOutput"
+                                            }
+                                          }
+                                        }
+                                      ]
+                                    }
+                                  }
+                                }
+                              ]
+                            },
+                            "firstState": "RestartAPPCResponseState"
+                          }
+                        }
+                      ]
+                    }
+                  },
+                  "tasks": {
+                    "key": {
+                      "name": "ONAPvCPEPolicyModel_Tasks",
+                      "version": "0.0.1"
+                    },
+                    "taskMap": {
+                      "entry": [
+                        {
+                          "key": {
+                            "name": "AAILookupTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "AAILookupTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfID\").toString());\n\nexecutor.logger.info(\"Executing A&AI Lookup\");\nexecutor.logger.info(vcpeClosedLoopStatus);\n\nvar aaiInfo = vcpeClosedLoopStatus.get(\"AAI\");\nvar returnValue = true;\n\nif (aaiInfo.get(\"vserverName\") == null) {\n    executor.message = \"the field vserver.vserver-name must exist in the onset control loop event\";\n    executor.logger.warn(executor.message);\n    returnValue = false;\n}\nelse if (aaiInfo.get(\"genericVnfVnfId\") == null && aaiInfo.get(\"genericVnfVnfName\") == null) {\n    executor.message = \"either the field generic-vnf.vnf-id or generic-vnf.vnf-name must exist\"\n        + \" in the onset control loop event\";\n    executor.logger.warn(executor.message);\n    returnValue = false;\n}\nelse {\n    var restManager = new org.onap.policy.rest.RestManager;\n    var aaiManager = new org.onap.policy.aai.AaiManager(restManager);\n\n    // We need to instantiate the type in order to trigger the static JAXB handling\n    // in the AaiCqResponse class\n    var aaiCqResponseType = org.onap.policy.aai.AaiCqResponse;\n\n    var aaiResponse = aaiManager.getCustomQueryResponse(\n            \"http://localhost:54321/OnapVCpeSim/sim\",\n            \"aai.username\",\n            \"aai.password\",\n            executor.inFields.get(\"requestID\"),\n            vcpeClosedLoopStatus.get(\"AAI\").get(\"vserverName\")\n    );\n\n    var genericVnf;\n\n    if (aaiInfo.get(\"genericVnfVnfId\") != null) {\n        genericVnf = aaiResponse.getGenericVnfByModelInvariantId(aaiInfo.get(\"genericVnfVnfId\"));\n    }\n    else {\n        genericVnf = aaiResponse.getGenericVnfByVnfName(aaiInfo.get(\"genericVnfVnfId\"));\n    }\n\n    aaiInfo.put(\"genericVnfResourceVersion\",      genericVnf.getResourceVersion());\n    aaiInfo.put(\"genericVnfVnfName\",              genericVnf.getVnfName());\n    aaiInfo.put(\"genericVnfProvStatus\",           genericVnf.getProvStatus());\n    aaiInfo.put(\"genericVnfIsClosedLoopDisabled\", genericVnf.isIsClosedLoopDisabled().toString());\n    aaiInfo.put(\"genericVnfVnfType\",              genericVnf.getVnfType());\n    aaiInfo.put(\"genericVnfInMaint\",              genericVnf.isInMaint().toString());\n    aaiInfo.put(\"genericVnfServiceId\",            genericVnf.getServiceId());\n    aaiInfo.put(\"genericVnfVnfId\",                genericVnf.getVnfId());\n    aaiInfo.put(\"genericVnfOrchestrationStatus\",\n            genericVnf.getVfModules().getVfModule().get(0).getOrchestrationStatus());\n\n    executor.outFields.put(\"requestID\", executor.inFields.get(\"requestID\"));\n    executor.outFields.put(\"vnfID\", executor.inFields.get(\"vnfID\"));\n\n    executor.logger.info(executor.outFields);\n}\n\nreturnValue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFRequestTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFRequestTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "APPCLCMRequestEvent",
+                                  "value": {
+                                    "key": "APPCLCMRequestEvent",
+                                    "fieldSchemaKey": {
+                                      "name": "APPCLCMRequestType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "RequestIDVNFIDAlbum",
+                                "version": "0.0.1"
+                              },
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar appcRequest = new org.onap.policy.appclcm.AppcLcmDmaapWrapper;\nappcRequest.setBody(new org.onap.policy.appclcm.AppcLcmBody);\nappcRequest.getBody().setInput(new org.onap.policy.appclcm.AppcLcmInput);\nappcRequest.getBody().getInput().setCommonHeader(\n        new org.onap.policy.appclcm.AppcLcmCommonHeader);\n\nappcRequest.setVersion(\"2.0.0\");\nappcRequest.setRpcName(\"restart\");\nappcRequest.setCorrelationId(executor.inFields.get(\"requestID\"));\nappcRequest.setType(\"request\");\n\nvar vcpeClosedLoopStatus = executor\n        .getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n                executor.inFields.get(\"vnfID\").toString());\n\nappcRequest.getBody().getInput().getCommonHeader().setTimeStamp(java.time.Instant.now());\nappcRequest.getBody().getInput().getCommonHeader().setApiVer(\"2.00\");\nappcRequest.getBody().getInput().getCommonHeader().setOriginatorId(\n        executor.inFields.get(\"requestID\").toString());\nappcRequest.getBody().getInput().getCommonHeader().setRequestId(\n        executor.inFields.get(\"requestID\"));\nappcRequest.getBody().getInput().getCommonHeader().setSubRequestId(\"1\");\nappcRequest.getBody().getInput().getCommonHeader().getFlags().put(\"ttl\", \"10000\");\nappcRequest.getBody().getInput().getCommonHeader().getFlags().put(\"force\", \"TRUE\");\nappcRequest.getBody().getInput().getCommonHeader().getFlags().put(\"mode\", \"EXCLUSIVE\");\n\nappcRequest.getBody().getInput().setAction(\"Restart\");\nappcRequest.getBody().getInput().setActionIdentifiers(new java.util.HashMap());\nappcRequest.getBody().getInput().getActionIdentifiers().put(\"vnf-id\",\n        executor.inFields.get(\"vnfID\").toString());\n\nexecutor.getContextAlbum(\"RequestIDVNFIDAlbum\").put(\n        executor.inFields.get(\"requestID\").toString(),\n        executor.inFields.get(\"vnfID\"));\n\nvcpeClosedLoopStatus.put(\"notification\", \"OPERATION\");\nvcpeClosedLoopStatus.put(\"notificationTime\", java.lang.System\n        .currentTimeMillis());\n\nexecutor.outFields.put(\"APPCLCMRequestEvent\", appcRequest);\n\nexecutor.logger.info(executor.outFields);\n\ntrue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFResponseTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFResponseTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "APPCLCMResponseEvent",
+                                  "value": {
+                                    "key": "APPCLCMResponseEvent",
+                                    "fieldSchemaKey": {
+                                      "name": "APPCLCMResponseType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "RequestIDVNFIDAlbum",
+                                "version": "0.0.1"
+                              },
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * APPC LCM Response code: 100 ACCEPTED\n *                         200 ERROR UNEXPECTED ERROR means failure\n *                         312 REJECTED DUPLICATE REQUEST\n *                         400 SUCCESS\n *\n * Note: Sometimes the corelationId has a -1 at the tail, need to get rid of it when present.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar appcResponse = executor.inFields.get(\"APPCLCMResponseEvent\");\n\nvar requestIDString = appcResponse.getCorrelationId().substr(0, 36);\nexecutor.logger.info(\"requestIDString = \" + requestIDString);\nvar vnfID = executor.getContextAlbum(\"RequestIDVNFIDAlbum\")\n        .get(requestIDString);\nexecutor.logger.info(\"Size of RequestIDVNFIDAlbum = \"\n        + executor.getContextAlbum(\"RequestIDVNFIDAlbum\").size());\nexecutor.logger.info(\"vnfID = \" + vnfID);\n\nvar returnValue = true;\n\nif (vnfID != null) {\n    var vcpeClosedLoopStatus = executor.getContextAlbum(\n            \"VCPEClosedLoopStatusAlbum\").get(vnfID.toString());\n    var requestId = java.util.UUID.fromString(vcpeClosedLoopStatus\n            .get(\"requestID\"));\n\n    vcpeClosedLoopStatus.put(\"notificationTime\", java.lang.System\n            .currentTimeMillis());\n\n    executor.logger.info(\"Got from APPC code: \"\n            + org.onap.policy.appclcm.AppcLcmResponseCode\n                    .toResponseValue(appcResponse.getBody().getOutput()\n                            .getStatus().getCode()));\n\n    if (org.onap.policy.appclcm.AppcLcmResponseCode\n            .toResponseValue(appcResponse.getBody().getOutput().getStatus()\n                    .getCode()) == org.onap.policy.appclcm.AppcLcmResponseCode.SUCCESS) {\n        vcpeClosedLoopStatus.put(\"notification\", \"OPERATION_SUCCESS\");\n        vcpeClosedLoopStatus.put(\"message\", \"vCPE restarted\");\n        executor.getContextAlbum(\"RequestIDVNFIDAlbum\").remove(requestIDString);\n    } else if (org.onap.policy.appclcm.AppcLcmResponseCode\n            .toResponseValue(appcResponse.getBody().getOutput().getStatus()\n                    .getCode()) == \"ACCEPTED\"\n            || org.onap.policy.appclcm.AppcLcmResponseCode\n                    .toResponseValue(appcResponse.getBody().getOutput()\n                            .getStatus().getCode()) == \"REJECT\") {\n        executor.logger\n                .info(\"Got ACCEPTED 100 or REJECT 312, keep the context, wait for next response. Code is: \"\n                        + org.onap.policy.appclcm.AppcLcmResponseCode\n                                .toResponseValue(appcResponse.getBody()\n                                        .getOutput().getStatus().getCode()));\n    } else {\n        executor.getContextAlbum(\"RequestIDVNFIDAlbum\").remove(requestIDString);\n        vcpeClosedLoopStatus.put(\"notification\", \"OPERATION_FAILURE\");\n        vcpeClosedLoopStatus.put(\"message\", \"vCPE restart failed\");\n    }\n\n    executor.outFields.put(\"requestID\", requestId);\n    executor.outFields.put(\"vnfID\", vnfID);\n} else {\n    executor.message = \"VNF ID not found in context album for request ID \"\n            + requestIDString;\n    returnValue = false\n}\n\nexecutor.logger.info(executor.outFields);\n\nreturnValue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "AbatedTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "AbatedTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfName",
+                                  "value": {
+                                    "key": "vnfName",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": true
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfName",
+                                  "value": {
+                                    "key": "vnfName",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": true
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar vcpeClosedLoopStatus = null;\nif( executor.inFields.get(\"vnfID\") == null) {\n   executor.logger.info(\"AbatedTask: vnfID is null\");\n   var vnfName = executor.inFields.get(\"vnfName\");\n   vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfName\"));\n} else {\n   vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfID\").toString());\n}\n\nvcpeClosedLoopStatus.put(\"notification\",     \"FINAL_SUCCESS\");\nvcpeClosedLoopStatus.put(\"notificationTime\", java.lang.System.currentTimeMillis());\nvcpeClosedLoopStatus.put(\"message\",          \"situation has been abated\");\n\nexecutor.logger.info(executor.outFields);\n\ntrue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ControlLoopLogTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoopLogTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "VirtualControlLoopNotification",
+                                  "value": {
+                                    "key": "VirtualControlLoopNotification",
+                                    "fieldSchemaKey": {
+                                      "name": "VirtualControlLoopNotificationType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar vnfID = executor.inFields.get(\"vnfID\");\nif(vnfID == null) {\n   vnfID = executor.inFields.get(\"vnfName\");\n}\nexecutor.logger.info(\"vnfID=\" + vnfID);\n\nvar vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(vnfID.toString());\n\nexecutor.logger.info(\"Logging context information for VNF \\\"\" + vnfID + \"\\\"\");\n\nvar clNotification = new org.onap.policy.controlloop.VirtualControlLoopNotification();\n\nclNotification.setClosedLoopControlName(vcpeClosedLoopStatus.get(\"closedLoopControlName\"));\nclNotification.setClosedLoopAlarmStart(java.time.Instant.ofEpochMilli(vcpeClosedLoopStatus.get(\"closedLoopAlarmStart\")));\nclNotification.setClosedLoopAlarmEnd(java.time.Instant.ofEpochMilli(vcpeClosedLoopStatus.get(\"closedLoopAlarmEnd\")));\nclNotification.setClosedLoopEventClient(vcpeClosedLoopStatus.get(\"closedLoopEventClient\"));\nclNotification.setVersion(vcpeClosedLoopStatus.get(\"version\"));\nclNotification.setRequestId(java.util.UUID.fromString(vcpeClosedLoopStatus.get(\"requestID\")));\nclNotification.setTargetType(vcpeClosedLoopStatus.get(\"target_type\"));\nclNotification.setTarget(vcpeClosedLoopStatus.get(\"target\"));\nclNotification.setFrom(vcpeClosedLoopStatus.get(\"from\"));\nclNotification.setPolicyScope(vcpeClosedLoopStatus.get(\"policyScope\"));\nclNotification.setPolicyName(vcpeClosedLoopStatus.get(\"policyName\"));\nclNotification.setPolicyVersion(vcpeClosedLoopStatus.get(\"policyVersion\"));\nclNotification.setNotification(org.onap.policy.controlloop.ControlLoopNotificationType.toType(vcpeClosedLoopStatus.get(\"notification\")));\nclNotification.setMessage(vcpeClosedLoopStatus.get(\"message\"));\n\nvar notificationInstant = java.time.Instant.ofEpochSecond(vcpeClosedLoopStatus.get(\"notificationTime\"));\nvar notificationTime = java.time.ZonedDateTime.ofInstant(notificationInstant, java.time.ZoneOffset.UTC);\nclNotification.setNotificationTime(notificationTime);\n\nvar aaiInfo = vcpeClosedLoopStatus.get(\"AAI\");\n\nclNotification.getAai().put(\"generic-vnf.resource-version\",        aaiInfo.get(\"genericVnfResourceVersion\"));\nclNotification.getAai().put(\"generic-vnf.vnf-name\",                aaiInfo.get(\"genericVnfVnfName\"));\nclNotification.getAai().put(\"generic-vnf.prov-status\",             aaiInfo.get(\"genericVnfProvStatus\"));\nclNotification.getAai().put(\"generic-vnf.is-closed-loop-disabled\", aaiInfo.get(\"genericVnfIsClosedLoopDisabled\"));\nclNotification.getAai().put(\"generic-vnf.orchestration-status\",    aaiInfo.get(\"genericVnfOrchestrationStatus\"));\nclNotification.getAai().put(\"generic-vnf.vnf-type\",                aaiInfo.get(\"genericVnfVnfType\"));\nclNotification.getAai().put(\"generic-vnf.in-maint\",                aaiInfo.get(\"genericVnfInMaint\"));\nclNotification.getAai().put(\"generic-vnf.service-id\",              aaiInfo.get(\"genericVnfServiceId\"));\n\nif(vnfID != null) {\n   clNotification.getAai().put(\"generic-vnf.vnf-id\",                  aaiInfo.get(\"genericVnfVnfId\"));\n}\nexecutor.outFields.put(\"VirtualControlLoopNotification\", clNotification);\n\nexecutor.logger.info(executor.outFields);\n\ntrue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "DeniedTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "DeniedTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfID\").toString());\n\nvcpeClosedLoopStatus.put(\"notification\",     \"REJECTED\");\nvcpeClosedLoopStatus.put(\"notificationTime\", java.lang.System.currentTimeMillis());\n\nexecutor.logger.info(executor.outFields);\n\ntrue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GetVCPEStateTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GetVCPEStateTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "VirtualControlLoopEvent",
+                                  "value": {
+                                    "key": "VirtualControlLoopEvent",
+                                    "fieldSchemaKey": {
+                                      "name": "VirtualControlLoopEventType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfName",
+                                  "value": {
+                                    "key": "vnfName",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": true
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "RequestIDVNFIDAlbum",
+                                "version": "0.0.1"
+                              },
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Note: The incoming closedloop message can be ONSET with both VNF-name and VNF-ID\n *       or ABATED with only VNF-name. So need to handle differently. For ABATED case,\n *       since we still keep the RequireIDVNFID context album, we can get it from there.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar clEventType = org.onap.policy.controlloop.VirtualControlLoopEvent;\nvar longType = java.lang.Long;\nvar uuidType = java.util.UUID;\n\nvar clEvent = executor.inFields.get(\"VirtualControlLoopEvent\");\n\nexecutor.logger.info(clEvent.toString());\nexecutor.logger.info(clEvent.getClosedLoopControlName());\n\nvar requestID = clEvent.getRequestId();\nexecutor.logger.info(\"requestID = \" + requestID);\nvar vnfID = null;\nvar vcpeClosedLoopStatus = null;\n\nif (clEvent.getAai().get(\"generic-vnf.vnf-id\") != null) {\n   vnfID = uuidType.fromString(clEvent.getAai().get(\"generic-vnf.vnf-id\"));\n   executor.logger.info(\"vnfID = \" + vnfID);\n   vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(vnfID);\n\n   if (vcpeClosedLoopStatus == null) {\n      executor.logger.info(\"Creating context information for new vCPE VNF \\\"\" + vnfID.toString() + \"\\\"\");\n\n      vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").getSchemaHelper().createNewInstance();\n\n      vcpeClosedLoopStatus.put(\"closedLoopControlName\", clEvent.getClosedLoopControlName());\n      vcpeClosedLoopStatus.put(\"closedLoopAlarmStart\",  clEvent.getClosedLoopAlarmStart().toEpochMilli());\n      vcpeClosedLoopStatus.put(\"closedLoopEventClient\", clEvent.getClosedLoopEventClient());\n      vcpeClosedLoopStatus.put(\"closedLoopEventStatus\", clEvent.getClosedLoopEventStatus().toString());\n      vcpeClosedLoopStatus.put(\"version\",               clEvent.getVersion());\n      vcpeClosedLoopStatus.put(\"requestID\",             clEvent.getRequestId().toString());\n      vcpeClosedLoopStatus.put(\"target_type\",           clEvent.getTargetType().toString());\n      vcpeClosedLoopStatus.put(\"target\",                clEvent.getTarget());\n      vcpeClosedLoopStatus.put(\"from\",                  clEvent.getFrom());\n      vcpeClosedLoopStatus.put(\"policyScope\",           \"vCPE\");\n      vcpeClosedLoopStatus.put(\"policyName\",            \"ONAPvCPEPolicyModel\");\n      vcpeClosedLoopStatus.put(\"policyVersion\",         \"0.0.1\");\n      vcpeClosedLoopStatus.put(\"notification\",          \"ACTIVE\");\n      vcpeClosedLoopStatus.put(\"notificationTime\",      java.lang.System.currentTimeMillis());\n      vcpeClosedLoopStatus.put(\"message\",               \"\");\n\n      var aaiInfo = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").getSchemaHelper().createNewSubInstance(\"VCPE_AAI_Type\");\n\n      aaiInfo.put(\"genericVnfResourceVersion\",      clEvent.getAai().get(\"generic-vnf.resource-version\"));\n      aaiInfo.put(\"genericVnfVnfName\",              clEvent.getAai().get(\"generic-vnf.vnf-name\"));\n      aaiInfo.put(\"genericVnfProvStatus\",           clEvent.getAai().get(\"generic-vnf.prov-status\"));\n      aaiInfo.put(\"genericVnfIsClosedLoopDisabled\", clEvent.getAai().get(\"generic-vnf.is-closed-loop-disabled\"));\n      aaiInfo.put(\"genericVnfOrchestrationStatus\",  clEvent.getAai().get(\"generic-vnf.orchestration-status\"));\n      aaiInfo.put(\"genericVnfVnfType\",              clEvent.getAai().get(\"generic-vnf.vnf-type\"));\n      aaiInfo.put(\"genericVnfInMaint\",              clEvent.getAai().get(\"generic-vnf.in-maint\"));\n      aaiInfo.put(\"genericVnfServiceId\",            clEvent.getAai().get(\"generic-vnf.service-id\"));\n      aaiInfo.put(\"genericVnfVnfId\",                clEvent.getAai().get(\"generic-vnf.vnf-id\"));\n      aaiInfo.put(\"vserverIsClosedLoopDisabled\",    clEvent.getAai().get(\"vserver.is-closed-loop-disabled\"));\n      aaiInfo.put(\"vserverProvStatus\",              clEvent.getAai().get(\"vserver.prov-status\"));\n      aaiInfo.put(\"vserverName\",                    clEvent.getAai().get(\"vserver.vserver-name\"));\n\n      vcpeClosedLoopStatus.put(\"AAI\", aaiInfo);\n\n      if (clEvent.getClosedLoopAlarmEnd() != null) {\n         vcpeClosedLoopStatus.put(\"closedLoopAlarmEnd\", clEvent.getClosedLoopAlarmEnd().toEpochMilli());\n      } else {\n         vcpeClosedLoopStatus.put(\"closedLoopAlarmEnd\", java.lang.Long.valueOf(0));\n      }\n\n      executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").put(vnfID.toString(), vcpeClosedLoopStatus);\n\n      executor.logger.info(\"Created context information for new vCPE VNF \\\"\" + vnfID.toString() + \"\\\"\");\n   }\n\n   executor.outFields.put(\"requestID\", requestID);\n   executor.outFields.put(\"vnfID\", vnfID);\n\n   executor.logger.info(executor.outFields);\n}\nelse {\n    executor.logger.info(\"No vnf-id in VirtualControlLoopEvent, status:\" + clEvent.getClosedLoopEventStatus().toString());\n    var vnfName = clEvent.getAai().get(\"generic-vnf.vnf-name\");\n    executor.logger.info(\"No vnf-id in VirtualControlLoopEvent for \" + vnfName);\n\n    vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(vnfName.toString());\n\n    if (vcpeClosedLoopStatus == null) {\n        executor.logger.info(\"Creating context information for new vCPE VNF \\\"\" + vnfName.toString() + \"\\\"\");\n\n        vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").getSchemaHelper().createNewInstance();\n\n        vcpeClosedLoopStatus.put(\"closedLoopControlName\", clEvent.getClosedLoopControlName());\n        vcpeClosedLoopStatus.put(\"closedLoopAlarmStart\",  clEvent.getClosedLoopAlarmStart().toEpochMilli());\n        vcpeClosedLoopStatus.put(\"closedLoopEventClient\", clEvent.getClosedLoopEventClient());\n        vcpeClosedLoopStatus.put(\"closedLoopEventStatus\", clEvent.getClosedLoopEventStatus().toString());\n        vcpeClosedLoopStatus.put(\"version\",               clEvent.getVersion());\n        vcpeClosedLoopStatus.put(\"requestID\",             clEvent.getRequestId().toString());\n        vcpeClosedLoopStatus.put(\"target_type\",           clEvent.getTargetType().toString());\n        vcpeClosedLoopStatus.put(\"target\",                clEvent.getTarget());\n        vcpeClosedLoopStatus.put(\"from\",                  clEvent.getFrom());\n        vcpeClosedLoopStatus.put(\"policyScope\",           \"vCPE\");\n        vcpeClosedLoopStatus.put(\"policyName\",            \"ONAPvCPEPolicyModel\");\n        vcpeClosedLoopStatus.put(\"policyVersion\",         \"0.0.1\");\n        vcpeClosedLoopStatus.put(\"notification\",          \"ACTIVE\");\n        vcpeClosedLoopStatus.put(\"notificationTime\",      java.lang.System.currentTimeMillis());\n        vcpeClosedLoopStatus.put(\"message\",               \"\");\n\n        var aaiInfo = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").getSchemaHelper().createNewSubInstance(\"VCPE_AAI_Type\");\n\n        aaiInfo.put(\"genericVnfVnfName\", clEvent.getAai().get(\"generic-vnf.vnf-name\"));\n        vcpeClosedLoopStatus.put(\"AAI\", aaiInfo);\n\n        if (clEvent.getClosedLoopAlarmEnd() != null) {\n            vcpeClosedLoopStatus.put(\"closedLoopAlarmEnd\", clEvent.getClosedLoopAlarmEnd().toEpochMilli());\n        } else {\n            vcpeClosedLoopStatus.put(\"closedLoopAlarmEnd\", java.lang.Long.valueOf(0));\n        }\n\n        executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").put(vnfName.toString(), vcpeClosedLoopStatus);\n\n        executor.logger.info(\"Created context information for new vCPE VNF \\\"\" + vnfName.toString() + \"\\\"\");\n    }\n    executor.outFields.put(\"requestID\", requestID);\n    executor.outFields.put(\"vnfName\", vnfName);\n    executor.logger.info(executor.outFields);\n}\n\ntrue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardRequestTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardRequestTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "decisionAttributes",
+                                  "value": {
+                                    "key": "decisionAttributes",
+                                    "fieldSchemaKey": {
+                                      "name": "GuardDecisionAttributesType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "onapName",
+                                  "value": {
+                                    "key": "onapName",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "ControlLoopExecutionIDAlbum",
+                                "version": "0.0.1"
+                              },
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(\n        executor.inFields.get(\"vnfID\").toString());\n\nvar guardDecisionAttributes = executor.subject.getOutFieldSchemaHelper(\"decisionAttributes\").createNewInstance();\n\nguardDecisionAttributes.put(\"actor\", \"APPC\");\nguardDecisionAttributes.put(\"recipe\", \"Restart\");\nguardDecisionAttributes.put(\"target\", executor.inFields.get(\"vnfID\").toString());\nguardDecisionAttributes.put(\"clname\", \"APEXvCPEImplementation\");\n\nexecutor.logger.info(guardDecisionAttributes);\n\nexecutor.outFields.put(\"decisionAttributes\", guardDecisionAttributes);\nexecutor.outFields.put(\"onapName\", \"PDPD\");\n\nexecutor.getContextAlbum(\"ControlLoopExecutionIDAlbum\").put(executor.executionId.toString(),\n        executor.inFields.get(\"vnfID\"));\n\nexecutor.logger.info(executor.outFields);\n\ntrue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardResponseTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardResponseTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "decision",
+                                  "value": {
+                                    "key": "decision",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "details",
+                                  "value": {
+                                    "key": "details",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [
+                              {
+                                "name": "ControlLoopExecutionIDAlbum",
+                                "version": "0.0.1"
+                              },
+                              {
+                                "name": "VCPEClosedLoopStatusAlbum",
+                                "version": "0.0.1"
+                              }
+                            ],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar vnfID = executor.getContextAlbum(\"ControlLoopExecutionIDAlbum\").remove(executor.executionId.toString());\n\nexecutor.logger.info(\"Continuing execution with VNF ID: \" + vnfID);\n\nvar vcpeClosedLoopStatus = executor.getContextAlbum(\"VCPEClosedLoopStatusAlbum\").get(vnfID.toString());\nexecutor.logger.info(vcpeClosedLoopStatus);\n\nvar guardResult = executor.inFields.get(\"decision\");\nvar returnValue = true;\n\nif (guardResult == \"PERMIT\") {\n    vcpeClosedLoopStatus.put(\"notification\", \"OPERATION: GUARD_PERMIT\");\n} else if (guardResult == \"DENY\") {\n    vcpeClosedLoopStatus.put(\"notification\", \"OPERATION: GUARD_DENY\");\n} else {\n    executor.message = \"guard result must be either \\\"PERMIT\\\" or \\\"DENY\\\"\";\n    returnValue = false;\n}\n\nvar uuidType = java.util.UUID;\nvar requestID = uuidType.fromString(vcpeClosedLoopStatus.get(\"requestID\"));\n\nexecutor.outFields.put(\"requestID\", requestID);\nexecutor.outFields.put(\"vnfID\", vnfID);\n\nexecutor.logger.info(executor.outFields);\n\n\nreturnValue;"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "NoAAILookupTask",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "NoAAILookupTask",
+                              "version": "0.0.1"
+                            },
+                            "inputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "outputFields": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            },
+                            "taskParameters": {
+                              "entry": []
+                            },
+                            "contextAlbumReference": [],
+                            "taskLogic": {
+                              "key": "TaskLogic",
+                              "logicFlavour": "JAVASCRIPT",
+                              "logic": "/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2016-2018 Ericsson. All rights reserved.\n *  Modifications Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nexecutor.logger.info(executor.outFields);\n\ntrue;"
+                            }
+                          }
+                        }
+                      ]
+                    }
+                  },
+                  "events": {
+                    "key": {
+                      "name": "ONAPvCPEPolicyModel_Events",
+                      "version": "0.0.1"
+                    },
+                    "eventMap": {
+                      "entry": [
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFRequestEvent",
+                            "version": "2.0.0"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFRequestEvent",
+                              "version": "2.0.0"
+                            },
+                            "nameSpace": "org.onap.policy.apex.onap.vcpe",
+                            "source": "APEX",
+                            "target": "APPC",
+                            "parameter": {
+                              "entry": [
+                                {
+                                  "key": "APPCLCMRequestEvent",
+                                  "value": {
+                                    "key": "APPCLCMRequestEvent",
+                                    "fieldSchemaKey": {
+                                      "name": "APPCLCMRequestType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCRestartVNFResponseEvent",
+                            "version": "2.0.0"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCRestartVNFResponseEvent",
+                              "version": "2.0.0"
+                            },
+                            "nameSpace": "org.onap.policy.apex.onap.vcpe",
+                            "source": "APEX",
+                            "target": "APPC",
+                            "parameter": {
+                              "entry": [
+                                {
+                                  "key": "APPCLCMResponseEvent",
+                                  "value": {
+                                    "key": "APPCLCMResponseEvent",
+                                    "fieldSchemaKey": {
+                                      "name": "APPCLCMResponseType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+                            "version": "1.0.2"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+                              "version": "1.0.2"
+                            },
+                            "nameSpace": "org.onap.policy.apex.onap.vcpe",
+                            "source": "DCAE",
+                            "target": "APEX",
+                            "parameter": {
+                              "entry": [
+                                {
+                                  "key": "VirtualControlLoopEvent",
+                                  "value": {
+                                    "key": "VirtualControlLoopEvent",
+                                    "fieldSchemaKey": {
+                                      "name": "VirtualControlLoopEventType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "ControlLoopLogEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoopLogEvent",
+                              "version": "0.0.1"
+                            },
+                            "nameSpace": "org.onap.policy.apex.onap.vcpe",
+                            "source": "APEX",
+                            "target": "APEX",
+                            "parameter": {
+                              "entry": [
+                                {
+                                  "key": "VirtualControlLoopNotification",
+                                  "value": {
+                                    "key": "VirtualControlLoopNotification",
+                                    "fieldSchemaKey": {
+                                      "name": "VirtualControlLoopNotificationType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardRequestEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardRequestEvent",
+                              "version": "0.0.1"
+                            },
+                            "nameSpace": "org.onap.policy.apex.onap.vcpe",
+                            "source": "APEX",
+                            "target": "APEX",
+                            "parameter": {
+                              "entry": [
+                                {
+                                  "key": "decisionAttributes",
+                                  "value": {
+                                    "key": "decisionAttributes",
+                                    "fieldSchemaKey": {
+                                      "name": "GuardDecisionAttributesType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "onapName",
+                                  "value": {
+                                    "key": "onapName",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardResponseEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardResponseEvent",
+                              "version": "0.0.1"
+                            },
+                            "nameSpace": "org.onap.policy.apex.onap.vcpe",
+                            "source": "APEX",
+                            "target": "APEX",
+                            "parameter": {
+                              "entry": [
+                                {
+                                  "key": "decision",
+                                  "value": {
+                                    "key": "decision",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "details",
+                                  "value": {
+                                    "key": "details",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                }
+                              ]
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VCPEStateUpdatedEvent",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VCPEStateUpdatedEvent",
+                              "version": "0.0.1"
+                            },
+                            "nameSpace": "org.onap.policy.apex.onap.vcpe",
+                            "source": "APEX",
+                            "target": "APEX",
+                            "parameter": {
+                              "entry": [
+                                {
+                                  "key": "requestID",
+                                  "value": {
+                                    "key": "requestID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfID",
+                                  "value": {
+                                    "key": "vnfID",
+                                    "fieldSchemaKey": {
+                                      "name": "UUIDType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": false
+                                  }
+                                },
+                                {
+                                  "key": "vnfName",
+                                  "value": {
+                                    "key": "vnfName",
+                                    "fieldSchemaKey": {
+                                      "name": "SimpleStringType",
+                                      "version": "0.0.1"
+                                    },
+                                    "optional": true
+                                  }
+                                }
+                              ]
+                            }
+                          }
+                        }
+                      ]
+                    }
+                  },
+                  "albums": {
+                    "key": {
+                      "name": "ONAPvCPEPolicyModel_Albums",
+                      "version": "0.0.1"
+                    },
+                    "albums": {
+                      "entry": [
+                        {
+                          "key": {
+                            "name": "ControlLoopExecutionIDAlbum",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "ControlLoopExecutionIDAlbum",
+                              "version": "0.0.1"
+                            },
+                            "scope": "policy",
+                            "isWritable": true,
+                            "itemSchema": {
+                              "name": "UUIDType",
+                              "version": "0.0.1"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "RequestIDVNFIDAlbum",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "RequestIDVNFIDAlbum",
+                              "version": "0.0.1"
+                            },
+                            "scope": "policy",
+                            "isWritable": true,
+                            "itemSchema": {
+                              "name": "UUIDType",
+                              "version": "0.0.1"
+                            }
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VCPEClosedLoopStatusAlbum",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VCPEClosedLoopStatusAlbum",
+                              "version": "0.0.1"
+                            },
+                            "scope": "policy",
+                            "isWritable": true,
+                            "itemSchema": {
+                              "name": "VCPEClosedLoopStatusType",
+                              "version": "0.0.1"
+                            }
+                          }
+                        }
+                      ]
+                    }
+                  },
+                  "schemas": {
+                    "key": {
+                      "name": "ONAPvCPEPolicyModel_Schemas",
+                      "version": "0.0.1"
+                    },
+                    "schemas": {
+                      "entry": [
+                        {
+                          "key": {
+                            "name": "APPCLCMRequestType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCLCMRequestType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "org.onap.policy.appclcm.AppcLcmDmaapWrapper"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "APPCLCMResponseType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "APPCLCMResponseType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "org.onap.policy.appclcm.AppcLcmDmaapWrapper"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "GuardDecisionAttributesType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "GuardDecisionAttributesType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Avro",
+                            "schemaDefinition": "{\n    \"type\": \"record\",\n    \"name\": \"GuardDecisionAttributes_Type\",\n    \"namespace\": \"org.onap.policy.apex.onap.vcpe\",\n    \"fields\": [\n        {\n            \"name\": \"actor\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"recipe\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"target\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"clname\",\n            \"type\": \"string\"\n        }\n    ]\n}"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "SimpleBooleanType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "SimpleBooleanType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "java.lang.Boolean"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "SimpleLongType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "SimpleLongType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "java.lang.Long"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "SimpleStringType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "SimpleStringType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "java.lang.String"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "UUIDType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "UUIDType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "java.util.UUID"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VCPEClosedLoopStatusType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VCPEClosedLoopStatusType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Avro",
+                            "schemaDefinition": "{\n    \"type\": \"record\",\n    \"name\": \"VCPEClosedLoopStatus\",\n    \"fields\": [\n        {\n            \"name\": \"AAI\",\n            \"type\": {\n                \"type\": \"record\",\n                \"name\": \"VCPE_AAI_Type\",\n                \"namespace\": \"org.onap.policy.apex.onap.vcpe\",\n                \"fields\": [\n                    {\n                        \"name\": \"genericVnfResourceVersion\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfVnfName\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfProvStatus\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfIsClosedLoopDisabled\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfOrchestrationStatus\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfVnfType\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfInMaint\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfServiceId\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"genericVnfVnfId\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"vserverIsClosedLoopDisabled\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"vserverName\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"vserverProvStatus\",\n                        \"type\": \"string\"\n                    }\n                ]\n            }\n        },\n        {\n            \"name\": \"closedLoopAlarmStart\",\n            \"type\": \"long\"\n        },\n        {\n            \"name\": \"closedLoopAlarmEnd\",\n            \"type\": \"long\"\n        },\n        {\n            \"name\": \"closedLoopControlName\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"version\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"requestID\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"closedLoopEventClient\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"closedLoopEventStatus\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"target_type\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"target\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"from\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"policyScope\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"policyName\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"policyVersion\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"notification\",\n            \"type\": \"string\"\n        },\n        {\n            \"name\": \"notificationTime\",\n            \"type\": \"long\"\n        },\n        {\n            \"name\": \"message\",\n            \"type\": \"string\"\n        }\n    ]\n}"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VirtualControlLoopEventType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VirtualControlLoopEventType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "org.onap.policy.controlloop.VirtualControlLoopEvent"
+                          }
+                        },
+                        {
+                          "key": {
+                            "name": "VirtualControlLoopNotificationType",
+                            "version": "0.0.1"
+                          },
+                          "value": {
+                            "key": {
+                              "name": "VirtualControlLoopNotificationType",
+                              "version": "0.0.1"
+                            },
+                            "schemaFlavour": "Java",
+                            "schemaDefinition": "org.onap.policy.controlloop.VirtualControlLoopNotification"
+                          }
+                        }
+                      ]
+                    }
+                  }
+                }
+              },
+              "engineParameters": {
+                "executorParameters": {
+                  "JAVASCRIPT": {
+                    "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
+                  }
+                },
+                "contextParameters": {
+                  "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters",
+                  "schemaParameters": {
+                    "Avro": {
+                      "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters"
+                    },
+                    "Java": {
+                      "parameterClassName": "org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters",
+                      "jsonAdapters": {
+                        "Instant": {
+                          "adaptedClass": "java.time.Instant",
+                          "adaptorClass": "org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter"
+                        }
+                      }
+                    }
+                  }
+                },
+                "taskParameters": [
+                  {
+                    "key": "ParameterKey1",
+                    "value": "ParameterValue1"
+                  },
+                  {
+                    "taskId": "AAILookupTask:0.0.1",
+                    "key": "SomeKeyForThisTask",
+                    "value": "Value"
+                  }
+                ]
+              }
+            },
+            "eventInputParameters": {
+              "GuardRequestorConsumer": {
+                "carrierTechnologyParameters": {
+                  "carrierTechnology": "RESTREQUESTOR",
+                  "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters",
+                  "parameters": {
+                    "url": "http://111.222.333.444:5555/pdp/api/getDecision",
+                    "httpMethod": "POST",
+                    "restRequestTimeout": 2000,
+                    "httpHeader": "Authorization:aaaaaaaaa== ClientAuth:bbbbbbbbb="
+                  }
+                },
+                "eventProtocolParameters": {
+                  "eventProtocol": "JSON"
+                },
+                "eventName": "GuardResponseEvent",
+                "eventNameFilter": "GuardResponseEvent",
+                "requestorMode": true,
+                "requestorPeer": "GuardRequestorProducer",
+                "requestorTimeout": 500
+              },
+              "DCAEConsumer": {
+                "carrierTechnologyParameters": {
+                  "carrierTechnology": "RESTCLIENT",
+                  "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
+                  "parameters": {
+                    "url": "http://message-router:3904/events/unauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=60000"
+                  }
+                },
+                "eventProtocolParameters": {
+                  "eventProtocol": "JSON",
+                  "parameters": {
+                    "nameAlias": "closedLoopControlName",
+                    "versionAlias": "version",
+                    "sourceAlias": "from",
+                    "pojoField": "VirtualControlLoopEvent"
+                  }
+                },
+                "eventName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e"
+              },
+              "APPCConsumer": {
+                "carrierTechnologyParameters": {
+                  "carrierTechnology": "RESTCLIENT",
+                  "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
+                  "parameters": {
+                    "url": "http://message-router:3904/events/APPC-LCM-WRITE/APEX/1?timeout=60000"
+                  }
+                },
+                "eventProtocolParameters": {
+                  "eventProtocol": "JSON",
+                  "parameters": {
+                    "versionAlias": "version",
+                    "pojoField": "APPCLCMResponseEvent"
+                  }
+                },
+                "eventName": "APPCRestartVNFResponseEvent",
+                "eventNameFilter": "APPCRestartVNFResponseEvent"
+              }
+            },
+            "eventOutputParameters": {
+              "logProducer": {
+                "carrierTechnologyParameters": {
+                  "carrierTechnology": "FILE",
+                  "parameters": {
+                    "fileName": "/tmp/VCPEEventsOut.json"
+                  }
+                },
+                "eventProtocolParameters": {
+                  "eventProtocol": "JSON"
+                }
+              },
+              "GuardRequestorProducer": {
+                "carrierTechnologyParameters": {
+                  "carrierTechnology": "RESTREQUESTOR",
+                  "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters"
+                },
+                "eventProtocolParameters": {
+                  "eventProtocol": "JSON"
+                },
+                "eventNameFilter": "GuardRequestEvent",
+                "requestorMode": true,
+                "requestorPeer": "GuardRequestorConsumer",
+                "requestorTimeout": 500
+              },
+              "APPCProducer": {
+                "carrierTechnologyParameters": {
+                  "carrierTechnology": "RESTCLIENT",
+                  "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
+                  "parameters": {
+                    "url": "http://message-router:3904/events/APPC-LCM-READ"
+                  }
+                },
+                "eventProtocolParameters": {
+                  "eventProtocol": "JSON",
+                  "parameters": {
+                    "versionAlias": "version",
+                    "sourceAlias": "from",
+                    "pojoField": "APPCLCMRequestEvent"
+                  }
+                },
+                "eventNameFilter": "APPCRestartVNFRequestEvent"
+              },
+              "PolicyLogProducer": {
+                "carrierTechnologyParameters": {
+                  "carrierTechnology": "RESTCLIENT",
+                  "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
+                  "parameters": {
+                    "url": "http://message-router:3904/events/POLICY-CL-MGT"
+                  }
+                },
+                "eventProtocolParameters": {
+                  "eventProtocol": "JSON",
+                  "parameters": {
+                    "versionAlias": "version",
+                    "sourceAlias": "from",
+                    "pojoField": "VirtualControlLoopNotification"
+                  }
+                },
+                "eventNameFilter": "ControlLoopLogEvent"
+              }
+            }
+          }
+        }
+      }
+    ]
+  }
+}
index eb82ae2..f260343 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -31,16 +32,16 @@ import static org.mockito.Mockito.when;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.protobuf.Struct;
+
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import java.util.UUID;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
@@ -68,8 +69,6 @@ public class CdsActorServiceProviderTest {
     private static final String SUBREQUEST_ID = "123456";
     private static final String CDS_RECIPE = "test-cds-recipe";
 
-    @Rule
-    public ExpectedException exceptionRule = ExpectedException.none();
     @Mock
     private CdsProcessorGrpcClient cdsClient;
     private CdsActorServiceProvider cdsActor;
@@ -132,16 +131,14 @@ public class CdsActorServiceProviderTest {
     @Test
     public void testConstructRequestWhenMissingCdsParamsInPolicyPayload() {
         policy.setPayload(new HashMap<>());
-        Optional<ExecutionServiceInput> cdsRequestOpt = cdsActor
-            .constructRequest(onset, operation, policy, aaiParams);
+        Optional<ExecutionServiceInput> cdsRequestOpt = cdsActor.constructRequest(onset, operation, policy, aaiParams);
 
         assertFalse(cdsRequestOpt.isPresent());
     }
 
     @Test
     public void testConstructRequest() {
-        Optional<ExecutionServiceInput> cdsRequestOpt = cdsActor
-            .constructRequest(onset, operation, policy, aaiParams);
+        Optional<ExecutionServiceInput> cdsRequestOpt = cdsActor.constructRequest(onset, operation, policy, aaiParams);
 
         assertTrue(cdsRequestOpt.isPresent());
         final ExecutionServiceInput cdsRequest = cdsRequestOpt.get();
@@ -187,13 +184,13 @@ public class CdsActorServiceProviderTest {
     public void testSendRequestToCdsLatchInterrupted() throws InterruptedException {
         // Reset cdsClient
         CountDownLatch countDownLatch = mock(CountDownLatch.class);
-        doThrow(new InterruptedException("Test latch interrupted failure")).when(countDownLatch)
-            .await(anyLong(), any(TimeUnit.class));
+        doThrow(new InterruptedException("Test latch interrupted failure")).when(countDownLatch).await(anyLong(),
+            any(TimeUnit.class));
         when(cdsClient.sendRequest(any(ExecutionServiceInput.class))).thenReturn(countDownLatch);
 
         CdsActorServiceProvider.CdsActorServiceManager cdsActorSvcMgr = cdsActor.new CdsActorServiceManager();
-        CdsResponse response = cdsActorSvcMgr
-            .sendRequestToCds(cdsClient, cdsProps, ExecutionServiceInput.newBuilder().build());
+        CdsResponse response =
+            cdsActorSvcMgr.sendRequestToCds(cdsClient, cdsProps, ExecutionServiceInput.newBuilder().build());
         assertTrue(Thread.interrupted());
         assertNotNull(response);
         assertEquals(CdsActorConstants.INTERRUPTED, response.getStatus());
@@ -202,8 +199,8 @@ public class CdsActorServiceProviderTest {
     @Test
     public void testSendRequestToCdsLatchTimedOut() {
         CdsActorServiceProvider.CdsActorServiceManager cdsActorSvcMgr = cdsActor.new CdsActorServiceManager();
-        CdsResponse response = cdsActorSvcMgr
-            .sendRequestToCds(cdsClient, cdsProps, ExecutionServiceInput.newBuilder().build());
+        CdsResponse response =
+            cdsActorSvcMgr.sendRequestToCds(cdsClient, cdsProps, ExecutionServiceInput.newBuilder().build());
         assertNotNull(response);
         assertEquals(CdsActorConstants.TIMED_OUT, response.getStatus());
     }
index 61b6e3a..d5e8b6c 100644 (file)
@@ -3,7 +3,7 @@
  * sdc
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,23 +23,22 @@ package org.onap.policy.sdc;
 
 import java.io.Serializable;
 import java.util.UUID;
-import lombok.Getter;
-import lombok.Setter;
 
-@Getter
-@Setter
+import lombok.Data;
+
+@Data
 public class Resource implements Serializable {
 
     private static final long serialVersionUID = -913729158733348027L;
 
-    private UUID    resourceUuid;
-    private UUID    resourceInvariantUuid;
-    private String  resourceName;
-    private String  resourceVersion;
-    private String    resourceType;
+    private UUID resourceUuid;
+    private UUID resourceInvariantUuid;
+    private String resourceName;
+    private String resourceVersion;
+    private String resourceType;
 
     public Resource() {
-        //Empty Constructor
+        // Empty Constructor
     }
 
     /**
@@ -80,74 +79,4 @@ public class Resource implements Serializable {
         this.resourceVersion = version;
         this.resourceType = type;
     }
-
-    @Override
-    public String toString() {
-        return "Resource [resourceUuid=" + resourceUuid + ", resourceInvariantUuid=" + resourceInvariantUuid
-                + ", resourceName=" + resourceName + ", resourceVersion=" + resourceVersion + ", resourceType="
-                + resourceType + "]";
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((resourceInvariantUuid == null) ? 0 : resourceInvariantUuid.hashCode());
-        result = prime * result + ((resourceName == null) ? 0 : resourceName.hashCode());
-        result = prime * result + ((resourceType == null) ? 0 : resourceType.hashCode());
-        result = prime * result + ((resourceUuid == null) ? 0 : resourceUuid.hashCode());
-        result = prime * result + ((resourceVersion == null) ? 0 : resourceVersion.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        Resource other = (Resource) obj;
-        if (resourceInvariantUuid == null) {
-            if (other.resourceInvariantUuid != null) {
-                return false;
-            }
-        } else if (!resourceInvariantUuid.equals(other.resourceInvariantUuid)) {
-            return false;
-        }
-        if (resourceName == null) {
-            if (other.resourceName != null) {
-                return false;
-            }
-        } else if (!resourceName.equals(other.resourceName)) {
-            return false;
-        }
-        if (resourceType == null) {
-            if (other.resourceType != null) {
-                return false;
-            }
-        } else if (!resourceType.equals(other.resourceType)) {
-            return false;
-        }
-        if (resourceUuid == null) {
-            if (other.resourceUuid != null) {
-                return false;
-            }
-        } else if (!resourceUuid.equals(other.resourceUuid)) {
-            return false;
-        }
-        if (resourceVersion == null) {
-            if (other.resourceVersion != null) {
-                return false;
-            }
-        } else if (!resourceVersion.equals(other.resourceVersion)) {
-            return false;
-        }
-        return true;
-    }
-
 }
index 05842e2..0b6068d 100644 (file)
 
 package org.onap.policy.sdc;
 
+import com.google.gson.annotations.SerializedName;
+
 import java.io.Serializable;
 import java.util.UUID;
-import lombok.Getter;
-import lombok.Setter;
 
-@Getter
-@Setter
+import lombok.Data;
+
+@Data
 public class ResourceInstance implements Serializable {
 
     private static final long serialVersionUID = -5506162340393802424L;
 
+    @SerializedName("ResourceUUID")
+    private UUID resourceUuid;
+
     private String resourceInstanceName;
     private String resourceName;
-    private UUID resourceInvariantUuid;
     private String resourceVersion;
     private String resourceType;
-    private UUID resourceUuid;
+
+    @SerializedName("ResourceInvariantUUID")
+    private UUID resourceInvariantUuid;
 
     public ResourceInstance() {
-        //Empty Constructor
+        // Empty Constructor
     }
 
     /**
@@ -59,86 +64,4 @@ public class ResourceInstance implements Serializable {
         this.resourceType = instance.resourceType;
         this.resourceUuid = instance.resourceUuid;
     }
-
-    public UUID getResourceInvariantUUID() {
-        return resourceInvariantUuid;
-    }
-
-    public void setResourceInvariantUUID(UUID resourceInvariantUuid) {
-        this.resourceInvariantUuid = resourceInvariantUuid;
-    }
-
-    @Override
-    public String toString() {
-        return "ResourceInstance [resourceInstanceName=" + resourceInstanceName + ", resourceName=" + resourceName
-            + ", resourceInvariantUuid=" + resourceInvariantUuid + ", resourceVersion=" + resourceVersion
-            + ", resourceType=" + resourceType + ", resourceUuid=" + resourceUuid + "]";
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((resourceInstanceName == null) ? 0 : resourceInstanceName.hashCode());
-        result = prime * result + ((resourceInvariantUuid == null) ? 0 : resourceInvariantUuid.hashCode());
-        result = prime * result + ((resourceName == null) ? 0 : resourceName.hashCode());
-        result = prime * result + ((resourceType == null) ? 0 : resourceType.hashCode());
-        result = prime * result + ((resourceUuid == null) ? 0 : resourceUuid.hashCode());
-        result = prime * result + ((resourceVersion == null) ? 0 : resourceVersion.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        ResourceInstance other = (ResourceInstance) obj;
-        if (resourceInstanceName == null) {
-            if (other.resourceInstanceName != null) {
-                return false;
-            }
-        } else if (!resourceInstanceName.equals(other.resourceInstanceName)) {
-            return false;
-        }
-        if (resourceInvariantUuid == null) {
-            if (other.resourceInvariantUuid != null) {
-                return false;
-            }
-        } else if (!resourceInvariantUuid.equals(other.resourceInvariantUuid)) {
-            return false;
-        }
-        if (resourceName == null) {
-            if (other.resourceName != null) {
-                return false;
-            }
-        } else if (!resourceName.equals(other.resourceName)) {
-            return false;
-        }
-        if (resourceType != other.resourceType) {
-            return false;
-        }
-        if (resourceUuid == null) {
-            if (other.resourceUuid != null) {
-                return false;
-            }
-        } else if (!resourceUuid.equals(other.resourceUuid)) {
-            return false;
-        }
-        if (resourceVersion == null) {
-            if (other.resourceVersion != null) {
-                return false;
-            }
-        } else if (!resourceVersion.equals(other.resourceVersion)) {
-            return false;
-        }
-        return true;
-    }
-
 }
index 7ab2f93..d372f12 100644 (file)
@@ -3,7 +3,7 @@
  * sdc
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,11 +23,9 @@ package org.onap.policy.sdc;
 
 import java.io.Serializable;
 import java.util.UUID;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
 
-@Getter
-@Setter
+@Data
 public class Service implements Serializable {
 
     private static final long serialVersionUID = -1249276698549996806L;
@@ -38,7 +36,7 @@ public class Service implements Serializable {
     private String serviceVersion;
 
     public Service() {
-        //Empty Constructor
+        // Empty Constructor
     }
 
     public Service(UUID uuid) {
@@ -53,13 +51,13 @@ public class Service implements Serializable {
      * Constructor.
      *
      * @param uuid service id
-     * @param invariantUUID service invariant id
+     * @param invariantUuid service invariant id
      * @param name name
      * @param version version
      */
-    public Service(UUID uuid, UUID invariantUUID, String name, String version) {
+    public Service(UUID uuid, UUID invariantUuid, String name, String version) {
         this.serviceUUID = uuid;
-        this.serviceInvariantUUID = invariantUUID;
+        this.serviceInvariantUUID = invariantUuid;
         this.serviceName = name;
         this.serviceVersion = version;
     }
@@ -75,61 +73,4 @@ public class Service implements Serializable {
         this.serviceName = service.serviceName;
         this.serviceVersion = service.serviceVersion;
     }
-
-    @Override
-    public String toString() {
-        return "Service [serviceUUID=" + serviceUUID + ", serviceInvariantUUID=" + serviceInvariantUUID
-            + ", serviceName=" + serviceName + ", serviceVersion=" + serviceVersion + "]";
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((serviceInvariantUUID == null) ? 0 : serviceInvariantUUID.hashCode());
-        result = prime * result + ((serviceName == null) ? 0 : serviceName.hashCode());
-        result = prime * result + ((serviceUUID == null) ? 0 : serviceUUID.hashCode());
-        result = prime * result + ((serviceVersion == null) ? 0 : serviceVersion.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        Service other = (Service) obj;
-        if (serviceInvariantUUID == null) {
-            if (other.serviceInvariantUUID != null) {
-                return false;
-            }
-        } else if (!serviceInvariantUUID.equals(other.serviceInvariantUUID)) {
-            return false;
-        }
-        if (serviceName == null) {
-            if (other.serviceName != null) {
-                return false;
-            }
-        } else if (!serviceName.equals(other.serviceName)) {
-            return false;
-        }
-        if (serviceUUID == null) {
-            if (other.serviceUUID != null) {
-                return false;
-            }
-        } else if (!serviceUUID.equals(other.serviceUUID)) {
-            return false;
-        }
-        if (serviceVersion == null) {
-            return other.serviceVersion == null;
-        } else {
-            return serviceVersion.equals(other.serviceVersion);
-        }
-    }
 }
index e029522..b476de2 100644 (file)
@@ -3,7 +3,7 @@
  * sdc
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,11 +23,9 @@ package org.onap.policy.sdc;
 
 import java.io.Serializable;
 import java.util.UUID;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
 
-@Getter
-@Setter
+@Data
 public class ServiceInstance implements Serializable {
 
     private static final long serialVersionUID = 6285260780966679625L;
@@ -36,12 +34,13 @@ public class ServiceInstance implements Serializable {
     private UUID serviceUUID;
     private UUID serviceInstanceUUID;
     private UUID widgetModelUUID;
+
     private String widgetModelVersion;
     private String serviceName;
     private String serviceInstanceName;
 
     public ServiceInstance() {
-        //Empty Constructor
+        // Empty Constructor
     }
 
     /**
@@ -61,87 +60,4 @@ public class ServiceInstance implements Serializable {
         this.serviceName = instance.serviceName;
         this.serviceInstanceName = instance.serviceInstanceName;
     }
-
-    @Override
-    public String toString() {
-        return "ServiceInstance [personaModelUUID=" + personaModelUUID + ", serviceUUID=" + serviceUUID
-            + ", serviceInstanceUUID=" + serviceInstanceUUID + ", widgetModelUUID=" + widgetModelUUID
-            + ", widgetModelVersion=" + widgetModelVersion + ", serviceName=" + serviceName
-            + ", serviceInstanceName=" + serviceInstanceName + "]";
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((personaModelUUID == null) ? 0 : personaModelUUID.hashCode());
-        result = prime * result + ((serviceInstanceName == null) ? 0 : serviceInstanceName.hashCode());
-        result = prime * result + ((serviceInstanceUUID == null) ? 0 : serviceInstanceUUID.hashCode());
-        result = prime * result + ((serviceName == null) ? 0 : serviceName.hashCode());
-        result = prime * result + ((serviceUUID == null) ? 0 : serviceUUID.hashCode());
-        result = prime * result + ((widgetModelUUID == null) ? 0 : widgetModelUUID.hashCode());
-        result = prime * result + ((widgetModelVersion == null) ? 0 : widgetModelVersion.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        ServiceInstance other = (ServiceInstance) obj;
-        if (personaModelUUID == null) {
-            if (other.personaModelUUID != null) {
-                return false;
-            }
-        } else if (!personaModelUUID.equals(other.personaModelUUID)) {
-            return false;
-        }
-        if (serviceInstanceName == null) {
-            if (other.serviceInstanceName != null) {
-                return false;
-            }
-        } else if (!serviceInstanceName.equals(other.serviceInstanceName)) {
-            return false;
-        }
-        if (serviceInstanceUUID == null) {
-            if (other.serviceInstanceUUID != null) {
-                return false;
-            }
-        } else if (!serviceInstanceUUID.equals(other.serviceInstanceUUID)) {
-            return false;
-        }
-        if (serviceName == null) {
-            if (other.serviceName != null) {
-                return false;
-            }
-        } else if (!serviceName.equals(other.serviceName)) {
-            return false;
-        }
-        if (serviceUUID == null) {
-            if (other.serviceUUID != null) {
-                return false;
-            }
-        } else if (!serviceUUID.equals(other.serviceUUID)) {
-            return false;
-        }
-        if (widgetModelUUID == null) {
-            if (other.widgetModelUUID != null) {
-                return false;
-            }
-        } else if (!widgetModelUUID.equals(other.widgetModelUUID)) {
-            return false;
-        }
-        if (widgetModelVersion == null) {
-            return other.widgetModelVersion == null;
-        } else {
-            return widgetModelVersion.equals(other.widgetModelVersion);
-        }
-    }
 }
index 8ae0084..e1068cb 100644 (file)
@@ -3,7 +3,7 @@
  * sdc
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -39,7 +39,7 @@ public class ResourceInstanceTest {
         ResourceInstance ri = new ResourceInstance();
         assertEquals(null, ri.getResourceInstanceName());
         assertEquals(null, ri.getResourceUuid());
-        assertEquals(null, ri.getResourceInvariantUUID());
+        assertEquals(null, ri.getResourceInvariantUuid());
         assertEquals(null, ri.getResourceName());
         assertEquals(null, ri.getResourceType());
         assertEquals(null, ri.getResourceVersion());
@@ -47,7 +47,7 @@ public class ResourceInstanceTest {
         ResourceInstance ri2 = new ResourceInstance((ResourceInstance) null);
         assertEquals(null, ri2.getResourceInstanceName());
         assertEquals(null, ri2.getResourceUuid());
-        assertEquals(null, ri2.getResourceInvariantUUID());
+        assertEquals(null, ri2.getResourceInvariantUuid());
         assertEquals(null, ri2.getResourceName());
         assertEquals(null, ri2.getResourceType());
         assertEquals(null, ri2.getResourceVersion());
@@ -55,7 +55,7 @@ public class ResourceInstanceTest {
         ri2 = new ResourceInstance(ri);
         assertEquals(ri2.getResourceInstanceName(), ri.getResourceInstanceName());
         assertEquals(ri2.getResourceUuid(), ri.getResourceUuid());
-        assertEquals(ri2.getResourceInvariantUUID(), ri.getResourceInvariantUUID());
+        assertEquals(ri2.getResourceInvariantUuid(), ri.getResourceInvariantUuid());
         assertEquals(ri2.getResourceName(), ri.getResourceName());
         assertEquals(ri2.getResourceType(), ri.getResourceType());
         assertEquals(ri2.getResourceVersion(), ri.getResourceVersion());
@@ -65,7 +65,8 @@ public class ResourceInstanceTest {
     public void testInstanceName() {
         ResourceInstance ri = new ResourceInstance();
         String name = "nameTestInstance";
-        ri.setResourceInstanceName(name);;
+        ri.setResourceInstanceName(name);
+        ;
         assertEquals(name, ri.getResourceInstanceName());
     }
 
@@ -81,8 +82,8 @@ public class ResourceInstanceTest {
     public void testInvariantUuid() {
         ResourceInstance ri = new ResourceInstance();
         UUID uuid = UUID.randomUUID();
-        ri.setResourceInvariantUUID(uuid);
-        assertEquals(uuid, ri.getResourceInvariantUUID());
+        ri.setResourceInvariantUuid(uuid);
+        assertEquals(uuid, ri.getResourceInvariantUuid());
     }
 
     @Test
@@ -117,8 +118,8 @@ public class ResourceInstanceTest {
 
         ri1.setResourceInstanceName(INSTANCE);
         ri1.setResourceName(RESOURCE);
-        ri1.setResourceInvariantUUID(UUID.randomUUID());
-        ri1.setResourceInvariantUUID(UUID.randomUUID());
+        ri1.setResourceInvariantUuid(UUID.randomUUID());
+        ri1.setResourceInvariantUuid(UUID.randomUUID());
         ri1.setResourceVersion(VERSION_000);
         ri1.setResourceType(ResourceType.VL);
         ri2 = new ResourceInstance(ri1);
@@ -134,8 +135,8 @@ public class ResourceInstanceTest {
 
         ri1.setResourceInstanceName(INSTANCE);
         ri1.setResourceName(RESOURCE);
-        ri1.setResourceInvariantUUID(UUID.randomUUID());
-        ri1.setResourceInvariantUUID(UUID.randomUUID());
+        ri1.setResourceInvariantUuid(UUID.randomUUID());
+        ri1.setResourceInvariantUuid(UUID.randomUUID());
         ri1.setResourceVersion(VERSION_000);
         ri1.setResourceType(ResourceType.VL);
         ri2 = new ResourceInstance(ri1);
@@ -150,8 +151,8 @@ public class ResourceInstanceTest {
 
         ri1.setResourceInstanceName(INSTANCE);
         ri1.setResourceName(RESOURCE);
-        ri1.setResourceInvariantUUID(UUID.randomUUID());
-        ri1.setResourceInvariantUUID(UUID.randomUUID());
+        ri1.setResourceInvariantUuid(UUID.randomUUID());
+        ri1.setResourceInvariantUuid(UUID.randomUUID());
         ri1.setResourceVersion(VERSION_000);
         ri1.setResourceType(ResourceType.VL);
         ri2 = new ResourceInstance(ri1);
index c06974c..3e134d6 100644 (file)
@@ -3,7 +3,7 @@
  * sdc
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -68,7 +68,8 @@ public class ServiceInstanceTest {
     public void testInstanceName() {
         ServiceInstance si = new ServiceInstance();
         String name = "nameTestInstance";
-        si.setServiceInstanceName(name);;
+        si.setServiceInstanceName(name);
+        ;
         assertEquals(name, si.getServiceInstanceName());
     }
 
@@ -116,7 +117,8 @@ public class ServiceInstanceTest {
     public void testWidgetModelVersion() {
         ServiceInstance si = new ServiceInstance();
         String version = "2.2.2";
-        si.setWidgetModelVersion(version);;
+        si.setWidgetModelVersion(version);
+        ;
         assertEquals(version, si.getWidgetModelVersion());
     }
 
index 1923862..73efbb0 100644 (file)
@@ -3,7 +3,7 @@
  * sdc
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
index 7bd1fa4..2273abf 100644 (file)
@@ -3,7 +3,7 @@
   ONAP
   ================================================================================
   Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
-  Modifications Copyright (C) 2019 Nordix Foundation.
+  Modifications Copyright (C) 2019-2020 Nordix Foundation.
   ================================================================================
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   ============LICENSE_END=========================================================
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-  <parent>
-    <groupId>org.onap.policy.models</groupId>
-    <artifactId>policy-models-interactions</artifactId>
-    <version>2.2.1-SNAPSHOT</version>
-  </parent>
+    <parent>
+        <groupId>org.onap.policy.models</groupId>
+        <artifactId>policy-models-interactions</artifactId>
+        <version>2.2.1-SNAPSHOT</version>
+    </parent>
 
-  <groupId>org.onap.policy.models.policy-models-interactions</groupId>
-  <artifactId>model-yaml</artifactId>
-  
-  <dependencies>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.yaml</groupId>
-      <artifactId>snakeyaml</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.jgrapht</groupId>
-      <artifactId>jgrapht-core</artifactId>
-      <version>0.9.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
-      <artifactId>sdc</artifactId>
-      <version>${project.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
-      <artifactId>aai</artifactId>
-      <version>${project.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.onap.policy.common</groupId>
-      <artifactId>utils-test</artifactId>
-      <version>${policy.common.version}</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
+    <groupId>org.onap.policy.models.policy-models-interactions</groupId>
+    <artifactId>model-yaml</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.yaml</groupId>
+            <artifactId>snakeyaml</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jgrapht</groupId>
+            <artifactId>jgrapht-core</artifactId>
+            <version>0.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
+            <artifactId>sdc</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
+            <artifactId>aai</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.policy.common</groupId>
+            <artifactId>utils-test</artifactId>
+            <version>${policy.common.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
 
     <!--
     Without this defined here, the checkstyle plugin just simply fails outright. This needs to be investigated
index 779e309..47f6f14 100644 (file)
@@ -3,14 +3,14 @@
  * policy-yaml
  * ================================================================================
  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * 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.
@@ -22,6 +22,7 @@
 package org.onap.policy.controlloop.policy.builder.impl;
 
 import com.google.common.base.Strings;
+
 import java.util.LinkedList;
 import java.util.UUID;
 
@@ -42,20 +43,17 @@ import org.onap.policy.controlloop.policy.builder.MessageLevel;
 import org.onap.policy.controlloop.policy.builder.Results;
 import org.onap.policy.sdc.Resource;
 import org.onap.policy.sdc.Service;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.yaml.snakeyaml.DumperOptions;
 import org.yaml.snakeyaml.DumperOptions.FlowStyle;
 import org.yaml.snakeyaml.Yaml;
 
 public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
     private static final String UNKNOWN_POLICY = "Unknown policy ";
-    private static Logger logger = LoggerFactory.getLogger(ControlLoopPolicyBuilderImpl.class.getName());
     private ControlLoopPolicy controlLoopPolicy;
 
     /**
      * Constructor.
-     * 
+     *
      * @param controlLoopName control loop id
      * @param timeout timeout value
      */
@@ -69,15 +67,15 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
 
     /**
      * Constructor.
-     * 
+     *
      * @param controlLoopName control loop id
      * @param timeout timeout value
      * @param resource resource
      * @param services services
      * @throws BuilderException builder exception
      */
-    public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Resource resource, Service... services)
-            throws BuilderException {
+    public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Resource resource,
+        Service... services) throws BuilderException {
         this(controlLoopName, timeout);
         this.addResource(resource);
         this.addService(services);
@@ -90,15 +88,15 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
 
     /**
      * Constructor.
-     * 
+     *
      * @param controlLoopName control loop id
      * @param timeout timeout
      * @param service service
      * @param resources resources
      * @throws BuilderException builder exception
      */
-    public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Service service, Resource[] resources)
-            throws BuilderException {
+    public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Service service,
+        Resource[] resources) throws BuilderException {
         this(controlLoopName, timeout);
         this.addService(service);
         this.addResource(resources);
@@ -153,7 +151,6 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
         return this;
     }
 
-
     @Override
     public ControlLoopPolicyBuilder addResource(Resource... resources) throws BuilderException {
         for (Resource resource : resources) {
@@ -199,8 +196,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
     }
 
     @Override
-    public Policy setTriggerPolicy(PolicyParam policyParam)
-            throws BuilderException {
+    public Policy setTriggerPolicy(PolicyParam policyParam) throws BuilderException {
 
         Policy trigger = new Policy(policyParam);
 
@@ -228,8 +224,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
     }
 
     @Override
-    public Policy setPolicyForPolicyResult(PolicyParam policyParam, PolicyResult... results)
-            throws BuilderException {
+    public Policy setPolicyForPolicyResult(PolicyParam policyParam, PolicyResult... results) throws BuilderException {
         //
         // Find the existing policy
         //
@@ -240,17 +235,19 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
         //
         // Create the new Policy
         //
-        Policy newPolicy = new Policy(
-                PolicyParam.builder().id(UUID.randomUUID().toString())
-                .name(policyParam.getName())
-                .description(policyParam.getDescription())
-                .actor(policyParam.getActor())
-                .payload(policyParam.getPayload())
-                .target(policyParam.getTarget())
-                .recipe(policyParam.getRecipe())
-                .retries(policyParam.getRetries())
-                .timeout(policyParam.getTimeout())
-                .build());
+        // @formatter:off
+        Policy newPolicy = new Policy(PolicyParam.builder()
+            .id(UUID.randomUUID().toString())
+            .name(policyParam.getName())
+            .description(policyParam.getDescription())
+            .actor(policyParam.getActor())
+            .payload(policyParam.getPayload())
+            .target(policyParam.getTarget())
+            .recipe(policyParam.getRecipe())
+            .retries(policyParam.getRetries())
+            .timeout(policyParam.getTimeout())
+            .build());
+        // @formatter:on
         //
         // Connect the results
         //
@@ -290,7 +287,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
 
     @Override
     public Policy setPolicyForPolicyResult(String policyResultId, String policyId, PolicyResult... results)
-            throws BuilderException {
+        throws BuilderException {
         //
         // Find the existing policy
         //
@@ -368,7 +365,6 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
         try {
             ControlLoopCompiler.compile(controlLoopPolicy, callback);
         } catch (CompilerException e) {
-            logger.error(e.getMessage() + e);
             callback.results.addMessage(new MessageImpl(e.getMessage(), MessageLevel.EXCEPTION));
         }
         //
@@ -434,7 +430,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
     @Override
     public boolean isOpenLoop() {
         return this.controlLoopPolicy.getControlLoop().getTrigger_policy()
-                .equals(FinalResult.FINAL_OPENLOOP.toString());
+            .equals(FinalResult.FINAL_OPENLOOP.toString());
     }
 
     @Override
@@ -529,7 +525,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
 
     @Override
     public Policy addOperationsAccumulateParams(String policyId, OperationsAccumulateParams operationsAccumulateParams)
-            throws BuilderException {
+        throws BuilderException {
         Policy existingPolicy = this.findPolicy(policyId);
         if (existingPolicy == null) {
             throw new BuilderException(UNKNOWN_POLICY + policyId);
index 6fc3e1a..98c00eb 100644 (file)
@@ -3,7 +3,7 @@
  * policy-yaml unit test
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
 
 package org.onap.policy.controlloop.compiler;
 
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -30,17 +31,14 @@ import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
-import org.junit.Rule;
+
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.onap.policy.controlloop.policy.ControlLoopPolicy;
 import org.onap.policy.controlloop.policy.FinalResult;
 
 public class ControlLoopCompilerTest {
     private static final String RESTART_UNKNOWN_POLICY =
-                    "Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy";
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
+        "Operation Policy unique-policy-id-1-restart is connected to unknown policy unknown-policy";
 
     @Test
     public void testTest() throws Exception {
@@ -62,74 +60,68 @@ public class ControlLoopCompilerTest {
         expectedOnErrorMessages.add("controlLoop overall timeout is less than the sum of operational policy timeouts.");
 
         TestControlLoopCompilerCallback testControlLoopCompilerCallback =
-                        new TestControlLoopCompilerCallback(expectedOnErrorMessages);
-        ControlLoopPolicy controlLoopPolicy = this.test("src/test/resources/v1.0.0/test.yaml",
-                        testControlLoopCompilerCallback);
+            new TestControlLoopCompilerCallback(expectedOnErrorMessages);
+        ControlLoopPolicy controlLoopPolicy =
+            this.test("src/test/resources/v1.0.0/test.yaml", testControlLoopCompilerCallback);
         assertEquals(22, controlLoopPolicy.getPolicies().size());
         assertTrue(testControlLoopCompilerCallback.areAllExpectedOnErrorsReceived());
     }
 
     @Test
     public void testSuccessConnectedToUnknownPolicy() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                        RESTART_UNKNOWN_POLICY);
-        this.test("src/test/resources/v1.0.0/bad_policy_success_connected_to_unknown_policy.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_policy_success_connected_to_unknown_policy.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage(RESTART_UNKNOWN_POLICY);
     }
 
     @Test
     public void testFailureConnectedToUnknownPolicy() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                        RESTART_UNKNOWN_POLICY);
-        this.test("src/test/resources/v1.0.0/bad_policy_failure_connected_to_unknown_policy.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_policy_failure_connected_to_unknown_policy.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage(RESTART_UNKNOWN_POLICY);
     }
 
     @Test
     public void testFailureTimeoutToUnknownPolicy() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                        RESTART_UNKNOWN_POLICY);
-        this.test("src/test/resources/v1.0.0/bad_policy_failure_timeout_connected_to_unknown_policy.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_policy_failure_timeout_connected_to_unknown_policy.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage(RESTART_UNKNOWN_POLICY);
     }
 
     @Test
     public void testFailureRetriesToUnknownPolicy() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                        RESTART_UNKNOWN_POLICY);
-        this.test("src/test/resources/v1.0.0/bad_policy_failure_retries_connected_to_unknown_policy.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_policy_failure_retries_connected_to_unknown_policy.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage(RESTART_UNKNOWN_POLICY);
     }
 
     @Test
     public void testFailureExceptionToUnknownPolicy() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                        RESTART_UNKNOWN_POLICY);
-        this.test("src/test/resources/v1.0.0/bad_policy_failure_exception_connected_to_unknown_policy.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_policy_failure_exception_connected_to_unknown_policy.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage(RESTART_UNKNOWN_POLICY);
     }
 
     @Test
     public void testFailureGuardToUnknownPolicy() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                        RESTART_UNKNOWN_POLICY);
-        this.test("src/test/resources/v1.0.0/bad_policy_failure_guard_connected_to_unknown_policy.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_policy_failure_guard_connected_to_unknown_policy.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage(RESTART_UNKNOWN_POLICY);
     }
 
     @Test
     public void testInvalidTriggerPolicyId() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                        "Unexpected value for trigger_policy, should only be "
-                        + FinalResult.FINAL_OPENLOOP.toString() + " or a valid Policy ID");
-        this.test("src/test/resources/v1.0.0/bad_trigger_1.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_trigger_1.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage("Unexpected value for trigger_policy, should only be "
+            + FinalResult.FINAL_OPENLOOP.toString() + " or a valid Policy ID");
     }
 
     @Test
     public void testNoTriggerPolicyId() throws Exception {
-        expectedException.expect(CompilerException.class);
-        this.test("src/test/resources/v1.0.0/bad_trigger_no_trigger_id.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_trigger_no_trigger_id.yaml");
+        }).isInstanceOf(CompilerException.class);
     }
 
     @Test
@@ -138,25 +130,25 @@ public class ControlLoopCompilerTest {
         expectedOnErrorMessages.add("Missing controlLoopName");
         expectedOnErrorMessages.add("Unsupported version for this compiler");
         TestControlLoopCompilerCallback testControlLoopCompilerCallback =
-                        new TestControlLoopCompilerCallback(expectedOnErrorMessages);
+            new TestControlLoopCompilerCallback(expectedOnErrorMessages);
         this.test("src/test/resources/v1.0.0/bad_control_loop_no_control_loop_name.yaml",
-                        testControlLoopCompilerCallback);
+            testControlLoopCompilerCallback);
         assertTrue(testControlLoopCompilerCallback.areAllExpectedOnErrorsReceived());
     }
 
     @Test
     public void testInvalidFinalResult() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage(
-                     "Unexpected Final Result for trigger_policy, should only be FINAL_OPENLOOP or a valid Policy ID");
-        this.test("src/test/resources/v1.0.0/bad_trigger_2.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/bad_trigger_2.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage(
+            "Unexpected Final Result for trigger_policy, should only be FINAL_OPENLOOP or a valid Policy ID");
     }
 
     @Test
     public void testCompileEmptyFile() throws Exception {
-        expectedException.expect(CompilerException.class);
-        expectedException.expectMessage("Could not parse yaml specification.");
-        this.test("src/test/resources/v1.0.0/empty.yaml");
+        assertThatThrownBy(() -> {
+            this.test("src/test/resources/v1.0.0/empty.yaml");
+        }).isInstanceOf(CompilerException.class).hasMessage("Could not parse yaml specification.");
     }
 
     public ControlLoopPolicy test(String testFile) throws Exception {
@@ -171,8 +163,8 @@ public class ControlLoopCompilerTest {
      * @return the policy object
      * @throws Exception exception
      */
-    public ControlLoopPolicy test(String testFile,
-                    ControlLoopCompilerCallback controlLoopCompilerCallback) throws Exception {
+    public ControlLoopPolicy test(String testFile, ControlLoopCompilerCallback controlLoopCompilerCallback)
+        throws Exception {
         try (InputStream is = new FileInputStream(new File(testFile))) {
             return ControlLoopCompiler.compile(is, controlLoopCompilerCallback);
         }
@@ -202,7 +194,5 @@ public class ControlLoopCompilerTest {
         public boolean areAllExpectedOnErrorsReceived() {
             return expectedOnErrorMessages.isEmpty();
         }
-
     }
-
 }
index f646712..81520b5 100644 (file)
@@ -3,7 +3,7 @@
  * policy-yaml unit test
  * ================================================================================
  * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -32,10 +32,9 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.UUID;
+
 import org.junit.Ignore;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.onap.aai.domain.yang.Pnf;
 import org.onap.policy.controlloop.policy.builder.BuilderException;
 import org.onap.policy.controlloop.policy.builder.ControlLoopPolicyBuilder;
@@ -49,7 +48,6 @@ import org.yaml.snakeyaml.Yaml;
 import org.yaml.snakeyaml.constructor.Constructor;
 import org.yaml.snakeyaml.error.YAMLException;
 
-
 public class ControlLoopPolicyBuilderTest {
 
     private static final String RESOURCE1 = "resource1";
@@ -60,8 +58,6 @@ public class ControlLoopPolicyBuilderTest {
     private static final String REBUILD = "Rebuild";
     private static final String REBUILD_VM = "Rebuild VM";
     private static final String REBUILD_RESTART = "If the restart fails, rebuild it.";
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
 
     @Test
     public void testControlLoop() throws BuilderException {
@@ -69,7 +65,7 @@ public class ControlLoopPolicyBuilderTest {
         // Create a builder for our policy
         //
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         //
         // Test add services
         //
@@ -105,25 +101,28 @@ public class ControlLoopPolicyBuilderTest {
     @Test
     public void testAddNullService() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Service must not be null");
-        builder.addService((Service) null);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+
+        assertThatThrownBy(() -> {
+            builder.addService((Service) null);
+        }).isInstanceOf(BuilderException.class).hasMessage("Service must not be null");
     }
 
     @Test
     public void testAddInvalidService() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Invalid service - need either a serviceUUID or serviceName");
-        builder.addService(new Service());
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+
+        assertThatThrownBy(() -> {
+            builder.addService(new Service());
+        }).isInstanceOf(BuilderException.class)
+            .hasMessage("Invalid service - need either a serviceUUID or serviceName");
     }
 
     @Test
     public void testAddServiceWithUuid() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         UUID uuid = UUID.randomUUID();
         Service serviceWithUuid = new Service(uuid);
         builder.addService(serviceWithUuid);
@@ -133,26 +132,28 @@ public class ControlLoopPolicyBuilderTest {
     @Test
     public void testAddNullResource() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Resource must not be null");
-        builder.addResource((Resource) null);
-    }
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
 
+        assertThatThrownBy(() -> {
+            builder.addResource((Resource) null);
+        }).isInstanceOf(BuilderException.class).hasMessage("Resource must not be null");
+    }
 
     @Test
     public void testAddInvalidResource() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Invalid resource - need either resourceUUID or resourceName");
-        builder.addResource(new Resource());
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+
+        assertThatThrownBy(() -> {
+            builder.addResource(new Resource());
+        }).isInstanceOf(BuilderException.class)
+            .hasMessage("Invalid resource - need either resourceUUID or resourceName");
     }
 
     @Test
     public void testAddAndRemoveResourceWithUuid() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         UUID uuid = UUID.randomUUID();
         Resource resourceWithUuid = new Resource(uuid);
         builder.addResource(resourceWithUuid);
@@ -165,44 +166,49 @@ public class ControlLoopPolicyBuilderTest {
     @Test
     public void testRemoveNullResource() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         Resource resource = new Resource(RESOURCE1, ResourceType.VF);
         builder.addResource(resource);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Resource must not be null");
-        builder.removeResource((Resource) null);
+
+        assertThatThrownBy(() -> {
+            builder.removeResource((Resource) null);
+        }).isInstanceOf(BuilderException.class).hasMessage("Resource must not be null");
     }
 
     @Test
     public void testRemoveResourceNoExistingResources() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("No existing resources to remove");
-        builder.removeResource(new Resource(RESOURCE1, ResourceType.VF));
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+
+        assertThatThrownBy(() -> {
+            builder.removeResource(new Resource(RESOURCE1, ResourceType.VF));
+        }).isInstanceOf(BuilderException.class).hasMessage("No existing resources to remove");
     }
 
     @Test
     public void testRemoveInvalidResource() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         Resource resource = new Resource(RESOURCE1, ResourceType.VF);
         builder.addResource(resource);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Invalid resource - need either a resourceUUID or resourceName");
-        builder.removeResource(new Resource());
+
+        assertThatThrownBy(() -> {
+            builder.removeResource(new Resource());
+        }).isInstanceOf(BuilderException.class)
+            .hasMessage("Invalid resource - need either a resourceUUID or resourceName");
     }
 
     @Test
     public void testRemoveUnknownResource() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         Resource resource = new Resource(RESOURCE1, ResourceType.VF);
         builder.addResource(resource);
         final String unknownResourceName = "reource2";
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Unknown resource " + unknownResourceName);
-        builder.removeResource(new Resource(unknownResourceName, ResourceType.VF));
+
+        assertThatThrownBy(() -> {
+            builder.removeResource(new Resource(unknownResourceName, ResourceType.VF));
+        }).isInstanceOf(BuilderException.class).hasMessage("Unknown resource " + unknownResourceName);
     }
 
     @Test
@@ -210,8 +216,8 @@ public class ControlLoopPolicyBuilderTest {
         Resource cts = new Resource("vCTS", ResourceType.VF);
         Service scp = new Service("vSCP");
         Service usp = new Service("vUSP");
-        ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory
-                .buildControlLoop(UUID.randomUUID().toString(), 2400, cts, scp, usp);
+        ControlLoopPolicyBuilder builder =
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400, cts, scp, usp);
         assertTrue(builder.getControlLoop().getResources().size() == 1);
         assertTrue(builder.getControlLoop().getServices().size() == 2);
     }
@@ -221,8 +227,8 @@ public class ControlLoopPolicyBuilderTest {
         Resource cts = new Resource("vCTS", ResourceType.VF);
         Resource com = new Resource("vCTS", ResourceType.VF);
         Service scp = new Service("vSCP");
-        ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory
-                .buildControlLoop(UUID.randomUUID().toString(), 2400, scp, cts, com);
+        ControlLoopPolicyBuilder builder =
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400, scp, cts, com);
         assertTrue(builder.getControlLoop().getServices().size() == 1);
         assertTrue(builder.getControlLoop().getResources().size() == 2);
     }
@@ -238,9 +244,9 @@ public class ControlLoopPolicyBuilderTest {
     // PLEASE ADVISE IF THE BEHAVIOUR IS INCORRECT OR THE TEST CASE IS INVALID
     public void testControlLoopForPnf() throws BuilderException {
         Pnf pnf = new Pnf();
-        //pnf.setPnfType(PnfType.ENODEB);
+        // pnf.setPnfType(PnfType.ENODEB);
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400, pnf);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400, pnf);
         assertEquals(pnf, builder.getControlLoop().getPnf());
 
         builder.removePnf();
@@ -252,11 +258,11 @@ public class ControlLoopPolicyBuilderTest {
     // Fails for the same reason as the above test case
     public void testSetAndRemovePnf() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         assertNull(builder.getControlLoop().getPnf());
 
         Pnf pnf = new Pnf();
-        //pnf.setPnfType(PnfType.ENODEB);
+        // pnf.setPnfType(PnfType.ENODEB);
         builder.setPnf(pnf);
         assertEquals(pnf, builder.getControlLoop().getPnf());
 
@@ -267,25 +273,27 @@ public class ControlLoopPolicyBuilderTest {
     @Test
     public void testSetNullPnf() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("PNF must not be null");
-        builder.setPnf(null);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+
+        assertThatThrownBy(() -> {
+            builder.setPnf(null);
+        }).isInstanceOf(BuilderException.class).hasMessage("PNF must not be null");
     }
 
     @Test
     public void testSetInvalidPnf() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Invalid PNF - need either pnfName or pnfType");
-        builder.setPnf(new Pnf());
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+
+        assertThatThrownBy(() -> {
+            builder.setPnf(new Pnf());
+        }).isInstanceOf(BuilderException.class).hasMessage("Invalid PNF - need either pnfName or pnfType");
     }
 
     @Test
     public void testSetAbatement() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         assertFalse(builder.getControlLoop().getAbatement());
         builder = builder.setAbatement(true);
         assertTrue(builder.getControlLoop().getAbatement());
@@ -293,11 +301,12 @@ public class ControlLoopPolicyBuilderTest {
 
     @Test
     public void testSetNullAbatement() throws BuilderException {
-        ControlLoopPolicyBuilder builder =
+        assertThatThrownBy(() -> {
+            ControlLoopPolicyBuilder builder =
                 ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("abatement must not be null");
-        builder = builder.setAbatement(null);
+
+            builder = builder.setAbatement(null);
+        }).isInstanceOf(BuilderException.class).hasMessage("abatement must not be null");
     }
 
     @Test
@@ -306,7 +315,7 @@ public class ControlLoopPolicyBuilderTest {
         // Create a builder for our policy
         //
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         //
         // Test setTimeout
         //
@@ -316,38 +325,38 @@ public class ControlLoopPolicyBuilderTest {
         //
         // Test calculateTimeout
         //
-        Policy trigger =
-                builder.setTriggerPolicy(PolicyParam.builder().id(UUID.randomUUID().toString())
-                        .name(RESTART_VM)
-                        .description(TRIGGER_RESTART)
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(RESTART)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
+        // @formatter:off
+        Policy trigger = builder.setTriggerPolicy(PolicyParam.builder().id(UUID.randomUUID().toString())
+            .name(RESTART_VM)
+            .description(TRIGGER_RESTART)
+            .actor("APPC").target(new Target(TargetType.VM))
+            .recipe(RESTART)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
+
         @SuppressWarnings("unused")
         Policy onRestartFailurePolicy = builder.setPolicyForPolicyResult(
-                PolicyParam.builder()
-                        .name(REBUILD_VM)
-                        .description("If the restart fails, rebuild it")
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(REBUILD)
-                        .payload(null)
-                        .retries(1)
-                        .timeout(600)
-                        .id(trigger.getId()).build(),
-                        PolicyResult.FAILURE,
-                        PolicyResult.FAILURE_RETRIES,
-                        PolicyResult.FAILURE_TIMEOUT);
+            PolicyParam.builder()
+                .name(REBUILD_VM)
+                .description("If the restart fails, rebuild it").actor("APPC")
+                .target(new Target(TargetType.VM))
+                .recipe(REBUILD)
+                .payload(null)
+                .retries(1)
+                .timeout(600)
+                .id(trigger.getId())
+                .build(),
+            PolicyResult.FAILURE, PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT);
         assertEquals(Integer.valueOf(300 + 600), builder.calculateTimeout());
+        // @formatter:on
     }
 
     @Test
     public void testTriggerPolicyMethods() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                        ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         //
         // Test isOpenLoop
         //
@@ -355,35 +364,33 @@ public class ControlLoopPolicyBuilderTest {
         //
         // Test set initial trigger policy
         //
-        Policy triggerPolicy1 =
-                builder.setTriggerPolicy(
-                        PolicyParam.builder().id(UUID.randomUUID().toString())
-                        .name(RESTART_VM)
-                        .description(TRIGGER_RESTART)
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(RESTART)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
+        // @formatter:off
+        Policy triggerPolicy1 = builder.setTriggerPolicy(PolicyParam.builder().id(UUID.randomUUID().toString())
+            .name(RESTART_VM)
+            .description(TRIGGER_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(RESTART)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
         assertFalse(builder.isOpenLoop());
         assertEquals(builder.getControlLoop().getTrigger_policy(), triggerPolicy1.getId());
         //
         // Set trigger policy to a new policy
         //
         @SuppressWarnings("unused")
-        Policy triggerPolicy2 =
-                builder.setTriggerPolicy(
-                        PolicyParam.builder()
-                        .id(UUID.randomUUID().toString())
-                        .name("Rebuild the VM")
-                        .description("Upon getting the trigger event, rebuild the VM")
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(REBUILD)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
+        Policy triggerPolicy2 = builder.setTriggerPolicy(PolicyParam.builder().id(UUID.randomUUID().toString())
+            .name("Rebuild the VM")
+            .description("Upon getting the trigger event, rebuild the VM").actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(REBUILD)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
+        // @formatter:on
         //
         // Test set trigger policy to another existing policy
         //
@@ -399,78 +406,77 @@ public class ControlLoopPolicyBuilderTest {
     @Test
     public void testSetTriggerPolicyNullPolicyId() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Id must not be null");
-        builder.setExistingTriggerPolicy(null);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+
+        assertThatThrownBy(() -> {
+            builder.setExistingTriggerPolicy(null);
+        }).isInstanceOf(BuilderException.class).hasMessage("Id must not be null");
     }
 
     @Test
     public void testSetTriggerPolicyNoPoliciesExist() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         final String unknownPolicyId = "100";
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage(UNKNOWN_POLICY + unknownPolicyId);
-        builder.setExistingTriggerPolicy(unknownPolicyId);
+
+        assertThatThrownBy(() -> {
+            builder.setExistingTriggerPolicy(unknownPolicyId);
+        }).isInstanceOf(BuilderException.class).hasMessage(UNKNOWN_POLICY + unknownPolicyId);
     }
 
     @Test
     public void testSetTriggerPolicyUnknownPolicy() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        builder.setTriggerPolicy(
-                PolicyParam.builder()
-                .id(UUID.randomUUID().toString())
-                .name(RESTART_VM)
-                .description(TRIGGER_RESTART)
-                .actor("APPC")
-                .target(new Target(TargetType.VM))
-                .recipe(RESTART)
-                .payload(null)
-                .retries(2)
-                .timeout(300).build());
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+        // @formatter:off
+        builder.setTriggerPolicy(PolicyParam.builder().id(UUID.randomUUID().toString())
+            .name(RESTART_VM)
+            .description(TRIGGER_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(RESTART)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
+        // @formatter:on
         final String unknownPolicyId = "100";
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage(UNKNOWN_POLICY + unknownPolicyId);
-        builder.setExistingTriggerPolicy(unknownPolicyId);
+
+        assertThatThrownBy(() -> {
+            builder.setExistingTriggerPolicy(unknownPolicyId);
+        }).isInstanceOf(BuilderException.class).hasMessage(UNKNOWN_POLICY + unknownPolicyId);
     }
 
     @Test
     public void testAddRemovePolicies() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                        ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        Policy triggerPolicy =
-                builder.setTriggerPolicy(
-                        PolicyParam.builder()
-                        .id(UUID.randomUUID().toString())
-                        .name(RESTART_VM)
-                        .description(TRIGGER_RESTART)
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(RESTART)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+        // @formatter:off
+        Policy triggerPolicy = builder.setTriggerPolicy(PolicyParam.builder().id(UUID.randomUUID().toString())
+            .name(RESTART_VM)
+            .description(TRIGGER_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(RESTART)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
         //
         // Test create a policy and chain it to the results of trigger policy
         //
-        Policy onRestartFailurePolicy1 = builder.setPolicyForPolicyResult(
-                PolicyParam.builder()
-                .name(REBUILD_VM)
-                .description(REBUILD_RESTART)
-                .actor("APPC")
-                .target(new Target(TargetType.VM))
-                .recipe(REBUILD)
-                .payload(null)
-                .retries(1)
-                .timeout(600)
-                .id(triggerPolicy.getId()).build(),
-                PolicyResult.FAILURE,
-                PolicyResult.FAILURE_EXCEPTION,
-                PolicyResult.FAILURE_RETRIES,
-                PolicyResult.FAILURE_TIMEOUT,
-                PolicyResult.FAILURE_GUARD);
+        Policy onRestartFailurePolicy1 = builder.setPolicyForPolicyResult(PolicyParam.builder()
+            .name(REBUILD_VM)
+            .description(REBUILD_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(REBUILD).payload(null)
+            .retries(1)
+            .timeout(600)
+            .id(triggerPolicy.getId())
+            .build(),
+            PolicyResult.FAILURE, PolicyResult.FAILURE_EXCEPTION, PolicyResult.FAILURE_RETRIES,
+            PolicyResult.FAILURE_TIMEOUT, PolicyResult.FAILURE_GUARD);
         //
         assertTrue(builder.getTriggerPolicy().getFailure().equals(onRestartFailurePolicy1.getId()));
         assertTrue(builder.getTriggerPolicy().getFailure_exception().equals(onRestartFailurePolicy1.getId()));
@@ -481,19 +487,20 @@ public class ControlLoopPolicyBuilderTest {
         //
         // Test create a policy and chain it to the results of trigger policy success
         //
-        Policy onSuccessPolicy1 = builder.setPolicyForPolicyResult(
-                PolicyParam.builder()
-                .name("Do something")
-                .description("If the restart succeeds, do something else.")
-                .actor("APPC")
-                .target(new Target(TargetType.VM))
-                .recipe("SomethingElse")
-                .payload(null)
-                .retries(1)
-                .timeout(600)
-                .id(triggerPolicy.getId()).build(),
-                PolicyResult.SUCCESS);
-        //
+        Policy onSuccessPolicy1 = builder.setPolicyForPolicyResult(PolicyParam.builder()
+            .name("Do something")
+            .description("If the restart succeeds, do something else.")
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe("SomethingElse")
+            .payload(null)
+            .retries(1)
+            .timeout(600)
+            .id(triggerPolicy.getId())
+            .build(),
+            PolicyResult.SUCCESS);
+        //
+        // @formatter:on
         assertTrue(builder.getTriggerPolicy().getSuccess().equals(onSuccessPolicy1.getId()));
 
         //
@@ -502,55 +509,52 @@ public class ControlLoopPolicyBuilderTest {
         boolean removed = builder.removePolicy(onRestartFailurePolicy1.getId());
         assertTrue(removed);
         assertTrue(builder.getTriggerPolicy().getFailure().equals(FinalResult.FINAL_FAILURE.toString()));
-        assertTrue(builder.getTriggerPolicy().getFailure_retries()
-                .equals(FinalResult.FINAL_FAILURE_RETRIES.toString()));
-        assertTrue(builder.getTriggerPolicy().getFailure_timeout()
-                .equals(FinalResult.FINAL_FAILURE_TIMEOUT.toString()));
         assertTrue(
-                builder.getTriggerPolicy().getFailure_guard().equals(FinalResult.FINAL_FAILURE_GUARD.toString()));
+            builder.getTriggerPolicy().getFailure_retries().equals(FinalResult.FINAL_FAILURE_RETRIES.toString()));
+        assertTrue(
+            builder.getTriggerPolicy().getFailure_timeout().equals(FinalResult.FINAL_FAILURE_TIMEOUT.toString()));
+        assertTrue(builder.getTriggerPolicy().getFailure_guard().equals(FinalResult.FINAL_FAILURE_GUARD.toString()));
         //
         // Create another policy and chain it to the results of trigger policy
         //
-        final Policy onRestartFailurePolicy2 =
-                builder.setPolicyForPolicyResult(
-                        PolicyParam.builder()
-                        .name(REBUILD_VM)
-                        .description(REBUILD_RESTART)
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(REBUILD)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(600)
-                        .id(triggerPolicy.getId()).build(),
-                        PolicyResult.FAILURE,
-                        PolicyResult.FAILURE_RETRIES,
-                        PolicyResult.FAILURE_TIMEOUT);
+        // @formatter:off
+        final Policy onRestartFailurePolicy2 = builder.setPolicyForPolicyResult(
+            PolicyParam.builder()
+                .name(REBUILD_VM)
+                .description(REBUILD_RESTART)
+                .actor("APPC")
+                .target(new Target(TargetType.VM))
+                .recipe(REBUILD)
+                .payload(null)
+                .retries(2)
+                .timeout(600)
+                .id(triggerPolicy.getId())
+                .build(),
+            PolicyResult.FAILURE, PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT);
+        // @formatter:on
         //
         // Test reset policy results
         //
         triggerPolicy = builder.resetPolicyResults(triggerPolicy.getId());
         assertTrue(builder.getTriggerPolicy().getFailure().equals(FinalResult.FINAL_FAILURE.toString()));
-        assertTrue(builder.getTriggerPolicy().getFailure_retries()
-                .equals(FinalResult.FINAL_FAILURE_RETRIES.toString()));
-        assertTrue(builder.getTriggerPolicy().getFailure_timeout()
-                .equals(FinalResult.FINAL_FAILURE_TIMEOUT.toString()));
+        assertTrue(
+            builder.getTriggerPolicy().getFailure_retries().equals(FinalResult.FINAL_FAILURE_RETRIES.toString()));
+        assertTrue(
+            builder.getTriggerPolicy().getFailure_timeout().equals(FinalResult.FINAL_FAILURE_TIMEOUT.toString()));
         //
         // Test set the policy results to an existing operational policy
         //
-        Policy onRestartFailurePolicy3 =
-                builder.setPolicyForPolicyResult(onRestartFailurePolicy2.getId(), triggerPolicy.getId(),
-                        PolicyResult.FAILURE, PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT);
+        Policy onRestartFailurePolicy3 = builder.setPolicyForPolicyResult(onRestartFailurePolicy2.getId(),
+            triggerPolicy.getId(), PolicyResult.FAILURE, PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT);
         assertTrue(builder.getTriggerPolicy().getFailure().equals(onRestartFailurePolicy3.getId()));
         assertTrue(builder.getTriggerPolicy().getFailure_retries().equals(onRestartFailurePolicy3.getId()));
         assertTrue(builder.getTriggerPolicy().getFailure_timeout().equals(onRestartFailurePolicy3.getId()));
         //
         // Test set the policy result for success to an existing operational policy
         //
-        Policy onRestartFailurePolicy4 =
-                builder.setPolicyForPolicyResult(onRestartFailurePolicy2.getId(), triggerPolicy.getId(),
-                        PolicyResult.FAILURE, PolicyResult.FAILURE_EXCEPTION, PolicyResult.FAILURE_GUARD,
-                        PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT, PolicyResult.SUCCESS);
+        Policy onRestartFailurePolicy4 = builder.setPolicyForPolicyResult(onRestartFailurePolicy2.getId(),
+            triggerPolicy.getId(), PolicyResult.FAILURE, PolicyResult.FAILURE_EXCEPTION, PolicyResult.FAILURE_GUARD,
+            PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT, PolicyResult.SUCCESS);
         assertTrue(builder.getTriggerPolicy().getFailure().equals(onRestartFailurePolicy4.getId()));
         assertTrue(builder.getTriggerPolicy().getFailure_exception().equals(onRestartFailurePolicy4.getId()));
         assertTrue(builder.getTriggerPolicy().getFailure_guard().equals(onRestartFailurePolicy4.getId()));
@@ -568,129 +572,136 @@ public class ControlLoopPolicyBuilderTest {
     @Test
     public void testAddToUnknownPolicy() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
         final String policyId = "100";
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage(UNKNOWN_POLICY + policyId);
 
-        builder.setPolicyForPolicyResult(
+        assertThatThrownBy(() -> {
+            // @formatter:off
+            builder.setPolicyForPolicyResult(
                 PolicyParam.builder()
-                .name(REBUILD_VM)
-                .description(REBUILD_RESTART)
-                .actor("APPC")
-                .target(new Target(TargetType.VM))
-                .recipe(REBUILD)
-                .payload(null)
-                .retries(1)
-                .timeout(600)
-                .id(policyId).build(),
-                PolicyResult.FAILURE,
-                PolicyResult.FAILURE_RETRIES,
-                PolicyResult.FAILURE_TIMEOUT,
+                    .name(REBUILD_VM)
+                    .description(REBUILD_RESTART)
+                    .actor("APPC")
+                    .target(new Target(TargetType.VM))
+                    .recipe(REBUILD)
+                    .payload(null)
+                    .retries(1)
+                    .timeout(600)
+                    .id(policyId)
+                    .build(),
+                PolicyResult.FAILURE, PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT,
                 PolicyResult.FAILURE_GUARD);
+            // @formatter:on
+        }).isInstanceOf(BuilderException.class).hasMessage(UNKNOWN_POLICY + policyId);
+
     }
 
     @Test
     public void testAddExistingPolicyToUnknownPolicy() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        Policy triggerPolicy =
-                builder.setTriggerPolicy(
-                        PolicyParam.builder()
-                        .id(UUID.randomUUID().toString())
-                        .name(RESTART_VM)
-                        .description(TRIGGER_RESTART)
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(RESTART)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
-
-
-        Policy onRestartFailurePolicy = builder.setPolicyForPolicyResult(
-                PolicyParam.builder()
-                .name(REBUILD_VM)
-                .description(REBUILD_RESTART)
-                .actor("APPC")
-                .target(new Target(TargetType.VM))
-                .recipe(REBUILD)
-                .payload(null)
-                .retries(1)
-                .timeout(600)
-                .id(triggerPolicy.getId()).build(),
-                PolicyResult.FAILURE);
-
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+        // @formatter:off
+        Policy triggerPolicy = builder.setTriggerPolicy(PolicyParam.builder()
+            .id(UUID.randomUUID().toString())
+            .name(RESTART_VM)
+            .description(TRIGGER_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(RESTART)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
+
+        Policy onRestartFailurePolicy = builder.setPolicyForPolicyResult(PolicyParam.builder()
+            .name(REBUILD_VM)
+            .description(REBUILD_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(REBUILD)
+            .payload(null)
+            .retries(1)
+            .timeout(600)
+            .id(triggerPolicy.getId())
+            .build(),
+            PolicyResult.FAILURE);
+
+        // @formatter:on
         final String unknownPolicyId = "100";
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage(unknownPolicyId + " does not exist");
 
-        builder.setPolicyForPolicyResult(onRestartFailurePolicy.getId(), unknownPolicyId, PolicyResult.FAILURE);
+        assertThatThrownBy(() -> {
+            builder.setPolicyForPolicyResult(onRestartFailurePolicy.getId(), unknownPolicyId, PolicyResult.FAILURE);
+        }).isInstanceOf(BuilderException.class).hasMessage(unknownPolicyId + " does not exist");
+
     }
 
     @Test
     public void testAddUnknownExistingPolicyToPolicy() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
-        Policy triggerPolicy =
-                builder.setTriggerPolicy(
-                        PolicyParam.builder()
-                        .id(UUID.randomUUID().toString())
-                        .name(RESTART_VM)
-                        .description(TRIGGER_RESTART)
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(RESTART)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+        // @formatter:off
+        Policy triggerPolicy = builder.setTriggerPolicy(PolicyParam.builder()
+            .id(UUID.randomUUID().toString())
+            .name(RESTART_VM)
+            .description(TRIGGER_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(RESTART)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
+        // @formatter:on
 
         final String unknownPolicyId = "100";
-        expectedException.expect(BuilderException.class);
-        expectedException.expectMessage("Operational policy " + unknownPolicyId + " does not exist");
 
-        builder.setPolicyForPolicyResult(unknownPolicyId, triggerPolicy.getId(), PolicyResult.FAILURE);
+        assertThatThrownBy(() -> {
+            builder.setPolicyForPolicyResult(unknownPolicyId, triggerPolicy.getId(), PolicyResult.FAILURE);
+        }).isInstanceOf(BuilderException.class).hasMessage("Operational policy " + unknownPolicyId + " does not exist");
+
     }
 
     @Test
     public void testAddOperationsAccumulateParams() throws BuilderException {
         ControlLoopPolicyBuilder builder =
-                        ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 2400);
+        // @formatter:off
         Policy triggerPolicy =
-                builder.setTriggerPolicy(
-                        PolicyParam.builder()
-                        .id(UUID.randomUUID().toString())
-                        .name("Restart the eNodeB")
-                        .description("Upon getting the trigger event, restart the eNodeB")
-                        .actor("RANController")
-                        .target(new Target(TargetType.PNF))
-                        .recipe(RESTART)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
+            builder.setTriggerPolicy(PolicyParam.builder()
+                .id(UUID.randomUUID().toString())
+                .name("Restart the eNodeB")
+                .description("Upon getting the trigger event, restart the eNodeB")
+                .actor("RANController")
+                .target(new Target(TargetType.PNF))
+                .recipe(RESTART)
+                .payload(null)
+                .retries(2)
+                .timeout(300)
+                .build());
+        // @formatter:on
         //
         // Add the operationsAccumulateParams
         //
-        triggerPolicy = builder.addOperationsAccumulateParams(triggerPolicy.getId(),
-                new OperationsAccumulateParams("15m", 5));
+        triggerPolicy =
+            builder.addOperationsAccumulateParams(triggerPolicy.getId(), new OperationsAccumulateParams("15m", 5));
         assertNotNull(builder.getTriggerPolicy().getOperationsAccumulateParams());
         assertEquals("15m", builder.getTriggerPolicy().getOperationsAccumulateParams().getPeriod());
         assertTrue(builder.getTriggerPolicy().getOperationsAccumulateParams().getLimit() == 5);
     }
 
-
     @Test
     public void testBuildSpecification() throws BuilderException {
         //
         // Create the builder
         //
         ControlLoopPolicyBuilder builder =
-                ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 800);
+            ControlLoopPolicyBuilder.Factory.buildControlLoop(UUID.randomUUID().toString(), 800);
         //
         // Set the first invalid trigger policy
         //
+        // @formatter:off
         final Policy policy1 = builder.setTriggerPolicy(
-                PolicyParam.builder()
+            PolicyParam.builder()
                 .id(UUID.randomUUID().toString())
                 .name(RESTART_VM)
                 .description(TRIGGER_RESTART)
@@ -699,8 +710,10 @@ public class ControlLoopPolicyBuilderTest {
                 .recipe(null)
                 .payload(null)
                 .retries(2)
-                .timeout(300).build());
+                .timeout(300)
+                .build());
         Results results = builder.buildSpecification();
+        // @formatter:on
         //
         // Check that ERRORs are in results for invalid policy arguments
         //
@@ -732,32 +745,33 @@ public class ControlLoopPolicyBuilderTest {
         //
         // Set a valid trigger policy
         //
-        Policy policy1a = builder.setTriggerPolicy(
-                PolicyParam.builder()
-                .id(UUID.randomUUID().toString())
-                .name(REBUILD_VM)
-                .description(REBUILD_RESTART)
-                .actor("APPC")
-                .target(new Target(TargetType.VM))
-                .recipe(REBUILD)
-                .payload(null)
-                .retries(1)
-                .timeout(600).build());
+        // @formatter:off
+        Policy policy1a = builder.setTriggerPolicy(PolicyParam.builder()
+            .id(UUID.randomUUID().toString())
+            .name(REBUILD_VM)
+            .description(REBUILD_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(REBUILD)
+            .payload(null)
+            .retries(1)
+            .timeout(600)
+            .build());
         //
         // Set a second valid trigger policy
         //
-        final Policy policy2 =
-                builder.setTriggerPolicy(
-                        PolicyParam.builder()
-                        .id(UUID.randomUUID().toString())
-                        .name(RESTART_VM)
-                        .description(TRIGGER_RESTART)
-                        .actor("APPC")
-                        .target(new Target(TargetType.VM))
-                        .recipe(RESTART)
-                        .payload(null)
-                        .retries(2)
-                        .timeout(300).build());
+        final Policy policy2 = builder.setTriggerPolicy(PolicyParam.builder()
+            .id(UUID.randomUUID().toString())
+            .name(RESTART_VM)
+            .description(TRIGGER_RESTART)
+            .actor("APPC")
+            .target(new Target(TargetType.VM))
+            .recipe(RESTART)
+            .payload(null)
+            .retries(2)
+            .timeout(300)
+            .build());
+        // @formatter:on
         //
         // Now, we have policy1 unreachable
         //
@@ -765,7 +779,7 @@ public class ControlLoopPolicyBuilderTest {
         boolean unreachable = false;
         for (Message m : results.getMessages()) {
             if (m.getMessage().equals("Policy " + policy1a.getId() + " is not reachable.")
-                    && m.getLevel() == MessageLevel.WARNING) {
+                && m.getLevel() == MessageLevel.WARNING) {
                 unreachable = true;
                 break;
             }
@@ -775,12 +789,12 @@ public class ControlLoopPolicyBuilderTest {
         // Set policy1a for the failure results of policy2
         //
         policy1a = builder.setPolicyForPolicyResult(policy1a.getId(), policy2.getId(), PolicyResult.FAILURE,
-                PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT);
+            PolicyResult.FAILURE_RETRIES, PolicyResult.FAILURE_TIMEOUT);
         results = builder.buildSpecification();
         boolean invalidTimeout = false;
         for (Message m : results.getMessages()) {
             if ("controlLoop overall timeout is less than the sum of operational policy timeouts."
-                            .equals(m.getMessage()) && m.getLevel() == MessageLevel.ERROR) {
+                .equals(m.getMessage()) && m.getLevel() == MessageLevel.ERROR) {
                 invalidTimeout = true;
                 break;
             }
@@ -797,7 +811,7 @@ public class ControlLoopPolicyBuilderTest {
         unreachable = false;
         for (Message m : results.getMessages()) {
             if ("Open Loop policy contains policies. The policies will never be invoked.".equals(m.getMessage())
-                    && m.getLevel() == MessageLevel.WARNING) {
+                && m.getLevel() == MessageLevel.WARNING) {
                 unreachable = true;
                 break;
             }
@@ -805,7 +819,6 @@ public class ControlLoopPolicyBuilderTest {
         assertTrue(unreachable);
     }
 
-
     @Test
     public void test1() throws Exception {
         this.test("src/test/resources/v1.0.0/policy_Test.yaml");
@@ -842,20 +855,20 @@ public class ControlLoopPolicyBuilderTest {
             // Now we're going to try to use the builder to build this.
             //
             ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(
-                    policyTobuild.getControlLoop().getControlLoopName(), policyTobuild.getControlLoop().getTimeout());
+                policyTobuild.getControlLoop().getControlLoopName(), policyTobuild.getControlLoop().getTimeout());
             //
             // Add services
             //
             if (policyTobuild.getControlLoop().getServices() != null) {
                 builder = builder.addService(policyTobuild.getControlLoop().getServices()
-                        .toArray(new Service[policyTobuild.getControlLoop().getServices().size()]));
+                    .toArray(new Service[policyTobuild.getControlLoop().getServices().size()]));
             }
             //
             // Add resources
             //
             if (policyTobuild.getControlLoop().getResources() != null) {
                 builder = builder.addResource(policyTobuild.getControlLoop().getResources()
-                        .toArray(new Resource[policyTobuild.getControlLoop().getResources().size()]));
+                    .toArray(new Resource[policyTobuild.getControlLoop().getResources().size()]));
             }
             //
             // Set pnf
@@ -879,12 +892,11 @@ public class ControlLoopPolicyBuilderTest {
     }
 
     private void setTriggerPolicies(ControlLoopPolicy policyTobuild, ControlLoopPolicyBuilder builder)
-                    throws BuilderException {
+        throws BuilderException {
         for (Policy policy : policyTobuild.getPolicies()) {
             if (policy.getId() == policyTobuild.getControlLoop().getTrigger_policy()) {
-                builder.setTriggerPolicy(
-                        PolicyParam.builder()
-                        .id(UUID.randomUUID().toString())
+                // @formatter:off
+                builder.setTriggerPolicy(PolicyParam.builder().id(UUID.randomUUID().toString())
                         .name(policy.getName())
                         .description(policy.getDescription())
                         .actor(policy.getActor())
@@ -892,9 +904,10 @@ public class ControlLoopPolicyBuilderTest {
                         .recipe(policy.getRecipe())
                         .payload(null)
                         .retries(policy.getRetry())
-                        .timeout(policy.getTimeout()).build());
+                        .timeout(policy.getTimeout())
+                        .build());
+                // @formatter:on
             }
         }
     }
-
 }
index 0b61991..43428c6 100644 (file)
@@ -3,7 +3,7 @@
  * policy-yaml unit test
  * ================================================================================
  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,20 +23,14 @@ package org.onap.policy.controlloop.policy;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 
-import java.io.File;
 import java.io.FileInputStream;
-import java.io.InputStream;
+import java.io.InputStreamReader;
+
 import org.junit.Test;
-import org.onap.policy.common.utils.io.Serializer;
+import org.onap.policy.common.utils.coder.YamlJsonTranslator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.yaml.snakeyaml.DumperOptions;
-import org.yaml.snakeyaml.DumperOptions.FlowStyle;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.constructor.Constructor;
-
 
 public class ControlLoopPolicyTest {
     private static final Logger logger = LoggerFactory.getLogger(ControlLoopPolicyTest.class);
@@ -62,9 +56,8 @@ public class ControlLoopPolicyTest {
     }
 
     @Test
-    public void testvFirewall() {
-        // Chenfei to fix this.
-        // this.test("src/test/resources/v2.0.0/policy_ONAP_demo_vFirewall.yaml");
+    public void testvFirewall() throws Exception {
+        this.test("src/test/resources/v2.0.0/policy_ONAP_demo_vFirewall.yaml");
     }
 
     @Test
@@ -89,37 +82,30 @@ public class ControlLoopPolicyTest {
      * @throws Exception if an error occurs
      */
     public void test(String testFile) throws Exception {
-        try (InputStream is = new FileInputStream(new File(testFile))) {
+        try (InputStreamReader fileInputStream = new InputStreamReader(new FileInputStream(testFile))) {
             //
             // Read the yaml into our Java Object
             //
-            Yaml yaml = new Yaml(new Constructor(ControlLoopPolicy.class));
-            Object obj = yaml.load(is);
-            assertNotNull(obj);
-            assertTrue(obj instanceof ControlLoopPolicy);
-            dump(obj);
+            ControlLoopPolicy controlLoopPolicy1 =
+                new YamlJsonTranslator().fromYaml(fileInputStream, ControlLoopPolicy.class);
+            assertNotNull(controlLoopPolicy1);
+            dump(controlLoopPolicy1);
+
             //
             // Now dump it to a yaml string
             //
-            DumperOptions options = new DumperOptions();
-            options.setDefaultFlowStyle(FlowStyle.BLOCK);
-            options.setPrettyFlow(true);
-            yaml = new Yaml(options);
-            String dumpedYaml = yaml.dump(obj);
+            String dumpedYaml = new YamlJsonTranslator().toYaml(controlLoopPolicy1);
             logger.debug(dumpedYaml);
             //
             // Read that string back into our java object
             //
-            Object newObject = yaml.load(dumpedYaml);
-            dump(newObject);
-            assertNotNull(newObject);
-            assertTrue(newObject instanceof ControlLoopPolicy);
-            assertEquals(obj, newObject);
+            ControlLoopPolicy controlLoopPolicy2 =
+                new YamlJsonTranslator().fromYaml(dumpedYaml, ControlLoopPolicy.class);
+            assertNotNull(controlLoopPolicy2);
+            dump(controlLoopPolicy2);
 
             // test serialization
-            ControlLoopPolicy policy = (ControlLoopPolicy) obj;
-            ControlLoopPolicy policy2 = Serializer.roundTrip(policy);
-            assertTrue(policy.equals(policy2));
+            assertEquals(controlLoopPolicy1, controlLoopPolicy2);
         }
     }
 
index 73486b0..de2590c 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright 2018 AT&T Intellectual Property. All rights reserved
-# Modifications Copyright (C) 2019 Nordix Foundation.
+# Modifications Copyright (C) 2019-2020 Nordix Foundation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,9 +15,9 @@
 controlLoop:
   controlLoopName: ControlLoop-TEST-5dfa8fce-bd7a-4424-b60d-ee2ad2f254a3
   version: 1.0.0
-  services: 
+  services:
     - serviceName: Foo Service
-  resources: 
+  resources:
     - resourceName: Bar VNF
       resourceType: VF
   trigger_policy: unique-policy-id-1-restart
@@ -29,7 +29,8 @@ policies:
     description:
     actor: APPC
     recipe: Restart
-    target: VM
+    target:
+      type: VM
     retry: 2
     timeout: 300
     success: unique-policy-id-2-healthcheck-restart
@@ -37,13 +38,14 @@ policies:
     failure_timeout: unique-policy-id-3-rebuild
     failure_retries: unique-policy-id-3-rebuild
     failure_exception: final_failure_exception
-  
+
   - id: unique-policy-id-2-healthcheck-restart
     name: HealthCheck Policy
     description:
     actor: APPC
     recipe: HealthCheck
-    target: VM
+    target:
+      type: VM
     retry: 2
     timeout: 300
     success: final_success
@@ -51,13 +53,14 @@ policies:
     failure_timeout: unique-policy-id-3-rebuild
     failure_retries: unique-policy-id-3-rebuild
     failure_exception: final_failure_exception
-  
+
   - id: unique-policy-id-3-rebuild
     name: Rebuild Policy
     description:
     actor: APPC
     recipe: Rebuild
-    target: VM
+    target:
+      type: VM
     retry: 0
     timeout: 600
     success: unique-policy-id-4-healthcheck-rebuild
@@ -65,13 +68,14 @@ policies:
     failure_timeout: unique-policy-id-5-migrate
     failure_retries: unique-policy-id-5-migrate
     failure_exception: final_failure_exception
-  
+
   - id: unique-policy-id-4-healthcheck-rebuild
     name: HealthCheck the Rebuild Policy
     description:
     actor: APPC
     recipe: HealthCheck
-    target: VM
+    target:
+      type: VM
     retry: 2
     timeout: 300
     success: final_success
@@ -79,13 +83,14 @@ policies:
     failure_timeout: unique-policy-id-5-migrate
     failure_retries: unique-policy-id-5-migrate
     failure_exception: final_failure_exception
-  
+
   - id: unique-policy-id-5-migrate
     name: Migrate Policy
     description:
     actor: APPC
     recipe: Migrate
-    target: VM
+    target:
+      type: VM
     retry: 0
     timeout: 600
     success: unique-policy-id-6-healthcheck-migrate
@@ -99,7 +104,8 @@ policies:
     description:
     actor: APPC
     recipe: HealthCheck
-    target: VM
+    target:
+      type: VM
     retry: 2
     timeout: 300
     success: final_success
index 009a49c..44c081c 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright 2018 AT&T Intellectual Property. All rights reserved
-# Modifications Copyright (C) 2019 Nordix Foundation.
+# Modifications Copyright (C) 2019-2020 Nordix Foundation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,9 +15,9 @@
 controlLoop:
   version: 1.0.0
   controlLoopName: ControlLoop-vUSP-vCTS-cbed919f-2212-4ef7-8051-fe6308da1bda
-  services: 
+  services:
     - serviceName: vUSP
-  resources: 
+  resources:
     - resourceName: vCTS
       resourceType: VF
     - resourceName: vCOM
@@ -37,7 +37,8 @@ policies:
     description:
     actor: APPC
     recipe: Restart
-    target: VM
+    target:
+      type: VM
     retry: 2
     timeout: 300
     success: final_success
@@ -45,13 +46,14 @@ policies:
     failure_timeout: unique-policy-id-2-rebuild
     failure_retries: unique-policy-id-2-rebuild
     failure_exception: final_failure_exception
-  
+
   - id: unique-policy-id-2-rebuild
     name: Rebuild Policy
     description:
     actor: APPC
     recipe: Rebuild
-    target: VM
+    target:
+      type: VM
     retry: 0
     timeout: 600
     success: final_success
@@ -59,13 +61,14 @@ policies:
     failure_timeout: unique-policy-id-3-migrate
     failure_retries: unique-policy-id-3-migrate
     failure_exception: final_failure_exception
-  
+
   - id: unique-policy-id-3-migrate
     name: Migrate Policy
     description:
     actor: APPC
     recipe: Migrate
-    target: VM
+    target:
+      type: VM
     retry: 0
     timeout: 600
     success: final_success
index 00b9b4c..feaba64 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright 2018-2019 AT&T Intellectual Property. All rights reserved
-# Modifications Copyright (C) 2019 Nordix Foundation.
+# Modifications Copyright (C) 2019-2020 Nordix Foundation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@ policies:
     target:
       resourceID: Eace933104d443b496b8.nodes.heat.vpg
     payload:
-      generic-vnf.vnf-id: {generic-vnf.vnf-id}
+      generic-vnf.vnf-id: '{generic-vnf.vnf-id}'
       streams: '{"active-streams":5}'
     retry: 0
     timeout: 300
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java
new file mode 100644 (file)
index 0000000..2f36f9a
--- /dev/null
@@ -0,0 +1,66 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2020 Nordix Foundation.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.provider.revisionhierarchy;
+
+import static org.assertj.core.api.Assertions.assertThatCode;
+
+import java.util.Base64;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.common.utils.coder.YamlJsonTranslator;
+import org.onap.policy.common.utils.resources.TextFileUtils;
+import org.onap.policy.models.provider.PolicyModelsProvider;
+import org.onap.policy.models.provider.PolicyModelsProviderFactory;
+import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
+
+public class HierarchyFetchTest {
+
+    private static PolicyModelsProviderParameters parameters;
+
+    @BeforeClass
+    public static void beforeSetupParameters() {
+        parameters = new PolicyModelsProviderParameters();
+        parameters.setDatabaseDriver("org.h2.Driver");
+        parameters.setDatabaseUrl("jdbc:h2:mem:testdb");
+        parameters.setDatabaseUser("policy");
+        parameters.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
+        parameters.setPersistenceUnit("ToscaConceptTest");
+    }
+
+    @Test
+    public void testMultipleVersions() throws Exception {
+        PolicyModelsProvider databaseProvider =
+            new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
+
+        ToscaServiceTemplate serviceTemplate = new YamlJsonTranslator().fromYaml(
+            TextFileUtils
+                .getTextFileAsString("src/test/resources/servicetemplates/MultipleRevisionServiceTemplate.yaml"),
+            ToscaServiceTemplate.class);
+
+        assertThatCode(() -> {
+            databaseProvider.createPolicies(serviceTemplate);
+        }).doesNotThrowAnyException();
+
+        databaseProvider.close();
+    }
+}
diff --git a/models-provider/src/test/resources/servicetemplates/MultipleRevisionServiceTemplate.yaml b/models-provider/src/test/resources/servicetemplates/MultipleRevisionServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..5f250e0
--- /dev/null
@@ -0,0 +1,421 @@
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+policy_types:
+   onap.policies.PolicyTypeLevel0:1.0.0:
+      derived_from: tosca.policies.Root
+      version: 1.0.0
+      description: Level 0 policy type
+      properties:
+         policyLevel0Property0:
+            type: policy.data.DataType0
+         policyLevel0Property1:
+            type: list
+            entry_schema:
+               type: policy.data.DataType1
+   onap.policies.PolicyTypeLevel0:2.0.0:
+      derived_from: tosca.policies.Root
+      version: 2.0.0
+      description: Level 0 policy type
+      properties:
+         policyLevel0Property0:
+            type: policy.data.DataType0
+         policyLevel0Property1:
+            type: list
+            entry_schema:
+               type: policy.data.DataType1
+         policyLevel0V2Property2:
+            type: policy.data.DataType5
+   onap.policies.PolicyTypeLevel0:
+      derived_from: tosca.policies.Root
+      version: 3.0.0
+      description: Level 0 policy type
+      properties:
+         policyLevel0Property0:
+            type: policy.data.DataType0
+         policyLevel0Property1:
+            type: list
+            entry_schema:
+               type: policy.data.DataType1
+         policyLevel0V2Property2:
+            type: policy.data.DataType5
+         policyLevel0V3Property3:
+            type: policy.data.DataType6
+   onap.policies.PolicyTypeLevel0.1:1.0.0:
+      derived_from: onap.policies.PolicyTypeLevel0
+      version: 1.0.0
+      description: Level 0.1 policy type
+      properties:
+         policyLevel0.1Property0:
+            type: policy.data.DataType5
+         policyLevel0.1Property1:
+            type: policy.data.DataType6
+   onap.policies.PolicyTypeLevel0.1:2.0.0:
+      derived_from: onap.policies.PolicyTypeLevel0
+      version: 2.0.0
+      description: Level 0.1 policy type
+      properties:
+         policyLevel0.1Property0:
+            type: policy.data.DataType5
+         policyLevel0.1Property1:
+            type: policy.data.DataType6
+         policyLevel0.1V2Property2:
+            type: policy.data.DataType5
+   onap.policies.PolicyTypeLevel0.1:
+      derived_from: onap.policies.PolicyTypeLevel0
+      version: 3.0.0
+      description: Level 0.1 policy type
+      properties:
+         policyLevel0.1Property0:
+            type: policy.data.DataType5
+         policyLevel0.1Property1:
+            type: policy.data.DataType6
+         policyLevel0.1V2Property2:
+            type: policy.data.DataType5
+         policyLevel0.1V3Property3:
+            type: policy.data.DataType6
+   onap.policies.PolicyTypeLevel0.1.2:1.0.0:
+      derived_from: onap.policies.PolicyTypeLevel0.1
+      version: 1.0.0
+      description: Level 0.1.2 policy type
+      properties:
+         policyLevel0.1.2Property0:
+            type: policy.data.DataType5
+         policyLevel0.1.2Property1:
+            type: policy.data.DataType6
+   onap.policies.PolicyTypeLevel0.1.2:2.0.0:
+      derived_from: onap.policies.PolicyTypeLevel0.1
+      version: 2.0.0
+      description: Level 0.1.2 policy type
+      properties:
+         policyLevel0.1.2Property0:
+            type: policy.data.DataType5
+         policyLevel0.1.2Property1:
+            type: policy.data.DataType6
+         policyLevel0.1.2V2Property2:
+            type: policy.data.DataType5
+   onap.policies.PolicyTypeLevel0.1.2:
+      derived_from: onap.policies.PolicyTypeLevel0.1
+      version: 3.0.0
+      description: Level 0.1.2 policy type
+      properties:
+         policyLevel0.1.2Property0:
+            type: policy.data.DataType5
+         policyLevel0.1.2Property1:
+            type: policy.data.DataType6
+         policyLevel0.1.2V2Property2:
+            type: policy.data.DataType5
+         policyLevel0.1.2V3Property3:
+            type: policy.data.DataType6
+   onap.policies.PolicyTypeLevel0.1.2.3:1.0.0:
+      derived_from: onap.policies.PolicyTypeLevel0.1.2
+      version: 1.0.0
+      description: Level 0.1.2.3 policy type
+      properties:
+         policyLevel0.1.2.3Property0:
+            type: policy.data.DataType5
+         policyLevel0.1.2.3Property1:
+            type: policy.data.DataType6
+   onap.policies.PolicyTypeLevel0.1.2.3:2.0.0:
+      derived_from: onap.policies.PolicyTypeLevel0.1.2
+      version: 2.0.0
+      description: Level 0.1.2.3 policy type
+      properties:
+         policyLevel0.1.2.3Property0:
+            type: policy.data.DataType5
+         policyLevel0.1.2.3Property1:
+            type: policy.data.DataType6
+         policyLevel0.1.2.3V2Property2:
+            type: policy.data.DataType5
+   onap.policies.PolicyTypeLevel0.1.2.3:
+      derived_from: onap.policies.PolicyTypeLevel0.1.2
+      version: 3.0.0
+      description: Level 0.1.2.3 policy type
+      properties:
+         policyLevel0.1.2.3Property0:
+            type: policy.data.DataType5
+         policyLevel0.1.2.3Property1:
+            type: policy.data.DataType6
+         policyLevel0.1.2.3V2Property2:
+            type: policy.data.DataType5
+         policyLevel0.1.2.3V3Property3:
+            type: policy.data.DataType6
+data_types:
+   policy.data.DataType0:
+      derived_from: tosca.datatypes.Root
+      version: 1.0.0
+      properties:
+         dataType0Property0:
+            type: policy.data.DataType2
+            required: false
+         dataType0Property1:
+            type: list
+            required: true
+            entry_schema:
+               type: policy.data.DataType3
+   policy.data.DataType1:
+      derived_from: tosca.datatypes.Root
+      version: 1.0.0
+      properties:
+         dataType1Property0:
+            type: policy.data.DataType4
+            required: false
+         dataType1Property1:
+            type: list
+            required: true
+            entry_schema:
+               type: policy.data.DataType5
+   policy.data.DataType2:
+      derived_from: tosca.datatypes.Root
+      version: 1.0.0
+      properties:
+         dataType2Property0:
+            type: string
+            required: false
+         dataType2Property1:
+            type: list
+            required: true
+            entry_schema:
+               type: integer
+   policy.data.DataType3:
+      derived_from: tosca.datatypes.Root
+      version: 1.0.0
+      properties:
+         dataType3Property0:
+            type: string
+            required: false
+   policy.data.DataType4:
+      derived_from: tosca.datatypes.Root
+      version: 1.0.0
+      properties:
+         dataType4Property0:
+            type: string
+            required: false
+         dataType4Property1:
+            type: list
+            required: true
+            entry_schema:
+               type: integer
+   policy.data.DataType5:1.0.0:
+      derived_from: tosca.datatypes.Root
+      version: 1.0.0
+      properties:
+         dataType5Property0:
+            type: string
+            required: false
+   policy.data.DataType5:2.0.0:
+      derived_from: tosca.datatypes.Root
+      version: 2.0.0
+      properties:
+         dataType5Property0:
+            type: string
+            required: false
+         dataType5V2Property1:
+            type: string
+            required: false
+   policy.data.DataType5:
+      derived_from: tosca.datatypes.Root
+      version: 3.0.0
+      properties:
+         dataType5Property0:
+            type: string
+            required: false
+         dataType5V2Property1:
+            type: string
+            required: false
+         dataType5V2Property2:
+            type: integer
+            required: false
+   policy.data.DataType6:1.0.0:
+      derived_from: tosca.datatypes.Root
+      version: 1.0.0
+      properties:
+         dataType6Property0:
+            type: integer
+            required: false
+   policy.data.DataType6:
+      derived_from: tosca.datatypes.Root
+      version: 2.0.0
+      properties:
+         dataType6Property0:
+            type: integer
+            required: false
+         dataType6V2Property1:
+            type: integer
+            required: false
+topology_template:
+   policies:
+   -  onap.policies.PolicyLevel0:
+         type: onap.policies.PolicyTypeLevel0
+         version: 1.0.0
+         type_version: 1.0.0
+         description: Level 0 policy
+         properties:
+            policyLevel0Property0:
+               dataType0Property0:
+                  dataType2Property0: dataType2Property0 value
+                  dataType2Property1:
+                  - 123
+                  - 456
+                  - 789
+               dataType0Property1:
+               - dataType3Property0: dataType3Property0 value 0
+               - dataType3Property0: dataType3Property0 value 1
+               - dataType3Property0: dataType3Property0 value 2
+               - dataType3Property0: dataType3Property0 value 3
+            policyLevel0Property1:
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+   -  onap.policies.PolicyLevel0.1:
+         type: onap.policies.PolicyTypeLevel0
+         version: 1.0.0
+         type_version: 1.0.0
+         description: Level 0 policy
+         properties:
+            policyLevel0Property0:
+               dataType0Property0:
+                  dataType2Property0: dataType2Property0 value
+                  dataType2Property1:
+                  - 123
+                  - 456
+                  - 789
+               dataType0Property1:
+               - dataType3Property0: dataType3Property0 value 0
+               - dataType3Property0: dataType3Property0 value 1
+               - dataType3Property0: dataType3Property0 value 2
+               - dataType3Property0: dataType3Property0 value 3
+            policyLevel0Property1:
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+            policyLevel0.1Property0: policyLevel0.1Property0 value
+            policyLevel0.1Property1: 123
+   -  onap.policies.PolicyLevel0.1.2:
+         type: onap.policies.PolicyTypeLevel0
+         version: 1.0.0
+         type_version: 1.0.0
+         description: Level 0 policy
+         properties:
+            policyLevel0Property0:
+               dataType0Property0:
+                  dataType2Property0: dataType2Property0 value
+                  dataType2Property1:
+                  - 123
+                  - 456
+                  - 789
+               dataType0Property1:
+               - dataType3Property0: dataType3Property0 value 0
+               - dataType3Property0: dataType3Property0 value 1
+               - dataType3Property0: dataType3Property0 value 2
+               - dataType3Property0: dataType3Property0 value 3
+            policyLevel0Property1:
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+            policyLevel0.1Property0: policyLevel0.1Property0 value
+            policyLevel0.1Property1: 123
+            policyLevel0.1.2Property0: policyLevel0.1.2Property0 value
+            policyLevel0.1.2Property1: 456
+   -  onap.policies.PolicyLevel0.1.2.3:
+         type: onap.policies.PolicyTypeLevel0
+         version: 1.0.0
+         type_version: 1.0.0
+         description: Level 0 policy
+         properties:
+            policyLevel0Property0:
+               dataType0Property0:
+                  dataType2Property0: dataType2Property0 value
+                  dataType2Property1:
+                  - 123
+                  - 456
+                  - 789
+               dataType0Property1:
+               - dataType3Property0: dataType3Property0 value 0
+               - dataType3Property0: dataType3Property0 value 1
+               - dataType3Property0: dataType3Property0 value 2
+               - dataType3Property0: dataType3Property0 value 3
+            policyLevel0Property1:
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+            - dataType1Property0:
+                  dataType4Property0: dataType4Property0 value
+                  dataType4Property1:
+                  - 123
+                  - 456
+                  - 789
+              dataType1Property1:
+               - dataType5Property0: dataType5Property0 value 0
+               - dataType5Property0: dataType5Property0 value 1
+               - dataType5Property0: dataType5Property0 value 2
+               - dataType5Property0: dataType5Property0 value 3
+            policyLevel0.1Property0: policyLevel0.1Property0 value
+            policyLevel0.1Property1: 123
+            policyLevel0.1.2Property0: policyLevel0.1.2Property0 value
+            policyLevel0.1.2Property1: 456
+            policyLevel0.1.2.3Property0: policyLevel0.1.2.3Property0 value
+            policyLevel0.1.2.3Property1: 456
index 144caf2..389df5f 100644 (file)
Binary files a/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-keystore and b/models-sim/models-sim-dmaap/src/main/resources/etc/ssl/policy-keystore differ
index 144caf2..389df5f 100644 (file)
Binary files a/models-sim/policy-models-sim-pdp/src/main/resources/ssl/policy-keystore and b/models-sim/policy-models-sim-pdp/src/main/resources/ssl/policy-keystore differ
index 65cce48..a4a6e59 100644 (file)
@@ -66,7 +66,7 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policy types
      */
     public ToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, final String name, final String version)
-            throws PfModelException {
+        throws PfModelException {
 
         LOGGER.debug("->getPolicyTypes: name={}, version={}", name, version);
 
@@ -88,15 +88,15 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policy types
      */
     public List<ToscaPolicyType> getPolicyTypeList(@NonNull final PfDao dao, final String name, final String version)
-            throws PfModelException {
+        throws PfModelException {
 
         LOGGER.debug("->getPolicyTypeList: name={}, version={}", name, version);
 
         List<ToscaPolicyType> policyTypeList;
 
         try {
-            policyTypeList = new ArrayList<>(new SimpleToscaProvider().getPolicyTypes(dao, name, version)
-                    .toAuthorative().getPolicyTypes().values());
+            policyTypeList = new ArrayList<>(
+                new SimpleToscaProvider().getPolicyTypes(dao, name, version).toAuthorative().getPolicyTypes().values());
         } catch (PfModelRuntimeException pfme) {
             return handlePfModelRuntimeException(pfme);
         }
@@ -114,36 +114,36 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policy types
      */
     public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull final PfDao dao,
-            @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+        @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
 
         LOGGER.debug("->getFilteredPolicyTypes: filter={}", filter);
         SimpleToscaProvider simpleToscaProvider = new SimpleToscaProvider();
 
         final JpaToscaServiceTemplate dbServiceTemplate = simpleToscaProvider.getPolicyTypes(dao, null, null);
 
-        List<ToscaPolicyType> filteredPolicyTypes =
-                new ArrayList<>(dbServiceTemplate.toAuthorative().getPolicyTypes().values());
+        List<ToscaPolicyType> filteredPolicyTypes = dbServiceTemplate.getPolicyTypes().toAuthorativeList();
         filteredPolicyTypes = filter.filter(filteredPolicyTypes);
 
         if (CollectionUtils.isEmpty(filteredPolicyTypes)) {
             throw new PfModelRuntimeException(Response.Status.NOT_FOUND,
-                    "policy types for filter " + filter.toString() + " do not exist");
+                "policy types for filter " + filter.toString() + " do not exist");
         }
 
         JpaToscaServiceTemplate filteredServiceTemplate = new JpaToscaServiceTemplate();
 
         for (ToscaPolicyType policyType : filteredPolicyTypes) {
             JpaToscaServiceTemplate cascadedServiceTemplate = simpleToscaProvider
-                    .getCascadedPolicyTypes(dbServiceTemplate, policyType.getName(), policyType.getVersion());
+                .getCascadedPolicyTypes(dbServiceTemplate, policyType.getName(), policyType.getVersion());
 
             filteredServiceTemplate =
-                    ToscaServiceTemplateUtils.addFragment(filteredServiceTemplate, cascadedServiceTemplate);
+                ToscaServiceTemplateUtils.addFragment(filteredServiceTemplate, cascadedServiceTemplate);
         }
 
         ToscaServiceTemplate returnServiceTemplate = filteredServiceTemplate.toAuthorative();
 
         LOGGER.debug("<-getFilteredPolicyTypes: filter={}, serviceTemplate={}", filter, returnServiceTemplate);
         return returnServiceTemplate;
+
     }
 
     /**
@@ -155,14 +155,14 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policy types
      */
     public List<ToscaPolicyType> getFilteredPolicyTypeList(@NonNull final PfDao dao,
-            @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+        @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
 
         LOGGER.debug("->getFilteredPolicyTypeList: filter={}", filter);
 
         List<ToscaPolicyType> filteredPolicyTypeList = filter.filter(getPolicyTypeList(dao, null, null));
 
         LOGGER.debug("<-getFilteredPolicyTypeList: filter={}, filteredPolicyTypeList={}", filter,
-                filteredPolicyTypeList);
+            filteredPolicyTypeList);
 
         return filteredPolicyTypeList;
     }
@@ -176,12 +176,12 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors creating policy types
      */
     public ToscaServiceTemplate createPolicyTypes(@NonNull final PfDao dao,
-            @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+        @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
 
         LOGGER.debug("->createPolicyTypes: serviceTemplate={}", serviceTemplate);
 
         ToscaServiceTemplate createdServiceTempalate = new SimpleToscaProvider()
-                .createPolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
+            .createPolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
 
         LOGGER.debug("<-createPolicyTypes: createdServiceTempalate={}", createdServiceTempalate);
         return createdServiceTempalate;
@@ -196,12 +196,12 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors updating policy types
      */
     public ToscaServiceTemplate updatePolicyTypes(@NonNull final PfDao dao,
-            @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+        @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
 
         LOGGER.debug("->updatePolicyTypes: serviceTempalate={}", serviceTemplate);
 
         ToscaServiceTemplate updatedServiceTempalate = new SimpleToscaProvider()
-                .updatePolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
+            .updatePolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
 
         LOGGER.debug("<-updatePolicyTypes: updatedServiceTempalate={}", updatedServiceTempalate);
         return updatedServiceTempalate;
@@ -217,15 +217,15 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors deleting policy types
      */
     public ToscaServiceTemplate deletePolicyType(@NonNull final PfDao dao, @NonNull final String name,
-            @NonNull final String version) throws PfModelException {
+        @NonNull final String version) throws PfModelException {
 
         LOGGER.debug("->deletePolicyType: name={}, version={}", name, version);
 
         ToscaServiceTemplate deletedServiceTempalate =
-                new SimpleToscaProvider().deletePolicyType(dao, new PfConceptKey(name, version)).toAuthorative();
+            new SimpleToscaProvider().deletePolicyType(dao, new PfConceptKey(name, version)).toAuthorative();
 
         LOGGER.debug("<-deletePolicyType: name={}, version={}, deletedServiceTempalate={}", name, version,
-                deletedServiceTempalate);
+            deletedServiceTempalate);
         return deletedServiceTempalate;
     }
 
@@ -239,11 +239,11 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policies
      */
     public ToscaServiceTemplate getPolicies(@NonNull final PfDao dao, final String name, final String version)
-            throws PfModelException {
+        throws PfModelException {
         LOGGER.debug("->getPolicies: name={}, version={}", name, version);
 
         ToscaServiceTemplate gotServiceTempalate =
-                new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative();
+            new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative();
 
         LOGGER.debug("<-getPolicies: name={}, version={}, gotServiceTempalate={}", name, version, gotServiceTempalate);
         return gotServiceTempalate;
@@ -259,14 +259,14 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policies
      */
     public List<ToscaPolicy> getPolicyList(@NonNull final PfDao dao, final String name, final String version)
-            throws PfModelException {
+        throws PfModelException {
         LOGGER.debug("->getPolicyList: name={}, version={}", name, version);
 
         List<ToscaPolicy> policyList;
 
         try {
             policyList = asConceptList(new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative()
-                    .getToscaTopologyTemplate().getPolicies());
+                .getToscaTopologyTemplate().getPolicies());
         } catch (PfModelRuntimeException pfme) {
             return handlePfModelRuntimeException(pfme);
         }
@@ -284,32 +284,31 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policies
      */
     public ToscaServiceTemplate getFilteredPolicies(@NonNull final PfDao dao, @NonNull final ToscaPolicyFilter filter)
-            throws PfModelException {
+        throws PfModelException {
 
         LOGGER.debug("->getFilteredPolicies: filter={}", filter);
         String version = ToscaPolicyFilter.LATEST_VERSION.equals(filter.getVersion()) ? null : filter.getVersion();
 
         SimpleToscaProvider simpleToscaProvider = new SimpleToscaProvider();
         final JpaToscaServiceTemplate dbServiceTemplate =
-                simpleToscaProvider.getPolicies(dao, filter.getName(), version);
+            simpleToscaProvider.getPolicies(dao, filter.getName(), version);
 
-        List<ToscaPolicy> filteredPolicies =
-                asConceptList(dbServiceTemplate.toAuthorative().getToscaTopologyTemplate().getPolicies());
+        List<ToscaPolicy> filteredPolicies = dbServiceTemplate.getTopologyTemplate().getPolicies().toAuthorativeList();
         filteredPolicies = filter.filter(filteredPolicies);
 
         if (CollectionUtils.isEmpty(filteredPolicies)) {
             throw new PfModelRuntimeException(Response.Status.NOT_FOUND,
-                    "policies for filter " + filter.toString() + " do not exist");
+                "policies for filter " + filter.toString() + " do not exist");
         }
 
         JpaToscaServiceTemplate filteredServiceTemplate = new JpaToscaServiceTemplate();
 
         for (ToscaPolicy policy : filteredPolicies) {
             JpaToscaServiceTemplate cascadedServiceTemplate =
-                    simpleToscaProvider.getCascadedPolicies(dbServiceTemplate, policy.getName(), policy.getVersion());
+                simpleToscaProvider.getCascadedPolicies(dbServiceTemplate, policy.getName(), policy.getVersion());
 
             filteredServiceTemplate =
-                    ToscaServiceTemplateUtils.addFragment(filteredServiceTemplate, cascadedServiceTemplate);
+                ToscaServiceTemplateUtils.addFragment(filteredServiceTemplate, cascadedServiceTemplate);
         }
 
         ToscaServiceTemplate returnServiceTemplate = filteredServiceTemplate.toAuthorative();
@@ -327,7 +326,7 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors getting policies
      */
     public List<ToscaPolicy> getFilteredPolicyList(@NonNull final PfDao dao, @NonNull final ToscaPolicyFilter filter)
-            throws PfModelException {
+        throws PfModelException {
 
         LOGGER.debug("->getFilteredPolicyList: filter={}", filter);
         String version = ToscaPolicyFilter.LATEST_VERSION.equals(filter.getVersion()) ? null : filter.getVersion();
@@ -347,12 +346,12 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors creating policies
      */
     public ToscaServiceTemplate createPolicies(@NonNull final PfDao dao,
-            @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+        @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
 
         LOGGER.debug("->createPolicies: serviceTempalate={}", serviceTemplate);
 
-        ToscaServiceTemplate createdServiceTempalate = new SimpleToscaProvider()
-                .createPolicies(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
+        ToscaServiceTemplate createdServiceTempalate =
+            new SimpleToscaProvider().createPolicies(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
 
         LOGGER.debug("<-createPolicies: createdServiceTempalate={}", createdServiceTempalate);
         return createdServiceTempalate;
@@ -367,12 +366,12 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors updating policies
      */
     public ToscaServiceTemplate updatePolicies(@NonNull final PfDao dao,
-            @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+        @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
 
         LOGGER.debug("->updatePolicies: serviceTempalate={}", serviceTemplate);
 
-        ToscaServiceTemplate updatedServiceTempalate = new SimpleToscaProvider()
-                .updatePolicies(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
+        ToscaServiceTemplate updatedServiceTempalate =
+            new SimpleToscaProvider().updatePolicies(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
 
         LOGGER.debug("<-updatePolicies: updatedServiceTempalate={}", updatedServiceTempalate);
         return updatedServiceTempalate;
@@ -388,15 +387,15 @@ public class AuthorativeToscaProvider {
      * @throws PfModelException on errors deleting policies
      */
     public ToscaServiceTemplate deletePolicy(@NonNull final PfDao dao, @NonNull final String name,
-            @NonNull final String version) throws PfModelException {
+        @NonNull final String version) throws PfModelException {
 
         LOGGER.debug("->deletePolicy: name={}, version={}", name, version);
 
         ToscaServiceTemplate deletedServiceTempalate =
-                new SimpleToscaProvider().deletePolicy(dao, new PfConceptKey(name, version)).toAuthorative();
+            new SimpleToscaProvider().deletePolicy(dao, new PfConceptKey(name, version)).toAuthorative();
 
         LOGGER.debug("<-deletePolicy: name={}, version={}, deletedServiceTempalate={}", name, version,
-                deletedServiceTempalate);
+            deletedServiceTempalate);
         return deletedServiceTempalate;
     }
 
index 41cd1c2..b987751 100644 (file)
@@ -65,6 +65,7 @@ public class JpaToscaConstraintLogical extends JpaToscaConstraint {
      *
      * @param authorativeConcept the authorative concept to copy from
      */
+    @SuppressWarnings("java:S2637")
     public JpaToscaConstraintLogical(final ToscaConstraint authorativeConcept) {
         super(authorativeConcept);
     }
index 664855e..a96ae46 100644 (file)
@@ -63,6 +63,7 @@ public class JpaToscaConstraintValidValues extends JpaToscaConstraint {
      *
      * @param authorativeConcept the authorative concept to copy from
      */
+    @SuppressWarnings("java:S2637")
     public JpaToscaConstraintValidValues(final ToscaConstraint authorativeConcept) {
         super(authorativeConcept);
     }
index 3f2ebe7..772fb9e 100644 (file)
@@ -24,8 +24,11 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.function.Function;
+
 import javax.ws.rs.core.Response;
+
 import lombok.NonNull;
+
 import org.apache.commons.collections4.CollectionUtils;
 import org.onap.policy.models.base.PfConcept;
 import org.onap.policy.models.base.PfConceptContainer;
@@ -142,7 +145,7 @@ public final class ToscaUtils {
      * @param serviceTemplate the service template containing policy types to be checked
      */
     public static void assertExist(final JpaToscaServiceTemplate serviceTemplate,
-            final Function<JpaToscaServiceTemplate, String> checkerFunction) {
+        final Function<JpaToscaServiceTemplate, String> checkerFunction) {
         String message = checkerFunction.apply(serviceTemplate);
         if (message != null) {
             throw new PfModelRuntimeException(Response.Status.NOT_FOUND, message);
@@ -155,7 +158,7 @@ public final class ToscaUtils {
      * @param serviceTemplate the service template containing policy types to be checked
      */
     public static boolean doExist(final JpaToscaServiceTemplate serviceTemplate,
-            final Function<JpaToscaServiceTemplate, String> checkerFunction) {
+        final Function<JpaToscaServiceTemplate, String> checkerFunction) {
         return checkerFunction.apply(serviceTemplate) == null;
     }
 
@@ -217,8 +220,8 @@ public final class ToscaUtils {
      * @return the entity set containing the ancestors of the incoming entity
      */
     public static Collection<JpaToscaEntityType<ToscaEntity>> getEntityTypeAncestors(
-            @NonNull PfConceptContainer<? extends PfConcept, ? extends PfNameVersion> entityTypes,
-            @NonNull JpaToscaEntityType<?> entityType, @NonNull final PfValidationResult result) {
+        @NonNull PfConceptContainer<? extends PfConcept, ? extends PfNameVersion> entityTypes,
+        @NonNull JpaToscaEntityType<?> entityType, @NonNull final PfValidationResult result) {
 
         PfConceptKey parentEntityTypeKey = entityType.getDerivedFrom();
         if (parentEntityTypeKey == null || parentEntityTypeKey.getName().endsWith(ROOT_KEY_NAME_SUFFIX)) {
@@ -227,17 +230,17 @@ public final class ToscaUtils {
 
         if (entityType.getKey().equals(parentEntityTypeKey)) {
             result.addValidationMessage(new PfValidationMessage(entityType.getKey(), ToscaUtils.class,
-                    ValidationResult.INVALID, "entity cannot be an ancestor of itself"));
+                ValidationResult.INVALID, "entity cannot be an ancestor of itself"));
             throw new PfModelRuntimeException(Response.Status.CONFLICT, result.toString());
         }
 
         @SuppressWarnings("unchecked")
         Set<JpaToscaEntityType<ToscaEntity>> ancestorEntitySet = (Set<JpaToscaEntityType<ToscaEntity>>) entityTypes
-                .getAll(parentEntityTypeKey.getName(), parentEntityTypeKey.getVersion());
+            .getAll(parentEntityTypeKey.getName(), parentEntityTypeKey.getVersion());
         Set<JpaToscaEntityType<ToscaEntity>> ancestorEntitySetToReturn = new HashSet<>(ancestorEntitySet);
         if (ancestorEntitySet.isEmpty()) {
             result.addValidationMessage(new PfValidationMessage(entityType.getKey(), ToscaUtils.class,
-                    ValidationResult.INVALID, "parent " + parentEntityTypeKey.getId() + " of entity not found"));
+                ValidationResult.INVALID, "parent " + parentEntityTypeKey.getId() + " of entity not found"));
         } else {
             for (JpaToscaEntityType<?> filteredEntityType : ancestorEntitySet) {
                 ancestorEntitySetToReturn.addAll(getEntityTypeAncestors(entityTypes, filteredEntityType, result));
@@ -254,14 +257,14 @@ public final class ToscaUtils {
      * @param entityVersion the version of the entity
      */
     public static void getEntityTree(
-            @NonNull final PfConceptContainer<? extends PfConcept, ? extends PfNameVersion> entityTypes,
-            final String entityName, final String entityVersion) {
+        @NonNull final PfConceptContainer<? extends PfConcept, ? extends PfNameVersion> entityTypes,
+        final String entityName, final String entityVersion) {
 
         PfValidationResult result = new PfValidationResult();
 
         @SuppressWarnings("unchecked")
         Set<JpaToscaEntityType<?>> filteredEntitySet =
-            (Set<JpaToscaEntityType<?>>) entityTypes.getAll(entityName, entityVersion);
+            (Set<JpaToscaEntityType<?>>) entityTypes.getAllNamesAndVersions(entityName, entityVersion);
         Set<JpaToscaEntityType<?>> filteredEntitySetToReturn = new HashSet<>(filteredEntitySet);
         for (JpaToscaEntityType<?> filteredEntityType : filteredEntitySet) {
             filteredEntitySetToReturn
@@ -273,6 +276,6 @@ public final class ToscaUtils {
         }
 
         entityTypes.getConceptMap().entrySet()
-                .removeIf(entityEntry -> !filteredEntitySetToReturn.contains(entityEntry.getValue()));
+            .removeIf(entityEntry -> !filteredEntitySetToReturn.contains(entityEntry.getValue()));
     }
 }
index 4937c5c..f2da23c 100644 (file)
@@ -118,7 +118,7 @@ public class SimpleToscaProviderTest {
         serviceTemplate.getDataTypes().getConceptMap().put(dataType0Key, dataType0);
 
         JpaToscaServiceTemplate createdServiceTemplate =
-                new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
+            new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
 
         assertEquals(1, createdServiceTemplate.getDataTypes().getConceptMap().size());
         assertEquals(dataType0, createdServiceTemplate.getDataTypes().get(dataType0Key));
@@ -127,19 +127,19 @@ public class SimpleToscaProviderTest {
         dataType0.setDescription("Updated Description");
 
         JpaToscaServiceTemplate updatedServiceTemplate =
-                new SimpleToscaProvider().updateDataTypes(pfDao, serviceTemplate);
+            new SimpleToscaProvider().updateDataTypes(pfDao, serviceTemplate);
 
         assertEquals(dataType0, updatedServiceTemplate.getDataTypes().get(dataType0Key));
         assertEquals("Updated Description", updatedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
 
         JpaToscaServiceTemplate gotServiceTemplate =
-                new SimpleToscaProvider().getDataTypes(pfDao, dataType0Key.getName(), dataType0Key.getVersion());
+            new SimpleToscaProvider().getDataTypes(pfDao, dataType0Key.getName(), dataType0Key.getVersion());
 
         assertEquals(dataType0, gotServiceTemplate.getDataTypes().get(dataType0Key));
         assertEquals("Updated Description", gotServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, new PfConceptKey("IDontExist:0.0.1")))
-                .hasMessage("data type IDontExist:0.0.1 not found");
+            .hasMessage("data type IDontExist:0.0.1 not found");
 
         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key);
 
@@ -160,7 +160,7 @@ public class SimpleToscaProviderTest {
         assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
-                .hasMessage("no data types found");
+            .hasMessage("no data types found");
 
         // Create the data type again
         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
@@ -173,7 +173,7 @@ public class SimpleToscaProviderTest {
         new SimpleToscaProvider().createPolicyTypes(pfDao, updatedServiceTemplate);
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
-                .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
+            .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
 
         JpaToscaDataType dataType0v2 = new JpaToscaDataType(new PfConceptKey("DataType0:0.0.2"));
         updatedServiceTemplate.getDataTypes().getConceptMap().put(dataType0v2.getKey(), dataType0v2);
@@ -185,7 +185,7 @@ public class SimpleToscaProviderTest {
         assertEquals("Updated Description", deletedServiceTemplate.getDataTypes().get(dataType0Key).getDescription());
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0Key))
-                .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
+            .hasMessage("data type DataType0:0.0.1 is in use, it is referenced in policy type pt0:0.0.2");
 
         JpaToscaDataType dataType1 = new JpaToscaDataType(new PfConceptKey("DataType1:0.0.3"));
         JpaToscaProperty prop1 = new JpaToscaProperty(new PfReferenceKey(dataType1.getKey(), "prop1"));
@@ -195,7 +195,7 @@ public class SimpleToscaProviderTest {
         new SimpleToscaProvider().createDataTypes(pfDao, updatedServiceTemplate);
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deleteDataType(pfDao, dataType0v2.getKey()))
-                .hasMessage("data type DataType0:0.0.2 is in use, it is referenced in data type DataType1:0.0.3");
+            .hasMessage("data type DataType0:0.0.2 is in use, it is referenced in data type DataType1:0.0.3");
     }
 
     @Test
@@ -215,7 +215,7 @@ public class SimpleToscaProviderTest {
         serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
 
         JpaToscaServiceTemplate createdServiceTemplate =
-                new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
+            new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
 
         assertEquals(1, createdServiceTemplate.getPolicyTypes().getConceptMap().size());
         assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
@@ -224,14 +224,14 @@ public class SimpleToscaProviderTest {
         policyType0.setDescription("Updated Description");
 
         JpaToscaServiceTemplate updatedServiceTemplate =
-                new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
+            new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
 
         assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
         assertEquals("Updated Description",
-                updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
+            updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
 
         JpaToscaServiceTemplate gotServiceTemplate =
-                new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
+            new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
 
         assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
         assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
@@ -246,7 +246,7 @@ public class SimpleToscaProviderTest {
         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
-                .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
+            .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
 
         serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
         serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
@@ -261,10 +261,10 @@ public class SimpleToscaProviderTest {
         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
-                .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
+            .hasMessage("policy type PolicyType0:0.0.1 is in use, it is referenced in policy type pt1:0.0.2");
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, pt1.getKey()))
-                .hasMessage("policy type pt1:0.0.2 is in use, it is referenced in policy p1:0.0.1");
+            .hasMessage("policy type pt1:0.0.2 is in use, it is referenced in policy p1:0.0.1");
 
         new SimpleToscaProvider().deletePolicy(pfDao, p1.getKey());
 
@@ -273,14 +273,14 @@ public class SimpleToscaProviderTest {
         new SimpleToscaProvider().deletePolicy(pfDao, p0.getKey());
 
         JpaToscaServiceTemplate deletedServiceTemplate =
-                new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
+            new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
 
         assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
         assertEquals("Updated Description",
-                deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
+            deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
-                .hasMessage("no policy types found");
+            .hasMessage("no policy types found");
     }
 
     @Test
@@ -294,7 +294,7 @@ public class SimpleToscaProviderTest {
         serviceTemplate.getPolicyTypes().getConceptMap().put(policyType0Key, policyType0);
 
         JpaToscaServiceTemplate createdServiceTemplate =
-                new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
+            new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
 
         assertEquals(policyType0, createdServiceTemplate.getPolicyTypes().get(policyType0Key));
         assertEquals(null, createdServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
@@ -302,33 +302,33 @@ public class SimpleToscaProviderTest {
         policyType0.setDescription("Updated Description");
 
         JpaToscaServiceTemplate updatedServiceTemplate =
-                new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
+            new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
 
         assertEquals(policyType0, updatedServiceTemplate.getPolicyTypes().get(policyType0Key));
         assertEquals("Updated Description",
-                updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
+            updatedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
 
         JpaToscaServiceTemplate gotServiceTemplate =
-                new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
+            new SimpleToscaProvider().getPolicyTypes(pfDao, policyType0Key.getName(), policyType0Key.getVersion());
 
         assertEquals(policyType0, gotServiceTemplate.getPolicyTypes().get(policyType0Key));
         assertEquals("Updated Description", gotServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
 
         JpaToscaServiceTemplate deletedServiceTemplate =
-                new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
+            new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key);
 
         assertEquals(policyType0, deletedServiceTemplate.getPolicyTypes().get(policyType0Key));
         assertEquals("Updated Description",
-                deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
+            deletedServiceTemplate.getPolicyTypes().get(policyType0Key).getDescription());
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicyType(pfDao, policyType0Key))
-                .hasMessage("no policy types found");
+            .hasMessage("no policy types found");
     }
 
     @Test
     public void testPoliciesGet() throws Exception {
         ToscaServiceTemplate toscaServiceTemplate =
-                standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
+            standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
 
         createPolicyTypes();
 
@@ -337,18 +337,18 @@ public class SimpleToscaProviderTest {
 
         assertNotNull(originalServiceTemplate);
         JpaToscaServiceTemplate createdServiceTemplate =
-                new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
+            new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
 
         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
-                createdServiceTemplate.getTopologyTemplate().getPolicies());
+            createdServiceTemplate.getTopologyTemplate().getPolicies());
 
         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
 
         JpaToscaServiceTemplate gotServiceTemplate =
-                new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
+            new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
 
         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
-                gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
+            gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
 
         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
         assertEquals(1, deletedServiceTemplate.getTopologyTemplate().getPolicies().getConceptMap().size());
@@ -357,7 +357,7 @@ public class SimpleToscaProviderTest {
     @Test
     public void testPolicyCreate() throws Exception {
         ToscaServiceTemplate toscaServiceTemplate =
-                standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
+            standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
 
         createPolicyTypes();
 
@@ -366,16 +366,16 @@ public class SimpleToscaProviderTest {
 
         assertNotNull(originalServiceTemplate);
         JpaToscaServiceTemplate createdServiceTemplate =
-                new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
+            new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
 
         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies(),
-                createdServiceTemplate.getTopologyTemplate().getPolicies());
+            createdServiceTemplate.getTopologyTemplate().getPolicies());
     }
 
     @Test
     public void testPolicyUpdate() throws Exception {
         ToscaServiceTemplate toscaServiceTemplate =
-                standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
+            standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
 
         createPolicyTypes();
 
@@ -384,7 +384,7 @@ public class SimpleToscaProviderTest {
 
         assertNotNull(originalServiceTemplate);
         JpaToscaServiceTemplate updatedServiceTemplate =
-                new SimpleToscaProvider().updatePolicies(pfDao, originalServiceTemplate);
+            new SimpleToscaProvider().updatePolicies(pfDao, originalServiceTemplate);
 
         assertEquals(originalServiceTemplate, updatedServiceTemplate);
     }
@@ -392,7 +392,7 @@ public class SimpleToscaProviderTest {
     @Test
     public void testPoliciesDelete() throws Exception {
         ToscaServiceTemplate toscaServiceTemplate =
-                standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
+            standardCoder.decode(ResourceUtils.getResourceAsString(VCPE_INPUT_JSON), ToscaServiceTemplate.class);
 
         createPolicyTypes();
 
@@ -401,26 +401,26 @@ public class SimpleToscaProviderTest {
 
         assertNotNull(originalServiceTemplate);
         JpaToscaServiceTemplate createdServiceTemplate =
-                new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
+            new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
 
         assertEquals(originalServiceTemplate.getTopologyTemplate(), createdServiceTemplate.getTopologyTemplate());
 
         PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, new PfConceptKey("IDontExist:0.0.1")))
-                .hasMessage("policy IDontExist:0.0.1 not found");
+            .hasMessage("policy IDontExist:0.0.1 not found");
 
         JpaToscaServiceTemplate deletedServiceTemplate = new SimpleToscaProvider().deletePolicy(pfDao, policyKey);
 
         assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
-                deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
+            deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
 
         assertThatThrownBy(() -> {
             new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
         }).hasMessage("policies for onap.restart.tca:1.0.0 do not exist");
 
         assertThatThrownBy(() -> new SimpleToscaProvider().deletePolicy(pfDao, policyKey))
-                .hasMessage("no policies found");
+            .hasMessage("no policies found");
     }
 
     @Test
@@ -428,21 +428,21 @@ public class SimpleToscaProviderTest {
         JpaToscaServiceTemplate testServiceTemplate = new JpaToscaServiceTemplate();
 
         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
-                .hasMessage("topology template not specified on service template");
+            .hasMessage("topology template not specified on service template");
 
         testServiceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
-                .hasMessage("no policies specified on topology template of service template");
+            .hasMessage("no policies specified on topology template of service template");
 
         testServiceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
         assertThatThrownBy(() -> new SimpleToscaProvider().createPolicies(pfDao, testServiceTemplate))
-                .hasMessage("list of policies specified on topology template of service template is empty");
+            .hasMessage("list of policies specified on topology template of service template is empty");
     }
 
     @Test
     public void testGetServiceTemplate() throws PfModelException {
         assertThatThrownBy(() -> new SimpleToscaProvider().getServiceTemplate(pfDao))
-                .hasMessage("service template not found in database");
+            .hasMessage("service template not found in database");
     }
 
     @Test
@@ -453,8 +453,8 @@ public class SimpleToscaProviderTest {
         serviceTemplateFragment.getPolicyTypes().getConceptMap().put(badPt.getKey(), badPt);
 
         assertThatThrownBy(() -> new SimpleToscaProvider().appendToServiceTemplate(pfDao, serviceTemplateFragment))
-                .hasMessageContaining(
-                        "key on concept entry PfConceptKey(name=NULL, version=0.0.0) may not be the null key");
+            .hasMessageContaining(
+                "key on concept entry PfConceptKey(name=NULL, version=0.0.0) may not be the null key");
     }
 
     @Test
@@ -500,7 +500,7 @@ public class SimpleToscaProviderTest {
         serviceTemplate.getDataTypes().getConceptMap().put(p02.getKey(), p02);
 
         new SimpleToscaProvider().createDataTypes(pfDao, serviceTemplate);
-        gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), p01.getVersion());
+        gotSt = new SimpleToscaProvider().getDataTypes(pfDao, p01.getName(), null);
 
         assertEquals(p01, gotSt.getDataTypes().get(p01.getKey()));
         assertEquals(p02, gotSt.getDataTypes().get(p01.getName()));
@@ -542,7 +542,7 @@ public class SimpleToscaProviderTest {
         }).hasMessageMatching("policy types for hello:0.0.1 do not exist");
 
         JpaToscaServiceTemplate gotSt =
-                new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
+            new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
 
         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getName()));
@@ -557,7 +557,7 @@ public class SimpleToscaProviderTest {
         serviceTemplate.getPolicyTypes().getConceptMap().put(pt02.getKey(), pt02);
 
         new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
-        gotSt = new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), pt01.getVersion());
+        gotSt = new SimpleToscaProvider().getPolicyTypes(pfDao, pt01.getName(), null);
 
         assertEquals(pt01, gotSt.getPolicyTypes().get(pt01.getKey()));
         assertEquals(pt02, gotSt.getPolicyTypes().get(pt01.getName()));
@@ -621,7 +621,7 @@ public class SimpleToscaProviderTest {
         serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(p02.getKey(), p02);
 
         new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
-        gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), p01.getVersion());
+        gotSt = new SimpleToscaProvider().getPolicies(pfDao, p01.getName(), null);
 
         assertEquals(p01, gotSt.getTopologyTemplate().getPolicies().get(p01.getKey()));
         assertEquals(p02, gotSt.getTopologyTemplate().getPolicies().get(p01.getName()));
@@ -774,12 +774,12 @@ public class SimpleToscaProviderTest {
     }
 
     private void createPolicyTypes() throws CoderException, PfModelException {
-        Object yamlObject = new Yaml().load(
-                ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml"));
+        Object yamlObject = new Yaml()
+            .load(ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml"));
         String yamlAsJsonString = new StandardCoder().encode(yamlObject);
 
         ToscaServiceTemplate toscaServiceTemplatePolicyType =
-                standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
+            standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
 
         assertNotNull(toscaServiceTemplatePolicyType);
         new AuthorativeToscaProvider().createPolicyTypes(pfDao, toscaServiceTemplatePolicyType);