Author: svkrish
Date: Sun Dec 23 09:16:23 2007
New Revision: 606576
URL: http://svn.apache.org/viewvc?rev=606576&view=rev
Log:
picking up policies specified in componenttype and java annotations when
computing implementation policies
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java?rev=606576&r1=606575&r2=606576&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
Sun Dec 23 09:16:23 2007
@@ -786,32 +786,61 @@
//resolve component implemenation
Implementation implementation = component.getImplementation();
if (implementation != null) {
- if (implementation instanceof PolicySetAttachPoint) {
-
resolveIntents(((PolicySetAttachPoint)implementation).getRequiredIntents(),
resolver);
-
resolvePolicySets(((PolicySetAttachPoint)implementation).getPolicySets(),
resolver);
- validatePolicySets(component,
(PolicySetAttachPoint)implementation);
- //add implementation policies into component... since
implementation instance are
- //reused and its likely that this implementation instance
will not hold after its resolution
-
component.getRequiredIntents().addAll(((PolicySetAttachPoint)implementation).getRequiredIntents());
-
component.getPolicySets().addAll(((PolicySetAttachPoint)implementation).getPolicySets());
- if ( implementation instanceof OperationsConfigurator ) {
-
((OperationsConfigurator)component).getConfiguredOperations().
-
addAll(((OperationsConfigurator)implementation).getConfiguredOperations());
-
- for ( ConfiguredOperation op :
((OperationsConfigurator)component).
-
getConfiguredOperations() ) {
- resolveIntents(op.getRequiredIntents(), resolver);
- resolvePolicySets(op.getPolicySets(), resolver);
- }
-
- }
- }
+ copyPoliciesToComponent(component, implementation, resolver);
+ //now resolve the implementation so that even if there is a
shared instance
+ //for this that is resolved, the specified intents and
policysets are safe in the
+ //component and not lost
implementation = resolveImplementation(implementation,
resolver);
+
+ //resolved implementation may contain intents and policysets
specified at
+ //componentType (either in the componentType side file or in
annotations if its a
+ //java implementation). This has to be consolidated in to the
component.
+ copyPoliciesToComponent(component, implementation, resolver);
+
component.setImplementation(implementation);
}
}
}
+
+ private void copyPoliciesToComponent(Component component,
+ Implementation implementation,
+ ModelResolver resolver) throws
ContributionResolveException {
+ if (implementation instanceof PolicySetAttachPoint) {
+
resolveIntents(((PolicySetAttachPoint)implementation).getRequiredIntents(),
resolver);
+
resolvePolicySets(((PolicySetAttachPoint)implementation).getPolicySets(),
resolver);
+ validatePolicySets(component,
(PolicySetAttachPoint)implementation);
+ //add implementation policies into component... since
implementation instance are
+ //reused and its likely that this implementation instance will not
hold after its resolution
+
component.getRequiredIntents().addAll(((PolicySetAttachPoint)implementation).getRequiredIntents());
+
component.getPolicySets().addAll(((PolicySetAttachPoint)implementation).getPolicySets());
+ if ( implementation instanceof OperationsConfigurator ) {
+ boolean notFound;
+ List<ConfiguredOperation> opsFromImplementation = new
ArrayList<ConfiguredOperation>();
+ for ( ConfiguredOperation implConfOp :
((OperationsConfigurator)implementation).getConfiguredOperations() ) {
+ notFound = true;
+ resolveIntents(implConfOp.getRequiredIntents(), resolver);
+ resolvePolicySets(implConfOp.getPolicySets(), resolver);
+ for ( ConfiguredOperation compConfOp :
((OperationsConfigurator)component).getConfiguredOperations() ) {
+ if ( implConfOp.getName().equals(compConfOp.getName())
) {
+ notFound = false;
+
addInheritedIntents(implConfOp.getRequiredIntents(),
compConfOp.getRequiredIntents());
+ addInheritedPolicySets(implConfOp.getPolicySets(),
compConfOp.getPolicySets());
+ notFound = false;
+ }
+ }
+
+ if ( notFound ) {
+ opsFromImplementation.add(implConfOp);
+ }
+ }
+
((OperationsConfigurator)component).getConfiguredOperations().addAll(opsFromImplementation);
+ }
+
((PolicySetAttachPoint)implementation).getRequiredIntents().clear();
+ ((PolicySetAttachPoint)implementation).getPolicySets().clear();
+ }
+ }
+
public QName getArtifactType() {
return COMPOSITE_QNAME;
Modified:
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java?rev=606576&r1=606575&r2=606576&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
Sun Dec 23 09:16:23 2007
@@ -26,10 +26,7 @@
import java.util.Map;
import java.util.Set;
-import javax.xml.namespace.QName;
-
import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Base;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.ComponentReference;
@@ -51,12 +48,7 @@
import org.apache.tuscany.sca.assembly.builder.Problem.Severity;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.IntentAttachPoint;
-import org.apache.tuscany.sca.policy.IntentAttachPointType;
import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
-import org.apache.tuscany.sca.policy.ProfileIntent;
-import org.apache.tuscany.sca.policy.QualifiedIntent;
public class CompositeWireBuilderImpl {
@@ -910,9 +902,28 @@
for (ComponentService componentService : component.getServices()) {
Service service = componentService.getService();
if (service != null) {
- // reconcile intents and policysets
+ // reconcile intents and policysets from componentType
addInheritedIntents(service.getRequiredIntents(),
componentService.getRequiredIntents());
addInheritedPolicySets(service.getPolicySets(),
componentService.getPolicySets(), true);
+
+ //reconcile intents and policysets for operations
+ boolean notFound;
+ List<ConfiguredOperation> opsFromComponentType = new
ArrayList<ConfiguredOperation>();
+ for ( ConfiguredOperation ctsConfOp :
service.getConfiguredOperations() ) {
+ notFound = true;
+ for ( ConfiguredOperation csConfOp :
componentService.getConfiguredOperations() ) {
+ if (
csConfOp.getName().equals(ctsConfOp.getName()) ) {
+
addInheritedIntents(ctsConfOp.getRequiredIntents(),
csConfOp.getRequiredIntents());
+
addInheritedPolicySets(ctsConfOp.getPolicySets(), csConfOp.getPolicySets(),
true);
+ notFound = false;
+ }
+ }
+
+ if ( notFound ) {
+ opsFromComponentType.add(ctsConfOp);
+ }
+ }
+
componentService.getConfiguredOperations().addAll(opsFromComponentType);
}
if ( componentService.getCallback() != null ) {
Modified:
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java?rev=606576&r1=606575&r2=606576&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
Sun Dec 23 09:16:23 2007
@@ -138,9 +138,6 @@
staxProcessor.resolve(scaDefns, resolver);
staxProcessor.resolve(composite, resolver);
- //intents are not computed for the implementation as yet
-
assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getRequiredIntents().size(),
1);
-
CompositeBuilderImpl compositeUtil = new
CompositeBuilderImpl(assemblyFactory, scaBindingFactory,
intentAttachPointTypeFactory, mapper, scaDefns.getPolicySets(), null);
compositeUtil.build(composite);
@@ -210,9 +207,6 @@
staxProcessor.resolve(scaDefns, resolver);
staxProcessor.resolve(composite, resolver);
- //intents are not computed for the implementation as yet
-
assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getRequiredIntents().size(),
1);
-
CompositeBuilderImpl compositeUtil = new
CompositeBuilderImpl(assemblyFactory, scaBindingFactory,
intentAttachPointTypeFactory, mapper, scaDefns.getPolicySets(), null);
compositeUtil.build(composite);
Modified:
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java?rev=606576&r1=606575&r2=606576&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/PolicyProcessor.java
Sun Dec 23 09:16:23 2007
@@ -177,12 +177,16 @@
Method[] methods =
javaInterface.getJavaClass().getMethods();
ConfiguredOperation confOp = null;
for (Method method: methods) {
- confOp =
assemblyFactory.createConfiguredOperation();
- confOp.setName(method.getName());
- confOp.setContractName(service.getName());
- service.getConfiguredOperations().add(confOp);
- readIntents(method.getAnnotation(Requires.class),
confOp.getRequiredIntents());
-
readPolicySets(method.getAnnotation(PolicySets.class), confOp.getPolicySets());
+ if ( method.getAnnotation(Requires.class) != null
||
+ method.getAnnotation(PolicySets.class) != null
) {
+ confOp =
assemblyFactory.createConfiguredOperation();
+ confOp.setName(method.getName());
+ confOp.setContractName(service.getName());
+
+ service.getConfiguredOperations().add(confOp);
+
readIntents(method.getAnnotation(Requires.class), confOp.getRequiredIntents());
+
readPolicySets(method.getAnnotation(PolicySets.class), confOp.getPolicySets());
+ }
}
}
@@ -270,12 +274,15 @@
readPolicySets(method.getAnnotation(PolicySets.class),
reference.getPolicySets());
} else {
if ( type instanceof OperationsConfigurator ) {
- ConfiguredOperation confOp =
assemblyFactory.createConfiguredOperation();
- confOp.setName(method.getName());
-
((OperationsConfigurator)type).getConfiguredOperations().add(confOp);
+ //Read the intents specified on the given implementation method
+ if ( (method.getAnnotation(Requires.class) != null ||
+ method.getAnnotation(PolicySets.class) != null ) &&
+ (type instanceof PolicySetAttachPoint )) {
+ ConfiguredOperation confOp =
assemblyFactory.createConfiguredOperation();
+ confOp.setName(method.getName());
+
((OperationsConfigurator)type).getConfiguredOperations().add(confOp);
- // Read the intents specified on the given implementation
method
- if ( type instanceof PolicySetAttachPoint ) {
+
readIntents(method.getAnnotation(Requires.class),
confOp.getRequiredIntents());
readPolicySets(method.getAnnotation(PolicySets.class),
confOp.getPolicySets());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]