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/27 10:13:23 UTC
svn commit: r381297 -
/incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/TomcatWebAppLifecycleListener.java
Author: jsdelfino
Date: Mon Feb 27 01:13:13 2006
New Revision: 381297
URL: http://svn.apache.org/viewcvs?rev=381297&view=rev
Log:
Temporary bootstrap code for bringup testing
Modified:
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/TomcatWebAppLifecycleListener.java
Modified: incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/TomcatWebAppLifecycleListener.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/TomcatWebAppLifecycleListener.java?rev=381297&r1=381296&r2=381297&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/TomcatWebAppLifecycleListener.java (original)
+++ incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/lifecycle/listener/TomcatWebAppLifecycleListener.java Mon Feb 27 01:13:13 2006
@@ -18,6 +18,8 @@
import java.io.IOException;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.catalina.Context;
import org.apache.catalina.Lifecycle;
@@ -25,27 +27,38 @@
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.deploy.FilterDef;
import org.apache.catalina.deploy.FilterMap;
+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.ModuleComponentConfigurationLoader;
import org.apache.tuscany.core.config.impl.ModuleComponentConfigurationLoaderImpl;
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.impl.EventContextImpl;
-import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
import org.apache.tuscany.core.context.webapp.HTTPSessionExpirationListener;
import org.apache.tuscany.core.context.webapp.TuscanyRequestFilter;
import org.apache.tuscany.core.context.webapp.TuscanyWebAppRuntime;
+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;
import org.osoa.sca.ServiceRuntimeException;
+//FIXME This is a temporary hack to bootstrap the runtime in a Tomcat environment and do some bringup testing, the real bootstrap code is
+// still under construction
+
/**
* Responsible for initializing web applications as module components in a
* Tomcat instance. When a web app is being loaded in Tomcat, this listener
@@ -67,6 +80,8 @@
*/
public class TomcatWebAppLifecycleListener implements LifecycleListener {
+ private final static String SYSTEM_MODULE_COMPONENT = "org.apache.tuscany.core.system";
+
/**
* Constructor
*/
@@ -107,34 +122,62 @@
String moduleComponentName = context.getPath().substring(1);
try {
- // Load the module component
- AssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl(null);
- AssemblyFactory factory=new AssemblyFactoryImpl();
- AssemblyModelContext modelContext = new AssemblyModelContextImpl(factory, modelLoader, resourceLoader);
- ModuleComponentConfigurationLoader moduleComponentLoader = new ModuleComponentConfigurationLoaderImpl(modelContext);
- String uri = context.getPath().substring(1);
- ModuleComponent moduleComponent = moduleComponentLoader.loadModuleComponent(moduleComponentName, uri);
+ // 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());
+
+ // Create a runtime context and start it
+ RuntimeContext runtimeContext = new RuntimeContextImpl(new NullMonitorFactory(), scdlLoaders, configBuilders,new DefaultWireBuilder());
+ runtimeContext.start();
- // Create the module component context
- EventContext eventContext = new EventContextImpl();
- DefaultScopeStrategy scopeStrategy = new DefaultScopeStrategy();
-
- //FIXME TuscanyModuleComponentContext replaced by new bootstrap code
-// TuscanyModuleComponentContext moduleComponentContext = new TuscanyModuleComponentContextImpl(
-// moduleComponent, eventContext, scopeStrategy, modelContext);
- AggregateContext aggregateContext=null;
+ // Get the system context
+ AggregateContext systemContext = runtimeContext.getSystemContext();
+
+ // Load the system module component
+ ModuleComponentConfigurationLoader loader = new ModuleComponentConfigurationLoaderImpl(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
+ AggregateContext systemModuleComponentContext = (AggregateContext) systemContext.getContext(SYSTEM_MODULE_COMPONENT);
+ systemModuleComponentContext.registerModelObject(systemModuleComponent.getComponentImplementation());
+ systemModuleComponentContext.fireEvent(EventContext.MODULE_START, null);
+
+ // Load the SCDL configuration of the application module
+ String uri = context.getPath().substring(1);
+ ModuleComponent moduleComponent = loader.loadModuleComponent(moduleComponentName, uri);
+
+ // Register it under the root application context
+ runtimeContext.getRootContext().registerModelObject(moduleComponent);
+ AggregateContext moduleContext=(AggregateContext)runtimeContext.getContext(moduleComponent.getName());
+ moduleContext.registerModelObject(moduleComponent.getComponentImplementation());
// Create a Tuscany runtime and store it in the servlet
// context
- TuscanyWebAppRuntime tuscanyRuntime = new TuscanyWebAppRuntime(aggregateContext);
+ TuscanyWebAppRuntime tuscanyRuntime = new TuscanyWebAppRuntime(moduleContext);
context.getServletContext().setAttribute(TuscanyWebAppRuntime.class.getName(), tuscanyRuntime);
// Start the runtime and the module component context
tuscanyRuntime.start();
try {
- aggregateContext.start();
+ //moduleContext.start();
- aggregateContext.fireEvent(EventContext.MODULE_START, null);
+ moduleContext.fireEvent(EventContext.MODULE_START, null);
} finally {
tuscanyRuntime.stop();