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