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 2006/02/24 03:43:24 UTC

svn commit: r380312 - in /incubator/tuscany/java/sca: binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/ container.java/src/main/java/org/apache/tuscany/container/java/builder/ container.java/src/main/java/org/apache/tuscany/container/j...

Author: jsdelfino
Date: Thu Feb 23 18:43:20 2006
New Revision: 380312

URL: http://svn.apache.org/viewcvs?rev=380312&view=rev
Log:
added support for pluggable SCDL loaders

Added:
    incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java   (with props)
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java   (with props)
Removed:
    incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment.off
    incubator/tuscany/java/sca/core/src/main/resources/org/apache/tuscany/core/pipeline/impl/
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLAssemblyModelLoader.java
Modified:
    incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java
    incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
    incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaSCDLModelLoader.java
    incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/assembly/tests/JavaAssemblyLoaderTestCase.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/config/ModuleComponentConfigurationLoaderTestCase.java
    incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
    incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java
    incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/config/ModuleComponentConfigurationLoaderTestCase.java
    incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/integration/JSComponentContextTestCase.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemBootstrapTestCase.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java
    incubator/tuscany/java/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java
    incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/RuntimeBootstrap.java

Modified: incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java (original)
+++ incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java Thu Feb 23 18:43:20 2006
@@ -12,34 +12,47 @@
 import org.apache.tuscany.binding.axis.assembly.WebServiceAssemblyFactory;
 import org.apache.tuscany.binding.axis.assembly.WebServiceBinding;
 import org.apache.tuscany.binding.axis.assembly.impl.WebServiceAssemblyFactoryImpl;
-import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.core.runtime.RuntimeContext;
+import org.apache.tuscany.core.system.annotation.Autowire;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.AssemblyModelObject;
 import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
 import org.apache.tuscany.model.util.XMLNameUtil;
+import org.osoa.sca.annotations.Init;
 
 /**
  * Populates the assembly model from an SCDL model
  */
+@org.osoa.sca.annotations.Scope("MODULE")
 public class WebServiceSCDLModelLoader implements SCDLModelLoader {
     
-    private AssemblyModelContext modelContext;
-    private ResourceLoader resourceLoader;
+    private RuntimeContext runtimeContext;
     private WebServiceAssemblyFactory wsFactory;
 
     /**
      * Constructs a new WebServiceSCDLModelLoader.
      */
     public WebServiceSCDLModelLoader(AssemblyModelContext modelContext) {
-        this.modelContext=modelContext;
-        this.resourceLoader=this.modelContext.getResourceLoader();
         this.wsFactory=new WebServiceAssemblyFactoryImpl();
     }
 
     /**
-     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(java.lang.Object)
+     * @param runtimeContext The runtimeContext to set.
      */
-    public AssemblyModelObject load(Object object) {
+    @Autowire
+    public void setRuntimeContext(RuntimeContext runtimeContext) {
+        this.runtimeContext = runtimeContext;
+    }
+
+    @Init(eager=true)
+    public void init() {
+        runtimeContext.addLoader(this);
+    }
+
+    /**
+     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(org.apache.tuscany.model.assembly.AssemblyModelContext, java.lang.Object)
+     */
+    public AssemblyModelObject load(AssemblyModelContext modelContext, Object object) {
         if (object instanceof org.apache.tuscany.model.scdl.WebServiceBinding) {
             org.apache.tuscany.model.scdl.WebServiceBinding scdlBinding=(org.apache.tuscany.model.scdl.WebServiceBinding)object;
             WebServiceBinding binding=wsFactory.createWebServiceBinding();

Modified: incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java (original)
+++ incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentContextBuilder.java Thu Feb 23 18:43:20 2006
@@ -64,7 +64,9 @@
 public class JavaComponentContextBuilder implements RuntimeConfigurationBuilder<AggregateContext> {
     
     private RuntimeContext runtimeContext;
-    private ProxyFactoryFactory factory;
+    private ProxyFactoryFactory proxyFactoryFactory;
+    private MessageFactory messageFactory;
+    private RuntimeConfigurationBuilder referenceBuilder;
 
     @Init(eager=true)
     public void init() {
@@ -84,11 +86,9 @@
      */
     @Autowire
     public void setProxyFactoryFactory(ProxyFactoryFactory factory) {
-        this.factory = factory;
+        this.proxyFactoryFactory = factory;
     }
 
-    private MessageFactory messageFactory;
-
     /**
      * Sets the factory used to construct invocation messages
      * 
@@ -99,8 +99,6 @@
         this.messageFactory = msgFactory;
     }
 
-    private RuntimeConfigurationBuilder referenceBuilder;
-
     /**
      * Sets a builder responsible for creating source-side and target-side invocation chains for a reference. The
      * reference builder may be hierarchical, containing other child reference builders that operate on specific
@@ -205,7 +203,7 @@
                     Service service = configuredService.getService();
                     ServiceContract serviceContract = service.getServiceContract();
                     Map<Method, InvocationConfiguration> iConfigMap = new HashMap();
-                    ProxyFactory proxyFactory = factory.createProxyFactory();
+                    ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
                     Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());
                     for (Method method : javaMethods) {
                         InvocationConfiguration iConfig = new InvocationConfiguration(method);
@@ -232,7 +230,7 @@
                 List<ConfiguredReference> configuredReferences = component.getConfiguredReferences();
                 if (configuredReferences != null) {
                     for (ConfiguredReference reference : configuredReferences) {
-                        ProxyFactory proxyFactory = factory.createProxyFactory();
+                        ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
                         ServiceContract serviceContract = reference.getReference().getServiceContract();
                         Map<Method, InvocationConfiguration> iConfigMap = new HashMap();
                         Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());

Modified: incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaSCDLModelLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaSCDLModelLoader.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaSCDLModelLoader.java (original)
+++ incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaSCDLModelLoader.java Thu Feb 23 18:43:20 2006
@@ -1,41 +1,54 @@
 package org.apache.tuscany.container.java.loader;
 
-import org.apache.tuscany.common.resource.ResourceLoader;
 import org.apache.tuscany.container.java.assembly.JavaAssemblyFactory;
 import org.apache.tuscany.container.java.assembly.JavaImplementation;
 import org.apache.tuscany.container.java.assembly.impl.JavaAssemblyFactoryImpl;
+import org.apache.tuscany.core.runtime.RuntimeContext;
+import org.apache.tuscany.core.system.annotation.Autowire;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.AssemblyModelObject;
 import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
+import org.osoa.sca.annotations.Init;
 
 /**
  * Populates the assembly model from an SCDL model
  */
+@org.osoa.sca.annotations.Scope("MODULE")
 public class JavaSCDLModelLoader implements SCDLModelLoader {
-    
-    private AssemblyModelContext modelContext;
-    private ResourceLoader resourceLoader;
+
+    private RuntimeContext runtimeContext;
     private JavaAssemblyFactory javaFactory;
 
     /**
      * Constructs a new JavaSCDLModelLoader.
      */
-    public JavaSCDLModelLoader(AssemblyModelContext modelContext) {
-        this.modelContext=modelContext;
-        this.resourceLoader=this.modelContext.getResourceLoader();
+    public JavaSCDLModelLoader() {
         this.javaFactory=new JavaAssemblyFactoryImpl();
     }
+    
+    /**
+     * @param runtimeContext The runtimeContext to set.
+     */
+    @Autowire
+    public void setRuntimeContext(RuntimeContext runtimeContext) {
+        this.runtimeContext = runtimeContext;
+    }
+
+    @Init(eager=true)
+    public void init() {
+        runtimeContext.addLoader(this);
+    }
 
     /**
-     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(java.lang.Object)
+     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(org.apache.tuscany.model.assembly.AssemblyModelContext, java.lang.Object)
      */
-    public AssemblyModelObject load(Object object) {
+    public AssemblyModelObject load(AssemblyModelContext modelContext, Object object) {
         if (object instanceof org.apache.tuscany.model.scdl.JavaImplementation) {
             org.apache.tuscany.model.scdl.JavaImplementation scdlJavaImplementation=(org.apache.tuscany.model.scdl.JavaImplementation)object;
             JavaImplementation implementation=javaFactory.createJavaImplementation();
             Class implementationClass;
             try {
-                implementationClass=resourceLoader.loadClass(scdlJavaImplementation.getClass_());
+                implementationClass=modelContext.getResourceLoader().loadClass(scdlJavaImplementation.getClass_());
             } catch (ClassNotFoundException e) {
                 throw new IllegalArgumentException(e);
             }

Modified: incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment (original)
+++ incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment Thu Feb 23 18:43:20 2006
@@ -22,4 +22,8 @@
         <system:implementation.system class="org.apache.tuscany.container.java.builder.JavaComponentContextBuilder"/>
     </component>
 
+    <component name="org.apache.tuscany.container.java.loader.JavaSCDLModelLoader">
+        <system:implementation.system class="org.apache.tuscany.container.java.loader.JavaSCDLModelLoader"/>
+    </component>
+
 </moduleFragment>

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/assembly/tests/JavaAssemblyLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/assembly/tests/JavaAssemblyLoaderTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/assembly/tests/JavaAssemblyLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/assembly/tests/JavaAssemblyLoaderTestCase.java Thu Feb 23 18:43:20 2006
@@ -30,7 +30,7 @@
 import org.apache.tuscany.model.assembly.Module;
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
-import org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
 
 /**
@@ -47,11 +47,11 @@
     public void testLoader() {
 
         ResourceLoader resourceLoader=new ResourceLoaderImpl(Thread.currentThread().getContextClassLoader());
-        SCDLAssemblyModelLoader assemblyLoader=new SCDLAssemblyModelLoaderImpl();
+        AssemblyModelLoader assemblyLoader=new SCDLAssemblyModelLoaderImpl();
+        JavaSCDLModelLoader javaLoader=new JavaSCDLModelLoader();
+        assemblyLoader.getSCDLModelLoaders().add(javaLoader);
         AssemblyFactory assemblyFactory=new AssemblyFactoryImpl();
         AssemblyModelContext modelContext=new AssemblyModelContextImpl(assemblyFactory, assemblyLoader, resourceLoader);
-        
-        assemblyLoader.getSCDLModelLoaders().add(new JavaSCDLModelLoader(modelContext));
 
         Module module = assemblyLoader.getModule(getClass().getResource("sca.module").toString());
         module.initialize(modelContext);

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/config/ModuleComponentConfigurationLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/config/ModuleComponentConfigurationLoaderTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/config/ModuleComponentConfigurationLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/config/ModuleComponentConfigurationLoaderTestCase.java Thu Feb 23 18:43:20 2006
@@ -35,7 +35,7 @@
 import org.apache.tuscany.model.assembly.ModuleComponent;
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
-import org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
 
 /**
@@ -67,10 +67,11 @@
     protected void setUp() throws Exception {
         super.setUp();
         Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
-        SCDLAssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
+        AssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
+        JavaSCDLModelLoader javaLoader=new JavaSCDLModelLoader();
+        modelLoader.getSCDLModelLoaders().add(javaLoader);
         modelContext=new AssemblyModelContextImpl(new AssemblyFactoryImpl(), modelLoader,
                 new ResourceLoaderImpl(this.getClass().getClassLoader()));
           loader = new ModuleComponentConfigurationLoaderImpl(modelContext);
-          modelLoader.getSCDLModelLoaders().add(new JavaSCDLModelLoader(modelContext));
     }
 }

Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java Thu Feb 23 18:43:20 2006
@@ -89,7 +89,7 @@
 
         wireBuilders.add(defaultWireBuilder);
 
-        RuntimeContext runtime = new RuntimeContextImpl(null, builders, wireBuilders);
+        RuntimeContext runtime = new RuntimeContextImpl(null, null, builders, wireBuilders);
         runtime.start();
         runtime.getRootContext().registerModelObject(
                 MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(), Scope.AGGREGATE));
@@ -134,7 +134,7 @@
         defaultWireBuilder.addWireBuilder(new JavaTargetWireBuilder());
         wireBuilders.add(defaultWireBuilder);
 
-        RuntimeContext runtime = new RuntimeContextImpl(null, builders, wireBuilders);
+        RuntimeContext runtime = new RuntimeContextImpl(null, null, builders, wireBuilders);
         runtime.start();
         runtime.getRootContext().registerModelObject(
                 MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(),
@@ -182,7 +182,7 @@
         defaultWireBuilder.addWireBuilder(new JavaTargetWireBuilder());
         wireBuilders.add(defaultWireBuilder);
 
-        RuntimeContext runtime = new RuntimeContextImpl(null, builders, wireBuilders);
+        RuntimeContext runtime = new RuntimeContextImpl(null, null, builders, wireBuilders);
         runtime.start();
         runtime.getRootContext().registerModelObject(
                 MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(),
@@ -227,7 +227,7 @@
         defaultWireBuilder.addWireBuilder(new JavaTargetWireBuilder());
         wireBuilders.add(defaultWireBuilder);
 
-        RuntimeContext runtime = new RuntimeContextImpl(null, builders, wireBuilders);
+        RuntimeContext runtime = new RuntimeContextImpl(null, null, builders, wireBuilders);
         runtime.start();
         runtime.getRootContext().registerModelObject(
                 MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(),

Modified: incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java (original)
+++ incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java Thu Feb 23 18:43:20 2006
@@ -5,17 +5,21 @@
 import org.apache.tuscany.container.js.assembly.impl.JavaScriptAssemblyFactoryImpl;
 import org.apache.tuscany.container.js.scdl.ScdlFactory;
 import org.apache.tuscany.container.js.scdl.impl.ScdlPackageImpl;
+import org.apache.tuscany.core.runtime.RuntimeContext;
+import org.apache.tuscany.core.system.annotation.Autowire;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.AssemblyModelObject;
 import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
 import org.apache.tuscany.sdo.util.SDOUtil;
+import org.osoa.sca.annotations.Init;
 
 /**
  * Populates the assembly model from an SCDL model
  */
+@org.osoa.sca.annotations.Scope("MODULE")
 public class JavaScriptSCDLModelLoader implements SCDLModelLoader {
-    
-    private AssemblyModelContext modelContext;
+
+    private RuntimeContext runtimeContext;
     private JavaScriptAssemblyFactory jsFactory;
 
     static {
@@ -25,17 +29,29 @@
     }
     
     /**
+     * @param runtimeContext The runtimeContext to set.
+     */
+    @Autowire
+    public void setRuntimeContext(RuntimeContext runtimeContext) {
+        this.runtimeContext = runtimeContext;
+    }
+
+    @Init(eager=true)
+    public void init() {
+        runtimeContext.addLoader(this);
+    }
+
+    /**
      * Constructs a new JavaSCDLModelLoader.
      */
-    public JavaScriptSCDLModelLoader(AssemblyModelContext modelContext) {
-        this.modelContext=modelContext;
+    public JavaScriptSCDLModelLoader() {
         this.jsFactory=new JavaScriptAssemblyFactoryImpl();
     }
 
     /**
-     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(java.lang.Object)
+     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(org.apache.tuscany.model.assembly.AssemblyModelContext, java.lang.Object)
      */
-    public AssemblyModelObject load(Object object) {
+    public AssemblyModelObject load(AssemblyModelContext modelContext, Object object) {
         if (object instanceof org.apache.tuscany.container.js.scdl.JavaScriptImplementation) {
             org.apache.tuscany.container.js.scdl.JavaScriptImplementation scdlImplementation=(org.apache.tuscany.container.js.scdl.JavaScriptImplementation)object;
             JavaScriptImplementation implementation=jsFactory.createJavaScriptImplementation();

Added: incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment?rev=380312&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment (added)
+++ incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment Thu Feb 23 18:43:20 2006
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+  Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+  Licensed 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.
+ -->
+<moduleFragment xmlns="http://www.osoa.org/xmlns/sca/0.9" xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+        xmlns:system="http://org.apache.tuscany/xmlns/system/0.9"
+		name="org.apache.tuscany.container.js">
+
+    <component name="org.apache.tuscany.container.js.builder.JavaScriptComponentContextBuilder">
+        <system:implementation.system class="org.apache.tuscany.container.js.builder.JavaScriptComponentContextBuilder"/>
+    </component>
+
+    <component name="org.apache.tuscany.container.js.loader.JavaScriptSCDLModelLoader">
+        <system:implementation.system class="org.apache.tuscany.container.js.loader.JavaScriptSCDLModelLoader"/>
+    </component>
+
+</moduleFragment>

Modified: incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/config/ModuleComponentConfigurationLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/config/ModuleComponentConfigurationLoaderTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/config/ModuleComponentConfigurationLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/config/ModuleComponentConfigurationLoaderTestCase.java Thu Feb 23 18:43:20 2006
@@ -36,7 +36,6 @@
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
 import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
-import org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
 
 /**
@@ -66,11 +65,11 @@
     protected void setUp() throws Exception {
         super.setUp();
         Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
-        SCDLAssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
+        AssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
+        JavaScriptSCDLModelLoader jsLoader=new JavaScriptSCDLModelLoader();
+        modelLoader.getSCDLModelLoaders().add(jsLoader);
         AssemblyModelContext modelContext=new AssemblyModelContextImpl(
                 new AssemblyFactoryImpl(), modelLoader,new ResourceLoaderImpl(this.getClass().getClassLoader()));
-        JavaScriptSCDLModelLoader jsLoader=new JavaScriptSCDLModelLoader(modelContext);
-        modelLoader.getSCDLModelLoaders().add(jsLoader);
           loader = new ModuleComponentConfigurationLoaderImpl(modelContext);
     }
 }

Modified: incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/integration/JSComponentContextTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/integration/JSComponentContextTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/integration/JSComponentContextTestCase.java (original)
+++ incubator/tuscany/java/sca/container.js/src/test/java/org/apache/tuscany/container/js/integration/JSComponentContextTestCase.java Thu Feb 23 18:43:20 2006
@@ -75,7 +75,7 @@
 
         wireBuilders.add(defaultWireBuilder);
 
-        RuntimeContext runtime = new RuntimeContextImpl(null, builders, wireBuilders);
+        RuntimeContext runtime = new RuntimeContextImpl(null, null, builders, wireBuilders);
         runtime.start();
         runtime.getRootContext().registerModelObject(
                 MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(),

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java Thu Feb 23 18:43:20 2006
@@ -16,7 +16,6 @@
  */
 package org.apache.tuscany.core.client;
 
-import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -42,8 +41,7 @@
 import org.apache.tuscany.model.assembly.ModuleComponent;
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
-import org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader;
-import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
 import org.osoa.sca.ModuleContext;
 import org.osoa.sca.SCA;
@@ -93,23 +91,16 @@
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         ResourceLoader resourceLoader = new ResourceLoaderImpl(classLoader);
         AssemblyFactory modelFactory=new AssemblyFactoryImpl();
-        SCDLAssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
+        AssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
         AssemblyModelContext modelContext = new AssemblyModelContextImpl(modelFactory, modelLoader, resourceLoader);
-        modelLoader.getSCDLModelLoaders().add(new SystemSCDLModelLoader(modelContext));
-        try {
-            Class clazz=classLoader.loadClass("org.apache.tuscany.container.java.loader.JavaSCDLModelLoader");
-            Constructor constructor=clazz.getConstructor(new Class[]{AssemblyModelContext.class});
-            modelLoader.getSCDLModelLoaders().add((SCDLModelLoader)constructor.newInstance(new Object[]{modelContext}));
-        } catch (Exception e) {
-            System.out.println(e);
-        }
+        modelLoader.getSCDLModelLoaders().add(new SystemSCDLModelLoader());
 
         List<RuntimeConfigurationBuilder> configBuilders = new ArrayList();
         configBuilders.add((new SystemComponentContextBuilder()));
         configBuilders.add(new SystemEntryPointBuilder());
         configBuilders.add(new SystemExternalServiceBuilder());
 
-        runtimeContext = new RuntimeContextImpl(monitorFactory,configBuilders,null);
+        runtimeContext = new RuntimeContextImpl(monitorFactory, modelLoader.getSCDLModelLoaders(), configBuilders,null);
         runtimeContext.start();
         monitor.started(runtimeContext);
 

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContext.java Thu Feb 23 18:43:20 2006
@@ -19,6 +19,7 @@
 import org.apache.tuscany.core.context.AutowireContext;
 import org.apache.tuscany.core.context.ConfigurationContext;
 import org.apache.tuscany.core.context.SystemAggregateContext;
+import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
 
 /**
  * Represents a top-level component context in the runtime, that is the bootstrap context.
@@ -58,6 +59,11 @@
      * Adds a configuration builder to the runtime
      */
     public void addBuilder(RuntimeConfigurationBuilder builder);
+
+    /**
+     * Adds an SCDL model loader to the runtime
+     */
+    public void addLoader(SCDLModelLoader loader);
 
     /**
      * Returns the monitor factory in use by the runtime

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java Thu Feb 23 18:43:20 2006
@@ -37,14 +37,11 @@
 import org.apache.tuscany.core.context.TargetException;
 import org.apache.tuscany.core.context.impl.AggregateContextImpl;
 import org.apache.tuscany.core.context.impl.EventContextImpl;
-import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
 import org.apache.tuscany.core.invocation.spi.ProxyFactory;
-import org.apache.tuscany.core.invocation.spi.ProxyFactoryFactory;
-import org.apache.tuscany.core.message.MessageFactory;
-import org.apache.tuscany.core.message.impl.MessageFactoryImpl;
 import org.apache.tuscany.core.system.context.SystemAggregateContextImpl;
 import org.apache.tuscany.core.system.context.SystemScopeStrategy;
 import org.apache.tuscany.model.assembly.Extensible;
+import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
 
 /**
  * Implementation of a RuntimeContext that forms the foundation for a Tuscany environment.
@@ -55,6 +52,8 @@
 
     private final List<RuntimeConfigurationBuilder> builders;
 
+    private final List<SCDLModelLoader> loaders;
+
     private final List<WireBuilder> wireBuilders;
 
     private final List<RuntimeEventListener> listeners = new ArrayList(1);
@@ -69,7 +68,7 @@
      * Default constructor that creates a runtime with a NullMonitorFactory and no builders.
      */
     public RuntimeContextImpl() {
-        this(new NullMonitorFactory(), null, null);
+        this(new NullMonitorFactory(), null, null, null);
     }
 
     /**
@@ -79,12 +78,13 @@
      * @param builders a list of builders automatically made available; may be null
      * @param wireBuilders a list of wire builders automatically made available; may be null
      */
-    public RuntimeContextImpl(MonitorFactory monitorFactory, List<RuntimeConfigurationBuilder> builders,
+    public RuntimeContextImpl(MonitorFactory monitorFactory, List<SCDLModelLoader> loaders, List<RuntimeConfigurationBuilder> builders,
             List<WireBuilder> wireBuilders) {
         super(RUNTIME);
         this.monitorFactory = monitorFactory;
-        this.builders = (builders == null) ? new ArrayList(1) : new ArrayList(builders);
-        this.wireBuilders = (wireBuilders == null) ? new ArrayList(1) : new ArrayList(wireBuilders);
+        this.builders = (builders == null) ? new ArrayList(1) : builders;
+        this.loaders = (loaders == null) ? new ArrayList(1) : loaders;
+        this.wireBuilders = (wireBuilders == null) ? new ArrayList(1) : wireBuilders;
 
         rootContext = new AggregateContextImpl(ROOT, this, this, new RuntimeScopeStrategy(), new EventContextImpl(), this,
                 monitorFactory);
@@ -103,13 +103,14 @@
      * @param wireBuilders a list of wire builders automatically made available; may be null
      */
     public RuntimeContextImpl(MonitorFactory monitorFactory, AggregateContext rootContext, SystemAggregateContext systemContext,
-            List<RuntimeConfigurationBuilder> builders, List<WireBuilder> wireBuilders) {
+            List<SCDLModelLoader> loaders, List<RuntimeConfigurationBuilder> builders, List<WireBuilder> wireBuilders) {
         super(RUNTIME);
         this.rootContext = rootContext;
         this.systemContext = systemContext;
         this.monitorFactory = monitorFactory;
-        this.builders = (builders == null) ? new ArrayList(1) : new ArrayList(builders);
-        this.wireBuilders = (wireBuilders == null) ? new ArrayList(1) : new ArrayList(wireBuilders);
+        this.loaders = (loaders == null) ? new ArrayList(1) : loaders;
+        this.builders = (builders == null) ? new ArrayList(1) : builders;
+        this.wireBuilders = (wireBuilders == null) ? new ArrayList(1) : wireBuilders;
     }
 
     public void start() throws CoreRuntimeException {
@@ -133,6 +134,11 @@
     public void addBuilder(RuntimeConfigurationBuilder builder) {
         assert (builder != null) : "Builder was null";
         builders.add(builder);
+    }
+    
+    public void addLoader(SCDLModelLoader loader) {
+        assert (loader != null) : "Loader was null";
+        loaders.add(loader);
     }
 
     public AggregateContext getContext(String ctxName) {

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java Thu Feb 23 18:43:20 2006
@@ -1,6 +1,5 @@
 package org.apache.tuscany.core.system.loader;
 
-import org.apache.tuscany.common.resource.ResourceLoader;
 import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory;
 import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
 import org.apache.tuscany.core.system.scdl.ScdlFactory;
@@ -15,9 +14,7 @@
  */
 public class SystemSCDLModelLoader implements SCDLModelLoader {
     
-    private AssemblyModelContext modelContext;
     private SystemAssemblyFactory systemFactory;
-    private ResourceLoader resourceLoader;
     
     static {
         // Register the system SCDL model
@@ -27,22 +24,20 @@
     /**
      * Constructs a new JavaSCDLModelLoader.
      */
-    public SystemSCDLModelLoader(AssemblyModelContext modelContext) {
-        this.modelContext=modelContext;
-        this.resourceLoader=this.modelContext.getResourceLoader();
+    public SystemSCDLModelLoader() {
         this.systemFactory=new SystemAssemblyFactoryImpl();
     }
 
     /**
-     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(java.lang.Object)
+     * @see org.apache.tuscany.model.scdl.loader.SCDLModelLoader#load(org.apache.tuscany.model.assembly.AssemblyModelContext, java.lang.Object)
      */
-    public AssemblyModelObject load(Object object) {
+    public AssemblyModelObject load(AssemblyModelContext modelContext, Object object) {
         if (object instanceof SystemImplementation) {
             SystemImplementation scdlImplementation=(SystemImplementation)object;
             org.apache.tuscany.core.system.assembly.SystemImplementation implementation=systemFactory.createSystemImplementation();
             Class implementationClass;
             try {
-                implementationClass=resourceLoader.loadClass(scdlImplementation.getClass_());
+                implementationClass=modelContext.getResourceLoader().loadClass(scdlImplementation.getClass_());
             } catch (ClassNotFoundException e) {
                 throw new IllegalArgumentException(e);
             }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java Thu Feb 23 18:43:20 2006
@@ -61,7 +61,7 @@
 
         List<RuntimeConfigurationBuilder> builders  = MockSystemAssemblyFactory.createBuilders();
         // start the runtime context
-        RuntimeContext runtimeContext = new RuntimeContextImpl(new NullMonitorFactory(), builders, null);
+        RuntimeContext runtimeContext = new RuntimeContextImpl(new NullMonitorFactory(), null, builders, null);
         runtimeContext.start();
 
         AggregateContext system = runtimeContext.getSystemContext();

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java Thu Feb 23 18:43:20 2006
@@ -57,7 +57,7 @@
      * point
      */
     public void testSystemExplicitWiring() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
 
         AggregateContext root = runtime.getRootContext();
@@ -108,7 +108,7 @@
      * Tests autowiring an external service to a system entry point
      */
     public void testSystemAutoWiring() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
 
         AggregateContext root = runtime.getRootContext();
@@ -140,7 +140,7 @@
     }
 
     public void testServiceNotFound() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
 
         // create a test module
@@ -160,7 +160,7 @@
     }
 
     public void testExternalServiceReferenceNotFound() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
         AggregateContext system = runtime.getSystemContext();
 
@@ -187,7 +187,7 @@
     }
 
     public void testEntryPointReferenceNotFound() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
 
         // create a test module
@@ -218,7 +218,7 @@
      * Test two module components that have external services wired to entry points contained in each
      */
     public void testCircularWires() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
 
         // create a test modules
@@ -264,7 +264,7 @@
      * as an error condition FIXME this must be implemented
      */
     public void testInterModuleCircularReference() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
 
         // create a test modules
@@ -299,7 +299,7 @@
 
     public void testRuntimeBuilderAutowire() throws Exception {
 
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
 
         AggregateContext system = runtime.getSystemContext();

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemBootstrapTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemBootstrapTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemBootstrapTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemBootstrapTestCase.java Thu Feb 23 18:43:20 2006
@@ -55,7 +55,7 @@
      * Simulates booting a runtime process
      */
     public void testBoot() throws Exception {
-        RuntimeContext runtimeContext = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtimeContext = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtimeContext.start();
 
         AggregateContext systemContext = runtimeContext.getSystemContext();
@@ -86,7 +86,7 @@
     }
 
     public void testRuntimeBoot() throws Exception {
-        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), builders,null);
+        RuntimeContext runtime = new RuntimeContextImpl(new NullMonitorFactory(), null, builders,null);
         runtime.start();
         runtime.getRootContext();
 

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Aggregate.java Thu Feb 23 18:43:20 2006
@@ -87,4 +87,10 @@
      */
     List<AggregatePart> getAggregateParts();
 
+    /**
+     * Returns the wires.
+     * @return
+     */
+    List<Wire> getWires();
+    
 }

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java Thu Feb 23 18:43:20 2006
@@ -153,4 +153,9 @@
      */
     QName createQName(String uri);
 
+    /**
+     * Create a wire
+     * @return
+     */
+    Wire createWire();
 }

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/ModuleFragment.java Thu Feb 23 18:43:20 2006
@@ -17,6 +17,7 @@
 package org.apache.tuscany.model.assembly;
 
 
+
 /**
  * Represents a module fragment.
  */

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Subsystem.java Thu Feb 23 18:43:20 2006
@@ -17,6 +17,7 @@
 package org.apache.tuscany.model.assembly;
 
 
+
 /**
  * Represents a subsystem.
  */
@@ -34,4 +35,4 @@
      */
     void setURI(String value);
 
-} // Subsystem
+}

Added: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java?rev=380312&view=auto
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java (added)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java Thu Feb 23 18:43:20 2006
@@ -0,0 +1,49 @@
+/**
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed 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.model.assembly;
+
+
+/**
+ * Represents a wire.
+ */
+public interface Wire extends  Extensible {
+
+    /**
+     * Returns the source URI
+     * @return
+     */
+    ServiceURI getSource();
+    
+    /**
+     * Sets the source URI
+     * @param uri
+     */
+    void setSource(ServiceURI uri);
+    
+    /**
+     * Returns the target URI
+     * @return
+     */
+    ServiceURI getTarget();
+    
+    /**
+     * Sets the target URI
+     * @param uri
+     */
+    void setTarget(ServiceURI uri);
+    
+}

Propchange: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Wire.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AggregateImpl.java Thu Feb 23 18:43:20 2006
@@ -31,6 +31,7 @@
 import org.apache.tuscany.model.assembly.EntryPoint;
 import org.apache.tuscany.model.assembly.ExternalService;
 import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.Wire;
 
 /**
  * An implementation of Aggregate.
@@ -45,6 +46,7 @@
     private List<ExternalService> externalServices=new ArrayList<ExternalService>();
     private Map<String, ExternalService> externalServicesMap;
     private List<AggregatePart> aggregateParts;
+    private List<Wire> wires=new ArrayList<Wire>();
 
     /**
      * Constructor
@@ -121,6 +123,13 @@
     }
 
     /**
+     * @see org.apache.tuscany.model.assembly.Aggregate#getWires()
+     */
+    public List<Wire> getWires() {
+        return wires;
+    }
+    
+    /**
      * @see org.apache.tuscany.model.assembly.Aggregate#getConfiguredService(org.apache.tuscany.model.assembly.ServiceURI)
      */
     public ConfiguredService getConfiguredService(ServiceURI address) {
@@ -179,6 +188,9 @@
             externalService.initialize(modelContext);
             ((AggregatePartImpl)externalService).setAggregate(this);
         }
+        for (Wire wire : wires) {
+            wire.initialize(modelContext);
+        }
     }
 
     /**
@@ -196,6 +208,8 @@
         freeze(entryPoints);
         externalServices=Collections.unmodifiableList(externalServices);
         freeze(externalServices);
+        wires=Collections.unmodifiableList(wires);
+        freeze(wires);
     }
 
     /**
@@ -206,6 +220,9 @@
             return false;
         
         if (!accept(aggregateParts, visitor))
+            return false;
+        
+        if (!accept(wires, visitor))
             return false;
         
         return true;

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java Thu Feb 23 18:43:20 2006
@@ -35,6 +35,7 @@
 import org.apache.tuscany.model.assembly.ServiceURI;
 import org.apache.tuscany.model.assembly.SimpleComponent;
 import org.apache.tuscany.model.assembly.Subsystem;
+import org.apache.tuscany.model.assembly.Wire;
 import org.apache.tuscany.model.types.java.JavaServiceContract;
 import org.apache.tuscany.model.types.java.impl.JavaServiceContractImpl;
 import org.apache.tuscany.model.types.wsdl.WSDLServiceContract;
@@ -192,4 +193,10 @@
         return new QName(uri.substring(0, h), uri.substring(h + 1));
     }
 
+    /**
+     * @see org.apache.tuscany.model.assembly.AssemblyFactory#createWire()
+     */
+    public Wire createWire() {
+        return new WireImpl();
+    }
 }

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ModuleImpl.java Thu Feb 23 18:43:20 2006
@@ -26,14 +26,20 @@
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.AssemblyModelVisitor;
+import org.apache.tuscany.model.assembly.Component;
 import org.apache.tuscany.model.assembly.ComponentType;
+import org.apache.tuscany.model.assembly.ConfiguredReference;
+import org.apache.tuscany.model.assembly.ConfiguredService;
 import org.apache.tuscany.model.assembly.EntryPoint;
 import org.apache.tuscany.model.assembly.ExternalService;
 import org.apache.tuscany.model.assembly.Module;
 import org.apache.tuscany.model.assembly.ModuleFragment;
+import org.apache.tuscany.model.assembly.Multiplicity;
 import org.apache.tuscany.model.assembly.Reference;
 import org.apache.tuscany.model.assembly.Service;
 import org.apache.tuscany.model.assembly.ServiceContract;
+import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.Wire;
 
 /**
  * An implementation of Module.
@@ -98,14 +104,15 @@
             getEntryPoints().addAll(moduleFragment.getEntryPoints());
             getExternalServices().addAll(moduleFragment.getExternalServices());
             
+            // Add all the wires from the module fragments
+            getWires().addAll(moduleFragment.getWires());
+            
             moduleFragment.initialize(modelContext);
         }
         
         // Initialize the aggregate
         super.initialize(modelContext);
 
-        //FIXME derive the module properties from the overridable properties of the components in the module
-
         // Derive the component type from the entry points and external services in the module
         if (componentType==null) {
             AssemblyFactory factory = modelContext.getAssemblyFactory();
@@ -130,138 +137,53 @@
         }
         componentType.initialize(modelContext);
 
-        //FIXME add wiring later
-//        
-//        // Resolve the references and the wires
-//        AssemblyFactory factory = modelContext.getAssemblyFactory();
-//
-//        // Resolve entry point references
-//        for (Iterator<EntryPoint> i = entryPointsMap.values().iterator(); i.hasNext();) {
-//            EntryPoint entryPoint = i.next();
-//            ConfiguredReference configuredReference = entryPoint.getConfiguredReference();
-//            for (Iterator<DataObject> r = ((org.osoa.sca.model.EntryPoint) entryPoint).getReferences().iterator(); r.hasNext();) {
-//                DataObject targetURIElement = r.next();
-//                ConfiguredService configuredService = resolveURIElement(factory, targetURIElement);
-//                if (configuredService != null) {
-//                    if (!configuredReference.getReference().isMultiplicityN() && !configuredReference.getTargetConfiguredServices().isEmpty()) {
-//                        // FIXME shouldn't we be throwing an exception here
-//                        // log.error("Attempting to wire multiple targets to reference " + configuredReference.getReference().getName());
-//                    } else {
-//                        configuredReference.getTargetConfiguredServices().add(configuredService);
-//                    }
-//                }
-//            }
-//        }
-//
-//        // Resolve component references
-//        for (Iterator<Component> i = componentsMap.values().iterator(); i.hasNext();) {
-//            Component component = i.next();
-//            ReferenceValues referenceValues = ((org.osoa.sca.model.Component) component).getReferenceValues();
-//            if (referenceValues == null)
-//                continue;
-//            Sequence sequence = referenceValues.getAny();
-//            for (int p = 0, n = sequence.size(); p < n; p++) {
-//                Property property = sequence.getProperty(p);
-//                DataObject targetURIElement = (DataObject) sequence.getValue(p);
-//
-//                // Get the named reference
-//                ConfiguredReference configuredReference = component.getConfiguredReference(property.getName());
-//                if (configuredReference != null) {
-//                    ConfiguredService configuredService = resolveURIElement(factory, targetURIElement);
-//                    if (configuredService != null) {
-//                        if (!configuredReference.getReference().isMultiplicityN() && !configuredReference.getTargetConfiguredServices().isEmpty()) {
-//                            // FIXME shouldn't we be throwing an exception here
-//                            // log.error("Attempting to wire multiple targets to reference " + configuredReference.getReference().getName());
-//                        } else {
-//                            configuredReference.getTargetConfiguredServices().add(configuredService);
-//                        }
-//                    }
-//                } else {
-//                    // FIXME shouldn't we be throwing an exception here
-//                    // log.error("Undefined reference " + property.getName());
-//                }
-//            }
-//        }
-//
-//        // Resolve wires from this module and its module fragments
-//        resolveWires(factory, getWires());
-//        for (Iterator<ModuleFragment> i = getModuleFragments().iterator(); i.hasNext();) {
-//            ModuleFragment moduleFragment = i.next();
-//            resolveWires(factory, ((org.osoa.sca.model.ModuleFragment) moduleFragment).getWires());
-//        }
-    }
-
-//    /**
-//     * Resolve a target URI
-//     *
-//     * @param factory
-//     * @param targetURIElement
-//     */
-//    private ConfiguredService resolveURIElement(AssemblyFactory factory, DataObject targetURIElement) {
-//        Sequence sequence = targetURIElement.getSequence(0);
-//        String targetURI = (String) sequence.getValue(0);
-//        ServiceURI serviceURI = factory.createServiceURI(null, targetURI);
-//        ConfiguredService configuredService = getConfiguredService(serviceURI);
-//        if (configuredService == null) {
-//            // FIXME shouldn't we be throwing an exception here
-//            // log.error("Cannot find service for " + targetURI);
-//        }
-//        return configuredService;
-//    }
-//
-//    /**
-//     * Resolve the given wires
-//     *
-//     * @param factory
-//     * @param wires
-//     */
-//    private void resolveWires(AssemblyFactory factory, List<ModuleWire> wires) {
-//
-//        // Loop through the wires
-//        for (Iterator<ModuleWire> i = wires.iterator(); i.hasNext();) {
-//            ModuleWire wire = i.next();
-//
-//            // Get the source reference
-//            ServiceURI sourceURI = factory.createServiceURI(null, wire.getSourceUri());
-//            ConfiguredReference configuredReference = null;
-//            String partName = sourceURI.getPartName();
-//            String referenceName = sourceURI.getServiceName();
-//            if (referenceName != null) {
-//                Component component = getComponent(partName);
-//                if (component != null) {
-//                    configuredReference = component.getConfiguredReference(referenceName);
-//                }
-//            } else {
-//                EntryPoint entryPoint = getEntryPoint(partName);
-//                if (entryPoint != null) {
-//                    configuredReference = entryPoint.getConfiguredReference();
-//                }
-//            }
-//            if (configuredReference == null) {
-//                // FIXME shouldn't we be throwing an exception here
-//                // log.error("Cannot find wire source " + sourceURI);
-//            } else {
-//
-//                // Resolve the target service endpoint
-//                ServiceURI targetURI = factory.createServiceURI(null, wire.getTargetUri());
-//                ConfiguredService configuredService = getConfiguredService(targetURI);
-//                if (configuredService != null) {
-//
-//                    // Wire the reference to the target
-//                    if (configuredReference.getReference().isMultiplicityN()) {
-//                        configuredReference.getTargetConfiguredServices().add(configuredService);
-//                    } else {
-//                        configuredReference.getTargetConfiguredServices().clear();
-//                        configuredReference.getTargetConfiguredServices().add(configuredService);
-//                    }
-//                } else {
-//                    // FIXME shouldn't we be throwing an exception here
-//                    // log.error("Cannot find service for " + targetURI.getAddress());
-//                }
-//            }
-//        }
-//    }
+        //FIXME derive the module properties from the overridable properties of the components in the module
+
+        // Wire the module parts
+        for (Wire wire : getWires()) {
 
+            // Get the source reference
+            ServiceURI sourceURI=wire.getSource();
+            ConfiguredReference configuredReference = null;
+            String partName = sourceURI.getPartName();
+            String referenceName = sourceURI.getServiceName();
+            if (referenceName != null) {
+                Component component = getComponent(partName);
+                if (component != null) {
+                    configuredReference = component.getConfiguredReference(referenceName);
+                }
+            } else {
+                EntryPoint entryPoint = getEntryPoint(partName);
+                if (entryPoint != null) {
+                    configuredReference = entryPoint.getConfiguredReference();
+                }
+            }
+            if (configuredReference == null) {
+                //FIXME
+                //throw new IllegalArgumentException("Cannot find wire source " + sourceURI.getAddress());
+            } else {
+
+                // Resolve the target service endpoint
+                ServiceURI targetURI = wire.getTarget();
+                ConfiguredService configuredService = getConfiguredService(targetURI);
+                if (configuredService != null) {
+
+                    // Wire the reference to the target
+                    Multiplicity multiplicity=configuredReference.getReference().getMultiplicity();
+                    if (multiplicity==Multiplicity.ZERO_N || multiplicity==Multiplicity.ONE_N) {
+                        configuredReference.getTargetConfiguredServices().add(configuredService);
+                    } else {
+                        configuredReference.getTargetConfiguredServices().clear();
+                        configuredReference.getTargetConfiguredServices().add(configuredService);
+                    }
+                } else {
+                    //FIXME
+                    //throw new IllegalArgumentException("Cannot find service for " + targetURI.getAddress());
+                }
+            }
+        }
+    }
+        
     /**
      * @see org.apache.tuscany.model.assembly.AssemblyModelObject#freeze()
      */

Added: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java?rev=380312&view=auto
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java (added)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java Thu Feb 23 18:43:20 2006
@@ -0,0 +1,66 @@
+/**
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed 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.model.assembly.impl;
+
+import org.apache.tuscany.model.assembly.ServiceURI;
+import org.apache.tuscany.model.assembly.Wire;
+
+/**
+ * An implementation of Wire.
+ */
+public class WireImpl extends ExtensibleImpl implements Wire {
+    
+    private ServiceURI source;
+    private ServiceURI target;
+
+    /**
+     * Constructor
+     */
+    protected WireImpl() {
+    }
+
+    /**
+     * @see org.apache.tuscany.model.assembly.Wire#getSource()
+     */
+    public ServiceURI getSource() {
+        return source;
+    }
+    
+    /**
+     * @see org.apache.tuscany.model.assembly.Wire#setSource(org.apache.tuscany.model.assembly.ServiceURI)
+     */
+    public void setSource(ServiceURI uri) {
+        checkNotFrozen();
+        source=uri;
+    }
+    
+    /**
+     * @see org.apache.tuscany.model.assembly.Wire#getTarget()
+     */
+    public ServiceURI getTarget() {
+        return target;
+    }
+    
+    /**
+     * @see org.apache.tuscany.model.assembly.Wire#setTarget(org.apache.tuscany.model.assembly.ServiceURI)
+     */
+    public void setTarget(ServiceURI uri) {
+        checkNotFrozen();
+        target=uri;
+    }
+    
+}

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

Propchange: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/WireImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/loader/AssemblyModelLoader.java Thu Feb 23 18:43:20 2006
@@ -16,12 +16,14 @@
  */
 package org.apache.tuscany.model.assembly.loader;
 
+import java.util.List;
+
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.ComponentType;
 import org.apache.tuscany.model.assembly.Module;
-import org.apache.tuscany.model.assembly.ModuleComponent;
 import org.apache.tuscany.model.assembly.ModuleFragment;
 import org.apache.tuscany.model.assembly.Subsystem;
+import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
 
 /**
  * An assembly model loader.
@@ -63,11 +65,9 @@
     Subsystem getSubsystem(String uri);
 
     /**
-     * Load a module component.
-     * @param name
-     * @param uri
+     * Returns the SCDL model loaders 
      * @return
      */
-    ModuleComponent loadModuleComponent(String name, String uri);
+    List<SCDLModelLoader> getSCDLModelLoaders();
     
 }

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/SCDLModelLoader.java Thu Feb 23 18:43:20 2006
@@ -16,6 +16,7 @@
  */
 package org.apache.tuscany.model.scdl.loader;
 
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.AssemblyModelObject;
 
 /**
@@ -25,9 +26,10 @@
 
     /**
      * Load an SCDL model object into an assembly model.
+     * @param modelContext
      * @param object
      * @return
      */
-    AssemblyModelObject load(Object object);
+    AssemblyModelObject load(AssemblyModelContext modelContext, Object object);
     
 }

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLAssemblyModelLoaderImpl.java Thu Feb 23 18:43:20 2006
@@ -16,8 +16,6 @@
  */
 package org.apache.tuscany.model.scdl.loader.impl;
 
-import java.io.IOException;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -28,10 +26,9 @@
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.ComponentType;
 import org.apache.tuscany.model.assembly.Module;
-import org.apache.tuscany.model.assembly.ModuleComponent;
 import org.apache.tuscany.model.assembly.ModuleFragment;
 import org.apache.tuscany.model.assembly.Subsystem;
-import org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
 import org.apache.tuscany.model.util.ModelTransformer;
 import org.apache.tuscany.model.util.ModelTransformerImpl;
@@ -39,7 +36,7 @@
 
 /**
  */
-public class SCDLAssemblyModelLoaderImpl implements SCDLAssemblyModelLoader {
+public class SCDLAssemblyModelLoaderImpl implements AssemblyModelLoader {
     
     private static final String SCA_MODULE_FILE_NAME = "sca.module";
     //FIXME can fragments have a variable prefix name?
@@ -112,45 +109,6 @@
         return transform(scdlSubsystem).getSubsystem();
     }
 
-    /**
-     * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadModuleComponent(java.lang.String, java.lang.String)
-     */
-    public ModuleComponent loadModuleComponent(String name, String uri) throws AssemblyModelLoadException {
-
-        // Load the sca.module file
-        URL url;
-        try {
-            url = resourceLoader.getResource(SCA_MODULE_FILE_NAME);
-        } catch (IOException e) {
-            throw new AssemblyModelLoadException(e);
-        }
-        if (url == null) {
-            throw new AssemblyModelLoadException(SCA_MODULE_FILE_NAME);
-        }
-        Module module=getModule(url.toString());
-
-        // Load the sca.fragment files
-        Iterator<URL> i;
-        try {
-            i = resourceLoader.getAllResources(SCA_FRAGMENT_FILE_NAME);
-        } catch (IOException e) {
-            throw new AssemblyModelLoadException(SCA_FRAGMENT_FILE_NAME, e);
-        }
-        while (i.hasNext()) {
-            ModuleFragment moduleFragment=getModuleFragment(i.next().toString());
-            module.getModuleFragments().add(moduleFragment);
-        }
-
-        // Create the module component
-        ModuleComponent moduleComponent=assemblyFactory.createModuleComponent();
-        moduleComponent.setName(name);
-        moduleComponent.setURI(uri);
-        moduleComponent.setComponentImplementation(module);
-        moduleComponent.initialize(modelContext);
-
-        return moduleComponent;
-    }
-    
     /**
      * @see org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader#getSCDLModelLoaders()
      */

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLContentHandlerImpl.java Thu Feb 23 18:43:20 2006
@@ -29,7 +29,9 @@
 import org.apache.tuscany.model.assembly.OverrideOption;
 import org.apache.tuscany.model.assembly.Scope;
 import org.apache.tuscany.model.assembly.ServiceContract;
+import org.apache.tuscany.model.assembly.ServiceURI;
 import org.apache.tuscany.model.assembly.SimpleComponent;
+import org.apache.tuscany.model.assembly.Wire;
 import org.apache.tuscany.model.scdl.Binding;
 import org.apache.tuscany.model.scdl.Component;
 import org.apache.tuscany.model.scdl.ComponentType;
@@ -429,15 +431,21 @@
                     if (configuredReference == null) {
                         throw new IllegalArgumentException("Undefined reference " + referenceName);
                     }
+                    ServiceURI referenceURI=factory.createServiceURI(null, configuredReference);
 
                     // Get the reference value text
                     //FIXME SDO returns a featuremap instead of a sequence
                     //Sequence text = propertyElement.getSequence(0);
                     FeatureMap text = (FeatureMap)referenceElement.get(0);
                     if (text != null && text.size() != 0) {
-                        Object rawValue = text.getValue(0);
-                        //FIXME
-                        //configuredReference.setValue(rawValue);
+                        String uri = text.getValue(0).toString();
+                        ServiceURI serviceURI=factory.createServiceURI(uri);
+                        
+                        // Create a wire
+                        Wire wire=factory.createWire();
+                        wire.setSource(referenceURI);
+                        wire.setTarget(serviceURI);
+                        currentAggregate.getWires().add(wire);
                     }
                 }
             }
@@ -543,16 +551,34 @@
      * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseModuleWire(org.apache.tuscany.model.scdl.ModuleWire)
      */
     public Object caseModuleWire(ModuleWire object) {
-        // TODO Auto-generated method stub
-        return super.caseModuleWire(object);
+        final Wire wire=factory.createWire();
+        wire.setSource(factory.createServiceURI(object.getSourceUri()));
+        wire.setTarget(factory.createServiceURI(object.getTargetUri()));
+
+        linkers.add(new Runnable() {
+            public void run() {
+                currentAggregate.getWires().add(wire);
+            };
+        });
+        
+        return wire; 
     }
     
     /**
      * @see org.apache.tuscany.model.scdl.util.ScdlSwitch#caseSystemWire(org.apache.tuscany.model.scdl.SystemWire)
      */
     public Object caseSystemWire(SystemWire object) {
-        // TODO Auto-generated method stub
-        return super.caseSystemWire(object);
+        final Wire wire=factory.createWire();
+        wire.setSource(factory.createServiceURI(object.getSource().toString()));
+        wire.setTarget(factory.createServiceURI(object.getTarget().toString()));
+
+        linkers.add(new Runnable() {
+            public void run() {
+                currentAggregate.getWires().add(wire);
+            };
+        });
+        
+        return wire; 
     }
     
     /**
@@ -564,7 +590,7 @@
         for (SCDLModelLoader scdlModelLoader : scdlModelLoaders) {
                 
             // Invoke an SCDL loader to handle the specific implementation type
-            final ComponentImplementation implementation=(ComponentImplementation)scdlModelLoader.load(object);
+            final ComponentImplementation implementation=(ComponentImplementation)scdlModelLoader.load(modelContext, object);
             if (implementation!=null) {
                 component.setComponentImplementation(implementation);
                 return implementation;
@@ -591,7 +617,7 @@
         for (SCDLModelLoader scdlModelLoader : scdlModelLoaders) {
                 
             // Invoke an SCDL loader to handle the specific binding type
-            final org.apache.tuscany.model.assembly.Binding binding=(org.apache.tuscany.model.assembly.Binding)scdlModelLoader.load(object);
+            final org.apache.tuscany.model.assembly.Binding binding=(org.apache.tuscany.model.assembly.Binding)scdlModelLoader.load(modelContext, object);
             if (binding!=null) {
                 bindings.add(binding);
                 return binding;

Modified: incubator/tuscany/java/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/model/src/test/java/org/apache/tuscany/model/assembly/tests/SCDLAssemblyLoaderTestCase.java Thu Feb 23 18:43:20 2006
@@ -28,7 +28,7 @@
 import org.apache.tuscany.model.assembly.Module;
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
-import org.apache.tuscany.model.scdl.loader.SCDLAssemblyModelLoader;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
 
 /**
@@ -45,7 +45,7 @@
     public void testLoader() {
 
         ResourceLoader resourceLoader=new ResourceLoaderImpl(Thread.currentThread().getContextClassLoader());
-        SCDLAssemblyModelLoader assemblyLoader=new SCDLAssemblyModelLoaderImpl();
+        AssemblyModelLoader assemblyLoader=new SCDLAssemblyModelLoaderImpl();
         AssemblyFactory assemblyFactory=new AssemblyFactoryImpl();
         AssemblyModelContext modelContext=new AssemblyModelContextImpl(assemblyFactory, assemblyLoader, resourceLoader);
 

Modified: incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/RuntimeBootstrap.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/RuntimeBootstrap.java?rev=380312&r1=380311&r2=380312&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/RuntimeBootstrap.java (original)
+++ incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/RuntimeBootstrap.java Thu Feb 23 18:43:20 2006
@@ -97,7 +97,7 @@
 //            throw new BootstrapConfigurationException("Error initializing configuration loader in Tomcat configuration", e);
 //        }
         // create the SCA Runtime and have it bound in the global JNDI context
-        return new RuntimeContextImpl(monitorFactory, createBuilders(),null);
+        return new RuntimeContextImpl(monitorFactory, null, createBuilders(),null);
     }
 
     /**