From 7a90e1e94462b35ad2c4c4799ad9c676d4586ed5 Mon Sep 17 00:00:00 2001 From: bdaniel Date: Mon, 26 Jul 2010 04:40:48 +0000 Subject: Fix up appliesTo processing. Need to save each separate composite document as a dom and check endpoints git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@979157 13f79535-47bb-0310-9956-ffa450edef68 --- .../builder/impl/PolicyAppliesToBuilderImpl.java | 70 ++++++++++++---------- 1 file changed, 37 insertions(+), 33 deletions(-) (limited to 'sca-java-2.x/trunk') 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 2417940b1c..c0da5ad33b 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 @@ -83,44 +83,47 @@ public class PolicyAppliesToBuilderImpl extends PolicyAttachmentBuilderImpl { } } - private Composite checkAppliesTo(Document document, Map> appliesToSubjects, Composite composite, BuilderContext context) throws Exception { - // look at policies recursively - for (Component component : composite.getComponents()) { - Implementation implementation = component.getImplementation(); - if (implementation instanceof Composite) { - checkAppliesTo(document, appliesToSubjects, (Composite)implementation, context); - } - } + private Composite checkAppliesTo(Document document, Map> appliesToSubjects, Composite topComposite, BuilderContext context) throws Exception { + + for ( Component component : topComposite.getComponents() ) { + if ( component.getImplementation() instanceof Composite ) { + Composite nested = (Composite) component.getImplementation(); + checkAppliesTo(saveAsDOM(nested),new HashMap>(), nested, context ); + } + } - for (Component component : composite.getComponents()) { + for (Component component : topComposite.getComponents()) { - for (ComponentService componentService : component.getServices()) { - for (Endpoint ep : componentService.getEndpoints()) { - if (ep.getBinding() instanceof PolicySubject) { - checkAppliesToSubject(document, appliesToSubjects, composite, (PolicySubject)ep.getBinding(), ep.getPolicySets()); - } - } - } + for (ComponentService componentService : component.getServices()) { + for (Endpoint ep : componentService.getEndpoints()) { + checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)ep, ep.getPolicySets()); + if (ep.getBinding() instanceof PolicySubject) { + checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)ep.getBinding(), ep.getPolicySets()); + } + } + } - for (ComponentReference componentReference : component.getReferences()) { - for (EndpointReference epr : componentReference.getEndpointReferences()) { - if (epr.getBinding() instanceof PolicySubject) { - checkAppliesToSubject(document, appliesToSubjects, composite, (PolicySubject)epr.getBinding(), epr.getPolicySets()); - } - } - } + for (ComponentReference componentReference : component.getReferences()) { + for (EndpointReference epr : componentReference.getEndpointReferences()) { + checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)epr, epr.getPolicySets()); + if (epr.getBinding() instanceof PolicySubject) { + checkAppliesToSubject(document, appliesToSubjects, topComposite, (PolicySubject)epr.getBinding(), epr.getPolicySets()); + } + } + } - Implementation implementation = component.getImplementation(); - if (implementation != null && - implementation instanceof PolicySubject) { - checkAppliesToSubject(document, appliesToSubjects, composite, implementation, implementation.getPolicySets()); - } - } - - return composite; + Implementation implementation = component.getImplementation(); + if (implementation != null && + implementation instanceof PolicySubject) { + checkAppliesToSubject(document, appliesToSubjects, topComposite, implementation, implementation.getPolicySets()); + } + } + + return topComposite; } - /** + + /** * Checks that all the provided policy sets apply to the provided policy subject * * @param document @@ -150,7 +153,8 @@ public class PolicyAppliesToBuilderImpl extends PolicyAttachmentBuilderImpl { Node node = nodes.item(i); String index = getStructuralURI(node); PolicySubject subject = lookup(composite, index); - subjects.add(subject); + if ( subject != null ) + subjects.add(subject); } } } -- cgit v1.2.3