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 2007/05/08 23:48:27 UTC

svn commit: r536341 - in /incubator/tuscany/java/sca/modules: binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/ core-spi/src/main/java/org/apache/tuscany/provider/ core/src/main/java/org/apache/tuscany/core/runtime/ host-embedded/src/main/java/...

Author: jsdelfino
Date: Tue May  8 14:48:25 2007
New Revision: 536341

URL: http://svn.apache.org/viewvc?view=rev&rev=536341
Log:
Separated provider factories from model implementations.

Added:
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/DefaultProviderFactoryExtensionPoint.java   (with props)
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/Provider.java   (with props)
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactory.java   (with props)
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactoryExtensionPoint.java   (with props)
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProviderFactory.java   (with props)
    incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProviderFactory.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderActivator.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/RuntimeJavaImplementationFactory.java
Modified:
    incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java
    incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java
    incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProviderFactory.java
    incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/BindingProviderFactory.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProvider.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProviderFactory.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ReferenceBindingProvider.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ServiceBindingProvider.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProvider.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/DefaultCRUDImplementationFactory.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProvider.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProviderFactory.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProviderFactory.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/module/JavaRuntimeModuleActivator.java
    incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementation.java
    incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProvider.java
    incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptModuleActivator.java

Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/DefaultRMIBindingFactory.java Tue May  8 14:48:25 2007
@@ -18,7 +18,6 @@
  */
 package org.apache.tuscany.binding.rmi;
 
-import org.apache.tuscany.rmi.RMIHost;
 
 /**
  * A factory for the WSDL model.
@@ -26,14 +25,12 @@
  * @version $Rev: 526508 $ $Date: 2007-04-08 07:42:42 +0530 (Sun, 08 Apr 2007) $
  */
 public class DefaultRMIBindingFactory implements RMIBindingFactory {
-    private RMIHost rmiHost = null;
     
-    public DefaultRMIBindingFactory(RMIHost rmiHost) {
-        this.rmiHost = rmiHost;
+    public DefaultRMIBindingFactory() {
     }
     
     public RMIBinding createRMIBinding() {
-        return new RMIBindingProviderFactory(rmiHost);
+        return new RMIBindingImpl();
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java Tue May  8 14:48:25 2007
@@ -57,8 +57,8 @@
  *
  * @version $Rev: $ $Date: $
  */
-public class RMIBindingProvider implements ReferenceBindingProvider,
-    ServiceBindingProvider, MethodInterceptor {
+public class RMIBindingProvider implements ReferenceBindingProvider<RMIBinding>,
+    ServiceBindingProvider<RMIBinding>, MethodInterceptor {
 
     private RuntimeComponent component;
     private RuntimeComponentService service;

Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProviderFactory.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProviderFactory.java Tue May  8 14:48:25 2007
@@ -32,7 +32,7 @@
  *
  * @version $Rev$ $Date$
  */
-public class RMIBindingProviderFactory extends RMIBindingImpl implements BindingProviderFactory {
+public class RMIBindingProviderFactory implements BindingProviderFactory<RMIBinding> {
 
     private RMIHost rmiHost;
     
@@ -40,11 +40,15 @@
         this.rmiHost = rmiHost;
     }
 
-    public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference) {
-        return new RMIBindingProvider(component, reference, this, rmiHost);
+    public ReferenceBindingProvider<RMIBinding> createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, RMIBinding binding) {
+        return new RMIBindingProvider(component, reference, binding, rmiHost);
     }
 
-    public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service) {
-        return new RMIBindingProvider(component, service, this, rmiHost);
+    public ServiceBindingProvider<RMIBinding> createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, RMIBinding binding) {
+        return new RMIBindingProvider(component, service, binding, rmiHost);
+    }
+    
+    public Class<RMIBinding> getModelType() {
+        return RMIBinding.class;
     }
 }

Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIModuleActivator.java Tue May  8 14:48:25 2007
@@ -29,6 +29,7 @@
 import org.apache.tuscany.core.ModuleActivator;
 import org.apache.tuscany.policy.DefaultPolicyFactory;
 import org.apache.tuscany.policy.PolicyFactory;
+import org.apache.tuscany.provider.ProviderFactoryExtensionPoint;
 import org.apache.tuscany.rmi.RMIHost;
 
 public class RMIModuleActivator implements ModuleActivator {
@@ -41,8 +42,11 @@
         PolicyFactory policyFactory = new DefaultPolicyFactory();
         
         RMIHost rmiHost = registry.getExtensionPoint(RMIHost.class);
-        RMIBindingFactory rmiFactory = new DefaultRMIBindingFactory(rmiHost);
+        RMIBindingFactory rmiFactory = new DefaultRMIBindingFactory();
         processors.addArtifactProcessor(new RMIBindingProcessor(assemblyFactory, policyFactory, rmiFactory));
+        
+        ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
+        providerFactories.addProviderFactory(new RMIBindingProviderFactory(rmiHost));
     }
 
     public void stop(ExtensionPointRegistry registry) {

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/BindingProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/BindingProviderFactory.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/BindingProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/BindingProviderFactory.java Tue May  8 14:48:25 2007
@@ -27,7 +27,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public interface BindingProviderFactory extends Binding {
+public interface BindingProviderFactory<M extends Binding> extends ProviderFactory<M> {
 
     /**
      * Creates a new reference binding provider for the given
@@ -35,9 +35,13 @@
      * 
      * @param component
      * @param reference
+     * @param binding
      * @return
      */
-    ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference);
+    ReferenceBindingProvider<M> createReferenceBindingProvider(
+                                                            RuntimeComponent component,
+                                                            RuntimeComponentReference reference,
+                                                            M binding);
 
     /**
      * Creates a new service binding provider for the given
@@ -45,8 +49,12 @@
      * 
      * @param component
      * @param service
+     * @param binding
      * @return
      */
-    ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service);
+    ServiceBindingProvider<M> createServiceBindingProvider(
+                                                           RuntimeComponent component,
+                                                           RuntimeComponentService service,
+                                                           M binding);
     
 }

Added: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/DefaultProviderFactoryExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/DefaultProviderFactoryExtensionPoint.java?view=auto&rev=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/DefaultProviderFactoryExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/DefaultProviderFactoryExtensionPoint.java Tue May  8 14:48:25 2007
@@ -0,0 +1,57 @@
+/*
+ * 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.provider;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Default implementation of a provider factory extension point.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultProviderFactoryExtensionPoint implements ProviderFactoryExtensionPoint {
+    
+    protected final Map<Class<?>, ProviderFactory> providerFactories = 
+        new HashMap<Class<?>, ProviderFactory>();
+
+    public DefaultProviderFactoryExtensionPoint() {
+    }
+
+    public void addProviderFactory(ProviderFactory providerFactory) {
+        providerFactories.put(providerFactory.getClass(), providerFactory);
+    }
+    
+    public void removeProviderFactory(ProviderFactory providerFactory) {
+        providerFactories.remove(providerFactory.getClass());
+    }
+    
+    public ProviderFactory getProviderFactory(Class<?> modelType) {
+        Class<?>[] classes = modelType.getInterfaces();
+        for (Class<?> c : classes) {
+            ProviderFactory factory = providerFactories.get(c);
+            if (factory != null) {
+                return factory;
+            }
+        }
+        return providerFactories.get(modelType);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/DefaultProviderFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/DefaultProviderFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProvider.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProvider.java Tue May  8 14:48:25 2007
@@ -29,7 +29,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public interface ImplementationProvider extends ProviderActivator {
+public interface ImplementationProvider<M> extends Provider {
 
     /**
      * Create an invoker for the component implementation in the invocation

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProviderFactory.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ImplementationProviderFactory.java Tue May  8 14:48:25 2007
@@ -25,15 +25,16 @@
 /**
  * @version $Rev$ $Date$
  */
-public interface ImplementationProviderFactory extends Implementation {
+public interface ImplementationProviderFactory<M extends Implementation> extends ProviderFactory<M> {
     
     /**
      * Creates a new implementation provider for the given
      * component.
      * 
      * @param component
+     * @param implementation
      * @return
      */
-    ImplementationProvider createImplementationProvider(RuntimeComponent component);
+    ImplementationProvider<M> createImplementationProvider(RuntimeComponent component, M Implementation);
     
 }

Added: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/Provider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/Provider.java?view=auto&rev=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/Provider.java (added)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/Provider.java Tue May  8 14:48:25 2007
@@ -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.provider;
+
+
+
+/**
+ * A component implementation can optionally implement this interface to control
+ * how a component is started ot stopped.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface Provider {
+    /**
+     * This method will be invoked when a component implemented by this
+     * implementation is activated.
+     */
+    void start();
+
+    /**
+     * This method will be invoked when a component implemented by this
+     * implementation is deactivated.
+     */
+    void stop();
+
+}

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/Provider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/Provider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactory.java?view=auto&rev=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactory.java (added)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactory.java Tue May  8 14:48:25 2007
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.provider;
+
+/**
+ * A factory for runtime providers.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ProviderFactory<M> {
+
+    /**
+     * The model type that this factory creates providers for.
+     * 
+     * @return the model type
+     */
+    Class<M> getModelType();
+    
+}

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactoryExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactoryExtensionPoint.java?view=auto&rev=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactoryExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactoryExtensionPoint.java Tue May  8 14:48:25 2007
@@ -0,0 +1,52 @@
+/*
+ * 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.provider;
+
+
+/**
+ * An extension point for provider factories.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ProviderFactoryExtensionPoint {
+
+
+    /**
+     * Add a provider factory.
+     * 
+     * @param providerFactory the provider factory
+     */
+    void addProviderFactory(ProviderFactory providerFactory);
+
+    /**
+     * Remove a provider factory.
+     * 
+     * @param providerFactory the provider factory
+     */
+    void removeProviderFactory(ProviderFactory providerFactory);
+
+    /**
+     * Returns the provider factory associated with the given model type.
+     * @param modelType a model type
+     * @return the provider factory associated with the given model type
+     */
+    <M> ProviderFactory<M> getProviderFactory(Class<?> modelType);
+    
+}

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ProviderFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ReferenceBindingProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ReferenceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ReferenceBindingProvider.java Tue May  8 14:48:25 2007
@@ -26,7 +26,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public interface ReferenceBindingProvider extends ProviderActivator {
+public interface ReferenceBindingProvider<M> extends Provider {
     /**
      * Create an invoker for the reference binding in the invocation chain.
      * The invoker is responsible for making the outbound invocation over
@@ -49,5 +49,4 @@
      */
     InterfaceContract getBindingInterfaceContract();
     
-
 }

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ScopedImplementationProvider.java Tue May  8 14:48:25 2007
@@ -28,7 +28,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public interface ScopedImplementationProvider extends ImplementationProvider {
+public interface ScopedImplementationProvider<M> extends ImplementationProvider<M> {
     /**
      * Get the scope for the component implementation
      * 

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ServiceBindingProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/provider/ServiceBindingProvider.java Tue May  8 14:48:25 2007
@@ -26,7 +26,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public interface ServiceBindingProvider extends ProviderActivator {
+public interface ServiceBindingProvider<M> extends Provider {
     /**
      * Get the effective interface contract imposed by the binding. For example,
      * it will be interface contract introspected from the WSDL portType used by

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/DefaultCompositeActivator.java Tue May  8 14:48:25 2007
@@ -47,6 +47,7 @@
 import org.apache.tuscany.provider.BindingProviderFactory;
 import org.apache.tuscany.provider.ImplementationProvider;
 import org.apache.tuscany.provider.ImplementationProviderFactory;
+import org.apache.tuscany.provider.ProviderFactoryExtensionPoint;
 import org.apache.tuscany.provider.ReferenceBindingProvider;
 import org.apache.tuscany.provider.ScopedImplementationProvider;
 import org.apache.tuscany.provider.ServiceBindingProvider;
@@ -66,6 +67,7 @@
     private final WorkContext workContext;
     private final WorkScheduler workScheduler;
     private final RuntimeWireProcessor wireProcessor;
+    private final ProviderFactoryExtensionPoint providerFactories;
 
     /**
      * @param assemblyFactory
@@ -79,7 +81,8 @@
                                      ScopeRegistry scopeRegistry,
                                      WorkContext workContext,
                                      WorkScheduler workScheduler,
-                                     RuntimeWireProcessor wireProcessor) {
+                                     RuntimeWireProcessor wireProcessor,
+                                     ProviderFactoryExtensionPoint providerFactories) {
         super();
         this.assemblyFactory = assemblyFactory;
         this.interfaceContractMapper = interfaceContractMapper;
@@ -87,6 +90,7 @@
         this.workContext = workContext;
         this.workScheduler = workScheduler;
         this.wireProcessor = wireProcessor;
+        this.providerFactories = providerFactories;
     }
 
     /**
@@ -100,10 +104,10 @@
 
             for (ComponentService service : component.getServices()) {
                 for (Binding binding : service.getBindings()) {
-                    if (binding instanceof BindingProviderFactory) {
+                    BindingProviderFactory providerFactory = (BindingProviderFactory)providerFactories.getProviderFactory(binding.getClass());
+                    if (providerFactory != null) {
                         ServiceBindingProvider bindingProvider =
-                            ((BindingProviderFactory)binding).createServiceBindingProvider(
-                                                                                           (RuntimeComponent)component, (RuntimeComponentService)service);
+                            providerFactory.createServiceBindingProvider((RuntimeComponent)component, (RuntimeComponentService)service, binding);
                         if (bindingProvider != null) {
                             ((RuntimeComponentService)service).setBindingProvider(binding, bindingProvider);
                         }
@@ -112,10 +116,10 @@
             }
             for (ComponentReference reference : component.getReferences()) {
                 for (Binding binding : reference.getBindings()) {
-                    if (binding instanceof BindingProviderFactory) {
+                    BindingProviderFactory providerFactory = (BindingProviderFactory)providerFactories.getProviderFactory(binding.getClass());
+                    if (providerFactory != null) {
                         ReferenceBindingProvider bindingProvider =
-                            ((BindingProviderFactory)binding).createReferenceBindingProvider(
-                                                                                             (RuntimeComponent)component, (RuntimeComponentReference)reference);
+                            providerFactory.createReferenceBindingProvider((RuntimeComponent)component, (RuntimeComponentReference)reference, binding);
                         if (bindingProvider != null) {
                             ((RuntimeComponentReference)reference).setBindingProvider(binding, bindingProvider);
                         }
@@ -126,12 +130,14 @@
             Implementation implementation = component.getImplementation();
             if (implementation instanceof Composite) {
                 configureComposite((Composite)implementation);
-            } else if (implementation instanceof ImplementationProviderFactory) {
-                ImplementationProvider implementationProvider =
-                    ((ImplementationProviderFactory)implementation).createImplementationProvider(
-                                                                                                 (RuntimeComponent)component);
-                if (implementationProvider != null) {
-                    ((RuntimeComponent)component).setImplementationProvider(implementationProvider);
+            } else if (implementation != null) {
+                ImplementationProviderFactory providerFactory = (ImplementationProviderFactory)providerFactories.getProviderFactory(implementation.getClass());
+                if (providerFactory != null) {
+                    ImplementationProvider implementationProvider =
+                        providerFactory.createImplementationProvider((RuntimeComponent)component, implementation);
+                    if (implementationProvider != null) {
+                        ((RuntimeComponent)component).setImplementationProvider(implementationProvider);
+                    }
                 }
                 setScopeContainer(component);
             }
@@ -146,21 +152,17 @@
             
             for (ComponentService service : component.getServices()) {
                 for (Binding binding : service.getBindings()) {
-                    if (binding instanceof BindingProviderFactory) {
-                        ServiceBindingProvider bindingProvider = ((RuntimeComponentService)service).getBindingProvider(binding);
-                        if (bindingProvider != null) {
-                            bindingProvider.start();
-                        }
+                    ServiceBindingProvider bindingProvider = ((RuntimeComponentService)service).getBindingProvider(binding);
+                    if (bindingProvider != null) {
+                        bindingProvider.start();
                     }
                 }
             }
             for (ComponentReference reference : component.getReferences()) {
                 for (Binding binding : reference.getBindings()) {
-                    if (binding instanceof BindingProviderFactory) {
-                        ReferenceBindingProvider bindingProvider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
-                        if (bindingProvider != null) {
-                            bindingProvider.start();
-                        }
+                    ReferenceBindingProvider bindingProvider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
+                    if (bindingProvider != null) {
+                        bindingProvider.start();
                     }
                 }
             }
@@ -168,7 +170,7 @@
             Implementation implementation = component.getImplementation();
             if (implementation instanceof Composite) {
                 startComposite((Composite)implementation);
-            } else if (implementation instanceof ImplementationProviderFactory) {
+            } else {
                 ImplementationProvider implementationProvider = ((RuntimeComponent)component).getImplementationProvider();
                 if (implementationProvider != null) {
                     implementationProvider.start();
@@ -193,28 +195,24 @@
             
             for (ComponentService service : component.getServices()) {
                 for (Binding binding : service.getBindings()) {
-                    if (binding instanceof BindingProviderFactory) {
-                        ServiceBindingProvider bindingProvider = ((RuntimeComponentService)service).getBindingProvider(binding);
-                        if (bindingProvider != null) {
-                            bindingProvider.stop();
-                        }
+                    ServiceBindingProvider bindingProvider = ((RuntimeComponentService)service).getBindingProvider(binding);
+                    if (bindingProvider != null) {
+                        bindingProvider.stop();
                     }
                 }
             }
             for (ComponentReference reference : component.getReferences()) {
                 for (Binding binding : reference.getBindings()) {
-                    if (binding instanceof BindingProviderFactory) {
-                        ReferenceBindingProvider bindingProvider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
-                        if (bindingProvider != null) {
-                            bindingProvider.stop();
-                        }
+                    ReferenceBindingProvider bindingProvider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
+                    if (bindingProvider != null) {
+                        bindingProvider.stop();
                     }
                 }
             }
             Implementation implementation = component.getImplementation();
             if (implementation instanceof Composite) {
                 stop((Composite)implementation);
-            } else if (implementation instanceof ImplementationProviderFactory) {
+            } else {
                 ImplementationProvider implementationProvider = ((RuntimeComponent)component).getImplementationProvider();
                 if (implementationProvider != null) {
                     implementationProvider.stop();
@@ -271,13 +269,11 @@
      */
     private InterfaceContract getInterfaceContract(ComponentReference reference, Binding binding) {
         InterfaceContract interfaceContract = reference.getInterfaceContract();
-        if (binding instanceof BindingProviderFactory) {
-            ReferenceBindingProvider provider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
-            if (provider != null) {
-                InterfaceContract bindingContract = provider.getBindingInterfaceContract();
-                if (bindingContract != null) {
-                    interfaceContract = bindingContract;
-                }
+        ReferenceBindingProvider provider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
+        if (provider != null) {
+            InterfaceContract bindingContract = provider.getBindingInterfaceContract();
+            if (bindingContract != null) {
+                interfaceContract = bindingContract;
             }
         }
         return interfaceContract;
@@ -401,13 +397,11 @@
     private InterfaceContract getInterfaceContract(ComponentService service, Binding binding) {
         InterfaceContract interfaceContract = service.getInterfaceContract();
 
-        if (binding instanceof BindingProviderFactory) {
-            ServiceBindingProvider provider = ((RuntimeComponentService)service).getBindingProvider(binding);
-            if (provider != null) {
-                InterfaceContract bindingContract = provider.getBindingInterfaceContract();
-                if (bindingContract != null) {
-                    interfaceContract = bindingContract;
-                }
+        ServiceBindingProvider provider = ((RuntimeComponentService)service).getBindingProvider(binding);
+        if (provider != null) {
+            InterfaceContract bindingContract = provider.getBindingInterfaceContract();
+            if (bindingContract != null) {
+                interfaceContract = bindingContract;
             }
         }
         return interfaceContract;
@@ -484,18 +478,15 @@
                                               InvocationChain chain,
                                               Operation operation,
                                               boolean isCallback) {
-        Implementation implementation = component.getImplementation();
-        if (implementation instanceof ImplementationProviderFactory) {
-            ImplementationProvider provider = ((RuntimeComponent)component).getImplementationProvider();
-            if (provider != null) {
-                Invoker invoker = null;
-                if (!isCallback) {
-                    invoker = provider.createInvoker((RuntimeComponentService)service,operation);
-                } else {
-                    invoker = provider.createCallbackInvoker(operation);
-                }
-                chain.addInvoker(invoker);
+        ImplementationProvider provider = ((RuntimeComponent)component).getImplementationProvider();
+        if (provider != null) {
+            Invoker invoker = null;
+            if (!isCallback) {
+                invoker = provider.createInvoker((RuntimeComponentService)service,operation);
+            } else {
+                invoker = provider.createCallbackInvoker(operation);
             }
+            chain.addInvoker(invoker);
         }
     }
 
@@ -515,13 +506,11 @@
                                       InvocationChain chain,
                                       Operation operation,
                                       boolean isCallback) {
-        if (binding instanceof BindingProviderFactory) {
-            ReferenceBindingProvider provider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
-            if (provider != null) {
-                Invoker invoker = provider.createInvoker(operation, isCallback);
-                if (invoker != null) {
-                    chain.addInvoker(invoker);
-                }
+        ReferenceBindingProvider provider = ((RuntimeComponentReference)reference).getBindingProvider(binding);
+        if (provider != null) {
+            Invoker invoker = provider.createInvoker(operation, isCallback);
+            if (invoker != null) {
+                chain.addInvoker(invoker);
             }
         }
     }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingImpl.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingImpl.java Tue May  8 14:48:25 2007
@@ -22,20 +22,13 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.tuscany.assembly.SCABinding;
 import org.apache.tuscany.assembly.impl.SCABindingImpl;
-import org.apache.tuscany.core.RuntimeComponent;
-import org.apache.tuscany.core.RuntimeComponentReference;
-import org.apache.tuscany.core.RuntimeComponentService;
 import org.apache.tuscany.core.RuntimeWire;
-import org.apache.tuscany.provider.BindingProviderFactory;
-import org.apache.tuscany.provider.ReferenceBindingProvider;
-import org.apache.tuscany.provider.ServiceBindingProvider;
 
 /**
  * @version $Rev$ $Date$
  */
-public class RuntimeSCABindingImpl extends SCABindingImpl implements SCABinding, BindingProviderFactory {
+public class RuntimeSCABindingImpl extends SCABindingImpl {
     private List<RuntimeWire> wires = new ArrayList<RuntimeWire>();
     
     public void addWire(RuntimeWire wire) {
@@ -46,12 +39,4 @@
         return wires;
     }
 
-    public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference) {
-        return new RuntimeSCABindingProvider(component, reference);
-    }
-
-    public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service) {
-        return null;
-    }
-    
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProvider.java Tue May  8 14:48:25 2007
@@ -20,7 +20,6 @@
 package org.apache.tuscany.core.runtime;
 
 import org.apache.tuscany.assembly.SCABinding;
-import org.apache.tuscany.assembly.impl.SCABindingImpl;
 import org.apache.tuscany.core.RuntimeComponent;
 import org.apache.tuscany.core.RuntimeComponentReference;
 import org.apache.tuscany.interfacedef.InterfaceContract;
@@ -31,13 +30,11 @@
 /**
  * @version $Rev$ $Date$
  */
-public class RuntimeSCABindingProvider extends SCABindingImpl implements SCABinding, ReferenceBindingProvider {
+public class RuntimeSCABindingProvider implements ReferenceBindingProvider<SCABinding> {
     
-    private RuntimeComponent component;
     private RuntimeComponentReference reference;
     
-    public RuntimeSCABindingProvider(RuntimeComponent component, RuntimeComponentReference reference) {
-        this.component = component;
+    public RuntimeSCABindingProvider(RuntimeComponent component, RuntimeComponentReference reference, SCABinding binding) {
         this.reference = reference;
     }
     

Added: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProviderFactory.java?view=auto&rev=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProviderFactory.java (added)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProviderFactory.java Tue May  8 14:48:25 2007
@@ -0,0 +1,47 @@
+/*
+ * 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.core.runtime;
+
+import org.apache.tuscany.assembly.SCABinding;
+import org.apache.tuscany.core.RuntimeComponent;
+import org.apache.tuscany.core.RuntimeComponentReference;
+import org.apache.tuscany.core.RuntimeComponentService;
+import org.apache.tuscany.provider.BindingProviderFactory;
+import org.apache.tuscany.provider.ReferenceBindingProvider;
+import org.apache.tuscany.provider.ServiceBindingProvider;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class RuntimeSCABindingProviderFactory implements BindingProviderFactory<SCABinding> {
+
+    public ReferenceBindingProvider<SCABinding> createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, SCABinding binding) {
+        return new RuntimeSCABindingProvider(component, reference, binding);
+    }
+
+    public ServiceBindingProvider<SCABinding> createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, SCABinding binding) {
+        return null;
+    }
+    
+    public Class<SCABinding> getModelType() {
+        return SCABinding.class;
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProviderFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeSCABindingProviderFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java Tue May  8 14:48:25 2007
@@ -68,6 +68,7 @@
 import org.apache.tuscany.core.runtime.ActivationException;
 import org.apache.tuscany.core.runtime.CompositeActivator;
 import org.apache.tuscany.core.runtime.DefaultCompositeActivator;
+import org.apache.tuscany.core.runtime.RuntimeSCABindingProviderFactory;
 import org.apache.tuscany.core.scope.CompositeScopeContainerFactory;
 import org.apache.tuscany.core.scope.RequestScopeContainerFactory;
 import org.apache.tuscany.core.scope.ScopeRegistryImpl;
@@ -77,6 +78,8 @@
 import org.apache.tuscany.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.invocation.ProxyFactory;
 import org.apache.tuscany.policy.PolicyFactory;
+import org.apache.tuscany.provider.DefaultProviderFactoryExtensionPoint;
+import org.apache.tuscany.provider.ProviderFactoryExtensionPoint;
 import org.apache.tuscany.scope.ScopeContainerFactory;
 import org.apache.tuscany.scope.ScopeRegistry;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -124,10 +127,15 @@
         RuntimeWireProcessorExtensionPoint wireProcessors = new DefaultWireProcessorExtensionPoint();
         registry.addExtensionPoint(RuntimeWireProcessorExtensionPoint.class, wireProcessors);
         RuntimeWireProcessor wireProcessor = new ExtensibleWireProcessor(wireProcessors);
+        
+        // Create a provider factory extension point
+        ProviderFactoryExtensionPoint providerFactories = new DefaultProviderFactoryExtensionPoint();
+        registry.addExtensionPoint(ProviderFactoryExtensionPoint.class, providerFactories);
+        providerFactories.addProviderFactory(new RuntimeSCABindingProviderFactory());
 
         // Create the composite activator
         CompositeActivator compositeActivator = new DefaultCompositeActivator(assemblyFactory, mapper, scopeRegistry,
-                                                                              workContext, workScheduler, wireProcessor);
+                                                                              workContext, workScheduler, wireProcessor, providerFactories);
 
         return compositeActivator;
     }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/DefaultCRUDImplementationFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/DefaultCRUDImplementationFactory.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/DefaultCRUDImplementationFactory.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/DefaultCRUDImplementationFactory.java Tue May  8 14:48:25 2007
@@ -23,7 +23,7 @@
 import org.apache.tuscany.interfacedef.java.JavaInterfaceFactory;
 import org.apache.tuscany.interfacedef.java.introspect.JavaInterfaceIntrospector;
 
-import crud.provider.CRUDImplementationProviderFactory;
+import crud.impl.CRUDImplementationImpl;
 
 /**
  * A default factory for the CRUD implementation model.
@@ -45,7 +45,7 @@
     }
 
     public CRUDImplementation createCRUDImplementation() {
-        return new CRUDImplementationProviderFactory(assemblyFactory, javaFactory, introspector);
+        return new CRUDImplementationImpl(assemblyFactory, javaFactory, introspector);
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/module/CRUDModuleActivator.java Tue May  8 14:48:25 2007
@@ -32,10 +32,12 @@
 import org.apache.tuscany.interfacedef.java.introspect.JavaInterfaceIntrospector;
 import org.apache.tuscany.interfacedef.java.introspect.JavaInterfaceIntrospectorExtensionPoint;
 import org.apache.tuscany.invocation.ProxyFactory;
+import org.apache.tuscany.provider.ProviderFactoryExtensionPoint;
 
 import crud.CRUDImplementationFactory;
 import crud.DefaultCRUDImplementationFactory;
 import crud.impl.CRUDImplementationProcessor;
+import crud.provider.CRUDImplementationProviderFactory;
 
 /**
  * Implements a module activator for the CRUD implementation extension module.
@@ -47,8 +49,6 @@
  */
 public class CRUDModuleActivator implements ModuleActivator {
 
-    private CRUDImplementationProcessor implementationArtifactProcessor;
-
     public Map<Class, Object> getExtensionPoints() {
         // This module extension does not contribute any new
         // extension point
@@ -68,14 +68,14 @@
         // Add the CRUD implementation extension to the StAXArtifactProcessor
         // extension point
         StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
-        implementationArtifactProcessor = new CRUDImplementationProcessor(crudFactory);
+        CRUDImplementationProcessor implementationArtifactProcessor = new CRUDImplementationProcessor(crudFactory);
         processors.addArtifactProcessor(implementationArtifactProcessor);
+
+        // Add the CRUD provider factory to the ProviderFactory extension point
+        ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
+        providerFactories.addProviderFactory(new CRUDImplementationProviderFactory());
     }
 
     public void stop(ExtensionPointRegistry registry) {
-
-        // Remove the contributed extensions
-        StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
-        processors.removeArtifactProcessor(implementationArtifactProcessor);
     }
 }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProvider.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProvider.java Tue May  8 14:48:25 2007
@@ -39,7 +39,7 @@
  * @version $$Rev$$ $$Date: 2007-04-23 19:18:54 -0700 (Mon, 23 Apr
  *          2007) $$
  */
-public class CRUDImplementationProvider implements ImplementationProvider {
+public class CRUDImplementationProvider implements ImplementationProvider<CRUDImplementation> {
     
     private RuntimeComponent component;
     private CRUDImplementation implementation;

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProviderFactory.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/test/java/crud/provider/CRUDImplementationProviderFactory.java Tue May  8 14:48:25 2007
@@ -18,14 +18,11 @@
  */
 package crud.provider;
 
-import org.apache.tuscany.assembly.AssemblyFactory;
 import org.apache.tuscany.core.RuntimeComponent;
-import org.apache.tuscany.interfacedef.java.JavaInterfaceFactory;
-import org.apache.tuscany.interfacedef.java.introspect.JavaInterfaceIntrospector;
 import org.apache.tuscany.provider.ImplementationProvider;
 import org.apache.tuscany.provider.ImplementationProviderFactory;
 
-import crud.impl.CRUDImplementationImpl;
+import crud.CRUDImplementation;
 
 /**
  * The model representing a sample CRUD implementation in an SCA assembly model.
@@ -33,19 +30,19 @@
  * @version $$Rev$$ $$Date: 2007-04-23 19:18:54 -0700 (Mon, 23 Apr
  *          2007) $$
  */
-public class CRUDImplementationProviderFactory extends CRUDImplementationImpl implements ImplementationProviderFactory {
+public class CRUDImplementationProviderFactory implements ImplementationProviderFactory<CRUDImplementation> {
 
     /**
      * Constructs a new CRUD implementation.
      */
-    public CRUDImplementationProviderFactory(
-                               AssemblyFactory assemblyFactory,
-                              JavaInterfaceFactory javaFactory,
-                              JavaInterfaceIntrospector introspector) {
-        super(assemblyFactory, javaFactory, introspector);
+    public CRUDImplementationProviderFactory() {
     }
 
-    public ImplementationProvider createImplementationProvider(RuntimeComponent component) {
-        return new CRUDImplementationProvider(component, this);
+    public ImplementationProvider<CRUDImplementation> createImplementationProvider(RuntimeComponent component, CRUDImplementation implementation) {
+        return new CRUDImplementationProvider(component, implementation);
+    }
+    
+    public Class<CRUDImplementation> getModelType() {
+        return CRUDImplementation.class;
     }
 }

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProvider.java Tue May  8 14:48:25 2007
@@ -45,7 +45,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public class JavaImplementationProvider implements ScopedImplementationProvider {
+public class JavaImplementationProvider implements ScopedImplementationProvider<JavaImplementation> {
     private JavaImplementation implementation;
     private JavaComponentInfo atomicComponent;
 

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProviderFactory.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProviderFactory.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/invocation/JavaImplementationProviderFactory.java Tue May  8 14:48:25 2007
@@ -23,7 +23,6 @@
 import org.apache.tuscany.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.implementation.java.JavaImplementation;
 import org.apache.tuscany.implementation.java.context.JavaPropertyValueObjectFactory;
-import org.apache.tuscany.implementation.java.impl.JavaImplementationImpl;
 import org.apache.tuscany.invocation.ProxyFactory;
 import org.apache.tuscany.provider.ImplementationProvider;
 import org.apache.tuscany.provider.ImplementationProviderFactory;
@@ -32,7 +31,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public class JavaImplementationProviderFactory extends JavaImplementationImpl implements JavaImplementation, ImplementationProviderFactory {
+public class JavaImplementationProviderFactory implements ImplementationProviderFactory<JavaImplementation> {
     private JavaPropertyValueObjectFactory propertyValueObjectFactory;
     private DataBindingExtensionPoint dataBindingRegistry;
     private ProxyFactory proxyService;
@@ -50,7 +49,11 @@
         this.propertyValueObjectFactory = propertyValueObjectFactory;
     }
 
-    public ImplementationProvider createImplementationProvider(RuntimeComponent component) {
-        return new JavaImplementationProvider(component, this, proxyService, workContext, dataBindingRegistry, propertyValueObjectFactory);
+    public ImplementationProvider<JavaImplementation> createImplementationProvider(RuntimeComponent component, JavaImplementation implementation) {
+        return new JavaImplementationProvider(component, implementation, proxyService, workContext, dataBindingRegistry, propertyValueObjectFactory);
+    }
+    
+    public Class<JavaImplementation> getModelType() {
+        return JavaImplementation.class;
     }
 }

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/module/JavaRuntimeModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/module/JavaRuntimeModuleActivator.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/module/JavaRuntimeModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/module/JavaRuntimeModuleActivator.java Tue May  8 14:48:25 2007
@@ -31,6 +31,7 @@
 import org.apache.tuscany.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.databinding.TransformerExtensionPoint;
 import org.apache.tuscany.databinding.impl.DefaultMediator;
+import org.apache.tuscany.implementation.java.DefaultJavaImplementationFactory;
 import org.apache.tuscany.implementation.java.JavaImplementationFactory;
 import org.apache.tuscany.implementation.java.context.JavaPropertyValueObjectFactory;
 import org.apache.tuscany.implementation.java.introspect.DefaultJavaClassIntrospectorExtensionPoint;
@@ -53,7 +54,7 @@
 import org.apache.tuscany.implementation.java.introspect.impl.ResourceProcessor;
 import org.apache.tuscany.implementation.java.introspect.impl.ScopeProcessor;
 import org.apache.tuscany.implementation.java.introspect.impl.ServiceProcessor;
-import org.apache.tuscany.implementation.java.invocation.RuntimeJavaImplementationFactory;
+import org.apache.tuscany.implementation.java.invocation.JavaImplementationProviderFactory;
 import org.apache.tuscany.implementation.java.xml.JavaImplementationProcessor;
 import org.apache.tuscany.interfacedef.java.DefaultJavaInterfaceFactory;
 import org.apache.tuscany.interfacedef.java.JavaInterfaceFactory;
@@ -63,6 +64,7 @@
 import org.apache.tuscany.invocation.ProxyFactory;
 import org.apache.tuscany.policy.DefaultPolicyFactory;
 import org.apache.tuscany.policy.PolicyFactory;
+import org.apache.tuscany.provider.ProviderFactoryExtensionPoint;
 import org.apache.tuscany.spi.component.WorkContext;
 
 /**
@@ -123,13 +125,17 @@
         StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
         
         WorkContext workContext = registry.getExtensionPoint(WorkContext.class);
-        JavaImplementationFactory javaImplementationFactory =
-            new RuntimeJavaImplementationFactory(proxyFactory,
-                                                 workContext, dataBindings, factory);
+        JavaImplementationFactory javaImplementationFactory = new DefaultJavaImplementationFactory();
         JavaImplementationProcessor javaImplementationProcessor =
             new JavaImplementationProcessor(assemblyFactory, policyFactory, javaImplementationFactory, classIntrospector);
         processors.addArtifactProcessor(javaImplementationProcessor);
 
+        JavaImplementationProviderFactory javaImplementationProviderFactory =
+            new JavaImplementationProviderFactory(proxyFactory,
+                                                 workContext, dataBindings, factory);
+        
+        ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
+        providerFactories.addProviderFactory(javaImplementationProviderFactory);
     }
 
     public void stop(ExtensionPointRegistry registry) {

Modified: incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementation.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementation.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementation.java Tue May  8 14:48:25 2007
@@ -18,16 +18,16 @@
  */
 package org.apache.tuscany.sca.implementation.script;
 
+import org.apache.tuscany.assembly.Implementation;
 import org.apache.tuscany.core.RuntimeComponent;
 import org.apache.tuscany.implementation.spi.AbstractImplementation;
 import org.apache.tuscany.implementation.spi.PropertyValueObjectFactory;
 import org.apache.tuscany.provider.ImplementationProvider;
-import org.apache.tuscany.provider.ImplementationProviderFactory;
 
 /**
  * Represents a Script implementation.
  */
-public class ScriptImplementation extends AbstractImplementation implements ImplementationProviderFactory {
+public class ScriptImplementation extends AbstractImplementation implements Implementation {
 
     protected String scriptName;
     protected String scriptSrc;

Modified: incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProvider.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProvider.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProvider.java Tue May  8 14:48:25 2007
@@ -47,7 +47,7 @@
 /**
  * Represents a Script implementation.
  */
-public class ScriptImplementationProvider implements ImplementationProvider {
+public class ScriptImplementationProvider implements ImplementationProvider<ScriptImplementation> {
 
     protected RuntimeComponent component;
     protected ScriptImplementation implementation;

Added: incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProviderFactory.java?view=auto&rev=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProviderFactory.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProviderFactory.java Tue May  8 14:48:25 2007
@@ -0,0 +1,40 @@
+/*
+ * 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.script;
+
+import org.apache.tuscany.core.RuntimeComponent;
+import org.apache.tuscany.provider.ImplementationProvider;
+import org.apache.tuscany.provider.ImplementationProviderFactory;
+
+/**
+ * Represents a Script implementation.
+ */
+public class ScriptImplementationProviderFactory implements ImplementationProviderFactory<ScriptImplementation> {
+
+    public ScriptImplementationProviderFactory() {
+    }
+
+    public ImplementationProvider<ScriptImplementation> createImplementationProvider(RuntimeComponent component, ScriptImplementation implementation) {
+        return new ScriptImplementationProvider(component, implementation);
+    }
+    
+    public Class<ScriptImplementation> getModelType() {
+        return ScriptImplementation.class;
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProviderFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptImplementationProviderFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptModuleActivator.java?view=diff&rev=536341&r1=536340&r2=536341
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-script/src/main/java/org/apache/tuscany/sca/implementation/script/ScriptModuleActivator.java Tue May  8 14:48:25 2007
@@ -22,6 +22,7 @@
 import java.util.Map;
 
 import org.apache.tuscany.assembly.DefaultAssemblyFactory;
+import org.apache.tuscany.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.core.ExtensionPointRegistry;
 import org.apache.tuscany.core.ModuleActivator;
@@ -29,11 +30,10 @@
 import org.apache.tuscany.databinding.TransformerExtensionPoint;
 import org.apache.tuscany.databinding.impl.DefaultMediator;
 import org.apache.tuscany.implementation.spi.PropertyValueObjectFactory;
+import org.apache.tuscany.provider.ProviderFactoryExtensionPoint;
 
 public class ScriptModuleActivator implements ModuleActivator {
 
-    protected ScriptArtifactProcessor scriptArtifactProcessor;
-    
     public void start(ExtensionPointRegistry registry) {
 
         // TODO: could the runtime have a default PropertyValueObjectFactory in the registry
@@ -42,15 +42,16 @@
         DefaultMediator mediator = new DefaultMediator(dataBindings, transformers);
         PropertyValueObjectFactory propertyFactory = new PropertyValueObjectFactory(mediator);
 
-        scriptArtifactProcessor = new ScriptArtifactProcessor(new DefaultAssemblyFactory(), propertyFactory);
+        StAXArtifactProcessor scriptArtifactProcessor = new ScriptArtifactProcessor(new DefaultAssemblyFactory(), propertyFactory);
 
         StAXArtifactProcessorExtensionPoint staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
         staxProcessors.addArtifactProcessor(scriptArtifactProcessor);
+        
+        ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
+        providerFactories.addProviderFactory(new ScriptImplementationProviderFactory());
     }
 
     public void stop(ExtensionPointRegistry registry) {
-        StAXArtifactProcessorExtensionPoint staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
-        staxProcessors.removeArtifactProcessor(scriptArtifactProcessor);
     }
 
     public Map<Class, Object> getExtensionPoints() {



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