diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/builder/src')
-rw-r--r-- | sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java index 132cfa5656..1c958f70d4 100644 --- a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java +++ b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java @@ -96,18 +96,22 @@ public class PolicyAppliesToBuilderImpl extends PolicyAttachmentBuilderImpl { for (ComponentService componentService : component.getServices()) { for (Endpoint ep : componentService.getEndpoints()) { - checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)ep.getService(), ep.getService().getPolicySets()); + List<PolicySet> policySetsToRemove = checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)ep.getService(), ep.getService().getPolicySets()); + ep.getPolicySets().removeAll(policySetsToRemove); if (ep.getBinding() instanceof PolicySubject) { - checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)ep.getBinding(), ((PolicySubject)ep.getBinding()).getPolicySets()); + policySetsToRemove = checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)ep.getBinding(), ((PolicySubject)ep.getBinding()).getPolicySets()); + ep.getPolicySets().removeAll(policySetsToRemove); } } } for (ComponentReference componentReference : component.getReferences()) { for (EndpointReference epr : componentReference.getEndpointReferences()) { - checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)epr.getReference(), epr.getReference().getPolicySets()); + List<PolicySet> policySetsToRemove = checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)epr.getReference(), epr.getReference().getPolicySets()); + epr.getPolicySets().removeAll(policySetsToRemove); if (epr.getBinding() instanceof PolicySubject) { - checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)epr.getBinding(), ((PolicySubject)epr.getBinding()).getPolicySets()); + policySetsToRemove = checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)epr.getBinding(), ((PolicySubject)epr.getBinding()).getPolicySets()); + epr.getPolicySets().removeAll(policySetsToRemove); } } } @@ -133,7 +137,7 @@ public class PolicyAppliesToBuilderImpl extends PolicyAttachmentBuilderImpl { * @return * @throws Exception */ - private void checkAppliesToSubject(Document document, Map<PolicySet, List<PolicySubject>> appliesToSubjects, Composite composite, PolicySubject policySubject, List<PolicySet> policySets) throws Exception { + private List<PolicySet> checkAppliesToSubject(Document document, Map<PolicySet, List<PolicySubject>> appliesToSubjects, Composite composite, PolicySubject policySubject, List<PolicySet> policySets) throws Exception { List<PolicySet> policySetsToRemove = new ArrayList<PolicySet>(); for (PolicySet policySet : policySets){ @@ -170,6 +174,7 @@ public class PolicyAppliesToBuilderImpl extends PolicyAttachmentBuilderImpl { } - policySets.removeAll(policySetsToRemove); + policySets.removeAll(policySetsToRemove); + return policySetsToRemove; } } |