Add lists and tests for PDP filters 47/84547/1
authorliamfallon <liam.fallon@est.tech>
Mon, 8 Apr 2019 17:30:54 +0000 (17:30 +0000)
committerliamfallon <liam.fallon@est.tech>
Mon, 8 Apr 2019 17:30:54 +0000 (17:30 +0000)
The policy type and policy filters for PDP groups are added
in this review.

Also filter tests for PDP group filter is completed.

Issue-ID: POLICY-1095
Change-Id: Ia28776c809f2ab879af4007b3480621637a83f69
Signed-off-by: liamfallon <liam.fallon@est.tech>
13 files changed:
models-dao/src/test/java/org/onap/policy/models/dao/EntityTest.java
models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroupFilter.java
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/ModelsTest.java [moved from models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestModels.java with 95% similarity]
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpGroupFilterTest.java
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpGroupTest.java [moved from models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpGroup.java with 97% similarity]
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpInstanceDetailsTest.java [moved from models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpInstanceDetails.java with 94% similarity]
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpMessageTest.java [moved from models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpMessage.java with 99% similarity]
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpStateChangeTest.java [moved from models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpStateChange.java with 95% similarity]
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpSubGroupTest.java [moved from models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpSubGroup.java with 97% similarity]
models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpUpdateTest.java [moved from models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpUpdate.java with 96% similarity]
models-pdp/src/test/resources/testdata/PdpGroupsForFiltering.json
models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java
models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java

index bab28c4..4bf39a0 100644 (file)
@@ -328,6 +328,8 @@ public class EntityTest {
         pfDao.create(keyInfo5);
 
         assertEquals(3, pfDao.getAllVersions(DummyConceptEntity.class, "AAA0").size());
+        assertEquals(0, pfDao.getAllVersions(null, "AAA0").size());
+        assertEquals(0, pfDao.getAllVersions(DummyConceptEntity.class, null).size());
     }
 
     private void testgetFilteredOps() {
index 3c07a9d..0f86c68 100644 (file)
@@ -43,23 +43,33 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifi
 public class PdpGroupFilter implements PfObjectFilter<PdpGroup> {
     public static final String LATEST_VERSION = "LATEST";
 
-    // Regular expression
+    // Name to find
     private String name;
 
-    // Regular Expression, set to to get the latest version
+    // Version to find, set to LATEST_VERSION to get the latest version
     private String version;
 
+    // State to find
     private PdpState groupState;
 
-    // Regular expression
+    // PDP type to find
     private String pdpType;
 
     // Set regular expressions on fields to match policy type names and versions
-    private ToscaPolicyTypeIdentifier policyType;
+    private List<ToscaPolicyTypeIdentifier> policyTypeList;
+
+    // If set, only PDP groups where policy types are matched exactly are returned
+    @Builder.Default
+    private boolean matchPolicyTypesExactly = false;
 
     // Set regular expressions on fields to match policy names and versions
-    private ToscaPolicyIdentifier policy;
+    private List<ToscaPolicyIdentifier> policyList;
+
+    // If set, only PDP groups where policies are matched exactly are returned
+    @Builder.Default
+    private boolean matchPoliciesExactly = false;
 
+    // If set, only PDP groups with PDPs in this state are returned
     private PdpState pdpState;
 
     @Override
@@ -68,15 +78,15 @@ public class PdpGroupFilter implements PfObjectFilter<PdpGroup> {
         // @formatter:off
         List<PdpGroup> returnList = originalList.stream()
                 .filter(p -> filterString(p.getName(), name))
-                .filter(p -> (version != null && LATEST_VERSION.equals(version))
+                .filter(p -> LATEST_VERSION.equals(version)
                         || filterString(p.getVersion(), version))
                 .filter(p -> groupState == null || ObjectUtils.compare(p.getPdpGroupState(), groupState) == 0)
                 .filter(p -> filterOnPdpType(p, pdpType))
-                .filter(p -> filterOnPolicyType(p, policyType))
-                .filter(p -> filterOnPolicy(p, policy))
+                .filter(p -> filterOnPolicyTypeList(p, policyTypeList, matchPolicyTypesExactly))
+                .filter(p -> filterOnPolicyList(p, policyList, matchPoliciesExactly))
                 .filter(p -> filterOnPdpState(p, pdpState))
                 .collect(Collectors.toList());
-        // @formatter:off
+        // @formatter:on
 
         if (LATEST_VERSION.equals(version)) {
             returnList = this.latestVersionFilter(returnList);
@@ -97,7 +107,7 @@ public class PdpGroupFilter implements PfObjectFilter<PdpGroup> {
             return true;
         }
 
-        for (PdpSubGroup pdpSubGroup: pdpGroup.getPdpSubgroups()) {
+        for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {
             if (pdpSubGroup.getPdpType().equals(pdpType)) {
                 return true;
             }
@@ -110,24 +120,27 @@ public class PdpGroupFilter implements PfObjectFilter<PdpGroup> {
      * Filter PDP groups on policy type.
      *
      * @param pdpGroup the PDP group to check
-     * @param policyTypeFilter the policy type regular expressions to check for
+     * @param typeFilter the policy type regular expressions to check for
+     * @param matchPolicyTypesExactly if true, only PDP groups where policy types are matched exactly are returned
      * @return true if the filter should let this PDP group through
      */
-    private boolean filterOnPolicyType(final PdpGroup pdpGroup, final ToscaPolicyTypeIdentifier policyTypeFiler) {
-        if (policyTypeFiler == null) {
+    private boolean filterOnPolicyTypeList(final PdpGroup pdpGroup, final List<ToscaPolicyTypeIdentifier> typeFilter,
+            final boolean matchPolicyTypesExactly) {
+        if (typeFilter == null) {
             return true;
         }
 
-        for (PdpSubGroup pdpSubGroup: pdpGroup.getPdpSubgroups()) {
-            for (ToscaPolicyTypeIdentifier foundPolicyType : pdpSubGroup.getSupportedPolicyTypes()) {
-                if (foundPolicyType.getName().matches(policyTypeFiler.getName())
-                        && foundPolicyType.getVersion().matches(policyTypeFiler.getVersion())) {
-                    return true;
-                }
+        for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {
+            if (matchPolicyTypesExactly && areListsIdentical(pdpSubGroup.getSupportedPolicyTypes(), typeFilter)) {
+                return true;
+            } else if (!matchPolicyTypesExactly
+                    && findSingleElement(pdpSubGroup.getSupportedPolicyTypes(), typeFilter)) {
+                return true;
             }
         }
 
         return false;
+
     }
 
     /**
@@ -135,19 +148,20 @@ public class PdpGroupFilter implements PfObjectFilter<PdpGroup> {
      *
      * @param pdpGroup the PDP group to check
      * @param policyFilter the policy regular expressions to check for
+     * @param matchPoliciesExactly if true, only PDP groups where ps are matched exactly are returned
      * @return true if the filter should let this PDP group through
      */
-    private boolean filterOnPolicy(final PdpGroup pdpGroup, final ToscaPolicyIdentifier policyFiler) {
-        if (policyFiler == null) {
+    private boolean filterOnPolicyList(final PdpGroup pdpGroup, final List<ToscaPolicyIdentifier> policyFilter,
+            final boolean matchPoliciesExactly) {
+        if (policyFilter == null) {
             return true;
         }
 
-        for (PdpSubGroup pdpSubGroup: pdpGroup.getPdpSubgroups()) {
-            for (ToscaPolicyIdentifier foundPolicy : pdpSubGroup.getPolicies()) {
-                if (foundPolicy.getName().matches(policyFiler.getName())
-                        && foundPolicy.getVersion().matches(policyFiler.getVersion())) {
-                    return true;
-                }
+        for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {
+            if (matchPoliciesExactly && areListsIdentical(pdpSubGroup.getPolicies(), policyFilter)) {
+                return true;
+            } else if (!matchPoliciesExactly && findSingleElement(pdpSubGroup.getPolicies(), policyFilter)) {
+                return true;
             }
         }
 
@@ -166,7 +180,7 @@ public class PdpGroupFilter implements PfObjectFilter<PdpGroup> {
             return true;
         }
 
-        for (PdpSubGroup pdpSubGroup: pdpGroup.getPdpSubgroups()) {
+        for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {
             for (Pdp pdp : pdpSubGroup.getPdpInstances()) {
                 if (pdpState.equals(pdp.getPdpState())) {
                     return true;
@@ -176,4 +190,32 @@ public class PdpGroupFilter implements PfObjectFilter<PdpGroup> {
 
         return false;
     }
+
+    /**
+     * Check if two lists have identical content.
+     *
+     * @param leftList the left list
+     * @param rightList the right list
+     * @return true if the lists are identical
+     */
+    private <T> boolean areListsIdentical(final List<T> leftList, List<T> rightList) {
+        return leftList.equals(rightList);
+    }
+
+    /**
+     * Find a single element of a list in a list.
+     *
+     * @param listToSearch the list in which we are searching for elements
+     * @param listOfElementsToFind the list of elements, one of which we wish to find on the list we are searching
+     * @return true if one element of the elements to find is found on the list we searched
+     */
+    private <T> boolean findSingleElement(final List<T> listToSearch, List<T> listOfElementsToFind) {
+        for (Object elementToFind : listOfElementsToFind) {
+            if (listToSearch.contains(elementToFind)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
 }
@@ -35,12 +35,12 @@ import org.onap.policy.common.utils.validation.ToStringTester;
  *
  * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
  */
-public class TestModels {
+public class ModelsTest {
 
     @Test
     public void testPdpModels() {
         final Validator validator = ValidatorBuilder.create().with(new ToStringTester()).with(new SetterTester())
                 .with(new GetterTester()).build();
-        validator.validate(TestModels.class.getPackage().getName(), new FilterPackageInfo());
+        validator.validate(ModelsTest.class.getPackage().getName(), new FilterPackageInfo());
     }
 }
index 61974dc..75ec4d1 100644 (file)
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.junit.Before;
@@ -31,6 +32,9 @@ import org.junit.Test;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.resources.ResourceUtils;
+import org.onap.policy.models.pdp.enums.PdpState;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
 
 /**
  * Test of the {@link PdpGroupFilter} class.
@@ -105,4 +109,222 @@ public class PdpGroupFilterTest {
         filteredList = filter.filter(pdpGroupList);
         assertEquals(0, filteredList.size());
     }
+
+    @Test
+    public void testFilterPdpGroupState() {
+        PdpGroupFilter filter = PdpGroupFilter.builder().groupState(PdpState.ACTIVE).build();
+        List<PdpGroup> filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+
+        filter = PdpGroupFilter.builder().groupState(PdpState.PASSIVE).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+
+        filter = PdpGroupFilter.builder().groupState(PdpState.TEST).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+
+        filter = PdpGroupFilter.builder().groupState(PdpState.SAFE).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+
+        filter = PdpGroupFilter.builder().groupState(PdpState.TERMINATED).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(0, filteredList.size());
+    }
+
+    @Test
+    public void testFilterPdpType() {
+        PdpGroupFilter filter = PdpGroupFilter.builder().pdpType("APEX").build();
+        List<PdpGroup> filteredList = filter.filter(pdpGroupList);
+        assertEquals(5, filteredList.size());
+
+        filter = PdpGroupFilter.builder().pdpType("DROOLS").build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+
+        filter = PdpGroupFilter.builder().pdpType("XACML").build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+    }
+
+    @Test
+    public void testFilterPdpState() {
+        PdpGroupFilter filter = PdpGroupFilter.builder().pdpState(PdpState.ACTIVE).build();
+        List<PdpGroup> filteredList = filter.filter(pdpGroupList);
+        assertEquals(3, filteredList.size());
+
+        filter = PdpGroupFilter.builder().pdpState(PdpState.PASSIVE).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(3, filteredList.size());
+
+        filter = PdpGroupFilter.builder().pdpState(PdpState.SAFE).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+
+        filter = PdpGroupFilter.builder().pdpState(PdpState.TEST).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+    }
+
+    @Test
+    public void testFilterPolicyType() {
+        List<ToscaPolicyTypeIdentifier> identifierList = new ArrayList<>();
+
+        identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
+        PdpGroupFilter filter =
+                PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        List<PdpGroup> filteredList = filter.filter(pdpGroupList);
+        assertEquals(0, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(4, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(4, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyTypeIdentifier("Nonexistant", "1.2.3"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "9.9.9"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(5, filteredList.size());
+
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(0, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.2", "7.8.9"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.1", "4.5.6"));
+        identifierList.add(new ToscaPolicyTypeIdentifier("policy.type.3", "0.1.2"));
+        filter = PdpGroupFilter.builder().policyTypeList(identifierList).matchPolicyTypesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+    }
+
+    @Test
+    public void testFilterPolicy() {
+        List<ToscaPolicyIdentifier> identifierList = new ArrayList<>();
+
+        identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
+        PdpGroupFilter filter =
+                PdpGroupFilter.builder().policyList(identifierList).build();
+        List<PdpGroup> filteredList = filter.filter(pdpGroupList);
+        assertEquals(0, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(0, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(4, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(2, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+        identifierList.clear();
+
+        identifierList.add(new ToscaPolicyIdentifier("Nonexistant", "1.2.3"));
+        identifierList.add(new ToscaPolicyIdentifier("Policy0", "9.9.9"));
+        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
+        identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
+        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
+        identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(5, filteredList.size());
+
+        filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(0, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(3, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6"));
+        identifierList.add(new ToscaPolicyIdentifier("Policy1", "4.5.6"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+
+        identifierList.clear();
+        identifierList.add(new ToscaPolicyIdentifier("Policy2", "4.5.6"));
+        identifierList.add(new ToscaPolicyIdentifier("Policy3", "1.2.3"));
+        filter = PdpGroupFilter.builder().policyList(identifierList).matchPoliciesExactly(true).build();
+        filteredList = filter.filter(pdpGroupList);
+        assertEquals(1, filteredList.size());
+    }
 }
@@ -34,9 +34,9 @@ import org.junit.Test;
 import org.onap.policy.models.pdp.enums.PdpState;
 
 /**
- * Test the copy constructor, as {@link TestModels} tests the other methods.
+ * Test the copy constructor, as {@link ModelsTest} tests the other methods.
  */
-public class TestPdpGroup {
+public class PdpGroupTest {
 
     @Test
     public void testCopyConstructor() {
@@ -28,9 +28,9 @@ import org.onap.policy.models.pdp.enums.PdpHealthStatus;
 import org.onap.policy.models.pdp.enums.PdpState;
 
 /**
- * Test the copy constructor, as {@link TestModels} tests the other methods.
+ * Test the copy constructor, as {@link ModelsTest} tests the other methods.
  */
-public class TestPdpInstanceDetails {
+public class PdpInstanceDetailsTest {
 
     @Test
     public void testCopyConstructor() {
@@ -32,7 +32,7 @@ import org.onap.policy.models.pdp.enums.PdpMessageType;
 /**
  * Tests methods not already tested by {@link TestModels}.
  */
-public class TestPdpMessage {
+public class PdpMessageTest {
     private static final String PDP_NAME = "pdpA";
     private static final String PDP_GROUP = "groupA";
     private static final String PDP_SUBGROUP = "subgroupA";
@@ -29,9 +29,9 @@ import org.junit.Test;
 import org.onap.policy.models.pdp.enums.PdpState;
 
 /**
- * Test the copy constructor, as {@link TestModels} tests the other methods.
+ * Test the copy constructor, as {@link ModelsTest} tests the other methods.
  */
-public class TestPdpStateChange {
+public class PdpStateChangeTest {
 
     @Test
     public void testCopyConstructor() {
@@ -33,9 +33,9 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
 
 /**
- * Test the copy constructor, as {@link TestModels} tests the other methods.
+ * Test the copy constructor, as {@link ModelsTest} tests the other methods.
  */
-public class TestPdpSubGroup {
+public class PdpSubGroupTest {
 
     @Test
     public void testCopyConstructor() {
@@ -32,9 +32,9 @@ import org.junit.Test;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
 
 /**
- * Test the copy constructor, as {@link TestModels} tests the other methods.
+ * Test the copy constructor, as {@link ModelsTest} tests the other methods.
  */
-public class TestPdpUpdate {
+public class PdpUpdateTest {
 
     @Test
     public void testCopyConstructor() {
index c62e1ea..623ee4e 100644 (file)
 {
-    "groups": [
+    "groups": 
+    [
         {
             "name": "PdpGroup0",
             "version": "1.2.3",
             "description": "group description",
             "pdpGroupState": "PASSIVE",
-            "properties": {
+            "properties": 
+            {
                 "groupProperty0": "Value of Group Property 0"
             },
-            "pdpSubgroups": [
+
+            "pdpSubgroups": 
+            [
                 {
                     "pdpType": "APEX",
-                    "supportedPolicyTypes": [
+                    "supportedPolicyTypes": 
+                    [
                         {
                             "name": "policy.type.0",
                             "version": "1.2.3"
+                        },
+                        {
+                            "name": "policy.type.1",
+                            "version": "4.5.6"
+                        },
+                        {
+                            "name": "policy.type.2",
+                            "version": "7.8.9"
                         }
                     ],
-                    "policies": [
+
+                    "policies": 
+                    [
                         {
                             "name": "Policy0",
                             "version": "4.5.6"
+                        },
+                        {
+                            "name": "Policy1",
+                            "version": "4.5.6"
                         }
                     ],
+
                     "currentInstanceCount": 123,
                     "desiredInstanceCount": 456,
-                    "properties": {
+                    "properties": 
+                    {
                         "subgroupProperty0": "Value of sub Group Property 0"
                     },
-                    "pdpInstances": [
+
+                    "pdpInstances": 
+                    [
                         {
                             "instanceId": "apex-0",
                             "pdpState": "ACTIVE",
                             "healthy": "NOT_HEALTHY",
                             "message": "message from PDP"
+                        },
+                        {
+                            "instanceId": "apex-0",
+                            "pdpState": "PASSIVE",
+                            "healthy": "NOT_HEALTHY",
+                            "message": "message from PDP"
+                        },
+                        {
+                            "instanceId": "apex-0",
+                            "pdpState": "SAFE",
+                            "healthy": "NOT_HEALTHY",
+                            "message": "message from PDP"
+                        },
+                        {
+                            "instanceId": "apex-0",
+                            "pdpState": "TEST",
+                            "healthy": "NOT_HEALTHY",
+                            "message": "message from PDP"
                         }
                     ]
                 }
             ]
         },
+
         {
             "name": "PdpGroup0",
             "version": "1.2.4",
             "description": "group description",
-            "pdpGroupState": "PASSIVE",
-            "properties": {
+            "pdpGroupState": "ACTIVE",
+            "properties": 
+            {
                 "groupProperty0": "Value of Group Property 0"
             },
-            "pdpSubgroups": [
+
+            "pdpSubgroups": 
+            [
                 {
                     "pdpType": "APEX",
-                    "supportedPolicyTypes": [
+                    "supportedPolicyTypes": 
+                    [
                         {
                             "name": "policy.type.0",
                             "version": "1.2.3"
+                        },
+                        {
+                            "name": "policy.type.1",
+                            "version": "4.5.6"
+                        },
+                        {
+                            "name": "policy.type.3",
+                            "version": "0.1.2"
                         }
                     ],
-                    "policies": [
+
+                    "policies": 
+                    [
                         {
-                            "name": "Policy0",
+                            "name": "Policy2",
                             "version": "4.5.6"
                         }
                     ],
+
                     "currentInstanceCount": 123,
                     "desiredInstanceCount": 456,
-                    "properties": {
+                    "properties": 
+                    {
                         "subgroupProperty0": "Value of sub Group Property 0"
                     },
-                    "pdpInstances": [
+
+                    "pdpInstances": 
+                    [
                         {
                             "instanceId": "apex-0",
                             "pdpState": "ACTIVE",
                 }
             ]
         },
+
         {
             "name": "PdpGroup0",
             "version": "1.2.1",
             "description": "group description",
-            "pdpGroupState": "PASSIVE",
-            "properties": {
+            "pdpGroupState": "SAFE",
+            "properties": 
+            {
                 "groupProperty0": "Value of Group Property 0"
             },
-            "pdpSubgroups": [
+
+            "pdpSubgroups": 
+            [
                 {
                     "pdpType": "APEX",
-                    "supportedPolicyTypes": [
+                    "supportedPolicyTypes": 
+                    [
+                        {
+                            "name": "policy.type.1",
+                            "version": "4.5.6"
+                        },
+                        {
+                            "name": "policy.type.3",
+                            "version": "0.1.2"
+                        }
+                    ],
+
+                    "policies": 
+                    [
+                        {
+                            "name": "Policy2",
+                            "version": "4.5.6"
+                        },
+                        {
+                            "name": "Policy3",
+                            "version": "1.2.3"
+                        }
+                    ],
+
+                    "currentInstanceCount": 123,
+                    "desiredInstanceCount": 456,
+                    "properties": 
+                    {
+                        "subgroupProperty0": "Value of sub Group Property 0"
+                    },
+
+                    "pdpInstances": 
+                    [
+                        {
+                            "instanceId": "apex-0",
+                            "pdpState": "SAFE",
+                            "healthy": "NOT_HEALTHY",
+                            "message": "message from PDP"
+                        }
+                    ]
+                },
+                {
+                    "pdpType": "DROOLS",
+                    "supportedPolicyTypes": 
+                    [
                         {
                             "name": "policy.type.0",
                             "version": "1.2.3"
                         }
                     ],
-                    "policies": [
+
+                    "policies": 
+                    [
                         {
                             "name": "Policy0",
                             "version": "4.5.6"
                         }
                     ],
+
                     "currentInstanceCount": 123,
                     "desiredInstanceCount": 456,
-                    "properties": {
+                    "properties": 
+                    {
                         "subgroupProperty0": "Value of sub Group Property 0"
                     },
-                    "pdpInstances": [
+
+                    "pdpInstances": 
+                    [
                         {
                             "instanceId": "apex-0",
-                            "pdpState": "ACTIVE",
+                            "pdpState": "SAFE",
                             "healthy": "NOT_HEALTHY",
                             "message": "message from PDP"
                         }
             "version": "1.2.1",
             "description": "group description",
             "pdpGroupState": "PASSIVE",
-            "properties": {
+            "properties": 
+            {
                 "groupProperty0": "Value of Group Property 0"
             },
-            "pdpSubgroups": [
+
+            "pdpSubgroups": 
+            [
                 {
                     "pdpType": "APEX",
-                    "supportedPolicyTypes": [
+                    "supportedPolicyTypes": 
+                    [
                         {
-                            "name": "policy.type.0",
-                            "version": "1.2.3"
+                            "name": "policy.type.1",
+                            "version": "4.5.6"
+                        },
+                        {
+                            "name": "policy.type.2",
+                            "version": "7.8.9"
                         }
                     ],
-                    "policies": [
+
+                    "policies": 
+                    [
                         {
                             "name": "Policy0",
                             "version": "4.5.6"
                         }
                     ],
+
                     "currentInstanceCount": 123,
                     "desiredInstanceCount": 456,
-                    "properties": {
+                    "properties": 
+                    {
                         "subgroupProperty0": "Value of sub Group Property 0"
                     },
-                    "pdpInstances": [
+
+                    "pdpInstances": 
+                    [
                         {
                             "instanceId": "apex-0",
-                            "pdpState": "ACTIVE",
+                            "pdpState": "PASSIVE",
                             "healthy": "NOT_HEALTHY",
                             "message": "message from PDP"
                         }
                 }
             ]
         },
+
         {
             "name": "PdpGroup1",
             "version": "1.2.3",
             "description": "group description",
-            "pdpGroupState": "PASSIVE",
-            "properties": {
+            "pdpGroupState": "TEST",
+            "properties": 
+            {
                 "groupProperty0": "Value of Group Property 0"
             },
-            "pdpSubgroups": [
+
+            "pdpSubgroups": 
+            [
                 {
                     "pdpType": "APEX",
-                    "supportedPolicyTypes": [
+                    "supportedPolicyTypes": 
+                    [
+                        {
+                            "name": "policy.type.0",
+                            "version": "1.2.3"
+                        }
+                    ],
+
+                    "policies": 
+                    [
+                        {
+                            "name": "Policy0",
+                            "version": "4.5.6"
+                        }
+                    ],
+
+                    "currentInstanceCount": 123,
+                    "desiredInstanceCount": 456,
+                    "properties": 
+                    {
+                        "subgroupProperty0": "Value of sub Group Property 0"
+                    },
+
+                    "pdpInstances": 
+                    [
+                        {
+                            "instanceId": "apex-0",
+                            "pdpState": "TEST",
+                            "healthy": "NOT_HEALTHY",
+                            "message": "message from PDP"
+                        }
+                    ]
+                },
+                {
+                    "pdpType": "DROOLS",
+                    "supportedPolicyTypes": 
+                    [
+                        {
+                            "name": "policy.type.0",
+                            "version": "1.2.3"
+                        }
+                    ],
+
+                    "policies": 
+                    [
+                        {
+                            "name": "Policy0",
+                            "version": "4.5.6"
+                        }
+                    ],
+
+                    "currentInstanceCount": 123,
+                    "desiredInstanceCount": 456,
+                    "properties": 
+                    {
+                        "subgroupProperty0": "Value of sub Group Property 0"
+                    },
+
+                    "pdpInstances": 
+                    [
+                        {
+                            "instanceId": "apex-0",
+                            "pdpState": "PASSIVE",
+                            "healthy": "NOT_HEALTHY",
+                            "message": "message from PDP"
+                        }
+                    ]
+                },
+                {
+                    "pdpType": "XACML",
+                    "supportedPolicyTypes": 
+                    [
                         {
                             "name": "policy.type.0",
                             "version": "1.2.3"
                         }
                     ],
-                    "policies": [
+
+                    "policies": 
+                    [
                         {
                             "name": "Policy0",
                             "version": "4.5.6"
                         }
                     ],
+
                     "currentInstanceCount": 123,
                     "desiredInstanceCount": 456,
-                    "properties": {
+                    "properties": 
+                    {
                         "subgroupProperty0": "Value of sub Group Property 0"
                     },
-                    "pdpInstances": [
+
+                    "pdpInstances": 
+                    [
                         {
                             "instanceId": "apex-0",
                             "pdpState": "ACTIVE",
index 102b1fe..bb0026e 100644 (file)
@@ -30,8 +30,7 @@ import lombok.NonNull;
 import org.onap.policy.models.base.PfObjectFilter;
 
 /**
- * Filter class for searches for {@link ToscaPolicy} instances.
- * If any fields are null, they are ignored.
+ * Filter class for searches for {@link ToscaPolicy} instances. If any fields are null, they are ignored.
  *
  * @author Liam Fallon (liam.fallon@est.tech)
  */
@@ -58,7 +57,7 @@ public class ToscaPolicyFilter implements PfObjectFilter<ToscaPolicy> {
         // @formatter:off
         List<ToscaPolicy> returnList = originalList.stream()
                 .filter(p -> filterString(p.getName(),        name))
-                .filter(p -> (version != null && LATEST_VERSION.equals(version))
+                .filter(p -> LATEST_VERSION.equals(version)
                         || filterString(p.getVersion(), version))
                 .filter(p -> filterString(p.getType(),        type))
                 .filter(p -> filterString(p.getTypeVersion(), typeVersion))
index 7d6fbac..c721929 100644 (file)
@@ -30,8 +30,7 @@ import lombok.NonNull;
 import org.onap.policy.models.base.PfObjectFilter;
 
 /**
- * Filter class for searches for {@link ToscaPolicyType} instances.
- * If any fields are null, they are ignored.
+ * Filter class for searches for {@link ToscaPolicyType} instances. If any fields are null, they are ignored.
  *
  * @author Liam Fallon (liam.fallon@est.tech)
  */
@@ -52,7 +51,7 @@ public class ToscaPolicyTypeFilter implements PfObjectFilter<ToscaPolicyType> {
         // @formatter:off
         List<ToscaPolicyType> returnList = originalList.stream()
                 .filter(p -> filterString(p.getName(), name))
-                .filter(p -> (version != null && LATEST_VERSION.equals(version))
+                .filter(p -> LATEST_VERSION.equals(version)
                         || filterString(p.getVersion(), version))
                 .collect(Collectors.toList());
         // @formatter:off