You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/12/23 18:16:24 UTC

svn commit: r606576 - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ implementation-java-xml/src/test/java/org/apache/tuscany/...

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: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org