You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by bd...@apache.org on 2010/07/15 16:04:25 UTC

svn commit: r964438 - /tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/ComponentPolicyBuilderImpl.java

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());
+            	}
             }
         }
     }