You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/04/24 09:21:35 UTC

svn commit: r651179 [3/4] - in /incubator/tuscany/java/sca: itest/domain/src/test/java/org/apache/tuscany/sca/itest/domain/ modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ modules/assembly/src/main/java/org/apache/tuscany/sca/as...

Added: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java?rev=651179&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java (added)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -0,0 +1,48 @@
+/*
+ * 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 org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.interfacedef.IncompatibleInterfaceContractException;
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A composite builder that wires component references.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ComponentReferenceWireBuilderImpl extends BaseWireBuilderImpl implements CompositeBuilder {
+
+    public ComponentReferenceWireBuilderImpl(AssemblyFactory assemblyFactory, InterfaceContractMapper interfaceContractMapper, Monitor monitor) {
+        super(assemblyFactory, interfaceContractMapper, monitor);
+    }
+
+    public void build(Composite composite) throws CompositeBuilderException {
+        try {
+            wireComponentReferences(composite);
+        } catch (IncompatibleInterfaceContractException e) {
+            throw new CompositeBuilderException(e);
+        }
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java?rev=651179&r1=651178&r2=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -27,7 +27,6 @@
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.definitions.SCADefinitions;
-import org.apache.tuscany.sca.interfacedef.IncompatibleInterfaceContractException;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.monitor.Problem;
@@ -42,22 +41,46 @@
  */
 public class CompositeBuilderImpl implements CompositeBuilder {
     private final static Logger logger = Logger.getLogger(CompositeBuilderImpl.class.getName());
-    private CompositeIncludeBuilderImpl includeBuilder;
-    private CompositeWireBuilderImpl wireBuilder;
-    private CompositeCloneBuilderImpl cloneBuilder;
-    private CompositeConfigurationBuilderImpl configurationBuilder;
+    private CompositeBuilder compositeIncludeBuilder;
+    private CompositeBuilder componentWireBuilder;
+    private CompositeBuilder compositeReferenceWireBuilder;
+    private CompositeBuilder compositeCloneBuilder;
+    private CompositeBuilder componentConfigurationBuilder;
+    private CompositeBuilder compositeServiceConfigurationBuilder;
 
     /**
-     * Constructs a new composite util.
+     * Constructs a new composite builder.
      * 
      * @param assemblyFactory
+     * @param scaBindingFactory
+     * @param intentAttachPointTypeFactory
      * @param interfaceContractMapper
+     * @param monitor
      */
     public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
                                 SCABindingFactory scaBindingFactory,
                                 IntentAttachPointTypeFactory  intentAttachPointTypeFactory,
                                 InterfaceContractMapper interfaceContractMapper,
                                 Monitor monitor) {
+        this(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, interfaceContractMapper, null, monitor);
+    }
+    
+    /**
+     * Constructs a new composite builder.
+     * 
+     * @param assemblyFactory
+     * @param scaBindingFactory
+     * @param intentAttachPointTypeFactory
+     * @param interfaceContractMapper
+     * @param policyDefinitions
+     * @param monitor
+     */
+    public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
+                                SCABindingFactory scaBindingFactory,
+                                IntentAttachPointTypeFactory  intentAttachPointTypeFactory,
+                                InterfaceContractMapper interfaceContractMapper,
+                                SCADefinitions policyDefinitions,
+                                Monitor monitor) {
         
         if (monitor == null){
             monitor = new Monitor () {
@@ -84,48 +107,36 @@
             };
         }
         
-        includeBuilder = new CompositeIncludeBuilderImpl(monitor); 
-        wireBuilder = new CompositeWireBuilderImpl(assemblyFactory, interfaceContractMapper, monitor);
-        cloneBuilder = new CompositeCloneBuilderImpl(monitor);
-        configurationBuilder = new CompositeConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, interfaceContractMapper, monitor);
-        
-    }
-    
-    public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
-                                SCABindingFactory scaBindingFactory,
-                                IntentAttachPointTypeFactory  intentAttachPointTypeFactory,
-                                InterfaceContractMapper interfaceContractMapper,
-                                Monitor monitor, 
-                                SCADefinitions scaDefns) {
-        this(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, interfaceContractMapper, monitor);
-        configurationBuilder.setScaDefinitions(scaDefns);
+        compositeIncludeBuilder = new CompositeIncludeBuilderImpl(monitor); 
+        componentWireBuilder = new ComponentReferenceWireBuilderImpl(assemblyFactory, interfaceContractMapper, monitor);
+        compositeReferenceWireBuilder = new CompositeReferenceWireBuilderImpl(assemblyFactory, interfaceContractMapper, monitor);
+        compositeCloneBuilder = new CompositeCloneBuilderImpl(monitor);
+        componentConfigurationBuilder = new ComponentConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+        compositeServiceConfigurationBuilder = new CompositeServiceConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
     }
 
     public void build(Composite composite) throws CompositeBuilderException {
 
         // Collect and fuse includes
-        includeBuilder.fuseIncludes(composite);
+        compositeIncludeBuilder.build(composite);
 
         // Expand nested composites
-        cloneBuilder.expandCompositeImplementations(composite);
+        compositeCloneBuilder.build(composite);
 
         // Configure all components
-        configurationBuilder.configureComponents(composite);
+        componentConfigurationBuilder.build(composite);
 
-        // Wire the composite
-        try {
-			wireBuilder.wireComposite(composite);
-		} catch (IncompatibleInterfaceContractException e) {
-			throw new CompositeBuilderException(e);
-		}
+        // Wire the components
+        componentWireBuilder.build(composite);
 
-        // Activate composite services
-        configurationBuilder.activateCompositeServices(composite);
+        // Configure composite services
+        compositeServiceConfigurationBuilder.build(composite);
 
-        // Wire composite references
-        wireBuilder.wireCompositeReferences(composite);
+        // Wire the composite references
+        compositeReferenceWireBuilder.build(composite);
         
         // Fuse nested composites
+        //FIXME do this later
         //cloneBuilder.fuseCompositeImplementations(composite);
     }
 

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeCloneBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeCloneBuilderImpl.java?rev=651179&r1=651178&r2=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeCloneBuilderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeCloneBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -26,12 +26,23 @@
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.monitor.Monitor;
 
-public class CompositeCloneBuilderImpl {
+/**
+ * A composite builder that clones nested composites.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeCloneBuilderImpl implements CompositeBuilder {
     
     public CompositeCloneBuilderImpl(Monitor monitor) {
     }
+    
+    public void build(Composite composite) throws CompositeBuilderException {
+        expandCompositeImplementations(composite);
+    }
 
     /**
      * Expand composite component implementations.
@@ -39,7 +50,7 @@
      * @param composite
      * @param problems
      */
-    public void expandCompositeImplementations(Composite composite) {
+    private void expandCompositeImplementations(Composite composite) {
         for (Component component : composite.getComponents()) {
             Implementation implementation = component.getImplementation();
             if (implementation instanceof Composite) {
@@ -79,7 +90,7 @@
      * 
      * @param composite
      */
-    public void fuseCompositeImplementations(Composite composite) {
+    private void fuseCompositeImplementations(Composite composite) {
     
         // First collect all nested composites
         List<Composite> nested = new ArrayList<Composite>();

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java?rev=651179&r1=651178&r2=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -26,16 +26,22 @@
 import java.util.logging.Logger;
 
 import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
 
-public class CompositeIncludeBuilderImpl {
+public class CompositeIncludeBuilderImpl implements CompositeBuilder {
     
     public static Logger logger = Logger.getLogger(CompositeIncludeBuilderImpl.class.getName());
 	
     public CompositeIncludeBuilderImpl(Monitor monitor) {
     }
 
+    public void build(Composite composite) throws CompositeBuilderException {
+        fuseIncludes(composite);
+    }
+
     /**
      * Collect all includes in a graph of includes.
      * 
@@ -48,7 +54,7 @@
                 logger.warning("Composite " + include.getName() + " has already been included.");
                 continue;
             }
-        		
+                        
             includes.add(include);
             visited.add(include);
             collectIncludes(include, includes, visited);
@@ -60,7 +66,7 @@
      * 
      * @param composite
      */
-    public void fuseIncludes(Composite composite) {
+    private void fuseIncludes(Composite composite) {
     
         // First collect all includes
         List<Composite> includes = new ArrayList<Composite>();

Added: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceWireBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceWireBuilderImpl.java?rev=651179&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceWireBuilderImpl.java (added)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceWireBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -0,0 +1,43 @@
+/*
+ * 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 org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A composite builder that wires composite references.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeReferenceWireBuilderImpl extends BaseWireBuilderImpl implements CompositeBuilder {
+
+    public CompositeReferenceWireBuilderImpl(AssemblyFactory assemblyFactory, InterfaceContractMapper interfaceContractMapper, Monitor monitor) {
+        super(assemblyFactory, interfaceContractMapper, monitor);
+    }
+
+    public void build(Composite composite) throws CompositeBuilderException {
+        wireCompositeReferences(composite);
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceWireBuilderImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceWireBuilderImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceWireBuilderImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java?rev=651179&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java (added)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -0,0 +1,50 @@
+/*
+ * 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 org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.SCABindingFactory;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.definitions.SCADefinitions;
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A composite builder that handles the configuration of composite services.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeServiceConfigurationBuilderImpl extends BaseConfigurationBuilderImpl implements CompositeBuilder {
+
+    public CompositeServiceConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
+                                             SCABindingFactory scaBindingFactory,
+                                             InterfaceContractMapper interfaceContractMapper,
+                                             SCADefinitions policyDefinitions,
+                                             Monitor monitor) {
+        super(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+    }
+
+    public void build(Composite composite) throws CompositeBuilderException {
+        configureCompositeServices(composite);
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java?rev=651179&r1=651178&r2=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/DomainWireBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -38,14 +38,11 @@
 
 public class DomainWireBuilderImpl implements DomainBuilder {
     
-    private CompositeWireBuilderImpl wireBuilder;
-    
     public DomainWireBuilderImpl(AssemblyFactory assemblyFactory,
             SCABindingFactory scaBindingFactory,
             IntentAttachPointTypeFactory  intentAttachPointTypeFactory,
             InterfaceContractMapper interfaceContractMapper,
             Monitor monitor) {
-        wireBuilder = new CompositeWireBuilderImpl(assemblyFactory, interfaceContractMapper, monitor);
     }
     
     public String getComponentNameFromReference(String referenceName){
@@ -239,7 +236,7 @@
                                 //        bindings if we are going to do autowiring 
                                 List<Binding> source = targetService.getBindings();
                                 List<Binding> target = service.getBindings();
-                                Binding newBinding = BindingUtil.matchBinding(serviceComponent, (ComponentService)service, source, target);
+                                Binding newBinding = BindingConfigurationUtil.matchBinding(serviceComponent, (ComponentService)service, source, target);
                                 
                                 // update the existing binding to the new binding if required
                                 if (newBinding != null) {

Copied: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyConfigurationException.java (from r651126, 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/PolicyConfigurationException.java?p2=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyConfigurationException.java&p1=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputationException.java&r1=651126&r2=651179&rev=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputationException.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyConfigurationException.java Thu Apr 24 00:21:13 2008
@@ -22,14 +22,14 @@
 /**
  * Exception to be throw for invalid policy intents / policysets
  */
-public class PolicyComputationException extends Exception {
+public class PolicyConfigurationException extends Exception {
     private static final long serialVersionUID = 506979037642587755L;
     
-    public PolicyComputationException(String message) {
+    public PolicyConfigurationException(String message) {
         super(message);
     }
     
-    public PolicyComputationException(Throwable e) {
+    public PolicyConfigurationException(Throwable e) {
         super(e);
     }
     

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyConfigurationException.java
------------------------------------------------------------------------------
    eol-style = native

Copied: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyConfigurationUtil.java (from r651053, 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/PolicyConfigurationUtil.java?p2=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyConfigurationUtil.java&p1=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyComputer.java&r1=651053&r2=651179&rev=651179&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/PolicyConfigurationUtil.java Thu Apr 24 00:21:13 2008
@@ -21,19 +21,25 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Hashtable;
 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.Binding;
+import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ConfiguredOperation;
+import org.apache.tuscany.sca.assembly.Contract;
+import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.OperationsConfigurator;
+import org.apache.tuscany.sca.assembly.Service;
 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.PolicyComputationUtils;
 import org.apache.tuscany.sca.policy.util.PolicyValidationException;
@@ -42,13 +48,9 @@
 /**
  * This class contains policy computation methods common to computing implementation and binding policies
  */
-public abstract class PolicyComputer {
+abstract class PolicyConfigurationUtil {
     
-    protected PolicyComputer() {
-        
-    }
-    
-    protected List<Intent> computeInheritableIntents(IntentAttachPointType attachPointType, 
+    static private List<Intent> computeInheritableIntents(IntentAttachPointType attachPointType, 
                                                    List<Intent> inheritableIntents) throws PolicyValidationException {
         List<Intent> validInheritableIntents = new ArrayList<Intent>();
         
@@ -73,7 +75,7 @@
         return validInheritableIntents;
     }
     
-    protected void normalizeIntents(IntentAttachPoint intentAttachPoint) {
+    static private void normalizeIntents(IntentAttachPoint intentAttachPoint) {
         //expand profile intents specified in the attachpoint (binding / implementation)
         PolicyComputationUtils.expandProfileIntents(intentAttachPoint.getRequiredIntents());
 
@@ -82,7 +84,7 @@
         filterDuplicatesAndQualifiableIntents(intentAttachPoint);
     }
     
-    protected void trimInherentlyProvidedIntents(IntentAttachPointType attachPointType, List<Intent>intents) {
+    static private 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);
@@ -94,7 +96,7 @@
     }
     
     
-    protected void computeIntentsForOperations(IntentAttachPoint intentAttachPoint) throws PolicyValidationException {
+    static void computeIntentsForOperations(IntentAttachPoint intentAttachPoint) throws PolicyValidationException {
         if ( intentAttachPoint instanceof OperationsConfigurator ) {
             computeIntentsForOperations((OperationsConfigurator)intentAttachPoint, 
                                         intentAttachPoint, 
@@ -102,7 +104,7 @@
         }
     }
     
-    protected void computeIntentsForOperations(OperationsConfigurator opConfigurator, 
+    static private void computeIntentsForOperations(OperationsConfigurator opConfigurator, 
                                                IntentAttachPoint intentAttachPoint, 
                                                List<Intent> parentIntents) throws PolicyValidationException {
         IntentAttachPointType attachPointType = intentAttachPoint.getType();
@@ -166,7 +168,7 @@
         }
     }
     
-    protected List<PolicySet> computeInheritablePolicySets(List<PolicySet> inheritablePolicySets,
+    static private List<PolicySet> computeInheritablePolicySets(List<PolicySet> inheritablePolicySets,
                                                            List<PolicySet> applicablePolicySets) 
                                                                throws PolicyValidationException {
         List<PolicySet> validInheritablePolicySets = new ArrayList<PolicySet>();
@@ -184,7 +186,7 @@
         return validInheritablePolicySets;
     }
     
-    protected void normalizePolicySets(PolicySetAttachPoint policySetAttachPoint ) {
+    static private void normalizePolicySets(PolicySetAttachPoint policySetAttachPoint ) {
         //get rid of duplicate entries
         HashMap<QName, PolicySet> policySetTable = new HashMap<QName, PolicySet>();
         for ( PolicySet policySet : policySetAttachPoint.getPolicySets() ) {
@@ -200,7 +202,7 @@
         }
     }
     
-    protected void computePolicySetsForOperations(List<PolicySet> applicablePolicySets,
+    static private void computePolicySetsForOperations(List<PolicySet> applicablePolicySets,
                                                   PolicySetAttachPoint policySetAttachPoint) 
                                                                         throws PolicyValidationException {
         if ( policySetAttachPoint instanceof OperationsConfigurator ) {
@@ -211,7 +213,7 @@
         
     }
     
-    protected void computePolicySetsForOperations(List<PolicySet> applicablePolicySets, 
+    static private void computePolicySetsForOperations(List<PolicySet> applicablePolicySets, 
                                                   OperationsConfigurator opConfigurator,
                                                   PolicySetAttachPoint policySetAttachPoint) 
                                                                         throws PolicyValidationException {
@@ -258,13 +260,13 @@
     }
     
         
-    protected void trimProvidedIntents(List<Intent> requiredIntents, List<PolicySet> policySets) {
+    static private void trimProvidedIntents(List<Intent> requiredIntents, List<PolicySet> policySets) {
         for ( PolicySet policySet : policySets ) {
             trimProvidedIntents(requiredIntents, policySet);
         }
     }
     
-    protected void determineApplicableDomainPolicySets(List<PolicySet> applicablePolicySets,
+    static private void determineApplicableDomainPolicySets(List<PolicySet> applicablePolicySets,
                                                      PolicySetAttachPoint policySetAttachPoint,
                                                      IntentAttachPointType intentAttachPointType) {
 
@@ -304,7 +306,7 @@
         }
     }
     
-    private boolean isProvidedInherently(IntentAttachPointType attachPointType, Intent intent) {
+    private static boolean isProvidedInherently(IntentAttachPointType attachPointType, Intent intent) {
         return ( attachPointType != null && 
                  (( attachPointType.getAlwaysProvidedIntents() != null &&
                      attachPointType.getAlwaysProvidedIntents().contains(intent) ) || 
@@ -313,7 +315,7 @@
                  ) );
      }
     
-    private void trimProvidedIntents(List<Intent> requiredIntents, PolicySet policySet) {
+    private static void trimProvidedIntents(List<Intent> requiredIntents, PolicySet policySet) {
         for ( Intent providedIntent : policySet.getProvidedIntents() ) {
             if ( requiredIntents.contains(providedIntent) ) {
                 requiredIntents.remove(providedIntent);
@@ -327,7 +329,7 @@
         }
     }
     
-    private void filterDuplicatesAndQualifiableIntents(IntentAttachPoint intentAttachPoint) {
+    private static void filterDuplicatesAndQualifiableIntents(IntentAttachPoint intentAttachPoint) {
         //remove duplicates
         Map<QName, Intent> intentsTable = new HashMap<QName, Intent>();
         for ( Intent intent : intentAttachPoint.getRequiredIntents() ) {
@@ -349,7 +351,7 @@
         intentAttachPoint.getRequiredIntents().addAll(intentsTable.values());
     }
     
-    private void validateIntents(ConfiguredOperation confOp, IntentAttachPointType attachPointType) throws PolicyValidationException {
+    private static void validateIntents(ConfiguredOperation confOp, IntentAttachPointType attachPointType) throws PolicyValidationException {
         boolean found = false;
         if ( attachPointType != null ) {
             //validate intents specified against the parent (binding / implementation)
@@ -375,6 +377,374 @@
                         + "' is not defined in this domain  ");
                 }
             }
+        }
+    }
+
+    static void computeBindingIntentsAndPolicySets(Contract contract)  throws PolicyValidationException {
+        for (Binding binding : contract.getBindings()) {
+            if (binding instanceof PolicySetAttachPoint) {
+                PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)binding;
+                computeIntents((IntentAttachPoint)binding, contract.getRequiredIntents());
+                
+                aggregateAndPruneApplicablePolicySets(contract.getApplicablePolicySets(), 
+                                                      policiedBinding.getApplicablePolicySets());
+    
+                computePolicySets(policiedBinding, contract.getPolicySets());
+    
+                PolicyComputationUtils.checkForMutuallyExclusiveIntents(
+                    policiedBinding.getRequiredIntents(),
+                    policiedBinding.getPolicySets(),
+                    policiedBinding.getType(),
+                    contract.getName());
+    
+                if ( binding instanceof OperationsConfigurator && 
+                        contract instanceof OperationsConfigurator ) {
+                    //add or merge service operations to the binding
+                    addInheritedOpConfOnBindings((OperationsConfigurator)contract,
+                                                 (OperationsConfigurator)binding,
+                                                 (PolicySetAttachPoint)binding);
+                
+                    computeIntentsForOperations((IntentAttachPoint)binding);
+                    computePolicySetsForOperations(contract.getApplicablePolicySets(), 
+                                                   policiedBinding);
+    
+                    for ( ConfiguredOperation confOp : ((OperationsConfigurator)binding).getConfiguredOperations() ) {
+                        PolicyComputationUtils.checkForMutuallyExclusiveIntents(
+                            confOp.getRequiredIntents(),
+                            confOp.getPolicySets(),
+                            policiedBinding.getType(),
+                            contract.getName() + "." + confOp.getName());
+                    }
+    
+                }
+            }
+        }
+        
+        if ( contract.getCallback() != null ) {
+            for (Binding binding : contract.getCallback().getBindings()) {
+                if (binding instanceof PolicySetAttachPoint) {
+                    PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)binding;
+                    computeIntents((IntentAttachPoint)binding, contract.getCallback().getRequiredIntents());
+            
+                    aggregateAndPruneApplicablePolicySets(contract.getApplicablePolicySets(), 
+                                                          policiedBinding.getApplicablePolicySets());
+    
+                    computePolicySets(policiedBinding, contract.getCallback().getPolicySets());
+    
+                    PolicyComputationUtils.checkForMutuallyExclusiveIntents(
+                        policiedBinding.getRequiredIntents(),
+                        policiedBinding.getPolicySets(),
+                        policiedBinding.getType(),
+                        contract.getName() + " callback");
+    
+                }
+            }
+        }
+    }
+
+    private static void computeIntents(IntentAttachPoint policiedBinding, List<Intent> inheritedIntents) 
+                                                                    throws PolicyValidationException {
+            //since the parent component could also contain intents that apply to implementation
+            //and binding elements within, we filter out only those that apply to this binding type
+            List<Intent> prunedIntents = computeInheritableIntents(policiedBinding.getType(), 
+                                                                   inheritedIntents);
+            policiedBinding.getRequiredIntents().addAll(prunedIntents);
+            
+            normalizeIntents(policiedBinding);
+    }
+
+    private static void computePolicySets(PolicySetAttachPoint policiedBinding,
+                                   List<PolicySet> inheritedPolicySets) throws PolicyValidationException {
+                
+        List<PolicySet> prunedPolicySets = computeInheritablePolicySets(inheritedPolicySets,
+                                                                        policiedBinding.getApplicablePolicySets());
+        policiedBinding.getPolicySets().addAll(prunedPolicySets);
+        normalizePolicySets(policiedBinding);
+    }
+
+    static void determineApplicableBindingPolicySets(Contract source, Contract target) throws PolicyConfigurationException {
+        List<Intent> intentsCopy = null;
+        for (Binding aBinding : source.getBindings()) {
+            if (aBinding instanceof PolicySetAttachPoint) {
+                PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)aBinding;
+                IntentAttachPointType bindingType = policiedBinding.getType();
+    
+                
+                intentsCopy = new ArrayList<Intent>(policiedBinding.getRequiredIntents());
+                // 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() ) {
+                        List<Intent> opsIntentsCopy = new ArrayList<Intent>(confOp.getRequiredIntents());
+                        
+                        trimInherentlyProvidedIntents(policiedBinding.getType(), 
+                                                      confOp.getRequiredIntents());
+                        trimProvidedIntents(confOp.getRequiredIntents(), confOp.getPolicySets());
+                        trimProvidedIntents(confOp.getRequiredIntents(), policiedBinding.getPolicySets());
+                        
+                        determineApplicableDomainPolicySets(policiedBinding.getApplicablePolicySets(), 
+                                                            confOp,
+                                                            policiedBinding.getType());
+    
+                        if (confOp.getRequiredIntents().size() > 0) {
+                            new PolicyConfigurationException("The following are unfulfilled intents for operations configured in "
+                                    + "binding - " + aBinding.getName() + "\nUnfulfilled Intents = " +
+                                    confOp.getRequiredIntents());
+                        }
+                        
+                        //the intents list could have been trimmed when matching for policysets
+                        //since the bindings may need the original set of intents we copy that back
+                        confOp.getRequiredIntents().clear();
+                        confOp.getRequiredIntents().addAll(opsIntentsCopy);
+                        
+                    }
+                }
+    
+                trimInherentlyProvidedIntents(policiedBinding.getType(), 
+                                              policiedBinding.getRequiredIntents());
+                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);
+                
+                //the intents list could have been trimmed when matching for policysets
+                //since the bindings may need the original set of intents we copy that back
+                policiedBinding.getRequiredIntents().clear();
+                policiedBinding.getRequiredIntents().addAll(intentsCopy);
+                
+            }
+        }
+    }
+
+    static private void determineApplicableDomainPolicySets(Contract contract, 
+                                                     PolicySetAttachPoint policiedBinding) 
+                                                            throws PolicyConfigurationException {
+        //if ( domainPolicySets != null) {
+            determineApplicableDomainPolicySets(policiedBinding.getApplicablePolicySets(), 
+                                                policiedBinding,
+                                                policiedBinding.getType());
+            
+            if ( policiedBinding.getRequiredIntents().size() > 0 ) {
+                if ( contract instanceof Service ) {
+                    throw new PolicyConfigurationException("The following are unfulfilled intents for " +
+                            "binding in service - " + contract.getName() + "\nUnfulfilled Intents = " + 
+                            policiedBinding.getRequiredIntents());
+                } else {
+                    throw new PolicyConfigurationException("The are unfulfilled intents for " +
+                            "binding in reference - " + contract.getName() + "\nUnfulfilled Intents = " + 
+                            policiedBinding.getRequiredIntents());
+                }
+            }
+        //}
+    }
+
+    private static void addInheritedOpConfOnBindings(OperationsConfigurator source, 
+                                              OperationsConfigurator target,
+                                              PolicySetAttachPoint attachPoint) throws PolicyValidationException {
+        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())) {
+                    List<Intent> prunedIntents = computeInheritableIntents(attachPoint.getType(), 
+                                                                           sourceConfOp.getRequiredIntents());
+                    PolicyComputationUtils.addInheritedIntents(prunedIntents, 
+                                                               targetConfOp.getRequiredIntents());
+                    
+                    List<PolicySet> prunedPolicySets  = computeInheritablePolicySets(sourceConfOp.getPolicySets(), 
+                                                                                     attachPoint.getApplicablePolicySets());
+                    PolicyComputationUtils.addInheritedPolicySets(prunedPolicySets, targetConfOp.getPolicySets(), true);
+                    found = true;
+                    break;
+                }
+            }
+            
+            if ( !found ) {
+                additionalOperations.add(sourceConfOp);
+            }
+        }
+        
+        if ( !additionalOperations.isEmpty() ) {
+            target.getConfiguredOperations().addAll(additionalOperations);
+        }
+    }
+
+    private static void aggregateAndPruneApplicablePolicySets(List<PolicySet> source, List<PolicySet> target) {
+        target.addAll(source);
+        //strip duplicates
+        Hashtable<QName, PolicySet> policySetTable = new Hashtable<QName, PolicySet>();
+        for ( PolicySet policySet : target ) {
+            policySetTable.put(policySet.getName(), policySet);
+        }
+        
+        target.clear();
+        target.addAll(policySetTable.values());
+    }
+
+    static <C extends Contract> void inheritDefaultPolicies(Base parent, List<C> contracts) {
+    
+        for (Contract contract : contracts) {
+    
+            // The contract inherits default policies from the parent composite/component.
+            if ( parent instanceof PolicySetAttachPoint )  {
+                PolicyComputationUtils.addDefaultPolicies(
+                                         ((PolicySetAttachPoint)parent).getRequiredIntents(),
+                                         ((PolicySetAttachPoint)parent).getPolicySets(),
+                                         contract.getRequiredIntents(),
+                                         contract.getPolicySets());
+            }
+    
+            // The contract's configured operations inherit default policies from the contract.
+            for ( ConfiguredOperation confOp : contract.getConfiguredOperations() ) {
+                PolicyComputationUtils.addDefaultPolicies(
+                                         contract.getRequiredIntents(),
+                                         contract.getPolicySets(),
+                                         confOp.getRequiredIntents(),
+                                         confOp.getPolicySets());
+            }
+    
+            // The contract's callback inherits default policies from the contract.
+            if (contract.getCallback() != null) {
+                PolicyComputationUtils.addDefaultPolicies(
+                                         contract.getRequiredIntents(),
+                                         contract.getPolicySets(),
+                                         contract.getCallback().getRequiredIntents(),
+                                         contract.getCallback().getPolicySets());
+            }
+    
+        }
+    }
+
+    static void computeImplementationIntentsAndPolicySets(Implementation implementation, Component parent)  
+                                                                throws PolicyValidationException, PolicyConfigurationException {
+        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);
+            normalizeIntents(parent);
+    
+            computeIntentsForOperations((OperationsConfigurator)parent,
+                                        (IntentAttachPoint)implementation,
+                                        parent.getRequiredIntents());
+            
+            
+            List<PolicySet> prunedPolicySets = computeInheritablePolicySets(parent.getPolicySets(),
+                                                                            parent.getApplicablePolicySets());
+            parent.getPolicySets().clear();
+            parent.getPolicySets().addAll(prunedPolicySets);
+            normalizePolicySets(parent);
+    
+            PolicyComputationUtils.checkForMutuallyExclusiveIntents(
+                parent.getRequiredIntents(),
+                parent.getPolicySets(),
+                policiedImplementation.getType(),
+                parent.getName());
+    
+            computePolicySetsForOperations(parent.getApplicablePolicySets(), 
+                                           (OperationsConfigurator)parent, 
+                                           (PolicySetAttachPoint)implementation);
+    
+            for ( ConfiguredOperation confOp : ((OperationsConfigurator)parent).getConfiguredOperations() ) {
+                PolicyComputationUtils.checkForMutuallyExclusiveIntents(
+                    confOp.getRequiredIntents(),
+                    confOp.getPolicySets(),
+                    policiedImplementation.getType(),
+                    parent.getName() + "." + confOp.getName());
+            }
+            
+            determineApplicableImplementationPolicySets(parent);
+    
+        }
+    }
+
+    static private void determineApplicableImplementationPolicySets(Component component) throws PolicyConfigurationException {
+        List<Intent> intentsCopy = null;
+        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 instanceof OperationsConfigurator ) {
+                OperationsConfigurator opConfigurator = (OperationsConfigurator)component;
+                
+                for ( ConfiguredOperation confOp : opConfigurator.getConfiguredOperations() ) {
+                    intentsCopy = new ArrayList<Intent>(confOp.getRequiredIntents());
+                    trimInherentlyProvidedIntents(policiedImplementation.getType(), 
+                                                  confOp.getRequiredIntents());
+                    trimProvidedIntents(confOp.getRequiredIntents(), confOp.getPolicySets());
+                    trimProvidedIntents(confOp.getRequiredIntents(), component.getPolicySets());
+                    
+                    determineApplicableDomainPolicySets(component.getApplicablePolicySets(), 
+                                                        confOp,
+                                                        policiedImplementation.getType());
+    
+                    if (confOp.getRequiredIntents().size() > 0) {
+                        new PolicyConfigurationException("The following are unfulfilled intents for operations configured in "
+                                + "component implementation - " + component.getName() + "\nUnfulfilled Intents = " +
+                                confOp.getRequiredIntents());
+                    }
+                    
+                    //the intents list could have been trimmed when matching for policysets
+                    //since the implementation may need the original set of intents we copy that back
+                    confOp.getRequiredIntents().clear();
+                    confOp.getRequiredIntents().addAll(intentsCopy);
+                }
+            }
+                
+            intentsCopy = new ArrayList<Intent>(component.getRequiredIntents());
+            trimInherentlyProvidedIntents(policiedImplementation.getType(), 
+                                          component.getRequiredIntents());
+            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.getApplicablePolicySets(), 
+                                                    component,
+                                                    policiedImplementation.getType());
+                                                    
+                if (component.getRequiredIntents().size() > 0) {
+                    throw new PolicyConfigurationException("The following are unfulfilled intents for component implementation - " + component
+                        .getName() + "\nUnfulfilled Intents = " + component.getRequiredIntents());
+                }
+            //}
+            
+            //the intents list could have been trimmed when matching for policysets
+            //since the bindings may need the original set of intents we copy that back
+            component.getRequiredIntents().clear();
+            component.getRequiredIntents().addAll(intentsCopy);
         }
     }
 }

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PolicyConfigurationUtil.java
------------------------------------------------------------------------------
    eol-style = native

Copied: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java (from r651126, incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyUtil.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java?p2=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java&p1=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyUtil.java&r1=651126&r2=651179&rev=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyUtil.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java Thu Apr 24 00:21:13 2008
@@ -42,7 +42,6 @@
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
 
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentProperty;
@@ -56,7 +55,7 @@
  * Utility class to deal with processing of component properties that are taking values from the parent 
  * composite's properties or an external file.
  */
-public class PropertyUtil {
+abstract class PropertyConfigurationUtil {
     private static final DocumentBuilderFactory DOC_BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
     private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance();
     

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/PropertyConfigurationUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java (from r651126, incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceUtil.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java?p2=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java&p1=incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceUtil.java&r1=651126&r2=651179&rev=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceUtil.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java Thu Apr 24 00:21:13 2008
@@ -28,7 +28,7 @@
  * This class encapsulates utility methods to deal with reference definitions
  *
  */
-class ReferenceUtil {
+abstract class ReferenceConfigurationUtil {
     static boolean isValidMultiplicityOverride(Multiplicity definedMul, Multiplicity overridenMul) {
         if (definedMul != overridenMul) {
             switch (definedMul) {

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ReferenceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java?rev=651179&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java (added)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java Thu Apr 24 00:21:13 2008
@@ -0,0 +1,58 @@
+/*
+ * 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 org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.assembly.CompositeService;
+import org.apache.tuscany.sca.assembly.Service;
+
+/**
+ * This class encapsulates utility methods to deal with service definitions.
+ *
+ */
+abstract class ServiceConfigurationUtil {
+
+    /**
+     * Follow a service promotion chain down to the inner most (non composite)
+     * component service.
+     * 
+     * @param topCompositeService
+     * @return
+     */
+    static ComponentService getPromotedComponentService(CompositeService compositeService) {
+        ComponentService componentService = compositeService.getPromotedService();
+        if (componentService != null) {
+            Service service = componentService.getService();
+            if (componentService.getName() != null && service instanceof CompositeService) {
+    
+                // Continue to follow the service promotion chain
+                return getPromotedComponentService((CompositeService)service);
+    
+            } else {
+    
+                // Found a non-composite service
+                return componentService;
+            }
+        } else {
+    
+            // No promoted service
+            return null;
+        }
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ServiceConfigurationUtil.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java?rev=651179&r1=651178&r2=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java Thu Apr 24 00:21:13 2008
@@ -44,7 +44,7 @@
         assemblyFactory = null;
     }
     
-    public void testFuseIncludes() {
+    public void testFuseIncludes() throws Exception {
         Composite c1 = assemblyFactory.createComposite();
         c1.setName(new QName("http://foo", "C1"));
         Component a = assemblyFactory.createComponent();
@@ -68,7 +68,7 @@
         c.setName(new QName("http://foo", "C"));
         c.getIncludes().add(c1);
         
-        new CompositeIncludeBuilderImpl(null).fuseIncludes(c);
+        new CompositeIncludeBuilderImpl(null).build(c);
         
         assertTrue(c.getComponents().get(0).getName().equals("a"));
         assertTrue(c.getComponents().get(1).getName().equals("b"));
@@ -76,7 +76,7 @@
         assertTrue(c.getReferences().get(0).getName().equals("r"));
     }
     
-    public void testExpandComposites() {
+    public void testExpandComposites() throws Exception {
         Composite c1 = assemblyFactory.createComposite();
         c1.setName(new QName("http://foo", "C1"));
         Component a = assemblyFactory.createComponent();
@@ -110,7 +110,7 @@
         z.setImplementation(c1);
         c.getComponents().add(z);
         
-        new CompositeCloneBuilderImpl(null).expandCompositeImplementations(c);
+        new CompositeCloneBuilderImpl(null).build(c);
         
         assertTrue(c.getComponents().get(0).getImplementation() != c1);
         assertTrue(c.getComponents().get(1).getImplementation() != c2);

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?rev=651179&r1=651178&r2=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Thu Apr 24 00:21:13 2008
@@ -158,9 +158,9 @@
         return new CompositeBuilderImpl(assemblyFactory, 
                                         scaBindingFactory, 
                                         intentAttachPointTypeFactory, 
-                                        interfaceContractMapper, 
-                                        monitor,
-                                        scaDefns);
+                                        interfaceContractMapper,
+                                        scaDefns,
+                                        monitor);
     }
     
     public static DomainBuilder createDomainBuilder(AssemblyFactory assemblyFactory,

Added: incubator/tuscany/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeConfigurationBuilderImpl.java?rev=651179&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeConfigurationBuilderImpl.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeConfigurationBuilderImpl.java Thu Apr 24 00:21:13 2008
@@ -0,0 +1,91 @@
+/*
+ * 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.implementation.node.builder.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.SCABindingFactory;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.assembly.builder.impl.BaseConfigurationBuilderImpl;
+import org.apache.tuscany.sca.definitions.SCADefinitions;
+import org.apache.tuscany.sca.implementation.node.NodeImplementation;
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A composite builder that handles the configuration of composites assigned to
+ * node components, from the default configuration from the node components.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NodeConfigurationBuilderImpl extends BaseConfigurationBuilderImpl implements CompositeBuilder {
+    
+    public NodeConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
+                                                  SCABindingFactory scaBindingFactory,
+                                                  InterfaceContractMapper interfaceContractMapper,
+                                                  SCADefinitions policyDefinitions,
+                                                  Monitor monitor) {
+        super(assemblyFactory, scaBindingFactory, interfaceContractMapper, policyDefinitions, monitor);
+    }
+
+    public void build(Composite composite) throws CompositeBuilderException {
+        configureNodeComponents(composite);
+    }
+
+    /**
+     * Configure the node components in the given composite.
+     * 
+     * @param composite
+     * @throws CompositeBuilderException
+     */
+    private void configureNodeComponents(Composite composite) throws CompositeBuilderException {
+        
+        // Process each node component in the given composite
+        for (Component component: composite.getComponents()) {
+            Implementation implementation = component.getImplementation();
+            if (implementation instanceof NodeImplementation) {
+                
+                // Get the application composite assigned to the node
+                NodeImplementation nodeImplementation = (NodeImplementation)implementation;
+                Composite applicationComposite = nodeImplementation.getComposite();
+                
+                // Get the default bindings configured on the node
+                List<Binding> defaultBindings = new ArrayList<Binding>();
+                for (ComponentService componentService: component.getServices()) {
+                    defaultBindings.addAll(componentService.getBindings());
+                }
+
+                // Configure services in the application composite assigned to
+                // the node using the default bindings.
+                configureBindingURIs(applicationComposite, defaultBindings);
+            }
+        }
+        
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeConfigurationBuilderImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeConfigurationBuilderImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/sca/modules/implementation-node/src/main/java/org/apache/tuscany/sca/implementation/node/builder/impl/NodeConfigurationBuilderImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: incubator/tuscany/java/sca/modules/implementation-node/src/test/java/org/apache/tuscany/sca/implementation/node/builder/impl/CalculateBindingURITestCase.java (from r651126, incubator/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CalculateBindingURITestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-node/src/test/java/org/apache/tuscany/sca/implementation/node/builder/impl/CalculateBindingURITestCase.java?p2=incubator/tuscany/java/sca/modules/implementation-node/src/test/java/org/apache/tuscany/sca/implementation/node/builder/impl/CalculateBindingURITestCase.java&p1=incubator/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CalculateBindingURITestCase.java&r1=651126&r2=651179&rev=651179&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CalculateBindingURITestCase.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-node/src/test/java/org/apache/tuscany/sca/implementation/node/builder/impl/CalculateBindingURITestCase.java Thu Apr 24 00:21:13 2008
@@ -17,7 +17,7 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.assembly.builder.impl;
+package org.apache.tuscany.sca.implementation.node.builder.impl;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -37,22 +37,30 @@
 import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.implementation.node.NodeImplementation;
+import org.apache.tuscany.sca.implementation.node.NodeImplementationFactory;
+import org.apache.tuscany.sca.implementation.node.impl.NodeImplementationFactoryImpl;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.monitor.Problem;
 import org.apache.tuscany.sca.monitor.Problem.Severity;
 
+import com.sun.org.apache.xerces.internal.impl.xs.opti.DefaultNode;
+
 public class CalculateBindingURITestCase extends TestCase {
     private final static Logger logger = Logger.getLogger(CalculateBindingURITestCase.class.getName());
     private AssemblyFactory assemblyFactory;
-    private SCABindingFactory scaBindingFactory = null;
-    private Monitor monitor = null;
-    private CompositeConfigurationBuilderImpl configurationBuilder = null;
+    private SCABindingFactory scaBindingFactory;
+    private NodeImplementationFactory nodeImplementationFactory;
+    private Monitor monitor;
+    private CompositeBuilder configurationBuilder;
     private List<Binding> defaultBindings = new ArrayList<Binding>();
     
     @Override
     protected void setUp() throws Exception {
         assemblyFactory = new DefaultAssemblyFactory();
         scaBindingFactory = new TestBindingFactory();
+        nodeImplementationFactory = new NodeImplementationFactoryImpl();
         monitor = new Monitor() {
             public void problem(Problem problem) {
                 if (problem.getSeverity() == Severity.INFO) {
@@ -68,12 +76,32 @@
                 }
             }
         };
-        configurationBuilder = new CompositeConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, null, null, monitor);
+        configurationBuilder = new NodeConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, null, null, monitor);
         Binding defaultBinding = new TestBindingImpl();
         defaultBinding.setURI("http://myhost:8080/root");
         defaultBindings.add(defaultBinding);
     }
     
+    /**
+     * Create a composite containing a node component pointing to the
+     * given application composite.
+     * 
+     * @param composite
+     * @return
+     */
+    private Composite nodeComposite(Composite composite) {
+        Composite nodeComposite = assemblyFactory.createComposite();
+        Component nodeComponent = assemblyFactory.createComponent();
+        NodeImplementation nodeImplementation = nodeImplementationFactory.createNodeImplementation();
+        nodeImplementation.setComposite(composite);
+        nodeComponent.setImplementation(nodeImplementation);
+        ComponentService nodeService = assemblyFactory.createComponentService();
+        nodeService.getBindings().addAll(defaultBindings);
+        nodeComponent.getServices().add(nodeService);
+        nodeComposite.getComponents().add(nodeComponent);
+        return nodeComposite;
+    }
+    
     @Override
     protected void tearDown() throws Exception {
         assemblyFactory = null;
@@ -226,7 +254,7 @@
         Binding b = composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1", b.getURI());
         } catch(Exception ex){
@@ -240,7 +268,7 @@
         Binding b = composite.getComponents().get(0).getServices().get(0).getBindings().get(0);
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1/s1", b.getURI());
         } catch(Exception ex){
@@ -255,7 +283,7 @@
         b.setName("n");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1/n", b.getURI());
         } catch(Exception ex){
@@ -271,7 +299,7 @@
         b.setURI("b");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1/b", b.getURI());
         } catch(Exception ex){
@@ -287,7 +315,7 @@
         b.setURI("http://myhost:8080/b");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/b", b.getURI());
         } catch(Exception ex){
@@ -303,7 +331,7 @@
         b.setURI("../../b");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/b", b.getURI());
         } catch(Exception ex){
@@ -320,7 +348,7 @@
         Binding b = composite.getServices().get(0).getBindings().get(0);
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root", b.getURI());
         } catch(Exception ex){
@@ -334,7 +362,7 @@
         Binding b = composite.getServices().get(0).getBindings().get(0);
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/s1", b.getURI());
         } catch(Exception ex){
@@ -349,7 +377,7 @@
         b.setName("n");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/n", b.getURI());
         } catch(Exception ex){
@@ -365,7 +393,7 @@
         b.setURI("b");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/b", b.getURI());
         } catch(Exception ex){
@@ -381,7 +409,7 @@
         b.setURI("http://myhost:8080/b");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/b", b.getURI());
         } catch(Exception ex){
@@ -398,7 +426,7 @@
         Binding b = ((Composite)composite.getComponents().get(0).getImplementation()).getComponents().get(0).getServices().get(0).getBindings().get(0);
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1/c2", b.getURI());
         } catch(Exception ex){
@@ -412,7 +440,7 @@
         Binding b = ((Composite)composite.getComponents().get(0).getImplementation()).getComponents().get(0).getServices().get(0).getBindings().get(0);
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1/c2/s1", b.getURI());
         } catch(Exception ex){
@@ -427,7 +455,7 @@
         b.setName("n");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1/c2/n", b.getURI());
         } catch(Exception ex){
@@ -443,7 +471,7 @@
         b.setURI("b");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/root/c1/c2/b", b.getURI());
         } catch(Exception ex){
@@ -459,7 +487,7 @@
         b.setURI("http://myhost:8080/b");
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
 
             assertEquals("http://myhost:8080/b", b.getURI());
         } catch(Exception ex){
@@ -481,7 +509,7 @@
         
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
             fail();
         } catch(Exception ex){
             //System.out.println(ex.toString());
@@ -502,7 +530,7 @@
         
         
         try {
-            configurationBuilder.configureBindingURIs(composite, null, defaultBindings);
+            configurationBuilder.build(nodeComposite(composite));
             fail();
         } catch(Exception ex){
             System.out.println(ex.toString());
@@ -542,7 +570,7 @@
         }
         
         public boolean isUnresolved() {
-            return false;
+            return unresolved;
         }
         
         @Override

Propchange: incubator/tuscany/java/sca/modules/implementation-node/src/test/java/org/apache/tuscany/sca/implementation/node/builder/impl/CalculateBindingURITestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-node/src/test/java/org/apache/tuscany/sca/implementation/node/builder/impl/CalculateBindingURITestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date