Author: bdaniel
Date: Thu Jul 15 14:04:25 2010
New Revision: 964438

URL: http://svn.apache.org/viewvc?rev=964438&view=rev
Log:
Check extension type for unresolved service side intents, only throw a warning 
for unresolved reference side intents

Modified:
    
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.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=964438&r1=964437&r2=964438&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
 Thu Jul 15 14:04:25 2010
@@ -36,6 +36,7 @@ import org.apache.tuscany.sca.assembly.C
 import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.CompositeService;
 import org.apache.tuscany.sca.assembly.Contract;
+import org.apache.tuscany.sca.assembly.EndpointReference;
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.BuilderContext;
@@ -522,15 +523,20 @@ public class ComponentPolicyBuilderImpl 
                 }
             }
             
-            if (!intentMatched){
-                // Raise a warning as we have an intent that doesn't have a 
matching 
-                // policy set at this start. 
-                // TODO - this could be because the intent is provided by and 
extension
-                //        and hence there is no explicit policy set. Need and 
extra piece
-                //        of processing to walk through the extension models. 
-        
-            //    warning(context.getMonitor(), "IntentNotSatisfiedAtBuild", 
subject, intent.getName(), subject.toString());
-                  error(context.getMonitor(), "IntentNotSatisfiedAtBuild", 
subject, intent.getName(), subject.toString());
+            if (!intentMatched){              
+               
+               // Reference side intents can still be resolved by the service 
binding, so we can only issue a 
+               // warning here. 
+               if ( subject instanceof EndpointReference ) {
+                        warning(context.getMonitor(), 
"IntentNotSatisfiedAtBuild", subject, intent.getName(), subject.toString());
+               } else {
+                       // Need to check the ExtensionType to see if the intent 
is provided there. If not, throw an error
+                       ExtensionType type = subject.getExtensionType();
+                       if ( type == null )
+                               error(context.getMonitor(), 
"IntentNotSatisfiedAtBuild", subject, intent.getName(), subject.toString());
+                       else if ( 
!type.getAlwaysProvidedIntents().contains(intent) && 
!type.getMayProvidedIntents().contains(intent))
+                               error(context.getMonitor(), 
"IntentNotSatisfiedAtBuild", subject, intent.getName(), subject.toString());
+               }
             }
         }
     }


Reply via email to