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/08 21:07:59 UTC

svn commit: r602541 [2/3] - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ assembly-xml/src/test/resources/org/apache/tuscany/sca/a...

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=602541&r1=602540&r2=602541&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 Sat Dec  8 12:07:56 2007
@@ -63,7 +63,9 @@
     private CompositeBuilderMonitor monitor;
     private AssemblyFactory assemblyFactory;
     private InterfaceContractMapper interfaceContractMapper;
-    private List<PolicySet> domainPolicySets; 
+    
+    private BindingPolicyComputer bindingPolicyComputer = null;
+    private ImplementationPolicyComputer implPolicyComputer = null;
     
     //Represents a target component and service
     private class Target {
@@ -88,7 +90,9 @@
         this.assemblyFactory = assemblyFactory;
         this.interfaceContractMapper = interfaceContractMapper;
         this.monitor = monitor;
-        this.domainPolicySets = domainPolicySets;
+        
+        this.bindingPolicyComputer = new BindingPolicyComputer(domainPolicySets);
+        this.implPolicyComputer = new ImplementationPolicyComputer(domainPolicySets);
     }
 
     /**
@@ -491,7 +495,12 @@
                     targetComponentService = CompositeConfigurationBuilderImpl.getPromotedComponentService(compositeService);
                 }
                 
-                determineApplicableBindingPolicySets(componentReference, targetComponentService);
+                try  {
+                    bindingPolicyComputer.determineApplicableBindingPolicySets(componentReference, targetComponentService);
+                } catch ( Exception e ) {
+                    warning("Theres been an exception relation to policies... " + e, e);
+                    //throw new RuntimeException(e);
+                }
 
                 // Match the binding against the bindings of the target service
                 Binding selected = BindingUtil.resolveBindings(componentReference, targetComponent, targetComponentService);
@@ -793,88 +802,85 @@
         }
     }
     
-    public void computePolicies(Composite composite) {
-        List<Intent> compositeIntents = null;
-        List<PolicySet> compositePolicySets = null;
-        if (composite instanceof PolicySetAttachPoint) {
-            compositeIntents = ((PolicySetAttachPoint)composite).getRequiredIntents();
-            compositePolicySets = ((PolicySetAttachPoint)composite).getPolicySets();
+    private void addPoliciesFromPromotedService(CompositeService compositeService) {
+        //inherit intents and policies from promoted service
+        addInheritedIntents(compositeService.getPromotedService().getRequiredIntents(), 
+                            compositeService.getRequiredIntents());
+        addInheritedPolicySets(compositeService.getPromotedService().getPolicySets(), 
+                               compositeService.getPolicySets(), true);
+        addInheritedOperationConfigurations(compositeService.getPromotedService(), compositeService);
+    }
+    
+    private void addPoliciesFromPromotedReference(CompositeReference compositeReference) {
+        for ( Reference promotedReference : compositeReference.getPromotedReferences() ) {
+           addInheritedIntents(promotedReference.getRequiredIntents(), 
+                               compositeReference.getRequiredIntents());
+       
+           addInheritedPolicySets(promotedReference.getPolicySets(), 
+                                  compositeReference.getPolicySets(), true);
+           addInheritedOperationConfigurations(promotedReference, compositeReference);
         }
+    }
+
+    
+    public void computePolicies(Composite composite) {
         
         //compute policies for composite service bindings
         for (Service service : composite.getServices()) {
-            CompositeService compositeService = (CompositeService)service;
-            
-            //inherit intents and policysets defined at composite level
-            addInheritedIntents(compositeIntents, service.getRequiredIntents());
-            addInheritedPolicySets(compositePolicySets, service.getPolicySets(), false);
-            
-            //inherit intents and policies from promoted service
-            addInheritedIntents(compositeService.getPromotedService().getRequiredIntents(), 
-                                compositeService.getRequiredIntents());
-            addInheritedPolicySets(compositeService.getPromotedService().getPolicySets(), 
-                                   compositeService.getPolicySets(), true);
-            addInheritedOperationConfigurations(compositeService.getPromotedService(), compositeService);
-            
-            if (compositeService.getCallback() != null) {
-                addInheritedIntents(compositeService.getRequiredIntents(), 
-                                    compositeService.getCallback().getRequiredIntents());
-                addInheritedPolicySets(compositeService.getPolicySets(), 
-                                       compositeService.getCallback().getPolicySets(), 
-                                       false);
+            addPoliciesFromPromotedService((CompositeService)service);
+            try {
+                //compute the intents for operations under service element
+                bindingPolicyComputer.computeIntentsForOperations(service);
+                //add or merge service operations to the binding
+                addInheritedOpConfOnBindings(service);
+                bindingPolicyComputer.computeBindingIntentsAndPolicySets(service);
+                bindingPolicyComputer.determineApplicableBindingPolicySets(service, null);
+            } catch ( Exception e ) {
+                warning("Theres been an exception relation to policies... " + e, e);
+                //throw new RuntimeException(e);
             }
-            
-            computeBindingIntentsAndPolicySets(service);
-            determineApplicableBindingPolicySets(service, null);
+                
         }
-        
+    
         for (Reference reference : composite.getReferences()) {
-            addInheritedIntents(compositeIntents, reference.getRequiredIntents());
-            addInheritedPolicySets(compositePolicySets, reference.getPolicySets(), false);
-            
             CompositeReference compReference = (CompositeReference)reference;
-            for ( Reference promotedReference : compReference.getPromotedReferences() ) {
-                addInheritedIntents(promotedReference.getRequiredIntents(), 
-                                     reference.getRequiredIntents());
-            
-                addInheritedPolicySets(promotedReference.getPolicySets(), 
-                                     reference.getPolicySets(), true);
-                addInheritedOperationConfigurations(promotedReference, compReference);
+            addPoliciesFromPromotedReference(compReference);
+            try {
+                //compute the intents for operations under service element
+                bindingPolicyComputer.computeIntentsForOperations(reference);
+                addInheritedOpConfOnBindings(reference);
+                
+                if (compReference.getCallback() != null) {
+                    addInheritedIntents(compReference.getRequiredIntents(), 
+                                        compReference.getCallback().getRequiredIntents());
+                    addInheritedPolicySets(compReference.getPolicySets(), 
+                                           compReference.getCallback().getPolicySets(), 
+                                           false);
+                }
                 
+                bindingPolicyComputer.computeBindingIntentsAndPolicySets(reference);
+                bindingPolicyComputer.determineApplicableBindingPolicySets(reference, null);
+            } catch ( Exception e ) {
+                warning("Theres been an exception relation to policies... " + e, e);
+                //throw new RuntimeException(e);
             }
-            
-            if (compReference.getCallback() != null) {
-                addInheritedIntents(compReference.getRequiredIntents(), 
-                                    compReference.getCallback().getRequiredIntents());
-                addInheritedPolicySets(compReference.getPolicySets(), 
-                                       compReference.getCallback().getPolicySets(), 
-                                       false);
-            }
-            
-            computeBindingIntentsAndPolicySets(reference);
-            determineApplicableBindingPolicySets(reference, null);
         }
-        
+    
         for (Component component : composite.getComponents()) {
-            //Inherit intents defined at the composite level
-            addInheritedIntents(compositeIntents, component.getRequiredIntents());
-            
-            // Inherit policysets defined at the composite level
-            addInheritedPolicySets(compositePolicySets, component.getPolicySets(), false);
-            
-            Implementation implemenation = component.getImplementation();
-            computeImplementationIntentsAndPolicySets(implemenation, component);
-            
-            for (ComponentService componentService : component.getServices()) {
-                //inherit intents and policysets from component
-                addInheritedIntents(component.getRequiredIntents(), componentService.getRequiredIntents());
-                addInheritedPolicySets(component.getPolicySets(), componentService.getPolicySets(), false);
+            Implementation implemenation = component.getImplementation(); 
+            try {
+                implPolicyComputer.computeImplementationIntentsAndPolicySets(implemenation, component);
+            } catch ( Exception e ) {
+                warning("Theres been an exception relation to policies... " + e, e);
+                //throw new RuntimeException(e);
+            }
 
+            for (ComponentService componentService : component.getServices()) {
                 Service service = componentService.getService();
                 if (service != null) {
                     // reconcile intents and policysets
-                    addInheritedIntents(service.getRequiredIntents(), componentService.getRequiredIntents());
-                    addInheritedPolicySets(service.getPolicySets(), componentService.getPolicySets(), true);
+                     addInheritedIntents(service.getRequiredIntents(), componentService.getRequiredIntents());
+                     addInheritedPolicySets(service.getPolicySets(), componentService.getPolicySets(), true);
                 }
                 
                 if ( componentService.getCallback() != null ) {
@@ -885,16 +891,28 @@
                                            false);
                 }
                 
-                //compute intents and policyset for each binding
-                computeBindingIntentsAndPolicySets(componentService);
-                determineApplicableBindingPolicySets(componentService, null);
+                try {
+                    //compute the intents for operations under service element
+                    bindingPolicyComputer.computeIntentsForOperations(componentService);
+                    //compute intents and policyset for each binding
+                    addInheritedOpConfOnBindings(componentService);
+                    bindingPolicyComputer.computeBindingIntentsAndPolicySets(componentService);
+                    bindingPolicyComputer.determineApplicableBindingPolicySets(componentService, null);
+    
+                    if ( componentService.getCallback() != null ) {
+                        addInheritedIntents(componentService.getRequiredIntents(), 
+                                        componentService.getCallback().getRequiredIntents());
+                        addInheritedPolicySets(componentService.getPolicySets(), 
+                                           componentService.getCallback().getPolicySets(), 
+                                           false);
+                    }
+                } catch ( Exception e ) {
+                    warning("Theres been an exception relation to policies... " + e, e);
+                    //throw new RuntimeException(e);
+                }
             }
-            
+        
             for (ComponentReference componentReference : component.getReferences()) {
-                //inherit intents and policysets from component
-                addInheritedIntents(component.getRequiredIntents(), componentReference.getRequiredIntents());
-                addInheritedPolicySets(component.getPolicySets(), componentReference.getPolicySets(), false);
-
                 Reference reference = componentReference.getReference();
                 if (reference != null) {
                     // reconcile intents and policysets
@@ -910,11 +928,28 @@
                                            false);
                 }
                 
-                //compute intents and policyset for each binding
-                computeBindingIntentsAndPolicySets(componentReference);
-                determineApplicableBindingPolicySets(componentReference, null);
+                try {
+                    //compute the intents for operations under service element
+                    bindingPolicyComputer.computeIntentsForOperations(componentReference);
+                    //compute intents and policyset for each binding
+                    addInheritedOpConfOnBindings(componentReference);
+                    bindingPolicyComputer.computeBindingIntentsAndPolicySets(componentReference);
+                    bindingPolicyComputer.determineApplicableBindingPolicySets(componentReference, null);
+    
+                
+                    if ( componentReference.getCallback() != null ) {
+                        addInheritedIntents(componentReference.getRequiredIntents(), 
+                                            componentReference.getCallback().getRequiredIntents());
+                        addInheritedPolicySets(componentReference.getPolicySets(), 
+                                               componentReference.getCallback().getPolicySets(), 
+                                               false);
+                    }
+                } catch ( Exception e ) {
+                    warning("Theres been an exception relation to policies... " + e, e);
+                    //throw new RuntimeException(e);
+                }
             }
-        }
+        } 
         
     }
     
@@ -927,29 +962,6 @@
         }
     }
     
-    private void addInheritedOperationConfigurations(OperationsConfigurator source, OperationsConfigurator target) {
-        boolean found = false;
-        List<ConfiguredOperation> additionalOperations = new ArrayList<ConfiguredOperation>();
-        for ( ConfiguredOperation sourceConfOp : source.getConfiguredOperations() ) {
-            for ( ConfiguredOperation targetConfOp : target.getConfiguredOperations() ) {
-                if ( sourceConfOp.getName().equals(targetConfOp.getName())) {
-                    addInheritedIntents(sourceConfOp.getRequiredIntents(), targetConfOp.getRequiredIntents());
-                    addInheritedPolicySets(sourceConfOp.getPolicySets(), targetConfOp.getPolicySets(), true);
-                    found = true;
-                    break;
-                }
-            }
-            if ( !found ) {
-                additionalOperations.add(sourceConfOp);
-            }
-        }
-        
-        if ( !additionalOperations.isEmpty() ) {
-            target.getConfiguredOperations().addAll(additionalOperations);
-        }
-        
-    }
-    
     private  void addInheritedPolicySets(List<PolicySet> sourceList, List<PolicySet> targetList, boolean checkOverrides) {
         //check overrides is true when policysets are to be copied from componentType to component level
         if ( checkOverrides ) {
@@ -973,573 +985,34 @@
         }
     }
 
-    private void computeIntentsForIntentAttachPoint(IntentAttachPoint intentAttachPoint, List<Intent> inheritedIntents) {
+    private void addInheritedOperationConfigurations(OperationsConfigurator source, OperationsConfigurator target) {
         boolean found = false;
-        List<Intent> expandedIntents = null;
-        
-        IntentAttachPointType attachPointType = intentAttachPoint.getType();
-
-        //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);
-        }
-        
-        //validate intents specified for the attachpoint (binding / implementation)
-        for (Intent intent : intentAttachPoint.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;
-                    }
-                }
-    
-                if (!found) {
-                    warning("Policy Intent '" + intent.getName()
-                        + "' does not constrain extension type  "
-                        + attachPointType.getName(), intentAttachPoint);
-                }
-            } else {
-                warning("Policy Intent '" + intent.getName() + "' is not defined in this domain", intent);
-            }
-        }
         
-        //expand profile intents in inherited intents
-        expandedIntents = expandProfileIntents(inheritedIntents);
-        inheritedIntents.clear();
-        inheritedIntents.addAll(expandedIntents);
-
-        //validate if inherited intent applies to the attachpoint (binding / implementation) and 
-        //only add such intents to the attachpoint (binding / implementation)
-        for (Intent intent : inheritedIntents) {
-            if ( !intent.isUnresolved() ) { 
-                for (QName constrained : intent.getConstrains()) {
-                    if (attachPointType != null && attachPointType.getName().getNamespaceURI().equals(constrained
-                        .getNamespaceURI()) && attachPointType.getName().getLocalPart()
-                        .startsWith(constrained.getLocalPart())) {
-                        intentAttachPoint.getRequiredIntents().add(intent);
-                        break;
-                    }
-                }
-            } else {
-                warning("Policy Intent '" + intent.getName() + "' is not defined in this domain", intent);
-            }
-        }
-        
-        //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());
-        
-        //exclude intents that are inherently supported by the 
-        //attachpoint-type (binding-type  / implementation-type)
-        List<Intent> requiredIntents = new ArrayList<Intent>(intentAttachPoint.getRequiredIntents());
-        for ( Intent intent : requiredIntents ) {
-            if ( isProvidedInherently(attachPointType, intent) ) {
-                intentAttachPoint.getRequiredIntents().remove(intent);
-            }
-        }
-        
-    }
-    
-    private void computePolicySetsForPolicySetAttachPoint(Base parent,
-                                                          PolicySetAttachPoint policySetAttachPoint,
-                                                          List<PolicySet> inheritedPolicySets) {
-       String appliesTo = null;
-       HashMap<QName, PolicySet> policySetTable = new HashMap<QName, PolicySet>();
-       IntentAttachPointType attachPointType = policySetAttachPoint.getType();
-
-       //validate policysets specified for the attachPoint
-       for (PolicySet policySet : policySetAttachPoint.getPolicySets()) {
-           appliesTo = policySet.getAppliesTo();
-           if ( !policySet.isUnresolved() ) {
-               if (!isPolicySetApplicable(parent, appliesTo, attachPointType)) {
-                   warning("Policy Set '" + policySet.getName()
-                       + "' does not apply to binding type  "
-                       + attachPointType, policySetAttachPoint);
-    
-               } }
-           else {
-               warning("Policy Set '" + policySet.getName()
-                      + "' is not defined in this domain  ", policySet);
-           }
-       }
-           
-       //from the inherited set of policysets add only what applies to the attach point
-       for (PolicySet policySet : inheritedPolicySets) {
-           if ( !policySet.isUnresolved() ) { 
-               appliesTo = policySet.getAppliesTo();
-               if (isPolicySetApplicable(parent, appliesTo, attachPointType)) {
-                   policySetAttachPoint.getPolicySets().add(policySet);
-               }
-           } else {
-               warning("Policy Set '" + policySet.getName()
-                       + "' is not defined in this domain  ", policySet);
-           }
-               
-       }
-           
-       //get rid of duplicate entries
-       for ( PolicySet policySet : policySetAttachPoint.getPolicySets() ) {
-           policySetTable.put(policySet.getName(), policySet);
-       }
-       
-       policySetAttachPoint.getPolicySets().clear();
-       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);
-       }
-   }
-    
-    private void determineApplicableDomainPolicySets(Base parentElement,
-                                                     PolicySetAttachPoint policySetAttachPoint,
-                                                     IntentAttachPointType intentAttachPointType) {
-        if (policySetAttachPoint.getRequiredIntents().size() > 0) {
-            for (PolicySet policySet : domainPolicySets) {
-                if (isPolicySetApplicable(parentElement, policySet.getAppliesTo(), intentAttachPointType)) {
-                    int prevSize = policySetAttachPoint.getRequiredIntents().size();
-                    trimProvidedIntents(policySetAttachPoint.getRequiredIntents(), policySet);
-                    // if any intent was trimmed off, then this policyset must
-                    // be attached to the intent attachpoint's policyset
-                    if (prevSize != policySetAttachPoint.getRequiredIntents().size()) {
-                        policySetAttachPoint.getPolicySets().add(policySet);
-                    }
+        List<ConfiguredOperation> additionalOperations = new ArrayList<ConfiguredOperation>();
+        for ( ConfiguredOperation sourceConfOp : source.getConfiguredOperations() ) {
+            for ( ConfiguredOperation targetConfOp : target.getConfiguredOperations() ) {
+                if ( sourceConfOp.getName().equals(targetConfOp.getName())) {
+                    addInheritedIntents(sourceConfOp.getRequiredIntents(), targetConfOp.getRequiredIntents());
+                    addInheritedPolicySets(sourceConfOp.getPolicySets(), targetConfOp.getPolicySets(), true);
+                    found = true;
+                    break;
                 }
             }
-        }
-    }
-    
-    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 void trimProvidedIntents(List<Intent> requiredIntents, List<PolicySet> policySets) {
-        for ( PolicySet policySet : policySets ) {
-            trimProvidedIntents(requiredIntents, policySet);
-        }
-    }
-    
-    private 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);
-            }
-        }
-        return expandedIntents;
-    }
-    
-    private boolean isPolicySetApplicable(Base parent,
-                                          String xpath,
-                                          IntentAttachPointType attachPointType) {
-        
-        //FIXME: For now do a simple check and later implement whatever is mentioned in the next comment
-        if (xpath != null && attachPointType != null) {
-            if (xpath.indexOf(attachPointType.getName().getLocalPart()) != -1) {
-                return true;
-            }
-            // FIXME: [rfeng] Need to handle xml inheritance
-            if(attachPointType.getName().getLocalPart().startsWith("binding.")) {
-                return xpath.endsWith("binding");
-            }
-            if(attachPointType.getName().getLocalPart().startsWith("implementation.")) {
-                return xpath.endsWith("implementation");
+            
+            if ( !found ) {
+                additionalOperations.add(sourceConfOp);
             }
         }
-
-        return false;
-         
-        //create a xml node out of the parent object.. i.e. write the parent object as scdl fragment
-        //invoke PropertyUtil.evaluate(null, node, xpath)
-        //verify the result Node's QName against the bindingType's name
         
-        /*if (parent instanceof ComponentReference) {
-        } else if (parent instanceof ComponentReference) {
-        } else if (parent instanceof Component) {
-        } else if (parent instanceof CompositeService) {
-        } else if (parent instanceof CompositeReference) {
-
+        if ( !additionalOperations.isEmpty() ) {
+            target.getConfiguredOperations().addAll(additionalOperations);
         }
-        return true;*/
     }
     
-
-    private boolean isProvidedInherently(IntentAttachPointType attachPointType, Intent intent) {
-        return ( attachPointType != null && 
-                 (( attachPointType.getAlwaysProvidedIntents() != null &&
-                     attachPointType.getAlwaysProvidedIntents().contains(intent) ) || 
-                  ( attachPointType.getMayProvideIntents() != null &&
-                     attachPointType.getMayProvideIntents().contains(intent) )
-                 ) );
-     }
-    
-    /******************************************************************************************************/
-    /*policy computation methods applicable to binding types */
-    /*****************************************************************************************************/
-    private void computeBindingIntentsAndPolicySets(Contract contract) {
-        computeIntents(contract.getBindings(), contract.getRequiredIntents());
-        computePolicySets(contract, contract.getBindings(), contract.getPolicySets());
-        
+    private void addInheritedOpConfOnBindings(Contract contract) {      
         for ( Binding binding : contract.getBindings() ) {
             if ( binding instanceof OperationsConfigurator ) {
                 addInheritedOperationConfigurations(contract, (OperationsConfigurator)binding);
-            }
-            
-            if ( binding instanceof IntentAttachPoint ) {
-                computeIntentsForOperations((IntentAttachPoint)binding);
-            }
-            
-            if ( binding instanceof PolicySetAttachPoint ) {
-                computePolicySetsForOperations(contract, (PolicySetAttachPoint)binding);
-            }
-        }
-        
-        if ( contract.getCallback() != null ) {
-            computeIntents(contract.getCallback().getBindings(), 
-                           contract.getCallback().getRequiredIntents());
-            computePolicySets(contract, 
-                              contract.getCallback().getBindings(), 
-                              contract.getCallback().getPolicySets());
-        }
-    }
-    
-    private void computeIntents(List<Binding> bindings, List<Intent> inheritedIntents) {
-        for (Binding binding : bindings) {
-            if (binding instanceof IntentAttachPoint) {
-                computeIntentsForIntentAttachPoint((IntentAttachPoint)binding, inheritedIntents);
-            }
-        }
-    }
-    
-    
-    private void computePolicySets(Base parent,
-                                   List<Binding> bindings,
-                                   List<PolicySet> inheritedPolicySets) {
-        for (Binding binding : bindings) {
-            if ( binding instanceof PolicySetAttachPoint ) {
-                computePolicySetsForPolicySetAttachPoint(parent, (PolicySetAttachPoint)binding, inheritedPolicySets);
-            }
-        }
-    }
-    
-    private void determineApplicableDomainPolicySets(Contract contract, PolicySetAttachPoint policiedBinding) {
-        if ( domainPolicySets != null) {
-            determineApplicableDomainPolicySets(contract, 
-                                                policiedBinding,
-                                                policiedBinding.getType());
-            
-            if ( policiedBinding.getRequiredIntents().size() > 0 ) {
-                if ( contract instanceof Service ) {
-                    warning("There are unfulfilled intents for binding in service - " + contract.getName(), contract);
-                } else {
-                    warning("There are unfulfilled intents for binding in reference - " + contract.getName(), contract);
-                }
-            }
-        }
-    }
-    
-    
-    private void determineApplicableBindingPolicySets(Contract source, Contract target) {
-        for (Binding aBinding : source.getBindings()) {
-            if (aBinding instanceof PolicySetAttachPoint) {
-                PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)aBinding;
-                IntentAttachPointType bindingType = policiedBinding.getType();
-
-                // add the target component's intents to the reference binding
-                if (target != null) {
-                    for (Intent intent : target.getRequiredIntents()) {
-                        if (!policiedBinding.getRequiredIntents().contains(intent)) {
-                            for (QName constrained : intent.getConstrains()) {
-                                if (bindingType != null && bindingType.getName().getNamespaceURI()
-                                    .equals(constrained.getNamespaceURI())
-                                    && bindingType.getName().getLocalPart().startsWith(constrained
-                                        .getLocalPart())) {
-                                    policiedBinding.getRequiredIntents().add(intent);
-                                    break;
-                                }
-                            }
-                        }
-                    }
-                }
-                
-                //trim intents specified in operations.  First check for policysets specified on the operation
-                //and then in the parent implementation
-                if ( aBinding instanceof OperationsConfigurator ) {
-                    OperationsConfigurator opConfigurator = (OperationsConfigurator)aBinding;
-                    
-                    for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
-                        trimProvidedIntents(confOp.getRequiredIntents(), confOp.getPolicySets());
-                        trimProvidedIntents(confOp.getRequiredIntents(), policiedBinding.getPolicySets());
-                    }
-                }
-
-                trimProvidedIntents(policiedBinding.getRequiredIntents(), policiedBinding
-                    .getPolicySets());
-
-                // determine additional policysets that match remaining intents
-                // TODO: resolved to domain policy registry and attach suitable
-                // policy sets to the binding
-                // for now using the SCA Definitions instead of registry
-                // if there are intents that are not provided by any policy set
-                // throw a warning
-                determineApplicableDomainPolicySets(source, policiedBinding);
-            }
-        }
-    }
-    
-    /******************************************************************************************************/
-    /*policy computation methods applicable to implementation types */
-    /*****************************************************************************************************/
-    private void computeImplementationIntentsAndPolicySets(Implementation implementation, Component parent) {
-        if ( implementation instanceof PolicySetAttachPoint ) {
-            computeIntentsForIntentAttachPoint((IntentAttachPoint)implementation, parent.getRequiredIntents());
-            computeIntentsForOperations((IntentAttachPoint)implementation);
-            computePolicySetsForPolicySetAttachPoint(parent, (PolicySetAttachPoint)implementation, parent.getPolicySets());
-            computePolicySetsForOperations(parent,(PolicySetAttachPoint)implementation);
-            determineApplicableImplementationPolicySets(parent);
-        }
-    }
-    
-    private void computeIntentsForOperations(IntentAttachPoint intentAttachPoint) {
-        if ( intentAttachPoint instanceof OperationsConfigurator ) {
-            IntentAttachPointType attachPointType = intentAttachPoint.getType();
-            
-            boolean found = false;
-            
-            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);
-                }
-                
-                //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;
-                            }
-                        }
-        
-                        if (!found) {
-                            warning("Policy Intent '" + intent.getName() 
-                                    + " specified for operation " + confOp.getName()  
-                                + "' does not constrain extension type  "
-                                + attachPointType.getName(), intentAttachPoint);
-                        }
-                    } else {
-                        warning("Policy Intent '" + intent.getName() 
-                                + " specified for operation " + confOp.getName()  
-                            + "' is not defined in this domain  ", intent);
-                    }
-                }
-                        
-                //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 parentIntent : intentAttachPoint.getRequiredIntents()) {
-                    found = false;
-                
-                    tempIntent = parentIntent;
-                    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(parentIntent);
-                    }
-                }
-                
-                confOp.getRequiredIntents().addAll(attachPointOpIntents);
-                
-                //remove duplicates
-                Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
-                for ( Intent intent : confOp.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());
-                        }
-                    }
-                }
-                confOp.getRequiredIntents().clear();
-                confOp.getRequiredIntents().addAll(intentsTable.values());
-                
-                //exclude intents that are inherently supported by the parent
-                //attachpoint-type (binding-type  / implementation-type)
-                List<Intent> requiredIntents = new ArrayList<Intent>(confOp.getRequiredIntents());
-                for ( Intent intent : requiredIntents ) {
-                    if ( isProvidedInherently(attachPointType, intent) ) {
-                        confOp.getRequiredIntents().remove(intent);
-                    }
-                }
-            }
-        }
-    }
-    
-    private void computePolicySetsForOperations(Base parent, PolicySetAttachPoint policySetAttachPoint) {
-        String appliesTo = null;
-        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 (!isPolicySetApplicable(parent, appliesTo, attachPointType)) {
-                            warning("Policy Set '" + policySet.getName() 
-                                    + " specified for operation " + confOp.getName()  
-                                + "' does not constrain extension type  "
-                                + attachPointType.getName(), policySetAttachPoint);
-            
-                        }
-                    } else {
-                        warning("Policy Set '" + policySet.getName() 
-                                + " specified for operation " + confOp.getName()  
-                            + "' is not defined in this domain  ", policySet);
-                    }
-                }
-                
-                //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);
-                }
-            }
-        }
-    }
-    
-    
-    private void determineApplicableImplementationPolicySets(Component component) {
-        if ( component.getImplementation() instanceof PolicySetAttachPoint ) {
-            PolicySetAttachPoint policiedImplementation = (PolicySetAttachPoint)component.getImplementation();
-           
-            //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();
-                
-                for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
-                    trimProvidedIntents(confOp.getRequiredIntents(), confOp.getPolicySets());
-                    trimProvidedIntents(confOp.getRequiredIntents(), policiedImplementation.getPolicySets());
-                }
-            }
-                
-            trimProvidedIntents(policiedImplementation.getRequiredIntents(), policiedImplementation.getPolicySets());
-                
-            //determine additional policysets that match remaining intents
-            //if there are intents that are not provided by any policy set throw a warning
-            //TODO: resolved to domain policy registry and attach suitable policy sets to the implementation
-            //...for now using the SCA Definitions instead of registry
-            determineApplicableDomainPolicySets(component);
-        }
-    }
-    
-    private void determineApplicableDomainPolicySets(Component component) {
-        if ( component.getImplementation() instanceof PolicySetAttachPoint && domainPolicySets != null ) {
-            PolicySetAttachPoint policiedImplementation = (PolicySetAttachPoint)component.getImplementation();
-            
-            //determine for operations configured under implemenatation element
-            if ( component.getImplementation() instanceof OperationsConfigurator ) {
-                OperationsConfigurator opConfigurator = (OperationsConfigurator)component.getImplementation();
-                if ( opConfigurator.getConfiguredOperations() != null ) {
-                    for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
-                        determineApplicableDomainPolicySets(component.getImplementation(), 
-                                                            confOp,
-                                                            policiedImplementation.getType());
-    
-                        if (confOp.getRequiredIntents().size() > 0) {
-                            warning("There are unfulfilled intents for operations configured in "
-                                    + "component implementation - " + component.getName(), component);
-                        }
-                    }
-                }
-            }
-            
-            
-            determineApplicableDomainPolicySets(component, 
-                                                policiedImplementation,
-                                                policiedImplementation.getType());
-                                                
-            if (policiedImplementation.getRequiredIntents().size() > 0) {
-                warning("There are unfulfilled intents for component implementation - " + component
-                    .getName(), component);
             }
         }
     }

Added: 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=602541&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java (added)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ImplementationPolicyComputer.java Sat Dec  8 12:07:56 2007
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.assembly.builder.impl;
+
+import java.util.List;
+
+import org.apache.tuscany.sca.assembly.Component;
+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;
+import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.util.PolicyValidationException;
+
+/**
+ * Policy computation methods pertaining to computing Implementation Policies
+ */
+public class ImplementationPolicyComputer extends PolicyComputer {
+    
+    public ImplementationPolicyComputer(List<PolicySet> domainPolicySets) {
+        super(domainPolicySets);
+    }
+    
+    public void computeImplementationIntentsAndPolicySets(Implementation implementation, Component parent)  
+                                                                throws PolicyValidationException, PolicyComputationException {
+        if ( implementation instanceof PolicySetAttachPoint ) {
+            PolicySetAttachPoint policiedImplementation = (PolicySetAttachPoint)implementation;
+            //since for an implementation the component has its policy intents and policysets its possible
+            //that there are some intents there that does not constrain the implementation.. so prune 
+            List<Intent> prunedIntents = computeInheritableIntents(policiedImplementation.getType(), 
+                                                                   parent.getRequiredIntents());
+            parent.getRequiredIntents().clear();
+            parent.getRequiredIntents().addAll(prunedIntents);
+            computeIntents(parent);
+            trimInherentlyProvidedIntents(policiedImplementation.getType(), 
+                                          parent.getRequiredIntents());
+            
+            computeIntentsForOperations((IntentAttachPoint)implementation, parent.getRequiredIntents());
+            
+            
+            List<PolicySet> prunedPolicySets = computeInheritablePolicySets(parent, 
+                                                                            policiedImplementation.getType(), 
+                                                                            parent.getPolicySets());
+            parent.getPolicySets().clear();
+            parent.getPolicySets().addAll(prunedPolicySets);
+            computePolicySets(parent);
+            computePolicySetsForOperations(parent, (PolicySetAttachPoint)implementation);
+            
+            determineApplicableImplementationPolicySets(parent);
+        }
+    }
+    
+    private void determineApplicableImplementationPolicySets(Component component) throws PolicyComputationException {
+        if ( component.getImplementation() instanceof PolicySetAttachPoint ) {
+            PolicySetAttachPoint policiedImplementation = (PolicySetAttachPoint)component.getImplementation();
+           
+            //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();
+                
+                for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
+                    trimProvidedIntents(confOp.getRequiredIntents(), confOp.getPolicySets());
+                    trimProvidedIntents(confOp.getRequiredIntents(), component.getPolicySets());
+                    
+                    if (domainPolicySets != null) {
+                        determineApplicableDomainPolicySets(component.getImplementation(), 
+                                                            confOp,
+                                                            policiedImplementation.getType());
+    
+                        if (confOp.getRequiredIntents().size() > 0) {
+                            new PolicyComputationException("There are unfulfilled intents for operations configured in "
+                                    + "component implementation - " + component.getName());
+                        }
+                    }
+                }
+            }
+                
+            trimProvidedIntents(component.getRequiredIntents(), component.getPolicySets());
+                
+            //determine additional policysets that match remaining intents
+            //if there are intents that are not provided by any policy set throw a warning
+            //TODO: resolved to domain policy registry and attach suitable policy sets to the implementation
+            //...for now using the SCA Definitions instead of registry
+            if ( domainPolicySets != null)  {
+                determineApplicableDomainPolicySets(component, 
+                                                    component,
+                                                    policiedImplementation.getType());
+                                                    
+                if (component.getRequiredIntents().size() > 0) {
+                    throw new PolicyComputationException("There are unfulfilled intents for component implementation - " + component
+                        .getName());
+                }
+            }
+        }
+    }
+    
+    
+    
+}

Added: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputationException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputationException.java?rev=602541&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputationException.java (added)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputationException.java Sat Dec  8 12:07:56 2007
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.assembly.builder.impl;
+
+/**
+ * Exception to be throw for invalid policy intents / policysets
+ */
+public class PolicyComputationException extends Exception {
+    private static final long serialVersionUID = 506979037642587755L;
+    
+    public PolicyComputationException(String message) {
+        super(message);
+    }
+    
+    public PolicyComputationException(Throwable e) {
+        super(e);
+    }
+    
+}

Added: 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=602541&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java (added)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java Sat Dec  8 12:07:56 2007
@@ -0,0 +1,385 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.assembly.builder.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+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;
+import org.apache.tuscany.sca.policy.IntentAttachPointType;
+import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.ProfileIntent;
+import org.apache.tuscany.sca.policy.QualifiedIntent;
+import org.apache.tuscany.sca.policy.util.PolicyValidationException;
+import org.apache.tuscany.sca.policy.util.PolicyValidationUtils;
+
+/**
+ * This class contains policy computation methods common to computing implementation and binding policies
+ */
+public abstract class PolicyComputer {
+    protected List<PolicySet> domainPolicySets;
+    
+    protected PolicyComputer(List<PolicySet> domainPolicySets) {
+        this.domainPolicySets = domainPolicySets;
+    }
+    
+    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);
+
+        //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())) {
+                        validInheritableIntents.add(intent);
+                        break;
+                    }
+                }
+            } else {
+                new PolicyValidationException("Policy Intent '" + intent.getName() + "' is not defined in this domain");
+            }
+        }
+        
+        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);
+            }
+        }
+        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);
+        }
+        
+        //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());
+    }
+    
+    protected void trimInherentlyProvidedIntents(IntentAttachPointType attachPointType, List<Intent>intents) {
+        //exclude intents that are inherently supported by the 
+        //attachpoint-type (binding-type  / implementation-type)
+        List<Intent> requiredIntents = new ArrayList<Intent>(intents);
+        for ( Intent intent : requiredIntents ) {
+            if ( isProvidedInherently(attachPointType, intent) ) {
+                intents.remove(intent);
+            }
+        }
+    }
+    
+    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());
+    }
+    
+    protected void computeIntentsForOperations(IntentAttachPoint intentAttachPoint, List<Intent> parentIntents) throws PolicyValidationException {
+        if ( intentAttachPoint instanceof OperationsConfigurator ) {
+            IntentAttachPointType attachPointType = intentAttachPoint.getType();
+            
+            boolean found = false;
+            
+            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;
+                                }
+                            }
+            
+                            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  ");
+                        }
+                    }
+                }
+                
+                //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);
+                    }
+                }
+                
+                confOp.getRequiredIntents().addAll(attachPointOpIntents);
+                
+                //remove duplicates
+                Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
+                for ( Intent intent : confOp.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());
+                        }
+                    }
+                }
+                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);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    protected List<PolicySet> computeInheritablePolicySets(Base parent,
+                                                           IntentAttachPointType attachPointType,
+                                                           List<PolicySet> inheritablePolicySets) 
+                                                               throws PolicyValidationException {
+        List<PolicySet> validInheritablePolicySets = new ArrayList<PolicySet>();
+        String appliesTo = null;
+        String scdlFragment = null; //need to write parent as scdl fragment and pass the xml string
+        //from the inherited set of policysets add only what applies to the attach point
+        for (PolicySet policySet : inheritablePolicySets) {
+            if ( !policySet.isUnresolved() ) { 
+                appliesTo = policySet.getAppliesTo();
+                if (PolicyValidationUtils.isPolicySetApplicable(scdlFragment, appliesTo, attachPointType)) {
+                    validInheritablePolicySets.add(policySet);
+                }
+            } else {
+                throw new PolicyValidationException("Policy Set '" + policySet.getName()
+                        + "' is not defined in this domain  ");
+            }
+                
+        }
+        return validInheritablePolicySets;
+    }
+    
+    protected void computePolicySets(PolicySetAttachPoint policySetAttachPoint ) {
+        //get rid of duplicate entries
+        HashMap<QName, PolicySet> policySetTable = new HashMap<QName, PolicySet>();
+        for ( PolicySet policySet : policySetAttachPoint.getPolicySets() ) {
+            policySetTable.put(policySet.getName(), policySet);
+        }
+        
+        policySetAttachPoint.getPolicySets().clear();
+        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);
+        }
+    }
+    
+    protected void computePolicySetsForOperations(Base parent, 
+                                                  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 {
+                        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);
+                }
+            }
+        }
+    }
+    
+    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);
+            } 
+        }
+    }
+    
+    protected void trimProvidedIntents(List<Intent> requiredIntents, List<PolicySet> policySets) {
+        for ( PolicySet policySet : policySets ) {
+            trimProvidedIntents(requiredIntents, policySet);
+        }
+    }
+    
+    protected void determineApplicableDomainPolicySets(Base parentElement,
+                                                     PolicySetAttachPoint policySetAttachPoint,
+                                                     IntentAttachPointType intentAttachPointType) {
+        String scdlFragment = null; //write parentelement as scdl fragment and store it here
+        if (policySetAttachPoint.getRequiredIntents().size() > 0) {
+            for (PolicySet policySet : domainPolicySets) {
+                if (PolicyValidationUtils.isPolicySetApplicable(scdlFragment, policySet.getAppliesTo(), intentAttachPointType)) {
+                    int prevSize = policySetAttachPoint.getRequiredIntents().size();
+                    trimProvidedIntents(policySetAttachPoint.getRequiredIntents(), policySet);
+                    // if any intent was trimmed off, then this policyset must
+                    // be attached to the intent attachpoint's policyset
+                    if (prevSize != policySetAttachPoint.getRequiredIntents().size()) {
+                        policySetAttachPoint.getPolicySets().add(policySet);
+                    }
+                }
+            }
+        }
+    }
+}

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=602541&r1=602540&r2=602541&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 Sat Dec  8 12:07:56 2007
@@ -100,8 +100,8 @@
         if ( implementation instanceof PolicySetAttachPoint ) {
             PolicySetAttachPoint policiedImpl = (PolicySetAttachPoint)implementation;
             
-            policiedImpl.setRequiredIntents(implPolicyConf.getRequiredIntents());
-            policiedImpl.setPolicySets(implPolicyConf.getPolicySets());
+            /*policiedImpl.setRequiredIntents(implPolicyConf.getRequiredIntents());
+            policiedImpl.setPolicySets(implPolicyConf.getPolicySets());*/
             
             if ( implementation instanceof OperationsConfigurator ) {
                 ((OperationsConfigurator)implementation).setConfiguredOperations(configuredImplOps);
@@ -134,10 +134,10 @@
         this.implementation = implementation;
         if ( implementation instanceof PolicySetAttachPoint 
             && implementation.isUnresolved() )  {
-            PolicySetAttachPoint policiedImpl = (PolicySetAttachPoint)implementation;
+            /*PolicySetAttachPoint policiedImpl = (PolicySetAttachPoint)implementation;
             implPolicyConf.getRequiredIntents().addAll(policiedImpl.getRequiredIntents());
             implPolicyConf.getPolicySets().addAll(policiedImpl.getPolicySets());
-            
+            */
             if ( implementation instanceof OperationsConfigurator ) {
                 OperationsConfigurator operationConfig = (OperationsConfigurator)implementation;
             

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=602541&r1=602540&r2=602541&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 Sat Dec  8 12:07:56 2007
@@ -62,10 +62,17 @@
                 PolicySetAttachPoint policiedImpl = (PolicySetAttachPoint)javaImpl;
                 
                 try {
-                    for ( PolicySet policySet : policiedImpl.getPolicySets() ) {
+                    //for ( PolicySet policySet : policiedImpl.getPolicySets() ) {
+                    for ( PolicySet policySet : component.getPolicySets() ) {
                         policyHandler = getPolicyHandler(policySet, javaImpl.getPolicyHandlerClassNames());
-                        policyHandler.setUp(javaImpl);
-                        implPolicyHandlers.add(policyHandler);
+                        if ( policyHandler != null ) {
+                            policyHandler.setUp(javaImpl);
+                            implPolicyHandlers.add(policyHandler);
+                        } else {
+                            //FIXME: to be removed after the PolicyHandler story has crystalized..
+                            //maybe replace with exception then...
+                            System.out.println("No PolicyHandler registered for PolicySet - " + policySet.getName());
+                        }
                     }    
                     
                     List<PolicyHandler> applicablePolicyHandlers = null;

Modified: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java?rev=602541&r1=602540&r2=602541&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 Sat Dec  8 12:07:56 2007
@@ -145,11 +145,11 @@
         compositeUtil.build(composite);
         
         //intents are computed and aggregate intents from ancestor elements
-        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getRequiredIntents().size(), 3);
-        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(5).getImplementation()).getRequiredIntents().size(), 3);
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0)).getRequiredIntents().size(), 3);
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(5)).getRequiredIntents().size(), 3);
         
-        assertEquals(((OperationsConfigurator)composite.getComponents().get(0).getImplementation()).getConfiguredOperations().isEmpty(), true);
-        assertEquals(((OperationsConfigurator)composite.getComponents().get(5).getImplementation()).getConfiguredOperations().isEmpty(), false);
+        //assertEquals(((OperationsConfigurator)composite.getComponents().get(0)).getConfiguredOperations().isEmpty(), true);
+        //assertEquals(((OperationsConfigurator)composite.getComponents().get(5)).getConfiguredOperations().isEmpty(), false);
         
         
         //test for proper aggregation of policy intents on implementation elements
@@ -161,7 +161,7 @@
             }
         }
         
-        for ( Intent intent : ((PolicySetAttachPoint)composite.getComponents().get(5).getImplementation()).getRequiredIntents() ) {
+        for ( Intent intent : ((PolicySetAttachPoint)composite.getComponents().get(5)).getRequiredIntents() ) {
             String intentName = intent.getName().getLocalPart();
             if ( !(intentName.equals("tuscanyIntent_1") || intentName.equals("tuscanyIntent_4") ||
                 intentName.equals("tuscanyIntent_5")) ) {
@@ -217,11 +217,11 @@
         compositeUtil.build(composite);
         
         //intents are computed and erased since there will be matching policysets
-        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getRequiredIntents().size(), 0);
-        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(5).getImplementation()).getRequiredIntents().size(), 0);
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0)).getRequiredIntents().size(), 0);
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(5)).getRequiredIntents().size(), 0);
         
         //test for determination of policysets for implementation
-        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getPolicySets().size(), 1);
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(0)).getPolicySets().size(), 1);
         for ( PolicySet policySet : ((PolicySetAttachPoint)composite.getComponents().get(0).getImplementation()).getPolicySets() ) {
             String policySetName = policySet.getName().getLocalPart();
             if ( !(policySetName.equals("tuscanyPolicySet_1")) ) {
@@ -229,7 +229,7 @@
             }
         }
         
-        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(5).getImplementation()).getPolicySets().size(), 2);
+        assertEquals(((PolicySetAttachPoint)composite.getComponents().get(5)).getPolicySets().size(), 2);
         for ( PolicySet policySet : ((PolicySetAttachPoint)composite.getComponents().get(5).getImplementation()).getPolicySets() ) {
             String policySetName = policySet.getName().getLocalPart();
             if ( !(policySetName.equals("tuscanyPolicySet_1") || policySetName.equals("tuscanyPolicySet_2")) ) {

Modified: incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/IntentAttachPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/IntentAttachPoint.java?rev=602541&r1=602540&r2=602541&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/IntentAttachPoint.java (original)
+++ incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/IntentAttachPoint.java Sat Dec  8 12:07:56 2007
@@ -34,8 +34,7 @@
      */
     List<Intent> getRequiredIntents();
     
-    void setRequiredIntents(List<Intent> intents);
-    
+   
     /**
      * Returns the type of the attach point such as a BindingType or an ImplementationType and so on
      * @return

Modified: incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/PolicySetAttachPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/PolicySetAttachPoint.java?rev=602541&r1=602540&r2=602541&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/PolicySetAttachPoint.java (original)
+++ incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/PolicySetAttachPoint.java Sat Dec  8 12:07:56 2007
@@ -33,6 +33,4 @@
      * @return a list of policy sets.
      */
     List<PolicySet> getPolicySets();
-    
-    void setPolicySets(List<PolicySet> policySets);
 }



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