Author: bdaniel
Date: Mon Jul 26 06:23:13 2010
New Revision: 979166

URL: http://svn.apache.org/viewvc?rev=979166&view=rev
Log:
Ensure constrained intents are removed from Composite objects

Modified:
    
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
    
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java?rev=979166&r1=979165&r2=979166&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java
 Mon Jul 26 06:23:13 2010
@@ -33,6 +33,7 @@ import org.apache.tuscany.sca.assembly.B
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.CompositeService;
 import org.apache.tuscany.sca.assembly.Contract;
@@ -42,6 +43,7 @@ import org.apache.tuscany.sca.assembly.S
 import org.apache.tuscany.sca.assembly.builder.BuilderContext;
 import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint;
 import org.apache.tuscany.sca.assembly.builder.Messages;
+import org.apache.tuscany.sca.assembly.xml.Constants;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
@@ -463,10 +465,23 @@ public class ComponentPolicyBuilderImpl 
     
     protected void removeConstrainedIntents(PolicySubject subject, 
BuilderContext context) {
         List<Intent> intents = subject.getRequiredIntents();
+        QName baseType = null;
+        QName type = null;
         
         // Remove the intents whose @contrains do not include the current 
element
         ExtensionType extensionType = subject.getExtensionType();
-        if(extensionType != null){
+        
+        // Need to check elements that don't have an extension type, like 
Composites
+        // References don't have an extension type, but they're checked at 
wiring time
+        if ( extensionType == null ) {
+               if ( subject instanceof Composite ) 
+                       type = Constants.COMPOSITE_QNAME;
+        } else {
+               type = extensionType.getType();
+               baseType = extensionType.getBaseType();
+        }
+        
+        if(type != null){
             List<Intent> copy = new ArrayList<Intent>(intents);
             for (Intent i : copy) {
                List<ExtensionType> constrainedTypes = i.getConstrainedTypes();
@@ -476,8 +491,8 @@ public class ComponentPolicyBuilderImpl 
                 if (constrainedTypes.size() > 0){
                     boolean constraintFound = false;
                     for (ExtensionType constrainedType : 
i.getConstrainedTypes()){
-                        if 
(constrainedType.getType().equals(extensionType.getType()) ||
-                            
constrainedType.getType().equals(extensionType.getBaseType())){
+                        if (constrainedType.getType().equals(type) ||
+                            constrainedType.getType().equals(baseType)){
                             constraintFound = true;
                             break;
                         }

Modified: 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java?rev=979166&r1=979165&r2=979166&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
 Mon Jul 26 06:23:13 2010
@@ -208,6 +208,7 @@ public class CompositePolicyBuilderImpl 
                        resolveAndCheck(implementation, context);
                         inherit(implementation, Intent.Type.implementation, 
true, component, composite);                                             
                         computePolicies((Composite)implementation, context);
+                        removeConstrainedIntents(implementation, context);
                         expandDefaultIntents(implementation,context);
                         checkIntentsResolved(implementation,context);
                     } else {


Reply via email to