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/10 09:09:15 UTC

svn commit: r602804 - 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/ assembly/src/main/java/org/apache/tuscany/sca/assembly/im...

Author: svkrish
Date: Mon Dec 10 00:08:47 2007
New Revision: 602804

URL: http://svn.apache.org/viewvc?rev=602804&view=rev
Log:
fixing support for policies on operations, removing hack from ComponentImpl

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/BindingPolicyComputer.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.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=602804&r1=602803&r2=602804&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 Mon Dec 10 00:08:47 2007
@@ -794,21 +794,21 @@
                     //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);
+                        }
+                        
+                    }
                 }
                 
                 implementation = resolveImplementation(implementation, resolver);
                 component.setImplementation(implementation);
-                
-                //need to do this so that component can set the configured 
-                //operations to the implementation instance
-                implementation = component.getImplementation();
-                if ( implementation instanceof OperationsConfigurator ) {
-                    OperationsConfigurator opConfigurator = (OperationsConfigurator)implementation;
-                    for ( ConfiguredOperation op : opConfigurator.getConfiguredOperations() ) {
-                        resolveIntents(op.getRequiredIntents(), resolver);
-                        resolvePolicySets(op.getPolicySets(), resolver);
-                    }
-                }
             }
         }
     }

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java Mon Dec 10 00:08:47 2007
@@ -19,7 +19,6 @@
 
 package org.apache.tuscany.sca.assembly.builder.impl;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.namespace.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=602804&r1=602803&r2=602804&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 Mon Dec 10 00:08:47 2007
@@ -836,7 +836,7 @@
                 bindingPolicyComputer.computeBindingIntentsAndPolicySets(service);
                 bindingPolicyComputer.determineApplicableBindingPolicySets(service, null);
             } catch ( Exception e ) {
-                warning("Theres been an exception relation to policies... " + e, e);
+                warning("Theres been an exception related to policies... " + e, e);
                 //throw new RuntimeException(e);
             }
                 
@@ -861,7 +861,7 @@
                 bindingPolicyComputer.computeBindingIntentsAndPolicySets(reference);
                 bindingPolicyComputer.determineApplicableBindingPolicySets(reference, null);
             } catch ( Exception e ) {
-                warning("Theres been an exception relation to policies... " + e, e);
+                warning("Theres been an exception related to policies... " + e, e);
                 //throw new RuntimeException(e);
             }
         }
@@ -871,7 +871,7 @@
             try {
                 implPolicyComputer.computeImplementationIntentsAndPolicySets(implemenation, component);
             } catch ( Exception e ) {
-                warning("Theres been an exception relation to policies... " + e, e);
+                warning("Theres been an exception related to policies... " + e, e);
                 //throw new RuntimeException(e);
             }
 
@@ -907,7 +907,7 @@
                                            false);
                     }
                 } catch ( Exception e ) {
-                    warning("Theres been an exception relation to policies... " + e, e);
+                    warning("Theres been an exception related to policies... " + e, e);
                     //throw new RuntimeException(e);
                 }
             }
@@ -945,7 +945,7 @@
                                                false);
                     }
                 } catch ( Exception e ) {
-                    warning("Theres been an exception relation to policies... " + e, e);
+                    warning("Theres been an exception related to policies... " + e, e);
                     //throw new RuntimeException(e);
                 }
             }

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java Mon Dec 10 00:08:47 2007
@@ -54,7 +54,9 @@
             trimInherentlyProvidedIntents(policiedImplementation.getType(), 
                                           parent.getRequiredIntents());
             
-            computeIntentsForOperations((IntentAttachPoint)implementation, parent.getRequiredIntents());
+            computeIntentsForOperations((OperationsConfigurator)parent,
+                                        (IntentAttachPoint)implementation,
+                                        parent.getRequiredIntents());
             
             
             List<PolicySet> prunedPolicySets = computeInheritablePolicySets(parent, 
@@ -63,7 +65,9 @@
             parent.getPolicySets().clear();
             parent.getPolicySets().addAll(prunedPolicySets);
             computePolicySets(parent);
-            computePolicySetsForOperations(parent, (PolicySetAttachPoint)implementation);
+            computePolicySetsForOperations(parent, 
+                                           (OperationsConfigurator)parent, 
+                                           (PolicySetAttachPoint)implementation);
             
             determineApplicableImplementationPolicySets(parent);
         }
@@ -75,8 +79,8 @@
            
             //trim intents specified in operations.  First check for policysets specified on the operation
             //and then in the parent implementation
-            if ( component.getImplementation() instanceof OperationsConfigurator ) {
-                OperationsConfigurator opConfigurator = (OperationsConfigurator)component.getImplementation();
+            if ( component instanceof OperationsConfigurator ) {
+                OperationsConfigurator opConfigurator = (OperationsConfigurator)component;
                 
                 for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
                     trimProvidedIntents(confOp.getRequiredIntents(), confOp.getPolicySets());

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java Mon Dec 10 00:08:47 2007
@@ -28,7 +28,6 @@
 
 import org.apache.tuscany.sca.assembly.Base;
 import org.apache.tuscany.sca.assembly.ConfiguredOperation;
-import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.OperationsConfigurator;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.IntentAttachPoint;
@@ -52,21 +51,17 @@
     
     protected List<Intent> computeInheritableIntents(IntentAttachPointType attachPointType, 
                                                    List<Intent> inheritableIntents) throws PolicyValidationException {
-        //expand profile intents in inherited intents
         List<Intent> validInheritableIntents = new ArrayList<Intent>();
-        List<Intent> expandedIntents = null;
-        expandedIntents = expandProfileIntents(inheritableIntents);
-        inheritableIntents.clear();
-        inheritableIntents.addAll(expandedIntents);
+        
+        //expand profile intents in inherited intents
+        expandProfileIntents(inheritableIntents);
 
         //validate if inherited intent applies to the attachpoint (binding / implementation) and 
         //only add such intents to the attachpoint (binding / implementation)
         for (Intent intent : inheritableIntents) {
             if ( !intent.isUnresolved() ) { 
                 for (QName constrained : intent.getConstrains()) {
-                    if (attachPointType != null && attachPointType.getName().getNamespaceURI().equals(constrained
-                        .getNamespaceURI()) && attachPointType.getName().getLocalPart()
-                        .startsWith(constrained.getLocalPart())) {
+                    if ( isConstrained(constrained, attachPointType)) {
                         validInheritableIntents.add(intent);
                         break;
                     }
@@ -79,49 +74,22 @@
         return validInheritableIntents;
     }
     
-    protected List<Intent> expandProfileIntents(List<Intent> intents) {
-        List<Intent> expandedIntents = new ArrayList<Intent>();
-        for ( Intent intent : intents ) {
-            if ( intent instanceof ProfileIntent ) {
-                ProfileIntent profileIntent = (ProfileIntent)intent;
-                List<Intent> requiredIntents = profileIntent.getRequiredIntents();
-                expandedIntents.addAll(expandProfileIntents(requiredIntents));
-            } else {
-                expandedIntents.add(intent);
-            }
+    protected void expandProfileIntents(List<Intent> intents) {
+        List<Intent> expandedIntents = null;
+        if ( intents.size() > 0 ) {
+            expandedIntents = findAndExpandProfileIntents(intents);
+            intents.clear();
+            intents.addAll(expandedIntents);
         }
-        return expandedIntents;
     }
     
     protected void computeIntents(IntentAttachPoint intentAttachPoint) {
-        List<Intent> expandedIntents = null;
-        
         //expand profile intents specified in the attachpoint (binding / implementation)
-        if ( intentAttachPoint.getRequiredIntents().size() > 0 ) {
-            expandedIntents = expandProfileIntents(intentAttachPoint.getRequiredIntents());
-            intentAttachPoint.getRequiredIntents().clear();
-            intentAttachPoint.getRequiredIntents().addAll(expandedIntents);
-        }
-        
-        //remove duplicates
-        Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
-        for ( Intent intent : intentAttachPoint.getRequiredIntents() ) {
-            intentsTable.put(intent.getName(), intent);
-        }
+        expandProfileIntents(intentAttachPoint.getRequiredIntents());
         
+        //remove duplicates and ...
         //where qualified form of intent exists retain it and remove the qualifiable intent
-        Map<QName, Intent> intentsTableCopy = new HashMap<QName, Intent>(intentsTable);
-        //if qualified form of intent exists remove the unqualified form
-        for ( Intent intent : intentsTableCopy.values() ) {
-            if ( intent instanceof QualifiedIntent ) {
-                QualifiedIntent qualifiedIntent = (QualifiedIntent)intent;
-                if ( intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) != null ) {
-                    intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
-                }
-            }
-        }
-        intentAttachPoint.getRequiredIntents().clear();
-        intentAttachPoint.getRequiredIntents().addAll(intentsTable.values());
+        filterDuplicatesAndQualifiableIntents(intentAttachPoint);
     }
     
     protected void trimInherentlyProvidedIntents(IntentAttachPointType attachPointType, List<Intent>intents) {
@@ -135,117 +103,64 @@
         }
     }
     
-    protected boolean isProvidedInherently(IntentAttachPointType attachPointType, Intent intent) {
-        return ( attachPointType != null && 
-                 (( attachPointType.getAlwaysProvidedIntents() != null &&
-                     attachPointType.getAlwaysProvidedIntents().contains(intent) ) || 
-                  ( attachPointType.getMayProvideIntents() != null &&
-                     attachPointType.getMayProvideIntents().contains(intent) )
-                 ) );
-     }
     
     protected void computeIntentsForOperations(IntentAttachPoint intentAttachPoint) throws PolicyValidationException {
-        computeIntentsForOperations(intentAttachPoint, intentAttachPoint.getRequiredIntents());
+        if ( intentAttachPoint instanceof OperationsConfigurator ) {
+            computeIntentsForOperations((OperationsConfigurator)intentAttachPoint, 
+                                        intentAttachPoint, 
+                                        intentAttachPoint.getRequiredIntents());
+        }
     }
     
-    protected void computeIntentsForOperations(IntentAttachPoint intentAttachPoint, List<Intent> parentIntents) throws PolicyValidationException {
-        if ( intentAttachPoint instanceof OperationsConfigurator ) {
-            IntentAttachPointType attachPointType = intentAttachPoint.getType();
+    protected void computeIntentsForOperations(OperationsConfigurator opConfigurator, 
+                                               IntentAttachPoint intentAttachPoint, 
+                                               List<Intent> parentIntents) throws PolicyValidationException {
+        IntentAttachPointType attachPointType = intentAttachPoint.getType();
+        
+        boolean found = false;
+        for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
+            //expand profile intents specified on operations
+            expandProfileIntents(confOp.getRequiredIntents());
             
-            boolean found = false;
+            //validateIntents(confOp, attachPointType);
             
-            OperationsConfigurator opConfigurator = (OperationsConfigurator)intentAttachPoint;
-            List<Intent> expandedIntents = null;
-            for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
-                //expand profile intents specified on operations
-                if ( confOp.getRequiredIntents().size() > 0 ) {
-                    expandedIntents = expandProfileIntents(confOp.getRequiredIntents());
-                    confOp.getRequiredIntents().clear();
-                    confOp.getRequiredIntents().addAll(expandedIntents);
-                }
-                
-                if ( attachPointType != null ) {
-                    //validate intents specified against the parent (binding / implementation)
-                    found = false;
-                    for (Intent intent : confOp.getRequiredIntents()) {
-                        if ( !intent.isUnresolved() ) {
-                            for (QName constrained : intent.getConstrains()) {
-                                if (attachPointType != null && attachPointType.getName().getNamespaceURI().equals(constrained
-                                    .getNamespaceURI()) && attachPointType.getName().getLocalPart()
-                                    .startsWith(constrained.getLocalPart())) {
-                                    found = true;
-                                    break;
-                                }
-                            }
+            //add intents specified for parent intent attach point (binding / implementation)
+            //wherever its not overriden in the operation
+            Intent tempIntent = null;
+            List<Intent> attachPointOpIntents = new ArrayList<Intent>();
+            for (Intent anIntent : parentIntents) {
+                found = false;
             
-                            if (!found) {
-                                throw new PolicyValidationException("Policy Intent '" + intent.getName() 
-                                        + " specified for operation " + confOp.getName()  
-                                    + "' does not constrain extension type  "
-                                    + attachPointType.getName());
-                            }
-                        } else {
-                            throw new PolicyValidationException("Policy Intent '" + intent.getName() 
-                                    + " specified for operation " + confOp.getName()  
-                                + "' is not defined in this domain  ");
-                        }
-                    }
+                tempIntent = anIntent;
+                while ( tempIntent instanceof QualifiedIntent ) {
+                    tempIntent = ((QualifiedIntent)tempIntent).getQualifiableIntent();
                 }
                 
-                //add intents specified for parent intent attach point (binding / implementation)
-                //wherever its not overriden in the operation
-                Intent tempIntent = null;
-                List<Intent> attachPointOpIntents = new ArrayList<Intent>();
-                for (Intent anIntent : parentIntents) {
-                    found = false;
-                
-                    tempIntent = anIntent;
-                    while ( tempIntent instanceof QualifiedIntent ) {
-                        tempIntent = ((QualifiedIntent)tempIntent).getQualifiableIntent();
-                    }
-                    
-                    for ( Intent opIntent : confOp.getRequiredIntents() ) {
-                        if ( opIntent.getName().getLocalPart().startsWith(tempIntent.getName().getLocalPart())) {
-                            found = true;
-                            break;
-                        }
-                    }
-                    
-                    if ( !found ) {
-                        attachPointOpIntents.add(anIntent);
+                for ( Intent opIntent : confOp.getRequiredIntents() ) {
+                    if ( opIntent.getName().getLocalPart().startsWith(tempIntent.getName().getLocalPart())) {
+                        found = true;
+                        break;
                     }
                 }
                 
-                confOp.getRequiredIntents().addAll(attachPointOpIntents);
-                
-                //remove duplicates
-                Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
-                for ( Intent intent : confOp.getRequiredIntents() ) {
-                    intentsTable.put(intent.getName(), intent);
+                if ( !found ) {
+                    attachPointOpIntents.add(anIntent);
                 }
-                
-                //where qualified form of intent exists retain it and remove the qualifiable intent
-                Map<QName, Intent> intentsTableCopy = new HashMap<QName, Intent>(intentsTable);
-                //if qualified form of intent exists remove the unqualified form
-                for ( Intent intent : intentsTableCopy.values() ) {
-                    if ( intent instanceof QualifiedIntent ) {
-                        QualifiedIntent qualifiedIntent = (QualifiedIntent)intent;
-                        if ( intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) != null ) {
-                            intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
-                        }
-                    }
-                }
-                confOp.getRequiredIntents().clear();
-                confOp.getRequiredIntents().addAll(intentsTable.values());
-                
-                //exclude intents that are inherently supported by the parent
-                //attachpoint-type (binding-type  / implementation-type)
-                if ( attachPointType != null ) {
-                    List<Intent> requiredIntents = new ArrayList<Intent>(confOp.getRequiredIntents());
-                    for ( Intent intent : requiredIntents ) {
-                        if ( isProvidedInherently(attachPointType, intent) ) {
-                            confOp.getRequiredIntents().remove(intent);
-                        }
+            }
+            
+            confOp.getRequiredIntents().addAll(attachPointOpIntents);
+            
+            //remove duplicates and ...
+            //where qualified form of intent exists retain it and remove the qualifiable intent
+            filterDuplicatesAndQualifiableIntents(confOp);
+            
+            //exclude intents that are inherently supported by the parent
+            //attachpoint-type (binding-type  / implementation-type)
+            if ( attachPointType != null ) {
+                List<Intent> requiredIntents = new ArrayList<Intent>(confOp.getRequiredIntents());
+                for ( Intent intent : requiredIntents ) {
+                    if ( isProvidedInherently(attachPointType, intent) ) {
+                        confOp.getRequiredIntents().remove(intent);
                     }
                 }
             }
@@ -286,78 +201,67 @@
         policySetAttachPoint.getPolicySets().addAll(policySetTable.values());
             
         //expand profile intents
-        List<Intent> expandedIntents = null;
         for ( PolicySet policySet : policySetAttachPoint.getPolicySets() ) {
-            expandedIntents = expandProfileIntents(policySet.getProvidedIntents());
-            policySet.getProvidedIntents().clear();
-            policySet.getProvidedIntents().addAll(expandedIntents);
+            expandProfileIntents(policySet.getProvidedIntents());
         }
     }
     
     protected void computePolicySetsForOperations(Base parent, 
                                                   PolicySetAttachPoint policySetAttachPoint) 
                                                                         throws PolicyValidationException {
+        if ( policySetAttachPoint instanceof OperationsConfigurator ) {
+            computePolicySetsForOperations(parent, 
+                                           (OperationsConfigurator)policySetAttachPoint, 
+                                           policySetAttachPoint);
+        }
+        
+    }
+    
+    protected void computePolicySetsForOperations(Base parent, 
+                                                  OperationsConfigurator opConfigurator,
+                                                  PolicySetAttachPoint policySetAttachPoint) 
+                                                                        throws PolicyValidationException {
         String appliesTo = null;
         String scdlFragment = "";
         HashMap<QName, PolicySet> policySetTable = new HashMap<QName, PolicySet>();
         IntentAttachPointType attachPointType = policySetAttachPoint.getType();
         
-        if ( policySetAttachPoint instanceof OperationsConfigurator ) {
-            OperationsConfigurator opConfigurator = (OperationsConfigurator)policySetAttachPoint;
-            
-            for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
-                //validate policysets specified for the attachPoint
-                for (PolicySet policySet : confOp.getPolicySets()) {
-                    if ( !policySet.isUnresolved() ) {
-                        appliesTo = policySet.getAppliesTo();
-            
-                        if (!PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo, attachPointType)) {
-                            throw new PolicyValidationException("Policy Set '" + policySet.getName() 
-                                    + " specified for operation " + confOp.getName()  
-                                + "' does not constrain extension type  "
-                                + attachPointType.getName());
-            
-                        }
-                    } else {
+        for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
+            //validate policysets specified for the attachPoint
+            for (PolicySet policySet : confOp.getPolicySets()) {
+                if ( !policySet.isUnresolved() ) {
+                    appliesTo = policySet.getAppliesTo();
+        
+                    if (!PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo, attachPointType)) {
                         throw new PolicyValidationException("Policy Set '" + policySet.getName() 
                                 + " specified for operation " + confOp.getName()  
-                            + "' is not defined in this domain  ");
+                            + "' does not constrain extension type  "
+                            + attachPointType.getName());
+        
                     }
+                } else {
+                    throw new PolicyValidationException("Policy Set '" + policySet.getName() 
+                            + " specified for operation " + confOp.getName()  
+                        + "' is not defined in this domain  ");
                 }
-                
-                //get rid of duplicate entries
-                for ( PolicySet policySet : confOp.getPolicySets() ) {
-                    policySetTable.put(policySet.getName(), policySet);
-                }
+            }
             
-                confOp.getPolicySets().clear();
-                confOp.getPolicySets().addAll(policySetTable.values());
-                
-                //expand profile intents
-                List<Intent> expandedIntents = null;
-                for ( PolicySet policySet : confOp.getPolicySets() ) {
-                    expandedIntents = expandProfileIntents(policySet.getProvidedIntents());
-                    policySet.getProvidedIntents().clear();
-                    policySet.getProvidedIntents().addAll(expandedIntents);
-                }
+            //get rid of duplicate entries
+            for ( PolicySet policySet : confOp.getPolicySets() ) {
+                policySetTable.put(policySet.getName(), policySet);
             }
-        }
-    }
-    
-    protected void trimProvidedIntents(List<Intent> requiredIntents, PolicySet policySet) {
-        for ( Intent providedIntent : policySet.getProvidedIntents() ) {
-            if ( requiredIntents.contains(providedIntent) ) {
-                requiredIntents.remove(providedIntent);
-            } 
-        }
         
-        for ( Intent mappedIntent : policySet.getMappedPolicies().keySet() ) {
-            if ( requiredIntents.contains(mappedIntent) ) {
-                requiredIntents.remove(mappedIntent);
-            } 
+            confOp.getPolicySets().clear();
+            confOp.getPolicySets().addAll(policySetTable.values());
+            
+            //expand profile intents
+            for ( PolicySet policySet : confOp.getPolicySets() ) {
+                expandProfileIntents(policySet.getProvidedIntents());
+            }
         }
     }
     
+        
     protected void trimProvidedIntents(List<Intent> requiredIntents, List<PolicySet> policySets) {
         for ( PolicySet policySet : policySets ) {
             trimProvidedIntents(requiredIntents, policySet);
@@ -378,6 +282,100 @@
                     if (prevSize != policySetAttachPoint.getRequiredIntents().size()) {
                         policySetAttachPoint.getPolicySets().add(policySet);
                     }
+                }
+            }
+        }
+    }
+    
+    private List<Intent> findAndExpandProfileIntents(List<Intent> intents) {
+        List<Intent> expandedIntents = new ArrayList<Intent>();
+        for ( Intent intent : intents ) {
+            if ( intent instanceof ProfileIntent ) {
+                ProfileIntent profileIntent = (ProfileIntent)intent;
+                List<Intent> requiredIntents = profileIntent.getRequiredIntents();
+                expandedIntents.addAll(findAndExpandProfileIntents(requiredIntents));
+            } else {
+                expandedIntents.add(intent);
+            }
+        }
+        return expandedIntents;
+    }
+    
+    private boolean isProvidedInherently(IntentAttachPointType attachPointType, Intent intent) {
+        return ( attachPointType != null && 
+                 (( attachPointType.getAlwaysProvidedIntents() != null &&
+                     attachPointType.getAlwaysProvidedIntents().contains(intent) ) || 
+                  ( attachPointType.getMayProvideIntents() != null &&
+                     attachPointType.getMayProvideIntents().contains(intent) )
+                 ) );
+     }
+    
+    private void trimProvidedIntents(List<Intent> requiredIntents, PolicySet policySet) {
+        for ( Intent providedIntent : policySet.getProvidedIntents() ) {
+            if ( requiredIntents.contains(providedIntent) ) {
+                requiredIntents.remove(providedIntent);
+            } 
+        }
+        
+        for ( Intent mappedIntent : policySet.getMappedPolicies().keySet() ) {
+            if ( requiredIntents.contains(mappedIntent) ) {
+                requiredIntents.remove(mappedIntent);
+            } 
+        }
+    }
+    
+    private boolean isConstrained(QName constrained, IntentAttachPointType attachPointType) {
+        return (attachPointType != null && attachPointType.getName().getNamespaceURI().equals(constrained
+                                                                                      .getNamespaceURI()) && attachPointType.getName().getLocalPart()
+                                                                                      .startsWith(constrained.getLocalPart()) );
+    }
+    
+    private void filterDuplicatesAndQualifiableIntents(IntentAttachPoint intentAttachPoint) {
+        //remove duplicates
+        Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
+        for ( Intent intent : intentAttachPoint.getRequiredIntents() ) {
+            intentsTable.put(intent.getName(), intent);
+        }
+        
+        //where qualified form of intent exists retain it and remove the qualifiable intent
+        Map<QName, Intent> intentsTableCopy = new HashMap<QName, Intent>(intentsTable);
+        //if qualified form of intent exists remove the unqualified form
+        for ( Intent intent : intentsTableCopy.values() ) {
+            if ( intent instanceof QualifiedIntent ) {
+                QualifiedIntent qualifiedIntent = (QualifiedIntent)intent;
+                if ( intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) != null ) {
+                    intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
+                }
+            }
+        }
+        intentAttachPoint.getRequiredIntents().clear();
+        intentAttachPoint.getRequiredIntents().addAll(intentsTable.values());
+    }
+    
+    private void validateIntents(ConfiguredOperation confOp, IntentAttachPointType attachPointType) throws PolicyValidationException {
+        boolean found = false;
+        if ( attachPointType != null ) {
+            //validate intents specified against the parent (binding / implementation)
+            found = false;
+            for (Intent intent : confOp.getRequiredIntents()) {
+                if ( !intent.isUnresolved() ) {
+                    for (QName constrained : intent.getConstrains()) {
+                        if (isConstrained(constrained, attachPointType)) {
+                            found = true;
+                            break;
+                        }
+                    }
+        
+                    if (!found) {
+                        throw new PolicyValidationException("Policy Intent '" + intent.getName() 
+                                + " specified for operation " + confOp.getName()  
+                            + "' does not constrain extension type  "
+                            + attachPointType.getName());
+                    }
+                } else {
+                    throw new PolicyValidationException("Policy Intent '" + intent.getName() 
+                            + " specified for operation " + confOp.getName()  
+                        + "' is not defined in this domain  ");
                 }
             }
         }

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java Mon Dec 10 00:08:47 2007
@@ -39,7 +39,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public class ComponentImpl extends ExtensibleImpl implements Component, Cloneable {
+public class ComponentImpl extends ExtensibleImpl implements Component, Cloneable, OperationsConfigurator {
     private ConstrainingType constrainingType;
     private Implementation implementation;
     private String name;
@@ -51,13 +51,7 @@
     private List<PolicySet> policySets = new ArrayList<PolicySet>();
     private Boolean autowire;
     private IntentAttachPointType type;
-    
-    private PolicySetAttachPoint implPolicyConf = new PolicySetAttachPointImpl();
-    private List<ConfiguredOperation> configuredImplOps = new ArrayList<ConfiguredOperation>();
-    //private PolicyContext policyContext = new PolicyContextImpl();
-    //private Map<String, Object> policyContext = new Hashtable<String, Object>();
-    //String IMPL_POLICY_CONTEXT = "IMPL_POLICY_CONTEXT";
-    //String IMPL_OPERATIONS_POLICY_CONTEXT = "IMPL_OPERATIONS_POLICY_CONTEXT";
+    private List<ConfiguredOperation>  configuredImplOperations = new ArrayList<ConfiguredOperation>();
 
     /**
      * Constructs a new component.
@@ -97,16 +91,6 @@
     }
 
     public Implementation getImplementation() {
-        if ( implementation instanceof PolicySetAttachPoint ) {
-            PolicySetAttachPoint policiedImpl = (PolicySetAttachPoint)implementation;
-            
-            /*policiedImpl.setRequiredIntents(implPolicyConf.getRequiredIntents());
-            policiedImpl.setPolicySets(implPolicyConf.getPolicySets());*/
-            
-            if ( implementation instanceof OperationsConfigurator ) {
-                ((OperationsConfigurator)implementation).setConfiguredOperations(configuredImplOps);
-            }
-        }
         return implementation;
     }
 
@@ -132,21 +116,6 @@
 
     public void setImplementation(Implementation implementation) {
         this.implementation = implementation;
-        if ( implementation instanceof PolicySetAttachPoint 
-            && implementation.isUnresolved() )  {
-            /*PolicySetAttachPoint policiedImpl = (PolicySetAttachPoint)implementation;
-            implPolicyConf.getRequiredIntents().addAll(policiedImpl.getRequiredIntents());
-            implPolicyConf.getPolicySets().addAll(policiedImpl.getPolicySets());
-            */
-            if ( implementation instanceof OperationsConfigurator ) {
-                OperationsConfigurator operationConfig = (OperationsConfigurator)implementation;
-            
-                if ( operationConfig.getConfiguredOperations() != null &&
-                        !operationConfig.getConfiguredOperations().isEmpty() ) {
-                    configuredImplOps.addAll(operationConfig.getConfiguredOperations());
-                }
-            }
-        }
     }
 
     public void setName(String name) {
@@ -190,6 +159,15 @@
         this.requiredIntents = intents;
         
     }
+    
+    public List<ConfiguredOperation> getConfiguredOperations() {
+        return configuredImplOperations;
+    }
+
+    public void setConfiguredOperations(List<ConfiguredOperation> configuredOperations) {
+        this.configuredImplOperations = configuredOperations;
+    }
+
     
     private class PolicySetAttachPointImpl implements PolicySetAttachPoint {
         private List<Intent> requiredIntents = new ArrayList<Intent>();

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java Mon Dec 10 00:08:47 2007
@@ -126,14 +126,6 @@
         this.requiredIntents = intents;
     }
     
-    public List<ConfiguredOperation> getConfiguredOperations() {
-        return configuredOperations;
-    }
-
-    public void setConfiguredOperations(List<ConfiguredOperation> configuredOperations) {
-        this.configuredOperations = configuredOperations;
-    }
-
     @Override
     public int hashCode() {
         return String.valueOf(getURI()).hashCode();
@@ -154,5 +146,13 @@
                 return false;
             }
         }
+    }
+
+    public List<ConfiguredOperation> getConfiguredOperations() {
+        return configuredOperations;
+    }
+
+    public void setConfiguredOperations(List<ConfiguredOperation> configuredOperations) {
+        this.configuredOperations = configuredOperations;
     }
 }

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java?rev=602804&r1=602803&r2=602804&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java Mon Dec 10 00:08:47 2007
@@ -80,7 +80,7 @@
                         applicablePolicyHandlers = new ArrayList<PolicyHandler>();
                         if ( javaImpl instanceof OperationsConfigurator ) {
                             String operationName = chain.getTargetOperation().getName();
-                            OperationsConfigurator opConfigurator = (OperationsConfigurator)javaImpl;
+                            OperationsConfigurator opConfigurator = (OperationsConfigurator)component;
                             for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
                                 if ( confOp.getName().equals(operationName)) {
                                     for ( PolicySet policySet : confOp.getPolicySets() ) {

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=602804&r1=602803&r2=602804&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 Mon Dec 10 00:08:47 2007
@@ -170,7 +170,7 @@
         }
 
         //test for proper aggregation of policy intents and policysets on operations of implementation
-        OperationsConfigurator opConf = (OperationsConfigurator)composite.getComponents().get(5).getImplementation();
+        OperationsConfigurator opConf = (OperationsConfigurator)composite.getComponents().get(5);
         assertEquals(opConf.getConfiguredOperations().get(0).getRequiredIntents().size(), 4);
         for ( Intent intent :  opConf.getConfiguredOperations().get(0).getRequiredIntents()) {
             String intentName = intent.getName().getLocalPart();
@@ -180,7 +180,7 @@
             }
         }
         
-        opConf = (OperationsConfigurator)composite.getComponents().get(6).getImplementation();
+        opConf = (OperationsConfigurator)composite.getComponents().get(6);
         assertEquals(opConf.getConfiguredOperations().get(0).getRequiredIntents().size(), 3);
         for ( Intent intent :  opConf.getConfiguredOperations().get(0).getRequiredIntents()) {
             String intentName = intent.getName().getLocalPart();
@@ -238,7 +238,7 @@
         }
 
         //test for computation of policysets on operations of implementation
-        OperationsConfigurator opConf = (OperationsConfigurator)composite.getComponents().get(5).getImplementation();
+        OperationsConfigurator opConf = (OperationsConfigurator)composite.getComponents().get(5);
         assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(), 3);
         for ( PolicySet policySet : opConf.getConfiguredOperations().get(0).getPolicySets() ) {
             String policySetName = policySet.getName().getLocalPart();
@@ -248,7 +248,7 @@
             }
         }
         
-        opConf = (OperationsConfigurator)composite.getComponents().get(6).getImplementation();
+        opConf = (OperationsConfigurator)composite.getComponents().get(6);
         assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(), 3);
         for ( PolicySet policySet : opConf.getConfiguredOperations().get(0).getPolicySets() ) {
             String policySetName = policySet.getName().getLocalPart();



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org


Re: svn commit: r602804 - 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/ assembly/src/main/java/org/apache/tuscany/sca/assembly/im

Posted by Raymond Feng <en...@gmail.com>.
Hi,

I see a few issues here:

1) The operation-level intents/policySets can be configured under the 
service, reference, binding and implementation elements. The contractName 
property of ConfiguredOperation interface is not good fit.

2) Using name to reference the attach point is not consistent with our model 
because it requires lookup.

3) In 
org.apache.tuscany.sca.assembly.xml.ConfiguredOperationProcessor.read(), the 
following line won't work because there is no "service" attribute on the 
operation element.
    configuredOp.setContractName(reader.getAttributeValue(null, SERVICE);

The model should be designed in such a way so that runtime can easily 
calculate the effective policySets for a given context represented as 
(component, service/reference, binding, operation) or 
(component/implementation, operation). Would it be simpler if we hold the 
intents/policySets at the binding (for interaction policies) and component 
(for implementation policies)? The intent/policySet could have a pointer to 
the attachpoint & operation.

Thanks,
Raymond

----- Original Message ----- 
From: <sv...@apache.org>
To: <tu...@ws.apache.org>
Sent: Monday, December 10, 2007 12:09 AM
Subject: svn commit: r602804 - 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/ 
assembly/src/main/java/org/apache/tuscany/sca/assembly/im...


> Author: svkrish
> Date: Mon Dec 10 00:08:47 2007
> New Revision: 602804
>
> URL: http://svn.apache.org/viewvc?rev=602804&view=rev
> Log:
> fixing support for policies on operations, removing hack from 
> ComponentImpl
>
> 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/BindingPolicyComputer.java
> 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeWireBuilderImpl.java
> 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
> 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
> 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
> 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
> 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
> 
> incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.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=602804&r1=602803&r2=602804&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 
> Mon Dec 10 00:08:47 2007
> @@ -794,21 +794,21 @@
>                     //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);
> +                        }
> +
> +                    }
>                 }
>
>                 implementation = resolveImplementation(implementation, 
> resolver);
>                 component.setImplementation(implementation);
> -
> -                //need to do this so that component can set the 
> configured
> -                //operations to the implementation instance
> -                implementation = component.getImplementation();
> -                if ( implementation instanceof OperationsConfigurator ) {
> -                    OperationsConfigurator opConfigurator = 
> (OperationsConfigurator)implementation;
> -                    for ( ConfiguredOperation op : 
> opConfigurator.getConfiguredOperations() ) {
> -                        resolveIntents(op.getRequiredIntents(), 
> resolver);
> -                        resolvePolicySets(op.getPolicySets(), resolver);
> -                    }
> -                }
>             }
>         }
>     }
>
> Modified: 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java?rev=602804&r1=602803&r2=602804&view=diff
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BindingPolicyComputer.java 
> Mon Dec 10 00:08:47 2007
> @@ -19,7 +19,6 @@
>
> package org.apache.tuscany.sca.assembly.builder.impl;
>
> -import java.util.ArrayList;
> import java.util.List;
>
> import javax.xml.namespace.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=602804&r1=602803&r2=602804&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 
> Mon Dec 10 00:08:47 2007
> @@ -836,7 +836,7 @@
> 
> bindingPolicyComputer.computeBindingIntentsAndPolicySets(service);
> 
> bindingPolicyComputer.determineApplicableBindingPolicySets(service, null);
>             } catch ( Exception e ) {
> -                warning("Theres been an exception relation to policies... 
> " + e, e);
> +                warning("Theres been an exception related to policies... 
> " + e, e);
>                 //throw new RuntimeException(e);
>             }
>
> @@ -861,7 +861,7 @@
> 
> bindingPolicyComputer.computeBindingIntentsAndPolicySets(reference);
> 
> bindingPolicyComputer.determineApplicableBindingPolicySets(reference, 
> null);
>             } catch ( Exception e ) {
> -                warning("Theres been an exception relation to policies... 
> " + e, e);
> +                warning("Theres been an exception related to policies... 
> " + e, e);
>                 //throw new RuntimeException(e);
>             }
>         }
> @@ -871,7 +871,7 @@
>             try {
> 
> implPolicyComputer.computeImplementationIntentsAndPolicySets(implemenation, 
> component);
>             } catch ( Exception e ) {
> -                warning("Theres been an exception relation to policies... 
> " + e, e);
> +                warning("Theres been an exception related to policies... 
> " + e, e);
>                 //throw new RuntimeException(e);
>             }
>
> @@ -907,7 +907,7 @@
>                                            false);
>                     }
>                 } catch ( Exception e ) {
> -                    warning("Theres been an exception relation to 
> policies... " + e, e);
> +                    warning("Theres been an exception related to 
> policies... " + e, e);
>                     //throw new RuntimeException(e);
>                 }
>             }
> @@ -945,7 +945,7 @@
>                                                false);
>                     }
>                 } catch ( Exception e ) {
> -                    warning("Theres been an exception relation to 
> policies... " + e, e);
> +                    warning("Theres been an exception related to 
> policies... " + e, e);
>                     //throw new RuntimeException(e);
>                 }
>             }
>
> Modified: 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java?rev=602804&r1=602803&r2=602804&view=diff
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java 
> Mon Dec 10 00:08:47 2007
> @@ -54,7 +54,9 @@
> 
> trimInherentlyProvidedIntents(policiedImplementation.getType(),
>                                           parent.getRequiredIntents());
>
> - 
> computeIntentsForOperations((IntentAttachPoint)implementation, 
> parent.getRequiredIntents());
> +            computeIntentsForOperations((OperationsConfigurator)parent,
> + 
> (IntentAttachPoint)implementation,
> +                                        parent.getRequiredIntents());
>
>
>             List<PolicySet> prunedPolicySets = 
> computeInheritablePolicySets(parent,
> @@ -63,7 +65,9 @@
>             parent.getPolicySets().clear();
>             parent.getPolicySets().addAll(prunedPolicySets);
>             computePolicySets(parent);
> -            computePolicySetsForOperations(parent, 
> (PolicySetAttachPoint)implementation);
> +            computePolicySetsForOperations(parent,
> + 
> (OperationsConfigurator)parent,
> + 
> (PolicySetAttachPoint)implementation);
>
>             determineApplicableImplementationPolicySets(parent);
>         }
> @@ -75,8 +79,8 @@
>
>             //trim intents specified in operations.  First check for 
> policysets specified on the operation
>             //and then in the parent implementation
> -            if ( component.getImplementation() instanceof 
> OperationsConfigurator ) {
> -                OperationsConfigurator opConfigurator = 
> (OperationsConfigurator)component.getImplementation();
> +            if ( component instanceof OperationsConfigurator ) {
> +                OperationsConfigurator opConfigurator = 
> (OperationsConfigurator)component;
>
>                 for ( ConfiguredOperation confOp : 
> opConfigurator.getConfiguredOperations() ) {
>                     trimProvidedIntents(confOp.getRequiredIntents(), 
> confOp.getPolicySets());
>
> Modified: 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java?rev=602804&r1=602803&r2=602804&view=diff
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java 
> Mon Dec 10 00:08:47 2007
> @@ -28,7 +28,6 @@
>
> import org.apache.tuscany.sca.assembly.Base;
> import org.apache.tuscany.sca.assembly.ConfiguredOperation;
> -import org.apache.tuscany.sca.assembly.Implementation;
> import org.apache.tuscany.sca.assembly.OperationsConfigurator;
> import org.apache.tuscany.sca.policy.Intent;
> import org.apache.tuscany.sca.policy.IntentAttachPoint;
> @@ -52,21 +51,17 @@
>
>     protected List<Intent> computeInheritableIntents(IntentAttachPointType 
> attachPointType,
>                                                    List<Intent> 
> inheritableIntents) throws PolicyValidationException {
> -        //expand profile intents in inherited intents
>         List<Intent> validInheritableIntents = new ArrayList<Intent>();
> -        List<Intent> expandedIntents = null;
> -        expandedIntents = expandProfileIntents(inheritableIntents);
> -        inheritableIntents.clear();
> -        inheritableIntents.addAll(expandedIntents);
> +
> +        //expand profile intents in inherited intents
> +        expandProfileIntents(inheritableIntents);
>
>         //validate if inherited intent applies to the attachpoint (binding 
> / implementation) and
>         //only add such intents to the attachpoint (binding / 
> implementation)
>         for (Intent intent : inheritableIntents) {
>             if ( !intent.isUnresolved() ) {
>                 for (QName constrained : intent.getConstrains()) {
> -                    if (attachPointType != null && 
> attachPointType.getName().getNamespaceURI().equals(constrained
> -                        .getNamespaceURI()) && 
> attachPointType.getName().getLocalPart()
> -                        .startsWith(constrained.getLocalPart())) {
> +                    if ( isConstrained(constrained, attachPointType)) {
>                         validInheritableIntents.add(intent);
>                         break;
>                     }
> @@ -79,49 +74,22 @@
>         return validInheritableIntents;
>     }
>
> -    protected List<Intent> expandProfileIntents(List<Intent> intents) {
> -        List<Intent> expandedIntents = new ArrayList<Intent>();
> -        for ( Intent intent : intents ) {
> -            if ( intent instanceof ProfileIntent ) {
> -                ProfileIntent profileIntent = (ProfileIntent)intent;
> -                List<Intent> requiredIntents = 
> profileIntent.getRequiredIntents();
> - 
> expandedIntents.addAll(expandProfileIntents(requiredIntents));
> -            } else {
> -                expandedIntents.add(intent);
> -            }
> +    protected void expandProfileIntents(List<Intent> intents) {
> +        List<Intent> expandedIntents = null;
> +        if ( intents.size() > 0 ) {
> +            expandedIntents = findAndExpandProfileIntents(intents);
> +            intents.clear();
> +            intents.addAll(expandedIntents);
>         }
> -        return expandedIntents;
>     }
>
>     protected void computeIntents(IntentAttachPoint intentAttachPoint) {
> -        List<Intent> expandedIntents = null;
> -
>         //expand profile intents specified in the attachpoint (binding / 
> implementation)
> -        if ( intentAttachPoint.getRequiredIntents().size() > 0 ) {
> -            expandedIntents = 
> expandProfileIntents(intentAttachPoint.getRequiredIntents());
> -            intentAttachPoint.getRequiredIntents().clear();
> - 
> intentAttachPoint.getRequiredIntents().addAll(expandedIntents);
> -        }
> -
> -        //remove duplicates
> -        Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
> -        for ( Intent intent : intentAttachPoint.getRequiredIntents() ) {
> -            intentsTable.put(intent.getName(), intent);
> -        }
> +        expandProfileIntents(intentAttachPoint.getRequiredIntents());
>
> +        //remove duplicates and ...
>         //where qualified form of intent exists retain it and remove the 
> qualifiable intent
> -        Map<QName, Intent> intentsTableCopy = new HashMap<QName, 
> Intent>(intentsTable);
> -        //if qualified form of intent exists remove the unqualified form
> -        for ( Intent intent : intentsTableCopy.values() ) {
> -            if ( intent instanceof QualifiedIntent ) {
> -                QualifiedIntent qualifiedIntent = 
> (QualifiedIntent)intent;
> -                if ( 
> intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) != 
> null ) {
> - 
> intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
> -                }
> -            }
> -        }
> -        intentAttachPoint.getRequiredIntents().clear();
> - 
> intentAttachPoint.getRequiredIntents().addAll(intentsTable.values());
> +        filterDuplicatesAndQualifiableIntents(intentAttachPoint);
>     }
>
>     protected void trimInherentlyProvidedIntents(IntentAttachPointType 
> attachPointType, List<Intent>intents) {
> @@ -135,117 +103,64 @@
>         }
>     }
>
> -    protected boolean isProvidedInherently(IntentAttachPointType 
> attachPointType, Intent intent) {
> -        return ( attachPointType != null &&
> -                 (( attachPointType.getAlwaysProvidedIntents() != null &&
> - 
> attachPointType.getAlwaysProvidedIntents().contains(intent) ) ||
> -                  ( attachPointType.getMayProvideIntents() != null &&
> - 
> attachPointType.getMayProvideIntents().contains(intent) )
> -                 ) );
> -     }
>
>     protected void computeIntentsForOperations(IntentAttachPoint 
> intentAttachPoint) throws PolicyValidationException {
> -        computeIntentsForOperations(intentAttachPoint, 
> intentAttachPoint.getRequiredIntents());
> +        if ( intentAttachPoint instanceof OperationsConfigurator ) {
> + 
> computeIntentsForOperations((OperationsConfigurator)intentAttachPoint,
> +                                        intentAttachPoint,
> + 
> intentAttachPoint.getRequiredIntents());
> +        }
>     }
>
> -    protected void computeIntentsForOperations(IntentAttachPoint 
> intentAttachPoint, List<Intent> parentIntents) throws 
> PolicyValidationException {
> -        if ( intentAttachPoint instanceof OperationsConfigurator ) {
> -            IntentAttachPointType attachPointType = 
> intentAttachPoint.getType();
> +    protected void computeIntentsForOperations(OperationsConfigurator 
> opConfigurator,
> +                                               IntentAttachPoint 
> intentAttachPoint,
> +                                               List<Intent> 
> parentIntents) throws PolicyValidationException {
> +        IntentAttachPointType attachPointType = 
> intentAttachPoint.getType();
> +
> +        boolean found = false;
> +        for ( ConfiguredOperation confOp : 
> opConfigurator.getConfiguredOperations() ) {
> +            //expand profile intents specified on operations
> +            expandProfileIntents(confOp.getRequiredIntents());
>
> -            boolean found = false;
> +            //validateIntents(confOp, attachPointType);
>
> -            OperationsConfigurator opConfigurator = 
> (OperationsConfigurator)intentAttachPoint;
> -            List<Intent> expandedIntents = null;
> -            for ( ConfiguredOperation confOp : 
> opConfigurator.getConfiguredOperations() ) {
> -                //expand profile intents specified on operations
> -                if ( confOp.getRequiredIntents().size() > 0 ) {
> -                    expandedIntents = 
> expandProfileIntents(confOp.getRequiredIntents());
> -                    confOp.getRequiredIntents().clear();
> -                    confOp.getRequiredIntents().addAll(expandedIntents);
> -                }
> -
> -                if ( attachPointType != null ) {
> -                    //validate intents specified against the parent 
> (binding / implementation)
> -                    found = false;
> -                    for (Intent intent : confOp.getRequiredIntents()) {
> -                        if ( !intent.isUnresolved() ) {
> -                            for (QName constrained : 
> intent.getConstrains()) {
> -                                if (attachPointType != null && 
> attachPointType.getName().getNamespaceURI().equals(constrained
> -                                    .getNamespaceURI()) && 
> attachPointType.getName().getLocalPart()
> - 
> .startsWith(constrained.getLocalPart())) {
> -                                    found = true;
> -                                    break;
> -                                }
> -                            }
> +            //add intents specified for parent intent attach point 
> (binding / implementation)
> +            //wherever its not overriden in the operation
> +            Intent tempIntent = null;
> +            List<Intent> attachPointOpIntents = new ArrayList<Intent>();
> +            for (Intent anIntent : parentIntents) {
> +                found = false;
>
> -                            if (!found) {
> -                                throw new 
> PolicyValidationException("Policy Intent '" + intent.getName()
> -                                        + " specified for operation " + 
> confOp.getName()
> -                                    + "' does not constrain extension 
> type  "
> -                                    + attachPointType.getName());
> -                            }
> -                        } else {
> -                            throw new PolicyValidationException("Policy 
> Intent '" + intent.getName()
> -                                    + " specified for operation " + 
> confOp.getName()
> -                                + "' is not defined in this domain  ");
> -                        }
> -                    }
> +                tempIntent = anIntent;
> +                while ( tempIntent instanceof QualifiedIntent ) {
> +                    tempIntent = 
> ((QualifiedIntent)tempIntent).getQualifiableIntent();
>                 }
>
> -                //add intents specified for parent intent attach point 
> (binding / implementation)
> -                //wherever its not overriden in the operation
> -                Intent tempIntent = null;
> -                List<Intent> attachPointOpIntents = new 
> ArrayList<Intent>();
> -                for (Intent anIntent : parentIntents) {
> -                    found = false;
> -
> -                    tempIntent = anIntent;
> -                    while ( tempIntent instanceof QualifiedIntent ) {
> -                        tempIntent = 
> ((QualifiedIntent)tempIntent).getQualifiableIntent();
> -                    }
> -
> -                    for ( Intent opIntent : confOp.getRequiredIntents() ) 
> {
> -                        if ( 
> opIntent.getName().getLocalPart().startsWith(tempIntent.getName().getLocalPart())) 
> {
> -                            found = true;
> -                            break;
> -                        }
> -                    }
> -
> -                    if ( !found ) {
> -                        attachPointOpIntents.add(anIntent);
> +                for ( Intent opIntent : confOp.getRequiredIntents() ) {
> +                    if ( 
> opIntent.getName().getLocalPart().startsWith(tempIntent.getName().getLocalPart())) 
> {
> +                        found = true;
> +                        break;
>                     }
>                 }
>
> -                confOp.getRequiredIntents().addAll(attachPointOpIntents);
> -
> -                //remove duplicates
> -                Map<QName, Intent> intentsTable = new HashMap<QName, 
> Intent>();
> -                for ( Intent intent : confOp.getRequiredIntents() ) {
> -                    intentsTable.put(intent.getName(), intent);
> +                if ( !found ) {
> +                    attachPointOpIntents.add(anIntent);
>                 }
> -
> -                //where qualified form of intent exists retain it and 
> remove the qualifiable intent
> -                Map<QName, Intent> intentsTableCopy = new HashMap<QName, 
> Intent>(intentsTable);
> -                //if qualified form of intent exists remove the 
> unqualified form
> -                for ( Intent intent : intentsTableCopy.values() ) {
> -                    if ( intent instanceof QualifiedIntent ) {
> -                        QualifiedIntent qualifiedIntent = 
> (QualifiedIntent)intent;
> -                        if ( 
> intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) != 
> null ) {
> - 
> intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
> -                        }
> -                    }
> -                }
> -                confOp.getRequiredIntents().clear();
> - 
> confOp.getRequiredIntents().addAll(intentsTable.values());
> -
> -                //exclude intents that are inherently supported by the 
> parent
> -                //attachpoint-type (binding-type  / implementation-type)
> -                if ( attachPointType != null ) {
> -                    List<Intent> requiredIntents = new 
> ArrayList<Intent>(confOp.getRequiredIntents());
> -                    for ( Intent intent : requiredIntents ) {
> -                        if ( isProvidedInherently(attachPointType, 
> intent) ) {
> -                            confOp.getRequiredIntents().remove(intent);
> -                        }
> +            }
> +
> +            confOp.getRequiredIntents().addAll(attachPointOpIntents);
> +
> +            //remove duplicates and ...
> +            //where qualified form of intent exists retain it and remove 
> the qualifiable intent
> +            filterDuplicatesAndQualifiableIntents(confOp);
> +
> +            //exclude intents that are inherently supported by the parent
> +            //attachpoint-type (binding-type  / implementation-type)
> +            if ( attachPointType != null ) {
> +                List<Intent> requiredIntents = new 
> ArrayList<Intent>(confOp.getRequiredIntents());
> +                for ( Intent intent : requiredIntents ) {
> +                    if ( isProvidedInherently(attachPointType, intent) ) 
> {
> +                        confOp.getRequiredIntents().remove(intent);
>                     }
>                 }
>             }
> @@ -286,78 +201,67 @@
> 
> policySetAttachPoint.getPolicySets().addAll(policySetTable.values());
>
>         //expand profile intents
> -        List<Intent> expandedIntents = null;
>         for ( PolicySet policySet : policySetAttachPoint.getPolicySets() ) 
> {
> -            expandedIntents = 
> expandProfileIntents(policySet.getProvidedIntents());
> -            policySet.getProvidedIntents().clear();
> -            policySet.getProvidedIntents().addAll(expandedIntents);
> +            expandProfileIntents(policySet.getProvidedIntents());
>         }
>     }
>
>     protected void computePolicySetsForOperations(Base parent,
>                                                   PolicySetAttachPoint 
> policySetAttachPoint)
> 
> throws PolicyValidationException {
> +        if ( policySetAttachPoint instanceof OperationsConfigurator ) {
> +            computePolicySetsForOperations(parent,
> + 
> (OperationsConfigurator)policySetAttachPoint,
> +                                           policySetAttachPoint);
> +        }
> +
> +    }
> +
> +    protected void computePolicySetsForOperations(Base parent,
> +                                                  OperationsConfigurator 
> opConfigurator,
> +                                                  PolicySetAttachPoint 
> policySetAttachPoint)
> + 
> throws PolicyValidationException {
>         String appliesTo = null;
>         String scdlFragment = "";
>         HashMap<QName, PolicySet> policySetTable = new HashMap<QName, 
> PolicySet>();
>         IntentAttachPointType attachPointType = 
> policySetAttachPoint.getType();
>
> -        if ( policySetAttachPoint instanceof OperationsConfigurator ) {
> -            OperationsConfigurator opConfigurator = 
> (OperationsConfigurator)policySetAttachPoint;
> -
> -            for ( ConfiguredOperation confOp : 
> opConfigurator.getConfiguredOperations() ) {
> -                //validate policysets specified for the attachPoint
> -                for (PolicySet policySet : confOp.getPolicySets()) {
> -                    if ( !policySet.isUnresolved() ) {
> -                        appliesTo = policySet.getAppliesTo();
> -
> -                        if 
> (!PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo, 
> attachPointType)) {
> -                            throw new PolicyValidationException("Policy 
> Set '" + policySet.getName()
> -                                    + " specified for operation " + 
> confOp.getName()
> -                                + "' does not constrain extension type  "
> -                                + attachPointType.getName());
> -
> -                        }
> -                    } else {
> +        for ( ConfiguredOperation confOp : 
> opConfigurator.getConfiguredOperations() ) {
> +            //validate policysets specified for the attachPoint
> +            for (PolicySet policySet : confOp.getPolicySets()) {
> +                if ( !policySet.isUnresolved() ) {
> +                    appliesTo = policySet.getAppliesTo();
> +
> +                    if 
> (!PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo, 
> attachPointType)) {
>                         throw new PolicyValidationException("Policy Set '" 
> + policySet.getName()
>                                 + " specified for operation " + 
> confOp.getName()
> -                            + "' is not defined in this domain  ");
> +                            + "' does not constrain extension type  "
> +                            + attachPointType.getName());
> +
>                     }
> +                } else {
> +                    throw new PolicyValidationException("Policy Set '" + 
> policySet.getName()
> +                            + " specified for operation " + 
> confOp.getName()
> +                        + "' is not defined in this domain  ");
>                 }
> -
> -                //get rid of duplicate entries
> -                for ( PolicySet policySet : confOp.getPolicySets() ) {
> -                    policySetTable.put(policySet.getName(), policySet);
> -                }
> +            }
>
> -                confOp.getPolicySets().clear();
> -                confOp.getPolicySets().addAll(policySetTable.values());
> -
> -                //expand profile intents
> -                List<Intent> expandedIntents = null;
> -                for ( PolicySet policySet : confOp.getPolicySets() ) {
> -                    expandedIntents = 
> expandProfileIntents(policySet.getProvidedIntents());
> -                    policySet.getProvidedIntents().clear();
> - 
> policySet.getProvidedIntents().addAll(expandedIntents);
> -                }
> +            //get rid of duplicate entries
> +            for ( PolicySet policySet : confOp.getPolicySets() ) {
> +                policySetTable.put(policySet.getName(), policySet);
>             }
> -        }
> -    }
> -
> -    protected void trimProvidedIntents(List<Intent> requiredIntents, 
> PolicySet policySet) {
> -        for ( Intent providedIntent : policySet.getProvidedIntents() ) {
> -            if ( requiredIntents.contains(providedIntent) ) {
> -                requiredIntents.remove(providedIntent);
> -            }
> -        }
>
> -        for ( Intent mappedIntent : 
> policySet.getMappedPolicies().keySet() ) {
> -            if ( requiredIntents.contains(mappedIntent) ) {
> -                requiredIntents.remove(mappedIntent);
> -            }
> +            confOp.getPolicySets().clear();
> +            confOp.getPolicySets().addAll(policySetTable.values());
> +
> +            //expand profile intents
> +            for ( PolicySet policySet : confOp.getPolicySets() ) {
> +                expandProfileIntents(policySet.getProvidedIntents());
> +            }
>         }
>     }
>
> +
>     protected void trimProvidedIntents(List<Intent> requiredIntents, 
> List<PolicySet> policySets) {
>         for ( PolicySet policySet : policySets ) {
>             trimProvidedIntents(requiredIntents, policySet);
> @@ -378,6 +282,100 @@
>                     if (prevSize != 
> policySetAttachPoint.getRequiredIntents().size()) {
> 
> policySetAttachPoint.getPolicySets().add(policySet);
>                     }
> +                }
> +            }
> +        }
> +    }
> +
> +    private List<Intent> findAndExpandProfileIntents(List<Intent> 
> intents) {
> +        List<Intent> expandedIntents = new ArrayList<Intent>();
> +        for ( Intent intent : intents ) {
> +            if ( intent instanceof ProfileIntent ) {
> +                ProfileIntent profileIntent = (ProfileIntent)intent;
> +                List<Intent> requiredIntents = 
> profileIntent.getRequiredIntents();
> + 
> expandedIntents.addAll(findAndExpandProfileIntents(requiredIntents));
> +            } else {
> +                expandedIntents.add(intent);
> +            }
> +        }
> +        return expandedIntents;
> +    }
> +
> +    private boolean isProvidedInherently(IntentAttachPointType 
> attachPointType, Intent intent) {
> +        return ( attachPointType != null &&
> +                 (( attachPointType.getAlwaysProvidedIntents() != null &&
> + 
> attachPointType.getAlwaysProvidedIntents().contains(intent) ) ||
> +                  ( attachPointType.getMayProvideIntents() != null &&
> + 
> attachPointType.getMayProvideIntents().contains(intent) )
> +                 ) );
> +     }
> +
> +    private void trimProvidedIntents(List<Intent> requiredIntents, 
> PolicySet policySet) {
> +        for ( Intent providedIntent : policySet.getProvidedIntents() ) {
> +            if ( requiredIntents.contains(providedIntent) ) {
> +                requiredIntents.remove(providedIntent);
> +            }
> +        }
> +
> +        for ( Intent mappedIntent : 
> policySet.getMappedPolicies().keySet() ) {
> +            if ( requiredIntents.contains(mappedIntent) ) {
> +                requiredIntents.remove(mappedIntent);
> +            }
> +        }
> +    }
> +
> +    private boolean isConstrained(QName constrained, 
> IntentAttachPointType attachPointType) {
> +        return (attachPointType != null && 
> attachPointType.getName().getNamespaceURI().equals(constrained
> + 
> .getNamespaceURI()) && attachPointType.getName().getLocalPart()
> + 
> .startsWith(constrained.getLocalPart()) );
> +    }
> +
> +    private void filterDuplicatesAndQualifiableIntents(IntentAttachPoint 
> intentAttachPoint) {
> +        //remove duplicates
> +        Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
> +        for ( Intent intent : intentAttachPoint.getRequiredIntents() ) {
> +            intentsTable.put(intent.getName(), intent);
> +        }
> +
> +        //where qualified form of intent exists retain it and remove the 
> qualifiable intent
> +        Map<QName, Intent> intentsTableCopy = new HashMap<QName, 
> Intent>(intentsTable);
> +        //if qualified form of intent exists remove the unqualified form
> +        for ( Intent intent : intentsTableCopy.values() ) {
> +            if ( intent instanceof QualifiedIntent ) {
> +                QualifiedIntent qualifiedIntent = 
> (QualifiedIntent)intent;
> +                if ( 
> intentsTable.get(qualifiedIntent.getQualifiableIntent().getName()) != 
> null ) {
> + 
> intentsTable.remove(qualifiedIntent.getQualifiableIntent().getName());
> +                }
> +            }
> +        }
> +        intentAttachPoint.getRequiredIntents().clear();
> + 
> intentAttachPoint.getRequiredIntents().addAll(intentsTable.values());
> +    }
> +
> +    private void validateIntents(ConfiguredOperation confOp, 
> IntentAttachPointType attachPointType) throws PolicyValidationException {
> +        boolean found = false;
> +        if ( attachPointType != null ) {
> +            //validate intents specified against the parent (binding / 
> implementation)
> +            found = false;
> +            for (Intent intent : confOp.getRequiredIntents()) {
> +                if ( !intent.isUnresolved() ) {
> +                    for (QName constrained : intent.getConstrains()) {
> +                        if (isConstrained(constrained, attachPointType)) 
> {
> +                            found = true;
> +                            break;
> +                        }
> +                    }
> +
> +                    if (!found) {
> +                        throw new PolicyValidationException("Policy 
> Intent '" + intent.getName()
> +                                + " specified for operation " + 
> confOp.getName()
> +                            + "' does not constrain extension type  "
> +                            + attachPointType.getName());
> +                    }
> +                } else {
> +                    throw new PolicyValidationException("Policy Intent '" 
> + intent.getName()
> +                            + " specified for operation " + 
> confOp.getName()
> +                        + "' is not defined in this domain  ");
>                 }
>             }
>         }
>
> Modified: 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java?rev=602804&r1=602803&r2=602804&view=diff
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentImpl.java 
> Mon Dec 10 00:08:47 2007
> @@ -39,7 +39,7 @@
>  *
>  * @version $Rev$ $Date$
>  */
> -public class ComponentImpl extends ExtensibleImpl implements Component, 
> Cloneable {
> +public class ComponentImpl extends ExtensibleImpl implements Component, 
> Cloneable, OperationsConfigurator {
>     private ConstrainingType constrainingType;
>     private Implementation implementation;
>     private String name;
> @@ -51,13 +51,7 @@
>     private List<PolicySet> policySets = new ArrayList<PolicySet>();
>     private Boolean autowire;
>     private IntentAttachPointType type;
> -
> -    private PolicySetAttachPoint implPolicyConf = new 
> PolicySetAttachPointImpl();
> -    private List<ConfiguredOperation> configuredImplOps = new 
> ArrayList<ConfiguredOperation>();
> -    //private PolicyContext policyContext = new PolicyContextImpl();
> -    //private Map<String, Object> policyContext = new Hashtable<String, 
> Object>();
> -    //String IMPL_POLICY_CONTEXT = "IMPL_POLICY_CONTEXT";
> -    //String IMPL_OPERATIONS_POLICY_CONTEXT = 
> "IMPL_OPERATIONS_POLICY_CONTEXT";
> +    private List<ConfiguredOperation>  configuredImplOperations = new 
> ArrayList<ConfiguredOperation>();
>
>     /**
>      * Constructs a new component.
> @@ -97,16 +91,6 @@
>     }
>
>     public Implementation getImplementation() {
> -        if ( implementation instanceof PolicySetAttachPoint ) {
> -            PolicySetAttachPoint policiedImpl = 
> (PolicySetAttachPoint)implementation;
> -
> - 
> /*policiedImpl.setRequiredIntents(implPolicyConf.getRequiredIntents());
> -            policiedImpl.setPolicySets(implPolicyConf.getPolicySets());*/
> -
> -            if ( implementation instanceof OperationsConfigurator ) {
> - 
> ((OperationsConfigurator)implementation).setConfiguredOperations(configuredImplOps);
> -            }
> -        }
>         return implementation;
>     }
>
> @@ -132,21 +116,6 @@
>
>     public void setImplementation(Implementation implementation) {
>         this.implementation = implementation;
> -        if ( implementation instanceof PolicySetAttachPoint
> -            && implementation.isUnresolved() )  {
> -            /*PolicySetAttachPoint policiedImpl = 
> (PolicySetAttachPoint)implementation;
> - 
> implPolicyConf.getRequiredIntents().addAll(policiedImpl.getRequiredIntents());
> - 
> implPolicyConf.getPolicySets().addAll(policiedImpl.getPolicySets());
> -            */
> -            if ( implementation instanceof OperationsConfigurator ) {
> -                OperationsConfigurator operationConfig = 
> (OperationsConfigurator)implementation;
> -
> -                if ( operationConfig.getConfiguredOperations() != null &&
> - 
> !operationConfig.getConfiguredOperations().isEmpty() ) {
> - 
> configuredImplOps.addAll(operationConfig.getConfiguredOperations());
> -                }
> -            }
> -        }
>     }
>
>     public void setName(String name) {
> @@ -190,6 +159,15 @@
>         this.requiredIntents = intents;
>
>     }
> +
> +    public List<ConfiguredOperation> getConfiguredOperations() {
> +        return configuredImplOperations;
> +    }
> +
> +    public void setConfiguredOperations(List<ConfiguredOperation> 
> configuredOperations) {
> +        this.configuredImplOperations = configuredOperations;
> +    }
> +
>
>     private class PolicySetAttachPointImpl implements PolicySetAttachPoint 
> {
>         private List<Intent> requiredIntents = new ArrayList<Intent>();
>
> Modified: 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java?rev=602804&r1=602803&r2=602804&view=diff
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ComponentTypeImpl.java 
> Mon Dec 10 00:08:47 2007
> @@ -126,14 +126,6 @@
>         this.requiredIntents = intents;
>     }
>
> -    public List<ConfiguredOperation> getConfiguredOperations() {
> -        return configuredOperations;
> -    }
> -
> -    public void setConfiguredOperations(List<ConfiguredOperation> 
> configuredOperations) {
> -        this.configuredOperations = configuredOperations;
> -    }
> -
>     @Override
>     public int hashCode() {
>         return String.valueOf(getURI()).hashCode();
> @@ -154,5 +146,13 @@
>                 return false;
>             }
>         }
> +    }
> +
> +    public List<ConfiguredOperation> getConfiguredOperations() {
> +        return configuredOperations;
> +    }
> +
> +    public void setConfiguredOperations(List<ConfiguredOperation> 
> configuredOperations) {
> +        this.configuredOperations = configuredOperations;
>     }
> }
>
> Modified: 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java?rev=602804&r1=602803&r2=602804&view=diff
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/JavaPolicyHandlingRuntimeWireProcessor.java 
> Mon Dec 10 00:08:47 2007
> @@ -80,7 +80,7 @@
>                         applicablePolicyHandlers = new 
> ArrayList<PolicyHandler>();
>                         if ( javaImpl instanceof OperationsConfigurator ) 
> {
>                             String operationName = 
> chain.getTargetOperation().getName();
> -                            OperationsConfigurator opConfigurator = 
> (OperationsConfigurator)javaImpl;
> +                            OperationsConfigurator opConfigurator = 
> (OperationsConfigurator)component;
>                             for ( ConfiguredOperation confOp : 
> opConfigurator.getConfiguredOperations() ) {
>                                 if ( 
> confOp.getName().equals(operationName)) {
>                                     for ( PolicySet policySet : 
> confOp.getPolicySets() ) {
>
> 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=602804&r1=602803&r2=602804&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 
> Mon Dec 10 00:08:47 2007
> @@ -170,7 +170,7 @@
>         }
>
>         //test for proper aggregation of policy intents and policysets on 
> operations of implementation
> -        OperationsConfigurator opConf = 
> (OperationsConfigurator)composite.getComponents().get(5).getImplementation();
> +        OperationsConfigurator opConf = 
> (OperationsConfigurator)composite.getComponents().get(5);
> 
> assertEquals(opConf.getConfiguredOperations().get(0).getRequiredIntents().size(), 
> 4);
>         for ( Intent intent : 
> opConf.getConfiguredOperations().get(0).getRequiredIntents()) {
>             String intentName = intent.getName().getLocalPart();
> @@ -180,7 +180,7 @@
>             }
>         }
>
> -        opConf = 
> (OperationsConfigurator)composite.getComponents().get(6).getImplementation();
> +        opConf = 
> (OperationsConfigurator)composite.getComponents().get(6);
> 
> assertEquals(opConf.getConfiguredOperations().get(0).getRequiredIntents().size(), 
> 3);
>         for ( Intent intent : 
> opConf.getConfiguredOperations().get(0).getRequiredIntents()) {
>             String intentName = intent.getName().getLocalPart();
> @@ -238,7 +238,7 @@
>         }
>
>         //test for computation of policysets on operations of 
> implementation
> -        OperationsConfigurator opConf = 
> (OperationsConfigurator)composite.getComponents().get(5).getImplementation();
> +        OperationsConfigurator opConf = 
> (OperationsConfigurator)composite.getComponents().get(5);
> 
> assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(), 
> 3);
>         for ( PolicySet policySet : 
> opConf.getConfiguredOperations().get(0).getPolicySets() ) {
>             String policySetName = policySet.getName().getLocalPart();
> @@ -248,7 +248,7 @@
>             }
>         }
>
> -        opConf = 
> (OperationsConfigurator)composite.getComponents().get(6).getImplementation();
> +        opConf = 
> (OperationsConfigurator)composite.getComponents().get(6);
> 
> assertEquals(opConf.getConfiguredOperations().get(0).getPolicySets().size(), 
> 3);
>         for ( PolicySet policySet : 
> opConf.getConfiguredOperations().get(0).getPolicySets() ) {
>             String policySetName = policySet.getName().getLocalPart();
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-commits-help@ws.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org