Author: jboynes
Date: Mon Mar 20 15:34:44 2006
New Revision: 387345

URL: http://svn.apache.org/viewcvs?rev=387345&view=rev
Log:
support binding.system for use in system entry points

Added:
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java
   (with props)
Modified:
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/loader/SystemSCDLModelLoader.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java
    incubator/tuscany/java/sca/core/src/main/resources/system.module

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java?rev=387345&r1=387344&r2=387345&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java
 Mon Mar 20 15:34:44 2006
@@ -35,6 +35,7 @@
 import org.apache.tuscany.core.loader.assembly.InterfaceWSDLLoader;
 import org.apache.tuscany.core.loader.assembly.InterfaceJavaLoader;
 import org.apache.tuscany.core.loader.system.SystemImplementationLoader;
+import org.apache.tuscany.core.loader.system.SystemBindingLoader;
 import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory;
 import org.apache.tuscany.core.system.assembly.SystemImplementation;
 import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
@@ -108,6 +109,7 @@
         components.add(bootstrapLoader(factory, ServiceLoader.class));
 
         components.add(bootstrapLoader(factory, 
SystemImplementationLoader.class));
+        components.add(bootstrapLoader(factory, SystemBindingLoader.class));
 
         ModuleComponent mc = factory.createModuleComponent();
         mc.setName(name);

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java?rev=387345&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java
 Mon Mar 20 15:34:44 2006
@@ -0,0 +1,51 @@
+/**
+ *
+ * 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.loader.system;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.osoa.sca.annotations.Scope;
+
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.core.loader.StAXUtil;
+import org.apache.tuscany.core.system.assembly.SystemBinding;
+
+/**
+ * @version $Rev$ $Date$
+ */
[EMAIL PROTECTED]("MODULE")
+public class SystemBindingLoader extends AbstractLoader {
+    public static final QName SYSTEM_BINDING = new 
QName("http://org.apache.tuscany/xmlns/system/0.9";, "binding.system");
+
+    public QName getXMLType() {
+        return SystemBindingLoader.SYSTEM_BINDING;
+    }
+
+    public Class<SystemBinding> getModelType() {
+        return SystemBinding.class;
+    }
+
+    public SystemBinding load(XMLStreamReader reader, ResourceLoader 
resourceLoader) throws XMLStreamException, ConfigurationLoadException {
+        assert SystemBindingLoader.SYSTEM_BINDING.equals(reader.getName());
+        SystemBinding binding = factory.createSystemBinding();
+        StAXUtil.skipToEndElement(reader);
+        return binding;
+    }
+}

Propchange: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/system/SystemBindingLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

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

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=387345&r1=387344&r2=387345&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
 Mon Mar 20 15:34:44 2006
@@ -4,6 +4,7 @@
 import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
 import org.apache.tuscany.core.system.scdl.ScdlFactory;
 import org.apache.tuscany.core.system.scdl.SystemImplementation;
+import org.apache.tuscany.core.system.scdl.SystemBinding;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
 import org.apache.tuscany.model.assembly.AssemblyModelObject;
 import org.apache.tuscany.model.scdl.loader.SCDLModelLoader;
@@ -43,6 +44,9 @@
             }
             implementation.setImplementationClass(implementationClass);
             return implementation;
+        } else if (object instanceof SystemBinding) {
+            org.apache.tuscany.core.system.assembly.SystemBinding binding = 
systemFactory.createSystemBinding();
+            return binding;
         } else
             return null;
     }

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java?rev=387345&r1=387344&r2=387345&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java
 Mon Mar 20 15:34:44 2006
@@ -16,7 +16,6 @@
  */
 package org.apache.tuscany.core.webapp;
 
-import java.util.ArrayList;
 import java.util.List;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
@@ -29,29 +28,19 @@
 
 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.ContextFactoryBuilder;
 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.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.SystemContextFactoryBuilder;
-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.core.client.BootstrapHelper;
 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;
 
 /**
  * ServletContextListener that can be added to a standard web application to 
boot
@@ -65,10 +54,7 @@
     public static final String MODULE_COMPONENT_NAME = 
"org.apache.tuscany.core.webapp.ModuleComponentContext";
     public static final String TUSCANY_RUNTIME_NAME = 
RuntimeContext.class.getName();
 
-    private final Object sessionKey = new Object();
-
-    private RuntimeContext runtimeContext;
-    private AggregateContext systemModuleComponentContext;
+    private RuntimeContext runtime;
     private AggregateContext moduleContext;
 
     private static final String SYSTEM_MODULE_COMPONENT = 
"org.apache.tuscany.core.system";
@@ -85,16 +71,17 @@
             throw new RuntimeException(e.getMessage(), e);
         }
 
-        servletContext.setAttribute(TUSCANY_RUNTIME_NAME, runtimeContext);
+        servletContext.setAttribute(TUSCANY_RUNTIME_NAME, runtime);
         servletContext.setAttribute(MODULE_COMPONENT_NAME, moduleContext);
     }
 
     public void contextDestroyed(ServletContextEvent servletContextEvent) {
         moduleContext.fireEvent(EventContext.MODULE_STOP, null);
         moduleContext.stop();
-        systemModuleComponentContext.fireEvent(EventContext.MODULE_STOP, null);
-        systemModuleComponentContext.stop();
-        runtimeContext.stop();
+        SystemAggregateContext systemContext = runtime.getSystemContext();
+        systemContext.fireEvent(EventContext.MODULE_STOP, null);
+        systemContext.stop();
+        runtime.stop();
         
servletContextEvent.getServletContext().removeAttribute(MODULE_COMPONENT_NAME);
         
servletContextEvent.getServletContext().removeAttribute(TUSCANY_RUNTIME_NAME);
     }
@@ -115,53 +102,28 @@
     }
 
     private void bootRuntime(String name, String uri, MonitorFactory 
monitorFactory) throws ConfigurationException {
-        // 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<ContextFactoryBuilder> configBuilders = new ArrayList();
-        configBuilders.add((new SystemContextFactoryBuilder()));
-        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();
-
-        // Get the system context
-        AggregateContext systemContext = runtimeContext.getSystemContext();
-
-        // Load the system module component
-        ModuleComponentConfigurationLoader loader = new 
ModuleComponentConfigurationLoaderImpl(modelContext);
+        List<SCDLModelLoader> loaders = 
modelContext.getAssemblyLoader().getLoaders();
+        List<ContextFactoryBuilder> configBuilders = 
BootstrapHelper.getBuilders();
+        runtime = new RuntimeContextImpl(monitorFactory, loaders, 
configBuilders, new DefaultWireBuilder());
+        runtime.start();
+
+        // 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
-        runtimeContext.getRootContext().registerModelObject(moduleComponent);
-        
moduleContext=(AggregateContext)runtimeContext.getContext(moduleComponent.getName());
-        
//moduleContext.registerModelObject(moduleComponent.getComponentImplementation());
+        moduleContext = BootstrapHelper.registerModule(rootContext, 
moduleComponent);
 
         moduleContext.fireEvent(EventContext.MODULE_START, null);
     }

Modified: incubator/tuscany/java/sca/core/src/main/resources/system.module
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/resources/system.module?rev=387345&r1=387344&r2=387345&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/resources/system.module (original)
+++ incubator/tuscany/java/sca/core/src/main/resources/system.module Mon Mar 20 
15:34:44 2006
@@ -19,8 +19,14 @@
         xmlns:system="http://org.apache.tuscany/xmlns/system/0.9";
         name="org.apache.tuscany.core.system">
 
-    <component name="org.apache.tuscany.core.loader.SCDLModelLoaderRegistry">
-        <system:implementation.system 
class="org.apache.tuscany.core.loader.impl.SCDLModelLoaderRegistryImpl"/>
+    <entryPoint name="org.apache.tuscany.core.loader.StAXLoaderRegistry">
+        <interface.java 
interface="org.apache.tuscany.core.loader.StAXLoaderRegistry"/>
+        <system:binding.system/>
+        
<reference>org.apache.tuscany.core.loader.StAXLoaderRegistryImpl</reference>
+    </entryPoint>
+
+    <component name="org.apache.tuscany.core.loader.StAXLoaderRegistryImpl">
+        <system:implementation.system 
class="org.apache.tuscany.core.loader.impl.StAXLoaderRegistryImpl"/>
     </component>
 
 </module>


Reply via email to