X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-pdp%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fpdp%2Fconcepts%2FPdpGroupFilter.java;h=313482d2e76401eb61c40e0acd2e365397ea8546;hb=ce850be00732359bb04d8dd3666a1293dbf8f1ff;hp=d67f2d4cbd18a76bacb0c91b996f08fdca483858;hpb=b2ae3e6a44a3aa70ac1cd1d2ef78316bfc6e9d04;p=policy%2Fmodels.git diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroupFilter.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroupFilter.java index d67f2d4cb..313482d2e 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroupFilter.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroupFilter.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,11 +23,9 @@ package org.onap.policy.models.pdp.concepts; import java.util.List; import java.util.stream.Collectors; - import lombok.Builder; import lombok.Data; import lombok.NonNull; - import org.apache.commons.lang3.ObjectUtils; import org.onap.policy.models.base.PfObjectFilter; import org.onap.policy.models.pdp.enums.PdpState; @@ -118,10 +117,11 @@ public class PdpGroupFilter implements PfObjectFilter { } for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) { - if (matchPolicyTypesExactly && areListsIdentical(pdpSubGroup.getSupportedPolicyTypes(), typeFilter)) { - return true; - } else if (!matchPolicyTypesExactly - && findSingleElement(pdpSubGroup.getSupportedPolicyTypes(), typeFilter)) { + if (matchPolicyTypesExactly) { + if (areListsIdentical(pdpSubGroup.getSupportedPolicyTypes(), typeFilter)) { + return true; + } + } else if (findSupportedPolicyType(pdpSubGroup.getSupportedPolicyTypes(), typeFilter)) { return true; } } @@ -130,6 +130,32 @@ public class PdpGroupFilter implements PfObjectFilter { } + /** + * Find a single supported type. + * + * @param supportedPolicyTypes supported types + * @param typeFilter the list of types, one of which we wish to find supported by + * the list we are searching + * @return true if one element of the elements to find is supported by an element on + * the list we searched + */ + private boolean findSupportedPolicyType(List supportedPolicyTypes, + List typeFilter) { + for (ToscaPolicyTypeIdentifier supportedPolicyType : supportedPolicyTypes) { + String supName = supportedPolicyType.getName(); + if (supName.endsWith(".*")) { + String substr = supName.substring(0, supName.length() - 1); + if (typeFilter.stream().anyMatch(type -> type.getName().startsWith(substr))) { + return true; + } + } else if (typeFilter.contains(supportedPolicyType)) { + return true; + } + } + + return false; + } + /** * Filter PDP groups on policy. * @@ -145,9 +171,11 @@ public class PdpGroupFilter implements PfObjectFilter { } for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) { - if (matchPoliciesExactly && areListsIdentical(pdpSubGroup.getPolicies(), policyFilter)) { - return true; - } else if (!matchPoliciesExactly && findSingleElement(pdpSubGroup.getPolicies(), policyFilter)) { + if (matchPoliciesExactly) { + if (areListsIdentical(pdpSubGroup.getPolicies(), policyFilter)) { + return true; + } + } else if (findSingleElement(pdpSubGroup.getPolicies(), policyFilter)) { return true; } }