Ensure constrained intents are removed from Composite objects
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@979166 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f796026fb2
commit
8c465047c0
2 changed files with 19 additions and 3 deletions
|
|
@ -33,6 +33,7 @@ import org.apache.tuscany.sca.assembly.Binding;
|
|||
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.Service;
|
|||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ public class CompositePolicyBuilderImpl extends ComponentPolicyBuilderImpl imple
|
|||
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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue