Author: jboynes
Date: Sat Mar 11 15:01:00 2006
New Revision: 385188

URL: http://svn.apache.org/viewcvs?rev=385188&view=rev
Log:
refactor bootstrap code so it can be shared between standalone and tomcat

Added:
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java
   (with props)
Modified:
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.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/impl/SCDLAssemblyModelLoaderImpl.java
    
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyHost.java

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java?rev=385188&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java
 Sat Mar 11 15:01:00 2006
@@ -0,0 +1,129 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  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.core.client;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.stream.XMLInputFactory;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl;
+import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
+import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader;
+import org.apache.tuscany.core.config.ConfigurationException;
+import 
org.apache.tuscany.core.config.impl.ModuleComponentConfigurationLoaderImpl;
+import 
org.apache.tuscany.core.config.impl.StAXModuleComponentConfigurationLoaderImpl;
+import org.apache.tuscany.core.context.SystemAggregateContext;
+import org.apache.tuscany.core.context.AggregateContext;
+import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
+import org.apache.tuscany.core.system.builder.SystemComponentContextBuilder;
+import org.apache.tuscany.core.system.builder.SystemEntryPointBuilder;
+import org.apache.tuscany.core.system.builder.SystemExternalServiceBuilder;
+import org.apache.tuscany.core.system.loader.SystemSCDLModelLoader;
+import org.apache.tuscany.core.loader.StAXLoaderRegistry;
+import org.apache.tuscany.core.loader.StAXUtil;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.AssemblyModelContext;
+import org.apache.tuscany.model.assembly.ModuleComponent;
+import org.apache.tuscany.model.assembly.impl.AssemblyModelContextImpl;
+import org.apache.tuscany.model.assembly.loader.AssemblyModelLoader;
+import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
+import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public final class BootstrapHelper {
+    private BootstrapHelper() {
+    }
+
+    /**
+     * Returns a default AssemblyModelContext.
+     *
+     * @param classLoader the classloader to use for application artifacts
+     * @return a default AssemblyModelContext
+     */
+    public static AssemblyModelContext getModelContext(ClassLoader 
classLoader) {
+        // Create an assembly model factory
+        AssemblyFactory modelFactory = new SystemAssemblyFactoryImpl();
+
+        // Create a default assembly model loader
+        List<SCDLModelLoader> scdlLoaders = new ArrayList<SCDLModelLoader>();
+        scdlLoaders.add(new SystemSCDLModelLoader());
+        AssemblyModelLoader modelLoader = new 
SCDLAssemblyModelLoaderImpl(scdlLoaders);
+
+        // Create a resource loader from the supplied classloader
+        ResourceLoader resourceLoader = new ResourceLoaderImpl(classLoader);
+
+        // Create an assembly model context
+        return new AssemblyModelContextImpl(modelFactory, modelLoader, 
resourceLoader);
+    }
+
+    /**
+     * Returns a default list of configuration builders.
+     *
+     * @return a default list of configuration builders
+     */
+    public static List<RuntimeConfigurationBuilder> getBuilders() {
+        List<RuntimeConfigurationBuilder> configBuilders = new ArrayList();
+        configBuilders.add((new SystemComponentContextBuilder()));
+        configBuilders.add(new SystemEntryPointBuilder());
+        configBuilders.add(new SystemExternalServiceBuilder());
+        return configBuilders;
+    }
+
+    private static final boolean useStax = false;
+    private static final String SYSTEM_LOADER_COMPONENT = "tuscany.loader";
+
+    /**
+     * Returns the default module configuration loader.
+     *
+     * @param systemContext the runtime's system context
+     * @param modelContext  the model context the loader will use
+     * @return the default module configuration loader
+     */
+    public static ModuleComponentConfigurationLoader 
getConfigurationLoader(SystemAggregateContext systemContext, 
AssemblyModelContext modelContext) throws ConfigurationException {
+        if (useStax) {
+            // Bootstrap the StAX loader module
+            bootstrapStaxLoader(systemContext, modelContext);
+            return new 
StAXModuleComponentConfigurationLoaderImpl(modelContext, 
XMLInputFactory.newInstance(), 
systemContext.resolveInstance(StAXLoaderRegistry.class));
+        } else {
+            return new ModuleComponentConfigurationLoaderImpl(modelContext);
+        }
+    }
+
+    private static AggregateContext bootstrapStaxLoader(SystemAggregateContext 
systemContext, AssemblyModelContext modelContext) throws ConfigurationException 
{
+        ModuleComponent loaderComponent = 
StAXUtil.bootstrapLoader(SYSTEM_LOADER_COMPONENT, modelContext);
+        systemContext.registerModelObject(loaderComponent);
+        AggregateContext loaderContext = (AggregateContext) 
systemContext.getContext(SYSTEM_LOADER_COMPONENT);
+        
loaderContext.registerModelObject(loaderComponent.getComponentImplementation());
+        loaderContext.fireEvent(EventContext.MODULE_START, null);
+        return loaderContext;
+    }
+
+    public static AggregateContext registerModule(AggregateContext parent, 
ModuleComponent component) throws ConfigurationException {
+        // register the component
+        parent.registerModelObject(component);
+
+        // Get the aggregate context representing the component
+        AggregateContext context = (AggregateContext) 
parent.getContext(component.getName());
+        context.registerModelObject(component.getComponentImplementation());
+        return context;
+    }
+}

Propchange: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/BootstrapHelper.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

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=385188&r1=385187&r2=385188&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
 Sat Mar 11 15:01:00 2006
@@ -16,47 +16,27 @@
  */
 package org.apache.tuscany.core.client;
 
-import java.util.ArrayList;
 import java.util.List;
 
-import javax.xml.stream.XMLInputFactory;
+import org.osoa.sca.ModuleContext;
+import org.osoa.sca.SCA;
+import org.osoa.sca.ServiceRuntimeException;
 
 import org.apache.tuscany.common.monitor.MonitorFactory;
 import org.apache.tuscany.common.monitor.impl.NullMonitorFactory;
-import org.apache.tuscany.common.resource.ResourceLoader;
-import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl;
 import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
 import org.apache.tuscany.core.builder.impl.DefaultWireBuilder;
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader;
-import 
org.apache.tuscany.core.config.impl.ModuleComponentConfigurationLoaderImpl;
-import 
org.apache.tuscany.core.config.impl.StAXModuleComponentConfigurationLoaderImpl;
 import org.apache.tuscany.core.context.AggregateContext;
 import org.apache.tuscany.core.context.CoreRuntimeException;
 import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.SystemAggregateContext;
 import org.apache.tuscany.core.runtime.RuntimeContext;
 import org.apache.tuscany.core.runtime.RuntimeContextImpl;
-import org.apache.tuscany.core.system.builder.SystemComponentContextBuilder;
-import org.apache.tuscany.core.system.builder.SystemEntryPointBuilder;
-import org.apache.tuscany.core.system.builder.SystemExternalServiceBuilder;
-import org.apache.tuscany.core.system.loader.SystemSCDLModelLoader;
-import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory;
-import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
-import org.apache.tuscany.core.loader.StAXUtil;
-import org.apache.tuscany.core.loader.StAXLoaderRegistry;
-import org.apache.tuscany.core.loader.impl.StAXLoaderRegistryImpl;
-import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 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.assembly.loader.AssemblyModelLoader;
 import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
-import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
-import org.osoa.sca.ModuleContext;
-import org.osoa.sca.SCA;
-import org.osoa.sca.ServiceRuntimeException;
 
 /**
  * Create and initialize a Tuscany SCA runtime environment.
@@ -67,12 +47,10 @@
     private final Monitor monitor;
     private final Object sessionKey = new Object();
 
-    private final RuntimeContext runtimeContext;
-    private AggregateContext systemModuleComponentContext;
-    private AggregateContext moduleContext;
+    private final RuntimeContext runtime;
+    private final AggregateContext moduleContext;
 
     private static final String SYSTEM_MODULE_COMPONENT = 
"org.apache.tuscany.core.system";
-    private static final String SYSTEM_LOADER_COMPONENT = "tuscany.loader";
 
     /**
      * Construct a runtime using a null MonitorFactory.
@@ -99,70 +77,28 @@
     public TuscanyRuntime(String name, String uri, MonitorFactory 
monitorFactory) throws ConfigurationException {
         this.monitor = monitorFactory.getMonitor(Monitor.class);
 
-        // Create a resource loader from the current classloader
-        ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
-        ResourceLoader resourceLoader = new ResourceLoaderImpl(classLoader);
-
-        // Create an assembly model factory
-        AssemblyFactory modelFactory=new AssemblyFactoryImpl();
-
-        // Create an assembly model loader
-        List<SCDLModelLoader> scdlLoaders=new ArrayList<SCDLModelLoader>();
-        scdlLoaders.add(new SystemSCDLModelLoader());
-        AssemblyModelLoader modelLoader=new 
SCDLAssemblyModelLoaderImpl(scdlLoaders);
-
         // Create an assembly model context
-        AssemblyModelContext modelContext = new 
AssemblyModelContextImpl(modelFactory, modelLoader, resourceLoader);
-
-        // Create system configuration builders
-        List<RuntimeConfigurationBuilder> configBuilders = new ArrayList();
-        configBuilders.add((new SystemComponentContextBuilder()));
-        configBuilders.add(new SystemEntryPointBuilder());
-        configBuilders.add(new SystemExternalServiceBuilder());
+        ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
+        AssemblyModelContext modelContext = 
BootstrapHelper.getModelContext(classLoader);
 
         // Create a runtime context and start it
-        runtimeContext = new RuntimeContextImpl(monitorFactory, scdlLoaders, 
configBuilders,new DefaultWireBuilder());
-        runtimeContext.start();
-        monitor.started(runtimeContext);
-
-        // Get the system context
-        SystemAggregateContext systemContext = 
runtimeContext.getSystemContext();
-
-        // Bootstrap the StAX loader module
-        AggregateContext loaderContext = bootstrapLoader(systemContext, 
modelContext);
-
-        // Load the system module component
-        ModuleComponentConfigurationLoader loader;
-        loader = new ModuleComponentConfigurationLoaderImpl(modelContext);
-//        loader = new 
StAXModuleComponentConfigurationLoaderImpl(modelContext, 
XMLInputFactory.newInstance(), 
systemContext.resolveInstance(StAXLoaderRegistry.class));
+        List<SCDLModelLoader> loaders = 
modelContext.getAssemblyLoader().getLoaders();
+        List<RuntimeConfigurationBuilder> configBuilders = 
BootstrapHelper.getBuilders();
+        runtime = new RuntimeContextImpl(monitorFactory, loaders, 
configBuilders, new DefaultWireBuilder());
+        runtime.start();
+        monitor.started(runtime);
+
+        // Load and start the system configuration
+        SystemAggregateContext systemContext = runtime.getSystemContext();
+        ModuleComponentConfigurationLoader loader = 
BootstrapHelper.getConfigurationLoader(systemContext, modelContext);
         ModuleComponent systemModuleComponent = 
loader.loadSystemModuleComponent(SYSTEM_MODULE_COMPONENT, 
SYSTEM_MODULE_COMPONENT);
-
-        // Register it with the system context
-        systemContext.registerModelObject(systemModuleComponent);
-
-        // Get the aggregate context representing the system module component
-        systemModuleComponentContext = (AggregateContext) 
systemContext.getContext(SYSTEM_MODULE_COMPONENT);
-        
systemModuleComponentContext.registerModelObject(systemModuleComponent.getComponentImplementation());
-        systemModuleComponentContext.fireEvent(EventContext.MODULE_START, 
null);
+        AggregateContext context = 
BootstrapHelper.registerModule(systemContext, systemModuleComponent);
+        context.fireEvent(EventContext.MODULE_START, null);
 
         // Load the SCDL configuration of the application module
+        AggregateContext rootContext = runtime.getRootContext();
         ModuleComponent moduleComponent = loader.loadModuleComponent(name, 
uri);
-        
-        // Register it under the root application context
-        AggregateContext rootContext = runtimeContext.getRootContext();
-        rootContext.registerModelObject(moduleComponent);
-        
moduleContext=(AggregateContext)rootContext.getContext(moduleComponent.getName());
-        
moduleContext.registerModelObject(moduleComponent.getComponentImplementation());
-
-    }
-
-    private static AggregateContext bootstrapLoader(SystemAggregateContext 
systemContext, AssemblyModelContext modelContext) throws ConfigurationException 
{
-        ModuleComponent loaderComponent = 
StAXUtil.bootstrapLoader(SYSTEM_LOADER_COMPONENT, modelContext);
-        systemContext.registerModelObject(loaderComponent);
-        AggregateContext loaderContext = (AggregateContext) 
systemContext.getContext(SYSTEM_LOADER_COMPONENT);
-        
loaderContext.registerModelObject(loaderComponent.getComponentImplementation());
-        loaderContext.fireEvent(EventContext.MODULE_START, null);
-        return loaderContext;
+        moduleContext = BootstrapHelper.registerModule(rootContext, 
moduleComponent);
     }
 
     /**
@@ -170,7 +106,7 @@
      */
     @Override
     public void start() {
-        setModuleContext((ModuleContext)moduleContext);
+        setModuleContext((ModuleContext) moduleContext);
         try {
             //moduleContext.start();
             moduleContext.fireEvent(EventContext.MODULE_START, null);
@@ -196,8 +132,8 @@
         moduleContext.fireEvent(EventContext.MODULE_STOP, null);
         moduleContext.stop();
         monitor.stopped(moduleContext);
-        runtimeContext.stop();
-        monitor.stopped(runtimeContext);
+        runtime.stop();
+        monitor.stopped(runtime);
     }
 
     /**

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=385188&r1=385187&r2=385188&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
 Sat Mar 11 15:01:00 2006
@@ -26,12 +26,13 @@
 import org.apache.tuscany.model.assembly.Module;
 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.
  */
 public interface AssemblyModelLoader {
-    
+
     /**
      * Sets the model context to use.
      * @param modelContext
@@ -39,6 +40,12 @@
     void setModelContext(AssemblyModelContext modelContext);
 
     /**
+     * Returns the live list of sub-loaders this loader is using.
+     * @return the list of sub-loaders
+     */
+    List<SCDLModelLoader> getLoaders();
+
+    /**
      * Returns the module at the given uri
      * @param uri
      * @return
@@ -70,12 +77,12 @@
      * Load a WSDL definition
      */
     Definition loadDefinition(String uri);
-    
+
     /**
      * Load definitions by namespace
      * @param uri
      * @return
      */
     List<Definition> loadDefinitions(String namespace);
-    
+
 }

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=385188&r1=385187&r2=385188&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
 Sat Mar 11 15:01:00 2006
@@ -71,6 +71,10 @@
         this.modelContext = modelContext;
     }
 
+    public List<SCDLModelLoader> getLoaders() {
+        return scdlModelLoaders;
+    }
+
     /**
      * @see 
org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadComponentType(java.lang.String)
      */

Modified: 
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyHost.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyHost.java?rev=385188&r1=385187&r2=385188&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyHost.java
 (original)
+++ 
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyHost.java
 Sat Mar 11 15:01:00 2006
@@ -16,7 +16,6 @@
  */
 package org.apache.tuscany.tomcat;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.catalina.Container;
@@ -29,29 +28,20 @@
 
 import org.apache.tuscany.common.monitor.impl.NullMonitorFactory;
 import org.apache.tuscany.common.resource.ResourceLoader;
-import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl;
 import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
 import org.apache.tuscany.core.builder.impl.DefaultWireBuilder;
+import org.apache.tuscany.core.client.BootstrapHelper;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader;
-import 
org.apache.tuscany.core.config.impl.ModuleComponentConfigurationLoaderImpl;
 import org.apache.tuscany.core.context.AggregateContext;
 import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.SystemAggregateContext;
 import org.apache.tuscany.core.runtime.RuntimeContext;
 import org.apache.tuscany.core.runtime.RuntimeContextImpl;
-import org.apache.tuscany.core.system.builder.SystemComponentContextBuilder;
-import org.apache.tuscany.core.system.builder.SystemEntryPointBuilder;
-import org.apache.tuscany.core.system.builder.SystemExternalServiceBuilder;
-import org.apache.tuscany.core.system.loader.SystemSCDLModelLoader;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 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.assembly.loader.AssemblyModelLoader;
-import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
-import org.apache.tuscany.model.scdl.loader.impl.SCDLAssemblyModelLoaderImpl;
 
 /**
  * A Tomcat listener to be attached to a Host container to add SCA runtime 
functionality.
@@ -60,6 +50,7 @@
  *
  * @version $Rev$ $Date$
  */
[EMAIL PROTECTED]({"serial"})
 public class TuscanyHost extends StandardHost {
     private static final String SYSTEM_MODULE_COMPONENT = 
"org.apache.tuscany.core.system";
     private static final Log log = LogFactory.getLog(TuscanyHost.class);
@@ -81,45 +72,27 @@
     }
 
     private void startRuntime() {
-        systemLoader = new ResourceLoaderImpl(getClass().getClassLoader());
-
-        // Create an assembly model factory
-        modelFactory = new AssemblyFactoryImpl();
-
-        // Create an assembly model loader
-        List<SCDLModelLoader> scdlLoaders=new ArrayList<SCDLModelLoader>();
-        scdlLoaders.add(new SystemSCDLModelLoader());
-        modelLoader = new SCDLAssemblyModelLoaderImpl(scdlLoaders);
-
         // Create an assembly model context
-        AssemblyModelContext modelContext = new 
AssemblyModelContextImpl(modelFactory, modelLoader, systemLoader);
+        AssemblyModelContext modelContext = 
BootstrapHelper.getModelContext(getClass().getClassLoader());
+        modelFactory = modelContext.getAssemblyFactory();
+        modelLoader = modelContext.getAssemblyLoader();
+        systemLoader = modelContext.getSystemResourceLoader();
+
+        // Create and start the runtime
+        List<RuntimeConfigurationBuilder> configBuilders = 
BootstrapHelper.getBuilders();
+        runtime = new RuntimeContextImpl(new NullMonitorFactory(), 
modelLoader.getLoaders(), configBuilders, new DefaultWireBuilder());
+        runtime.start();
 
-        // Load the system module component
-        ModuleComponentConfigurationLoader loader = new 
ModuleComponentConfigurationLoaderImpl(modelContext);
-        ModuleComponent systemModuleComponent;
+        // Load and start the system configuration
         try {
-            systemModuleComponent = 
loader.loadSystemModuleComponent(SYSTEM_MODULE_COMPONENT, 
SYSTEM_MODULE_COMPONENT);
+            SystemAggregateContext systemContext = runtime.getSystemContext();
+            ModuleComponentConfigurationLoader loader = 
BootstrapHelper.getConfigurationLoader(systemContext, modelContext);
+            ModuleComponent systemModuleComponent = 
loader.loadSystemModuleComponent(SYSTEM_MODULE_COMPONENT, 
SYSTEM_MODULE_COMPONENT);
+            AggregateContext context = 
BootstrapHelper.registerModule(systemContext, systemModuleComponent);
+            context.fireEvent(EventContext.MODULE_START, null);
         } catch (ConfigurationLoadException e) {
             log.warn(sm.getString("runtime.loadSystemFailed"), e);
             return;
-        }
-
-        List<RuntimeConfigurationBuilder> configBuilders = new ArrayList();
-        configBuilders.add((new SystemComponentContextBuilder()));
-        configBuilders.add(new SystemEntryPointBuilder());
-        configBuilders.add(new SystemExternalServiceBuilder());
-
-        runtime = new RuntimeContextImpl(new NullMonitorFactory(), 
scdlLoaders, configBuilders, new DefaultWireBuilder());
-        runtime.start();
-
-        try {
-            SystemAggregateContext systemContext = runtime.getSystemContext();
-            systemContext.registerModelObject(systemModuleComponent);
-
-            // Get the aggregate context representing the system module 
component
-            AggregateContext systemModuleComponentContext = (AggregateContext) 
systemContext.getContext(SYSTEM_MODULE_COMPONENT);
-            
systemModuleComponentContext.registerModelObject(systemModuleComponent.getComponentImplementation());
-            systemModuleComponentContext.fireEvent(EventContext.MODULE_START, 
null);
         } catch (Exception e) {
             log.warn(sm.getString("runtime.registerSystemFailed"), e);
             runtime.stop();


Reply via email to