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]

Reply via email to