You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/09/14 23:49:38 UTC

svn commit: r814879 [1/2] - in /tuscany/java/sca/modules: assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ assembly/src/main/resources/ assembly/src/test/java/org/apach...

Author: rfeng
Date: Mon Sep 14 21:49:36 2009
New Revision: 814879

URL: http://svn.apache.org/viewvc?rev=814879&view=rev
Log:
Enhance the CompositeBuilderExtensionPoint to include binding/implementation builders which replace BindingExtension and CompositePreProcessor

Added:
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java   (with props)
    tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java
      - copied, changed from r814714, tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java
    tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/
    tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/services/
    tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.BindingBuilder
    tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/xml/
    tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/xml/MockPolicy.java
      - copied, changed from r811001, tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/MockPolicy.java
    tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/xml/ReadDocumentTestCase.java
      - copied, changed from r811001, tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/ReadDocumentTestCase.java
    tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/xml/TestPolicyProcessor.java
      - copied, changed from r811001, tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/TestPolicyProcessor.java
    tuscany/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/xml/
    tuscany/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/xml/test_definitions.xml
      - copied, changed from r811001, tuscany/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml
    tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java   (with props)
    tuscany/java/sca/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
    tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationBuilder.java   (with props)
    tuscany/java/sca/modules/implementation-web/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder
Removed:
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilderExtension.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ComponentPreProcessor.java
    tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java
    tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/MockPolicy.java
    tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/ReadDocumentTestCase.java
    tuscany/java/sca/modules/definitions-xml/src/test/java/org/apache/tuscany/sca/definitions/TestPolicyProcessor.java
    tuscany/java/sca/modules/definitions-xml/src/test/resources/org/apache/tuscany/sca/definitions/test_definitions.xml
Modified:
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/CompositeBuilderExtensionPoint.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceBindingBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferencePromotionBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceBindingBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentTypeBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingConfigurationBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ModelBuilderImpl.java
    tuscany/java/sca/modules/assembly/src/main/resources/assembly-validation-messages.properties
    tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java
    tuscany/java/sca/modules/binding-ws-wsdlgen/META-INF/MANIFEST.MF
    tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java
    tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
    tuscany/java/sca/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
    tuscany/java/sca/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
    tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallableReferenceImpl.java
    tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
    tuscany/java/sca/modules/implementation-web/META-INF/MANIFEST.MF
    tuscany/java/sca/modules/implementation-web/pom.xml
    tuscany/java/sca/modules/implementation-web/src/main/java/org/apache/tuscany/sca/implementation/web/impl/WebImplementationImpl.java
    tuscany/java/sca/modules/policy-xml/META-INF/MANIFEST.MF
    tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java
    tuscany/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/Calculator.composite
    tuscany/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/test_definitions.xml

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/BindingBuilder.java Mon Sep 14 21:49:36 2009
@@ -19,9 +19,9 @@
 
 package org.apache.tuscany.sca.assembly.builder;
 
-import org.apache.tuscany.sca.assembly.AbstractContract;
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Contract;
 import org.apache.tuscany.sca.monitor.Monitor;
 
 /**
@@ -29,7 +29,7 @@
  *
  * @version $Rev$ $Date$
  */
-public interface BindingBuilder {
+public interface BindingBuilder<B extends Binding> {
 
     /**
      * Configure a binding.
@@ -37,6 +37,8 @@
      * @param component The component for the binding's service or reference
      * @param contract The binding's service or reference
      */
-    void build(Component component, AbstractContract contract, Binding binding, Monitor monitor);
+    void build(Component component, Contract contract, B binding, Monitor monitor);
+
+    Class<B> getModelType();
 
 }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/CompositeBuilderExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/CompositeBuilderExtensionPoint.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/CompositeBuilderExtensionPoint.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/CompositeBuilderExtensionPoint.java Mon Sep 14 21:49:36 2009
@@ -19,6 +19,9 @@
 
 package org.apache.tuscany.sca.assembly.builder;
 
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Implementation;
+
 /**
  * An extension point for Composite builders.
  *
@@ -47,5 +50,17 @@
      * @return
      */
     CompositeBuilder getCompositeBuilder(String id);
+    
+    void addBindingBuilder(BindingBuilder<?> bindingBuilder);
+
+    <B extends Binding> BindingBuilder<B> getBindingBuilder(Class<B> bindingType);
+
+    <B extends Binding> void removeBindingBuilder(BindingBuilder<B> builder);
+
+    void addImplementationBuilder(ImplementationBuilder<?> implementationBuilder);
+
+    <I extends Implementation> ImplementationBuilder<I> getImplementationBuilder(Class<I> implementationType);
+
+    <I extends Implementation> void removeImplementationBuilder(ImplementationBuilder<I> builder);
 
 }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java Mon Sep 14 21:49:36 2009
@@ -27,7 +27,11 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Contract;
+import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.core.UtilityExtensionPoint;
@@ -46,6 +50,9 @@
 
     private ExtensionPointRegistry registry;
     private final Map<String, CompositeBuilder> builders = new HashMap<String, CompositeBuilder>();
+    private final Map<Class<?>, BindingBuilder> bindingBuilders = new HashMap<Class<?>, BindingBuilder>();
+    private final Map<Class<?>, ImplementationBuilder> implementationBuilders =
+        new HashMap<Class<?>, ImplementationBuilder>();
     private boolean loaded;
 
     public DefaultCompositeBuilderExtensionPoint(ExtensionPointRegistry registry) {
@@ -90,19 +97,84 @@
             Map<String, String> attributes = builderDeclaration.getAttributes();
             String id = attributes.get("id");
 
-            CompositeBuilder builder =
-                new LazyCompositeBuilder(registry, id, builderDeclaration, this, factories, mapper);
+            CompositeBuilder builder = new LazyCompositeBuilder(id, builderDeclaration, this, factories, mapper);
             builders.put(id, builder);
         }
+
+        try {
+            builderDeclarations = serviceDiscovery.getServiceDeclarations(BindingBuilder.class);
+        } catch (Exception e) {
+            throw new IllegalStateException(e);
+        }
+
+        for (ServiceDeclaration builderDeclaration : builderDeclarations) {
+            BindingBuilder<?> builder = new LazyBindingBuilder(builderDeclaration);
+            bindingBuilders.put(builder.getModelType(), builder);
+        }
+
+        try {
+            builderDeclarations = serviceDiscovery.getServiceDeclarations(ImplementationBuilder.class);
+        } catch (Exception e) {
+            throw new IllegalStateException(e);
+        }
+
+        for (ServiceDeclaration builderDeclaration : builderDeclarations) {
+            ImplementationBuilder<?> builder = new LazyImplementationBuilder(builderDeclaration);
+            implementationBuilders.put(builder.getModelType(), builder);
+        }
+
+    }
+
+    public void addBindingBuilder(BindingBuilder<?> bindingBuilder) {
+        bindingBuilders.put(bindingBuilder.getModelType(), bindingBuilder);
+    }
+
+    public void addImplementationBuilder(ImplementationBuilder<?> implementationBuilder) {
+        implementationBuilders.put(implementationBuilder.getModelType(), implementationBuilder);
+    }
+
+    public <B extends Binding> BindingBuilder<B> getBindingBuilder(Class<B> bindingType) {
+        if (bindingType.isInterface()) {
+            return (BindingBuilder<B>)bindingBuilders.get(bindingType);
+        }
+        Class<?>[] classes = bindingType.getInterfaces();
+        for (Class<?> i : classes) {
+            BindingBuilder<B> builder = (BindingBuilder<B>)bindingBuilders.get(i);
+            if (builder != null) {
+                return builder;
+            }
+        }
+        return null;
+    }
+
+    public <I extends Implementation> ImplementationBuilder<I> getImplementationBuilder(Class<I> implementationType) {
+        if (implementationType.isInterface()) {
+            return (ImplementationBuilder<I>)implementationBuilders.get(implementationType);
+        }
+        Class<?>[] classes = implementationType.getInterfaces();
+        for (Class<?> i : classes) {
+            ImplementationBuilder<I> builder = (ImplementationBuilder<I>)implementationBuilders.get(i);
+            if (builder != null) {
+                return builder;
+            }
+        }
+        return null;
+    }
+
+    public <B extends Binding> void removeBindingBuilder(BindingBuilder<B> builder) {
+        bindingBuilders.remove(builder.getModelType());
+    }
+
+    public <I extends Implementation> void removeImplementationBuilder(ImplementationBuilder<I> builder) {
+        implementationBuilders.remove(builder.getModelType());
     }
 
     /**
      * A wrapper around a composite builder allowing lazy
      * loading and initialization of implementation providers.
      */
-    private static class LazyCompositeBuilder implements CompositeBuilder, CompositeBuilderTmp {
+    private class LazyCompositeBuilder implements CompositeBuilder, CompositeBuilderTmp {
 
-        private ExtensionPointRegistry registry;
         private FactoryExtensionPoint factories;
         private InterfaceContractMapper mapper;
         private String id;
@@ -110,13 +182,11 @@
         private CompositeBuilder builder;
         private CompositeBuilderExtensionPoint builders;
 
-        private LazyCompositeBuilder(ExtensionPointRegistry registry,
-                                     String id,
+        private LazyCompositeBuilder(String id,
                                      ServiceDeclaration factoryDeclaration,
                                      CompositeBuilderExtensionPoint builders,
                                      FactoryExtensionPoint factories,
                                      InterfaceContractMapper mapper) {
-            this.registry = registry;
             this.id = id;
             this.builderDeclaration = factoryDeclaration;
             this.builders = builders;
@@ -170,4 +240,106 @@
 
     }
 
+    private class LazyBindingBuilder implements BindingBuilder {
+        private ServiceDeclaration sd;
+        private String model;
+        private BindingBuilder<?> builder;
+        private Class<?> modelType;
+
+        /**
+         * @param sd
+         */
+        public LazyBindingBuilder(ServiceDeclaration sd) {
+            super();
+            this.sd = sd;
+            this.model = sd.getAttributes().get("model");
+        }
+
+        public void build(Component component, Contract contract, Binding binding, Monitor monitor) {
+            getBuilder().build(component, contract, binding, monitor);
+        }
+
+        public Class getModelType() {
+            if (modelType == null) {
+                try {
+                    modelType = sd.loadClass(model);
+                } catch (Exception e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+            return modelType;
+        }
+
+        private synchronized BindingBuilder getBuilder() {
+            if (builder == null) {
+                try {
+                    Class<?> builderClass = sd.loadClass();
+                    try {
+                        Constructor<?> constructor = builderClass.getConstructor(ExtensionPointRegistry.class);
+                        builder = (BindingBuilder)constructor.newInstance(registry);
+                    } catch (NoSuchMethodException e) {
+                        Constructor<?> constructor = builderClass.getConstructor();
+                        builder = (BindingBuilder)constructor.newInstance();
+
+                    }
+                } catch (Exception e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+            return builder;
+        }
+
+    }
+
+    private class LazyImplementationBuilder implements ImplementationBuilder {
+        private ServiceDeclaration sd;
+        private String model;
+        private ImplementationBuilder<?> builder;
+        private Class<?> modelType;
+
+        /**
+         * @param sd
+         */
+        public LazyImplementationBuilder(ServiceDeclaration sd) {
+            super();
+            this.sd = sd;
+            this.model = sd.getAttributes().get("model");
+        }
+
+        public void build(Component component, Implementation implementation, Monitor monitor) {
+            getBuilder().build(component, implementation, monitor);
+        }
+
+        public Class getModelType() {
+            if (modelType == null) {
+                try {
+                    modelType = sd.loadClass(model);
+                } catch (Exception e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+            return modelType;
+        }
+
+        private synchronized ImplementationBuilder getBuilder() {
+            if (builder == null) {
+                try {
+                    Class<?> builderClass = sd.loadClass();
+                    try {
+                        Constructor<?> constructor = builderClass.getConstructor(ExtensionPointRegistry.class);
+                        builder = (ImplementationBuilder)constructor.newInstance(registry);
+                    } catch (NoSuchMethodException e) {
+                        Constructor<?> constructor = builderClass.getConstructor();
+                        builder = (ImplementationBuilder)constructor.newInstance();
+
+                    }
+                } catch (Exception e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+            return builder;
+        }
+
+    }
+
 }

Added: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java?rev=814879&view=auto
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java (added)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/ImplementationBuilder.java Mon Sep 14 21:49:36 2009
@@ -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;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.monitor.Monitor;
+
+/**
+ * A builder that handles any build-time configuration needed by implementations.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ImplementationBuilder<I extends Implementation> {
+
+    /**
+     * Configure a component implementation.
+     * 
+     * @param component The component 
+     * @param contract The implementation
+     */
+    void build(Component component, I implmentation, Monitor monitor);
+
+    Class<I> getModelType();
+
+}

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

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

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -39,6 +39,7 @@
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.core.UtilityExtensionPoint;
@@ -67,12 +68,15 @@
     protected InterfaceContractMapper interfaceContractMapper;
     protected DocumentBuilderFactory documentBuilderFactory;
     protected TransformerFactory transformerFactory;
+    protected CompositeBuilderExtensionPoint builders;
 
-    protected BaseBuilderImpl(AssemblyFactory assemblyFactory,
+    protected BaseBuilderImpl(CompositeBuilderExtensionPoint builders,
+                              AssemblyFactory assemblyFactory,
                               SCABindingFactory scaBindingFactory,
                               DocumentBuilderFactory documentBuilderFactory,
                               TransformerFactory transformerFactory,
                               InterfaceContractMapper interfaceContractMapper) {
+        this.builders = builders;
         this.assemblyFactory = assemblyFactory;
         this.scaBindingFactory = scaBindingFactory;
         this.documentBuilderFactory = documentBuilderFactory;
@@ -85,6 +89,7 @@
      * @param registry
      */
     protected BaseBuilderImpl(ExtensionPointRegistry registry) {
+        this.builders = registry.getExtensionPoint(CompositeBuilderExtensionPoint.class);
         FactoryExtensionPoint factoryExtensionPoint = registry.getExtensionPoint(FactoryExtensionPoint.class);
         this.assemblyFactory = factoryExtensionPoint.getFactory(AssemblyFactory.class);
         this.scaBindingFactory = factoryExtensionPoint.getFactory(SCABindingFactory.class);

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -18,21 +18,14 @@
  */
 package org.apache.tuscany.sca.assembly.builder.impl;
 
-import java.net.URI;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.TransformerFactory;
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.ComponentService;
-import org.apache.tuscany.sca.assembly.ComponentType;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.CompositeService;
@@ -42,10 +35,8 @@
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.builder.ComponentPreProcessor;
-import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
-import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
-import org.apache.tuscany.sca.assembly.builder.CompositeBuilderTmp;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
+import org.apache.tuscany.sca.assembly.builder.ImplementationBuilder;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.core.UtilityExtensionPoint;
@@ -55,8 +46,6 @@
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.monitor.MonitorFactory;
 import org.apache.tuscany.sca.policy.ExtensionType;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.PolicyFactory;
 import org.apache.tuscany.sca.policy.PolicySubject;
 
 /**
@@ -74,6 +63,7 @@
     private AssemblyFactory assemblyFactory;
     private SCABindingFactory scaBindingFactory;
     private InterfaceContractMapper interfaceContractMapper;
+    private CompositeBuilderExtensionPoint builders;
         
     public ComponentBuilderImpl(ExtensionPointRegistry registry) {
         UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
@@ -85,6 +75,8 @@
         scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);
         
         interfaceContractMapper = utilities.getUtility(InterfaceContractMapper.class);
+        
+        builders = registry.getExtensionPoint(CompositeBuilderExtensionPoint.class);
     }    
     
     public void setComponentTypeBuilder(ComponentTypeBuilderImpl componentTypeBuilder){
@@ -99,8 +91,12 @@
         
         // do any required pre-processing on the implementation
         // what does this do?
-        if (component.getImplementation() instanceof ComponentPreProcessor) {
-            ((ComponentPreProcessor)component.getImplementation()).preProcess(component);
+        Implementation impl = component.getImplementation();
+        if (impl != null) {
+            ImplementationBuilder builder = builders.getImplementationBuilder(impl.getClass());
+            if (builder != null) {
+                builder.build(component, impl, monitor);
+            }
         }
         
         // create the component type for this component 

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentConfigurationBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -24,10 +24,6 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.TransformerFactory;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentProperty;
 import org.apache.tuscany.sca.assembly.ComponentReference;
@@ -38,14 +34,13 @@
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
-import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.builder.ComponentPreProcessor;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.assembly.builder.ImplementationBuilder;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 
 /**
@@ -55,19 +50,8 @@
  */
 public class ComponentConfigurationBuilderImpl extends BaseBuilderImpl implements CompositeBuilder {
 
-    @Deprecated
-    public ComponentConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
-                                             SCABindingFactory scaBindingFactory,
-                                             InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, scaBindingFactory, null, null, interfaceContractMapper);
-    }
-
-    public ComponentConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
-                                             SCABindingFactory scaBindingFactory,
-                                             DocumentBuilderFactory documentBuilderFactory,
-                                             TransformerFactory transformerFactory,
-                                             InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, scaBindingFactory, documentBuilderFactory, transformerFactory, interfaceContractMapper);
+    public ComponentConfigurationBuilderImpl(ExtensionPointRegistry registry) {
+        super(registry);
     }
 
     public String getID() {
@@ -158,9 +142,13 @@
     	                component.setAutowire(composite.getAutowire());
     	            }
     	
-    	            if (component.getImplementation() instanceof ComponentPreProcessor) {
-    	                ((ComponentPreProcessor)component.getImplementation()).preProcess(component);
-    	            }
+                    Implementation impl = component.getImplementation();
+                    if (impl != null) {
+                        ImplementationBuilder builder = builders.getImplementationBuilder(impl.getClass());
+                        if (builder != null) {
+                            builder.build(component, impl, monitor);
+                        }
+                    }
     	
     	            // Index implementation properties, services and references
     	            Map<String, Service> services = new HashMap<String, Service>();

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceBindingBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceBindingBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceBindingBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceBindingBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -24,9 +24,11 @@
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.Implementation;
-import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
+import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
 
@@ -38,9 +40,12 @@
  */
 public class ComponentReferenceBindingBuilderImpl implements CompositeBuilder {
 
-    public ComponentReferenceBindingBuilderImpl() {
-    }
+    private CompositeBuilderExtensionPoint builders;
 
+    public ComponentReferenceBindingBuilderImpl(ExtensionPointRegistry registry) {
+        this.builders = registry.getExtensionPoint(CompositeBuilderExtensionPoint.class);
+    }
+    
     public void build(Composite composite, Definitions definitions, Monitor monitor) throws CompositeBuilderException {
         buildReferenceBindings(composite, monitor);
     }
@@ -55,11 +60,9 @@
         for (Component component : composite.getComponents()) {
             for (ComponentReference componentReference : component.getReferences()) {
                 for (Binding binding : componentReference.getBindings()) {
-                    if (binding instanceof BindingBuilderExtension) {
-                        ((BindingBuilderExtension)binding).getBuilder().build(component,
-                                                                              componentReference,
-                                                                              binding,
-                                                                              monitor);
+                    BindingBuilder builder = builders.getBindingBuilder(binding.getClass());
+                    if (builder != null) {
+                        builder.build(component, componentReference, binding, monitor);
                     }
                 }
             }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceEndpointReferenceBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -24,7 +24,6 @@
 import java.util.List;
 import java.util.Map;
 
-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.ComponentReference;
@@ -39,9 +38,9 @@
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.PolicySet;
@@ -58,9 +57,8 @@
     //boolean useNew = true;
     boolean useNew = false;
 
-    public ComponentReferenceEndpointReferenceBuilderImpl(AssemblyFactory assemblyFactory,
-                                                          InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, null, null, null, interfaceContractMapper);
+    public ComponentReferenceEndpointReferenceBuilderImpl(ExtensionPointRegistry registry) {
+        super(registry);
     }
 
     public String getID() {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferencePromotionBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferencePromotionBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferencePromotionBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferencePromotionBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -31,6 +31,8 @@
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
 
@@ -42,8 +44,9 @@
 public class ComponentReferencePromotionBuilderImpl implements CompositeBuilder {
     private AssemblyFactory assemblyFactory;
 
-    public ComponentReferencePromotionBuilderImpl(AssemblyFactory assemblyFactory) {
-        this.assemblyFactory = assemblyFactory;
+    public ComponentReferencePromotionBuilderImpl(ExtensionPointRegistry registry) {
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        this.assemblyFactory = factories.getFactory(AssemblyFactory.class);
     }
 
     public void build(Composite composite, Definitions definitions, Monitor monitor) throws CompositeBuilderException {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentReferenceWireBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -23,19 +23,16 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.assembly.CompositeReference;
 import org.apache.tuscany.sca.assembly.Implementation;
-import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.Wire;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 
 /**
@@ -45,9 +42,8 @@
  */
 public class ComponentReferenceWireBuilderImpl extends BaseBuilderImpl implements CompositeBuilder {
 
-    public ComponentReferenceWireBuilderImpl(AssemblyFactory assemblyFactory,
-                                             InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, null, null, null, interfaceContractMapper);
+    public ComponentReferenceWireBuilderImpl(ExtensionPointRegistry registry) {
+        super(registry);
     }
 
     public String getID() {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceBindingBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceBindingBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceBindingBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentServiceBindingBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -25,9 +25,10 @@
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
-import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
 
@@ -38,8 +39,10 @@
  * @version $Rev$ $Date$
  */
 public class ComponentServiceBindingBuilderImpl implements CompositeBuilder {
-
-    public ComponentServiceBindingBuilderImpl() {
+    private CompositeBuilderExtensionPoint builders;
+    
+    public ComponentServiceBindingBuilderImpl(ExtensionPointRegistry registry) {
+        this.builders = registry.getExtensionPoint(CompositeBuilderExtensionPoint.class);
     }
 
     public String getID() {
@@ -64,11 +67,9 @@
         for (Component component : composite.getComponents()) {
             for (ComponentService componentService : component.getServices()) {
                 for (Binding binding : componentService.getBindings()) {
-                    if (binding instanceof BindingBuilderExtension) {
-                        BindingBuilder builder = ((BindingBuilderExtension)binding).getBuilder();
-                        if (builder != null) {
-                            builder.build(component, componentService, binding, monitor);
-                        }
+                    BindingBuilder builder = builders.getBindingBuilder(binding.getClass());
+                    if (builder != null) {
+                        builder.build(component, componentService, binding, monitor);
                     }
                 }
             }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentTypeBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentTypeBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentTypeBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ComponentTypeBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -37,7 +37,7 @@
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.builder.ComponentPreProcessor;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.core.UtilityExtensionPoint;
@@ -64,6 +64,7 @@
     private AssemblyFactory assemblyFactory;
     private SCABindingFactory scaBindingFactory;
     private InterfaceContractMapper interfaceContractMapper;
+    private CompositeBuilderExtensionPoint builders;
 
 
     public ComponentTypeBuilderImpl(ExtensionPointRegistry registry) {
@@ -76,6 +77,7 @@
         scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);       
 
         interfaceContractMapper = utilities.getUtility(InterfaceContractMapper.class);
+        builders = registry.getExtensionPoint(CompositeBuilderExtensionPoint.class);
     }
     
     public void setComponentBuilder(ComponentBuilderImpl componentBuilder){

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingConfigurationBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingConfigurationBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingConfigurationBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -21,15 +21,12 @@
 
 import java.util.List;
 
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Binding;
 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.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 
 /**
@@ -44,15 +41,8 @@
 public class CompositeBindingConfigurationBuilderImpl extends CompositeBindingURIBuilderImpl implements
     CompositeBuilder {
 
-    public CompositeBindingConfigurationBuilderImpl(FactoryExtensionPoint factories, InterfaceContractMapper mapper) {
-        super(factories.getFactory(AssemblyFactory.class), factories.getFactory(SCABindingFactory.class), null, null,
-              mapper);
-    }
-
-    public CompositeBindingConfigurationBuilderImpl(AssemblyFactory assemblyFactory,
-                                                    SCABindingFactory scaBindingFactory,
-                                                    InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, scaBindingFactory, null, null, interfaceContractMapper);
+    public CompositeBindingConfigurationBuilderImpl(ExtensionPointRegistry registry) {
+        super(registry);
     }
 
     public String getID() {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBindingURIBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -26,10 +26,7 @@
 import java.util.Map;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.TransformerFactory;
 
-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.ComponentProperty;
@@ -40,13 +37,12 @@
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
-import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderTmp;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 
 /**
@@ -56,19 +52,8 @@
  */
 public class CompositeBindingURIBuilderImpl extends BaseBuilderImpl implements CompositeBuilder, CompositeBuilderTmp {
 
-    @Deprecated
-    public CompositeBindingURIBuilderImpl(AssemblyFactory assemblyFactory,
-                                          SCABindingFactory scaBindingFactory,
-                                          InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, scaBindingFactory, null, null, interfaceContractMapper);
-    }
-
-    public CompositeBindingURIBuilderImpl(AssemblyFactory assemblyFactory,
-                                          SCABindingFactory scaBindingFactory,
-                                          DocumentBuilderFactory documentBuilderFactory,
-                                          TransformerFactory transformerFactory,
-                                          InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, scaBindingFactory, documentBuilderFactory, transformerFactory, interfaceContractMapper);
+    public CompositeBindingURIBuilderImpl(ExtensionPointRegistry registry) {
+        super(registry);
     }
 
     public String getID() {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -23,20 +23,17 @@
 import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.TransformerFactory;
 
 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.assembly.builder.CompositeBuilderExtensionPoint;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderTmp;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.policy.PolicyFactory;
 
 /**
  * A builder that handles the configuration of the components inside a composite
@@ -66,74 +63,41 @@
     private CompositeBuilder componentReferenceEndpointReferenceBuilder;
     private CompositeBuilder componentServiceEndpointBuilder;
 
-    //private CompositeBuilder endpointReferenceBuilder;
-
-    public CompositeBuilderImpl(FactoryExtensionPoint factories, InterfaceContractMapper mapper) {
-        this(factories.getFactory(AssemblyFactory.class), factories.getFactory(SCABindingFactory.class), factories
-            .getFactory(PolicyFactory.class), factories.getFactory(DocumentBuilderFactory.class), factories
-            .getFactory(TransformerFactory.class), mapper);
-    }
-
-    /**
-     * Constructs a new composite builder.
-     * 
-     * @param assemblyFactory
-     * @param scaBindingFactory
-     * @param endpointFactory
-     * @param intentAttachPointTypeFactory
-     * @param interfaceContractMapper
-     * @param policyDefinitions
-     * @param monitor
-     */
-    @Deprecated
-    public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
-                                SCABindingFactory scaBindingFactory,
-                                PolicyFactory intentAttachPointTypeFactory,
-                                InterfaceContractMapper interfaceContractMapper) {
-        this(assemblyFactory, scaBindingFactory, intentAttachPointTypeFactory, null, null, interfaceContractMapper);
-    }
+    private CompositeBuilderExtensionPoint builders;
+    
 
     /**
      * Constructs a new composite builder.
-     * 
-     * @param assemblyFactory
-     * @param scaBindingFactory
-     * @param endpointFactory
-     * @param intentAttachPointTypeFactory
-     * @param interfaceContractMapper
-     * @param policyDefinitions
-     * @param monitor
+     *
+     *  @param registry
      */
-    public CompositeBuilderImpl(AssemblyFactory assemblyFactory,
-                                SCABindingFactory scaBindingFactory,
-                                PolicyFactory intentAttachPointTypeFactory,
-                                DocumentBuilderFactory documentBuilderFactory,
-                                TransformerFactory transformerFactory,
-                                InterfaceContractMapper interfaceContractMapper) {
-
-        compositeIncludeBuilder = new CompositeIncludeBuilderImpl(assemblyFactory);
-        componentReferenceWireBuilder = new ComponentReferenceWireBuilderImpl(assemblyFactory, interfaceContractMapper);
+    public CompositeBuilderImpl(ExtensionPointRegistry registry) {
+        
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        this.builders = registry.getExtensionPoint(CompositeBuilderExtensionPoint.class);
+        AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class);
+ 
+        compositeIncludeBuilder = new CompositeIncludeBuilderImpl();
+        componentReferenceWireBuilder = new ComponentReferenceWireBuilderImpl(registry);
         //componentReferencePromotionWireBuilder = new ComponentReferencePromotionWireBuilderImpl(assemblyFactory, endpointFactory);
-        componentReferencePromotionBuilder = new ComponentReferencePromotionBuilderImpl(assemblyFactory);
+        componentReferencePromotionBuilder = new ComponentReferencePromotionBuilderImpl(registry);
         //compositeReferenceWireBuilder = new CompositeReferenceWireBuilderImpl(assemblyFactory, endpointFactory);
         compositeCloneBuilder = new CompositeCloneBuilderImpl();
         componentConfigurationBuilder =
-            new ComponentConfigurationBuilderImpl(assemblyFactory, scaBindingFactory, documentBuilderFactory,
-                                                  transformerFactory, interfaceContractMapper);
-        compositeServiceConfigurationBuilder = new CompositeServiceConfigurationBuilderImpl(assemblyFactory);
-        compositeReferenceConfigurationBuilder = new CompositeReferenceConfigurationBuilderImpl(assemblyFactory);
+            new ComponentConfigurationBuilderImpl(registry);
+        compositeServiceConfigurationBuilder = new CompositeServiceConfigurationBuilderImpl(registry);
+        compositeReferenceConfigurationBuilder = new CompositeReferenceConfigurationBuilderImpl(registry);
         compositeBindingURIBuilder =
-            new CompositeBindingURIBuilderImpl(assemblyFactory, scaBindingFactory, documentBuilderFactory,
-                                               transformerFactory, interfaceContractMapper);
+            new CompositeBindingURIBuilderImpl(registry);
         //componentServicePromotionBuilder = new ComponentServicePromotionBuilderImpl(assemblyFactory);
         //compositeServicePromotionBuilder = new CompositeServicePromotionBuilderImpl(assemblyFactory);
-        compositePromotionBuilder = new CompositePromotionBuilderImpl(assemblyFactory, interfaceContractMapper);
-        compositePolicyBuilder = new CompositePolicyBuilderImpl(assemblyFactory, interfaceContractMapper);
-        componentServiceBindingBuilder = new ComponentServiceBindingBuilderImpl();
-        componentReferenceBindingBuilder = new ComponentReferenceBindingBuilderImpl();
+        compositePromotionBuilder = new CompositePromotionBuilderImpl(registry);
+        compositePolicyBuilder = new CompositePolicyBuilderImpl(registry);
+        componentServiceBindingBuilder = new ComponentServiceBindingBuilderImpl(registry);
+        componentReferenceBindingBuilder = new ComponentReferenceBindingBuilderImpl(registry);
 
         componentReferenceEndpointReferenceBuilder =
-            new ComponentReferenceEndpointReferenceBuilderImpl(assemblyFactory, interfaceContractMapper);
+            new ComponentReferenceEndpointReferenceBuilderImpl(registry);
         componentServiceEndpointBuilder = new ComponentServiceEndpointBuilderImpl(assemblyFactory);
         //endpointReferenceBuilder = new EndpointReference2BuilderImpl(assemblyFactory, interfaceContractMapper);
     }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeIncludeBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -22,17 +22,15 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.Implementation;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.Problem;
-import org.apache.tuscany.sca.monitor.Problem.Severity;
 
 /**
  * Implementation of a CompositeBuilder.
@@ -41,10 +39,7 @@
  */
 public class CompositeIncludeBuilderImpl implements CompositeBuilder {
 
-    private AssemblyFactory assemblyFactory;
-
-    public CompositeIncludeBuilderImpl(AssemblyFactory assemblyFactory) {
-        this.assemblyFactory = assemblyFactory;
+    public CompositeIncludeBuilderImpl() {
     }
 
     public String getID() {
@@ -69,6 +64,15 @@
             visited.add(composite);
     
             for (Composite included : composite.getIncludes()) {
+                if(included.isLocal() && !composite.isLocal()) {
+                    // ASM60041
+                    Monitor.error(monitor, 
+                                    this, 
+                                    "assembly-validation-messages", 
+                                    "IllegalCompositeIncusion", 
+                                    composite.getName().toString(),
+                                    included.getName().toString());
+                }
                 Composite fusedComposite = fuseInclude(included, visited, monitor);
                 if (fusedComposite != null) {
                     composite.getComponents().addAll(fusedComposite.getComponents());
@@ -76,8 +80,6 @@
                     composite.getReferences().addAll(fusedComposite.getReferences());
                     composite.getProperties().addAll(fusedComposite.getProperties());
                     composite.getWires().addAll(fusedComposite.getWires());
-                    composite.getPolicySets().addAll(fusedComposite.getPolicySets());
-                    composite.getRequiredIntents().addAll(fusedComposite.getRequiredIntents());
                 }
             }
     
@@ -108,6 +110,8 @@
     private Composite fuseInclude(Composite include, Set<Composite> visited, Monitor monitor) {
 
         if (visited.contains(include)) {
+            // FIXME: [rfeng] Do we need to have a warning? I think it is fine to have Composite A 
+            // include B and C while both B and C include D.
             Monitor.warning(monitor, 
                             this, 
                             "assembly-validation-messages", 
@@ -127,6 +131,17 @@
 
         // get the components etc. from any included composites
         for (Composite included : include.getIncludes()) {
+            if(included.isLocal() && !include.isLocal()) {
+                // ASM60041
+                Monitor.error(monitor, 
+                                this, 
+                                "assembly-validation-messages", 
+                                "IllegalCompositeIncusion", 
+                                include.getName().toString(),
+                                included.getName().toString());
+                return null;                    
+            }
+            
             Composite fusedComposite = fuseInclude(included, visited, monitor);
             if (fusedComposite != null) {
                 clone.getComponents().addAll(fusedComposite.getComponents());
@@ -134,8 +149,11 @@
                 clone.getReferences().addAll(fusedComposite.getReferences());
                 clone.getProperties().addAll(fusedComposite.getProperties());
                 clone.getWires().addAll(fusedComposite.getWires());
-                clone.getPolicySets().addAll(fusedComposite.getPolicySets());
-                clone.getRequiredIntents().addAll(fusedComposite.getRequiredIntents());
+                // FIXME: What should we do for the extensions
+                /*
+                clone.getExtensions().addAll(fusedComposite.getExtensions());
+                clone.getAttributeExtensions().addAll(fusedComposite.getAttributeExtensions());
+                */
             }
         }
 
@@ -144,10 +162,44 @@
         if (include.getAutowire() == Boolean.TRUE) {
             for (Component component : clone.getComponents()) {
                 if (component.getAutowire() == null) {
-                    component.setAutowire(true);
+                    component.setAutowire(Boolean.TRUE);
+                }
+            }
+        }
+        
+        // Merge the intents and policySets from the included composite into 
+        // component/service/reference elements under the composite
+        for(Component component : clone.getComponents()) {
+            component.getRequiredIntents().addAll(include.getRequiredIntents());
+            component.getPolicySets().addAll(include.getPolicySets());
+        }
+        
+        for(Service service: clone.getServices()) {
+            service.getRequiredIntents().addAll(include.getRequiredIntents());
+            service.getPolicySets().addAll(include.getPolicySets());
+        }
+
+        for(Reference reference: clone.getReferences()) {
+            reference.getRequiredIntents().addAll(include.getRequiredIntents());
+            reference.getPolicySets().addAll(include.getPolicySets());
+        }
+        
+        // process any composites referenced through implementation.composite 
+        for (Component component : clone.getComponents()) {
+
+            // recurse for composite implementations
+            Implementation implementation = component.getImplementation();
+            if (implementation instanceof Composite) {
+                try {
+                    monitor.pushContext("Component: " + component.getName());
+                    fuseIncludes((Composite)implementation, monitor);
+                } finally {
+                    monitor.popContext();
                 }
             }
         }
+        
+        clone.getIncludes().clear();
 
         // return the fused composite we have built up so far
         return clone;

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePolicyBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -22,7 +22,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-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.ComponentReference;
@@ -39,7 +38,6 @@
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.IntentMap;
@@ -59,10 +57,6 @@
         super(registry);
     }
     
-    public CompositePolicyBuilderImpl(AssemblyFactory assemblyFactory, InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, null, null, null, interfaceContractMapper);
-    }
-
     public String getID() {
         return "org.apache.tuscany.sca.assembly.builder.CompositePolicyBuilder";
     }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositePromotionBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -23,7 +23,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.ComponentReference;
 import org.apache.tuscany.sca.assembly.ComponentService;
@@ -35,9 +34,9 @@
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.monitor.Monitor;
 
 /**
@@ -48,9 +47,8 @@
  */
 public class CompositePromotionBuilderImpl extends BaseBuilderImpl implements CompositeBuilder {
 
-    public CompositePromotionBuilderImpl(AssemblyFactory assemblyFactory,
-                                         InterfaceContractMapper interfaceContractMapper) {
-        super(assemblyFactory, null, null, null, interfaceContractMapper);
+    public CompositePromotionBuilderImpl(ExtensionPointRegistry registry) {
+        super(registry);
     }
 
     public String getID() {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeReferenceConfigurationBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -33,6 +33,8 @@
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
 
@@ -44,8 +46,9 @@
 public class CompositeReferenceConfigurationBuilderImpl implements CompositeBuilder {
     private AssemblyFactory assemblyFactory;
 
-    public CompositeReferenceConfigurationBuilderImpl(AssemblyFactory assemblyFactory) {
-        this.assemblyFactory = assemblyFactory;
+    public CompositeReferenceConfigurationBuilderImpl(ExtensionPointRegistry registry) {
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        this.assemblyFactory = factories.getFactory(AssemblyFactory.class);
     }
 
     public String getID() {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceBindingBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -25,9 +25,11 @@
 import org.apache.tuscany.sca.assembly.CompositeService;
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
+import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
 
@@ -38,8 +40,10 @@
  * @version $Rev$ $Date$
  */
 public class CompositeServiceBindingBuilderImpl implements CompositeBuilder {
+    private CompositeBuilderExtensionPoint builders;
 
-    public CompositeServiceBindingBuilderImpl() {
+    public CompositeServiceBindingBuilderImpl(ExtensionPointRegistry registry) {
+        this.builders = registry.getExtensionPoint(CompositeBuilderExtensionPoint.class);
     }
 
     public String getID() {
@@ -63,9 +67,10 @@
         // find all the composite service bindings     
         for (Service service : composite.getServices()) {
             for (Binding binding : service.getBindings()) {
-                if (binding instanceof BindingBuilderExtension) {
+                BindingBuilder builder = builders.getBindingBuilder(binding.getClass());
+                if (builder != null) {
                     Component component = ServiceConfigurationUtil.getPromotedComponent((CompositeService)service);
-                    ((BindingBuilderExtension)binding).getBuilder().build(component, service, binding, monitor);
+                    builder.build(component, service, binding, monitor);
                 }
             }
         }

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeServiceConfigurationBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -31,6 +31,8 @@
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.definitions.Definitions;
 import org.apache.tuscany.sca.monitor.Monitor;
 
@@ -42,8 +44,9 @@
 public class CompositeServiceConfigurationBuilderImpl implements CompositeBuilder {
     private AssemblyFactory assemblyFactory;
 
-    public CompositeServiceConfigurationBuilderImpl(AssemblyFactory assemblyFactory) {
-        this.assemblyFactory = assemblyFactory;
+    public CompositeServiceConfigurationBuilderImpl(ExtensionPointRegistry registry) {
+        FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
+        this.assemblyFactory = factories.getFactory(AssemblyFactory.class);
     }
 
     public String getID() {

Modified: tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ModelBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ModelBuilderImpl.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ModelBuilderImpl.java (original)
+++ tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/ModelBuilderImpl.java Mon Sep 14 21:49:36 2009
@@ -80,7 +80,7 @@
         MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
         Monitor monitor = monitorFactory.createMonitor();
         
-        compositeIncludeBuilder = new CompositeIncludeBuilderImpl(assemblyFactory);
+        compositeIncludeBuilder = new CompositeIncludeBuilderImpl();
         compositeCloneBuilder = new CompositeCloneBuilderImpl();
         
         componentTypeBuilder = new ComponentTypeBuilderImpl(registry);

Modified: tuscany/java/sca/modules/assembly/src/main/resources/assembly-validation-messages.properties
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/resources/assembly-validation-messages.properties?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/main/resources/assembly-validation-messages.properties (original)
+++ tuscany/java/sca/modules/assembly/src/main/resources/assembly-validation-messages.properties Mon Sep 14 21:49:36 2009
@@ -61,4 +61,5 @@
 ServiceInterfaceNotSubSet = Interface of composite service {0} must be subset of the interface declared by promoted component service.
 NoComponentReferenceTarget = No target services found for the component reference to be autowired: {0}
 NoTypeForComponentProperty = No type specified on component property: Component = {0} Property = {1}
-URLSyntaxException = URLSyntaxException when creating binding URI at component = {0} service = {1} binding = {2}
\ No newline at end of file
+URLSyntaxException = URLSyntaxException when creating binding URI at component = {0} service = {1} binding = {2}
+IllegalCompositeIncusion = Local Composite {0} cannot include a non-local composite {1}  
\ No newline at end of file

Modified: tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java (original)
+++ tuscany/java/sca/modules/assembly/src/test/java/org/apache/tuscany/sca/assembly/builder/impl/CompositeBuilderTestCase.java Mon Sep 14 21:49:36 2009
@@ -77,7 +77,7 @@
         c.setName(new QName("http://foo", "C"));
         c.getIncludes().add(c1);
 
-        new CompositeIncludeBuilderImpl(null).build(c, null, monitor);
+        new CompositeIncludeBuilderImpl().build(c, null, monitor);
 
         assertTrue(c.getComponents().get(0).getName().equals("a"));
         assertTrue(c.getComponents().get(1).getName().equals("b"));

Modified: tuscany/java/sca/modules/binding-ws-wsdlgen/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-wsdlgen/META-INF/MANIFEST.MF?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-wsdlgen/META-INF/MANIFEST.MF (original)
+++ tuscany/java/sca/modules/binding-ws-wsdlgen/META-INF/MANIFEST.MF Mon Sep 14 21:49:36 2009
@@ -34,6 +34,7 @@
  javax.xml.parsers,
  javax.xml.ws;resolution:=optional,
  org.apache.tuscany.sca.assembly;version="2.0.0",
+ org.apache.tuscany.sca.assembly.builder;version="2.0.0",
  org.apache.tuscany.sca.binding.ws;version="2.0.0",
  org.apache.tuscany.sca.binding.ws.wsdlgen;version="2.0.0",
  org.apache.tuscany.sca.contribution;version="2.0.0";resolution:=optional,

Modified: tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java?rev=814879&r1=814878&r2=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java (original)
+++ tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGenerator.java Mon Sep 14 21:49:36 2009
@@ -30,7 +30,6 @@
 import javax.xml.namespace.QName;
 import javax.xml.parsers.DocumentBuilderFactory;
 
-import org.apache.tuscany.sca.assembly.AbstractContract;
 import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.Contract;
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
@@ -154,7 +153,7 @@
      * of these cases.
      */
     public static void generateWSDL(Component component,
-                                    AbstractContract contract,
+                                    Contract contract,
                                     WebServiceBinding wsBinding,
                                     ExtensionPointRegistry extensionPoints,
                                     Monitor monitor) {
@@ -181,7 +180,7 @@
     }        
 
     private static void createWSDLDocument(Component component,
-                                           AbstractContract contract,
+                                           Contract contract,
                                            WebServiceBinding wsBinding,
                                            ExtensionPointRegistry extensionPoints,
                                            Monitor monitor) {

Copied: tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java (from r814714, tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java)
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java?p2=tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java&p1=tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java&r1=814714&r2=814879&rev=814879&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java (original)
+++ tuscany/java/sca/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WebServiceBindingBuilder.java Mon Sep 14 21:49:36 2009
@@ -17,14 +17,12 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.binding.ws.xml;
+package org.apache.tuscany.sca.binding.ws.wsdlgen;
 
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
-import org.apache.tuscany.sca.assembly.AbstractContract;
-import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Contract;
 import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.monitor.Monitor;
 
@@ -33,19 +31,23 @@
  * 
  * @version $Rev$ $Date$
  */
-public class BindingBuilderImpl implements BindingBuilder {
-    
+public class WebServiceBindingBuilder implements BindingBuilder<WebServiceBinding> {
+
     private ExtensionPointRegistry extensionPoints;
-    
-    public BindingBuilderImpl(ExtensionPointRegistry extensionPoints) {
+
+    public WebServiceBindingBuilder(ExtensionPointRegistry extensionPoints) {
         this.extensionPoints = extensionPoints;
     }
-    
+
     /**
      * Create a calculated WSDL document and save it in the Web Service binding. 
      */
-    public void build(Component component, AbstractContract contract, Binding binding, Monitor monitor) {
-        BindingWSDLGenerator.generateWSDL(component, contract, (WebServiceBinding)binding, extensionPoints, monitor);
-    }  
-    
+    public void build(Component component, Contract contract, WebServiceBinding binding, Monitor monitor) {
+        BindingWSDLGenerator.generateWSDL(component, contract, binding, extensionPoints, monitor);
+    }
+
+    public Class<WebServiceBinding> getModelType() {
+        return WebServiceBinding.class;
+    }
+
 }