Author: bdaniel
Date: Mon Jul 26 04:40:48 2010
New Revision: 979157
URL: http://svn.apache.org/viewvc?rev=979157&view=rev
Log:
Fix up appliesTo processing. Need to save each separate composite document as a
dom and check endpoints
Modified:
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java
Modified:
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java?rev=979157&r1=979156&r2=979157&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAppliesToBuilderImpl.java
Mon Jul 26 04:40:48 2010
@@ -83,44 +83,47 @@ public class PolicyAppliesToBuilderImpl
}
}
- private Composite checkAppliesTo(Document document, Map<PolicySet,
List<PolicySubject>> 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<PolicySet,
List<PolicySubject>> 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<PolicySet,
List<PolicySubject>>(), 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
Node node = nodes.item(i);
String index = getStructuralURI(node);
PolicySubject subject = lookup(composite, index);
- subjects.add(subject);
+ if ( subject != null )
+ subjects.add(subject);
}
}
}