diff options
-rw-r--r-- | sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java index 3930ac0e43..4d1a7d52b6 100644 --- a/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java +++ b/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java @@ -21,6 +21,8 @@ package org.apache.tuscany.sca.builder.impl; import java.io.IOException; import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; @@ -183,6 +185,13 @@ public class PolicyAttachmentBuilderImpl implements CompositeBuilder { PolicySubject subject = lookup(composite, index); if (subject != null) { ps.setIsExternalAttachment(true); + // Remove any PolicySets with the same name that may have been added + List<PolicySet> subjectPSCopy = new ArrayList<PolicySet>(subject.getPolicySets()); + for ( PolicySet existingPS : subjectPSCopy ) { + if ( existingPS.getName().equals(ps.getName()) ) { + subject.getPolicySets().remove(existingPS); + } + } subject.getPolicySets().add(ps); } else { // raise a warning that the XPath node didn't match a node in the |