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 00:30:12 UTC
svn commit: r380269 - 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 15:30:06 2006
New Revision: 380269
URL: http://svn.apache.org/viewcvs?rev=380269&view=rev
Log:
bring-up changes - helloworld is running again on j2se
Added:
incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/
incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java (with props)
incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment
incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment.off
incubator/tuscany/java/sca/core/src/main/resources/system.module
Removed:
incubator/tuscany/java/sca/container.java/src/main/resources/sca.fragment
incubator/tuscany/java/sca/container.java/src/main/resources/tuscany-model.config
incubator/tuscany/java/sca/container.js/src/main/resources/sca.fragment
incubator/tuscany/java/sca/container.js/src/main/resources/tuscany-model.config
incubator/tuscany/java/sca/core/src/main/resources/sca.fragment
incubator/tuscany/java/sca/core/src/main/resources/tuscany-model.config
Modified:
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/config/Java5ComponentTypeIntrospector.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/config/ModuleComponentConfigurationLoader.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/ModuleComponentConfigurationLoaderImpl.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.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/assembly/impl/SystemImplementationImpl.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAggregateContextImpl.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/scdl/loader/impl/SCDLContentHandlerImpl.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java
Added: 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=380269&view=auto
==============================================================================
--- incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java (added)
+++ incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java Thu Feb 23 15:30:06 2006
@@ -0,0 +1,80 @@
+package org.apache.tuscany.binding.axis.loader;
+
+import java.util.Collection;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
+
+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.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;
+
+/**
+ * Populates the assembly model from an SCDL model
+ */
+public class WebServiceSCDLModelLoader implements SCDLModelLoader {
+
+ private AssemblyModelContext modelContext;
+ private ResourceLoader resourceLoader;
+ 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)
+ */
+ public AssemblyModelObject load(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();
+ binding.setURI(scdlBinding.getUri());
+
+ // Get the WSDL port namespace and name
+ String portURI=scdlBinding.getPort();
+ int h=portURI.indexOf('#');
+ String portNamespace=portURI.substring(0,h);
+ String portName=portURI.substring(h+1);
+
+ // Load the WSDL file
+ String packageName=XMLNameUtil.getPackageNameFromNamespace(portNamespace);
+ String fileName=XMLNameUtil.getValidNameFromXMLName(portName, false);
+ String wsdlURI=packageName+'/'+fileName+".wsdl";
+ Definition definition;
+ try {
+ WSDLReader reader=WSDLFactory.newInstance().newWSDLReader();
+ definition = reader.readWSDL(wsdlURI);
+ } catch (WSDLException e) {
+ throw new IllegalArgumentException(e);
+ }
+ binding.setWSDLDefinition(definition);
+
+ // Find the specified port
+ for (Service service : (Collection<Service>)definition.getServices().values()) {
+ Port port=service.getPort(portName);
+ if (port!=null) {
+ binding.setWSDLPort(port);
+ break;
+ }
+ }
+
+ return binding;
+ } else
+ return null;
+ }
+}
Propchange: incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/binding.axis/src/main/java/org/apache/tuscany/binding/axis/loader/WebServiceSCDLModelLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
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=380269&r1=380268&r2=380269&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 15:30:06 2006
@@ -34,6 +34,7 @@
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.runtime.RuntimeContext;
import org.apache.tuscany.core.system.annotation.Autowire;
import org.apache.tuscany.model.assembly.AssemblyModelObject;
import org.apache.tuscany.model.assembly.ConfiguredProperty;
@@ -59,10 +60,25 @@
*
* @version $Rev: 368822 $ $Date: 2006-01-13 10:54:38 -0800 (Fri, 13 Jan 2006) $
*/
+@org.osoa.sca.annotations.Scope("MODULE")
public class JavaComponentContextBuilder implements RuntimeConfigurationBuilder<AggregateContext> {
-
+
+ private RuntimeContext runtimeContext;
private ProxyFactoryFactory factory;
+ @Init(eager=true)
+ public void init() {
+ runtimeContext.addBuilder(this);
+ }
+
+ /**
+ * @param runtimeContext The runtimeContext to set.
+ */
+ @Autowire
+ public void setRuntimeContext(RuntimeContext runtimeContext) {
+ this.runtimeContext = runtimeContext;
+ }
+
/**
* Sets the factory used to construct proxies implmementing the business interface required by a reference
*/
@@ -71,7 +87,7 @@
this.factory = factory;
}
- private MessageFactory msgFactory;
+ private MessageFactory messageFactory;
/**
* Sets the factory used to construct invocation messages
@@ -80,7 +96,7 @@
*/
@Autowire
public void setMessageFactory(MessageFactory msgFactory) {
- this.msgFactory = msgFactory;
+ this.messageFactory = msgFactory;
}
private RuntimeConfigurationBuilder referenceBuilder;
@@ -196,7 +212,7 @@
iConfigMap.put(method, iConfig);
}
QualifiedName qName = new QualifiedName(component.getName() + "/" + service.getName());
- ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, msgFactory);
+ ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
proxyFactory.setBusinessInterface(serviceContract.getInterface());
proxyFactory.setProxyConfiguration(pConfiguration);
config.addTargetProxyFactory(service.getName(), proxyFactory);
@@ -230,7 +246,7 @@
QualifiedName qName = new QualifiedName(targetCompName + "/" + targetSerivceName);
// QualifiedName qName = new QualifiedName(reference.getAggregatePart().getName() + "/"
// + reference.getPort().getName());
- ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, msgFactory);
+ ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
proxyFactory.setBusinessInterface(serviceContract.getInterface());
proxyFactory.setProxyConfiguration(pConfiguration);
config.addSourceProxyFactory(reference.getReference().getName(), proxyFactory);
Modified: incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/config/Java5ComponentTypeIntrospector.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/config/Java5ComponentTypeIntrospector.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/config/Java5ComponentTypeIntrospector.java (original)
+++ incubator/tuscany/java/sca/container.java/src/main/java/org/apache/tuscany/container/java/config/Java5ComponentTypeIntrospector.java Thu Feb 23 15:30:06 2006
@@ -94,7 +94,7 @@
}
}
if (scope == null) {
- return null;
+ return Scope.INSTANCE;
}
if ("MODULE".equalsIgnoreCase(scope.value())) {
Added: 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=380269&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment (added)
+++ incubator/tuscany/java/sca/container.java/src/main/resources/system.fragment Thu Feb 23 15:30:06 2006
@@ -0,0 +1,25 @@
+<?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.java">
+
+ <component name="org.apache.tuscany.container.java.builder.JavaComponentContextBuilder">
+ <system:implementation.system class="org.apache.tuscany.container.java.builder.JavaComponentContextBuilder"/>
+ </component>
+
+</moduleFragment>
Added: incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment.off
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment.off?rev=380269&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment.off (added)
+++ incubator/tuscany/java/sca/container.js/src/main/resources/system.fragment.off Thu Feb 23 15:30:06 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"
+ name="org.apache.tuscany.container.js">
+
+ <component name="org.apache.tuscany.container.js.handler.JavaScriptComponentConfigurationHandler">
+ <implementation.system class="org.apache.tuscany.container.js.handler.JavaScriptComponentConfigurationHandler"/>
+ </component>
+
+ <wire>
+ <source.uri>org.apache.tuscany.core.pipeline.ImplementationExtensionPoint/extensions</source.uri>
+ <target.uri>org.apache.tuscany.container.js.handler.JavaScriptComponentConfigurationHandler</target.uri>
+ </wire>
+
+</moduleFragment>
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=380269&r1=380268&r2=380269&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 15:30:06 2006
@@ -16,6 +16,7 @@
*/
package org.apache.tuscany.core.client;
+import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
@@ -24,7 +25,6 @@
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.WireBuilder;
import org.apache.tuscany.core.config.ConfigurationException;
import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader;
import org.apache.tuscany.core.config.impl.ModuleComponentConfigurationLoaderImpl;
@@ -36,12 +36,14 @@
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.SCDLAssemblyModelLoader;
+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;
@@ -56,9 +58,11 @@
private final Monitor monitor;
private final Object sessionKey = new Object();
- private final RuntimeContext runtime;
- private AggregateContext ctx;
+ private final RuntimeContext runtimeContext;
+ private AggregateContext systemModuleComponentContext;
+ private AggregateContext moduleContext;
+ private final static String SYSTEM_MODULE_COMPONENT = "org.apache.tuscany.core.system";
/**
* Construct a runtime using a null MonitorFactory.
@@ -89,24 +93,49 @@
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
ResourceLoader resourceLoader = new ResourceLoaderImpl(classLoader);
AssemblyFactory modelFactory=new AssemblyFactoryImpl();
- AssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
+ SCDLAssemblyModelLoader modelLoader=new SCDLAssemblyModelLoaderImpl();
AssemblyModelContext modelContext = new AssemblyModelContextImpl(modelFactory, modelLoader, resourceLoader);
-
- // Load the SCDL configuration
- ModuleComponentConfigurationLoader loader = new ModuleComponentConfigurationLoaderImpl(modelContext);
- ModuleComponent moduleComponent = loader.loadModuleComponent(name, uri);
+ 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);
+ }
List<RuntimeConfigurationBuilder> configBuilders = new ArrayList();
configBuilders.add((new SystemComponentContextBuilder()));
configBuilders.add(new SystemEntryPointBuilder());
configBuilders.add(new SystemExternalServiceBuilder());
- List<WireBuilder> wireBuilders = new ArrayList();
+ runtimeContext = new RuntimeContextImpl(monitorFactory,configBuilders,null);
+ runtimeContext.start();
+ monitor.started(runtimeContext);
+
+ // Get the system context
+ AggregateContext systemContext = runtimeContext.getSystemContext();
- runtime = new RuntimeContextImpl(monitorFactory,configBuilders,wireBuilders);
- //TODO Come up with a configuration mechanism for registering Java builders
- //TODO register an aggregate context under the root
- //runtime.getRootContext().registerModelObject()
+ // 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
+ 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
+ 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());
+
}
/**
@@ -114,19 +143,16 @@
*/
@Override
public void start() {
- setModuleContext((ModuleContext)ctx);
+ setModuleContext((ModuleContext)moduleContext);
try {
- runtime.start();
- monitor.started(runtime);
- ctx = null;
- ctx.start();
- ctx.fireEvent(EventContext.MODULE_START, null);
- ctx.fireEvent(EventContext.REQUEST_START, null);
- ctx.fireEvent(EventContext.SESSION_NOTIFY, sessionKey);
- monitor.started(ctx);
+ //moduleContext.start();
+ moduleContext.fireEvent(EventContext.MODULE_START, null);
+ moduleContext.fireEvent(EventContext.REQUEST_START, null);
+ moduleContext.fireEvent(EventContext.SESSION_NOTIFY, sessionKey);
+ monitor.started(moduleContext);
} catch (CoreRuntimeException e) {
setModuleContext(null);
- monitor.startFailed(ctx, e);
+ monitor.startFailed(moduleContext, e);
//FIXME throw a better exception
throw new ServiceRuntimeException(e);
}
@@ -138,13 +164,13 @@
@Override
public void stop() {
setModuleContext(null);
- ctx.fireEvent(EventContext.REQUEST_END, null);
- ctx.fireEvent(EventContext.SESSION_END, sessionKey);
- ctx.fireEvent(EventContext.MODULE_STOP, null);
- ctx.stop();
- monitor.stopped(ctx);
- runtime.stop();
- monitor.stopped(runtime);
+ moduleContext.fireEvent(EventContext.REQUEST_END, null);
+ moduleContext.fireEvent(EventContext.SESSION_END, sessionKey);
+ moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+ moduleContext.stop();
+ monitor.stopped(moduleContext);
+ runtimeContext.stop();
+ monitor.stopped(runtimeContext);
}
/**
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ModuleComponentConfigurationLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ModuleComponentConfigurationLoader.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ModuleComponentConfigurationLoader.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ModuleComponentConfigurationLoader.java Thu Feb 23 15:30:06 2006
@@ -39,6 +39,16 @@
ModuleComponent loadModuleComponent(String name, String uri) throws ConfigurationLoadException;
/**
+ * Load a System SCDL module component.
+ *
+ * @param name the name of the module component
+ * @param uri
+ * @return a new module component definition
+ * @throws ConfigurationException if there was a problem loading the module component.
+ */
+ ModuleComponent loadSystemModuleComponent(String name, String uri) throws ConfigurationLoadException;
+
+ /**
* Load a SCDL module component.
*
* @param name the name of the module component
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/ModuleComponentConfigurationLoaderImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/ModuleComponentConfigurationLoaderImpl.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/ModuleComponentConfigurationLoaderImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/ModuleComponentConfigurationLoaderImpl.java Thu Feb 23 15:30:06 2006
@@ -40,6 +40,9 @@
private static final String SCA_MODULE_FILE_NAME = "sca.module";
//FIXME can fragments have a variable prefix name?
private static final String SCA_FRAGMENT_FILE_NAME = "sca.fragment";
+ private static final String SYSTEM_MODULE_FILE_NAME = "system.module";
+ //FIXME can fragments have a variable prefix name?
+ private static final String SYSTEM_FRAGMENT_FILE_NAME = "system.fragment";
private AssemblyModelContext modelContext;
private ResourceLoader resourceLoader;
@@ -59,26 +62,40 @@
/**
* @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadModuleComponent(java.lang.String, java.lang.String)
*/
+ public ModuleComponent loadSystemModuleComponent(String name, String uri) throws ConfigurationLoadException {
+ return loadModuleComponent(SYSTEM_MODULE_FILE_NAME, SYSTEM_FRAGMENT_FILE_NAME, name, uri);
+ }
+
+ /**
+ * @see org.apache.tuscany.model.assembly.loader.AssemblyModelLoader#loadModuleComponent(java.lang.String, java.lang.String)
+ */
public ModuleComponent loadModuleComponent(String name, String uri) throws ConfigurationLoadException {
+ return loadModuleComponent(SCA_MODULE_FILE_NAME, SCA_FRAGMENT_FILE_NAME, name, uri);
+ }
+
+ /**
+ * Load a module component.
+ */
+ private ModuleComponent loadModuleComponent(String moduleFileName, String fragmentFileName, String name, String uri) throws ConfigurationLoadException {
// Load the sca.module file
URL moduleUrl;
try {
- moduleUrl = resourceLoader.getResource(SCA_MODULE_FILE_NAME);
+ moduleUrl = resourceLoader.getResource(moduleFileName);
} catch (IOException e) {
- throw new ConfigurationLoadException(SCA_MODULE_FILE_NAME, e);
+ throw new ConfigurationLoadException(moduleFileName, e);
}
if (moduleUrl == null) {
- throw new ConfigurationLoadException(SCA_MODULE_FILE_NAME);
+ throw new ConfigurationLoadException(moduleFileName);
}
String moduleUri=moduleUrl.toString();
// Load the sca.fragment files
Iterator<URL> i;
try {
- i = resourceLoader.getAllResources(SCA_FRAGMENT_FILE_NAME);
+ i = resourceLoader.getAllResources(fragmentFileName);
} catch (IOException e) {
- throw new ConfigurationLoadException(SCA_FRAGMENT_FILE_NAME, e);
+ throw new ConfigurationLoadException(fragmentFileName, e);
}
List<String> moduleFragmentUris=new ArrayList<String>();
for (; i.hasNext(); ) {
@@ -93,7 +110,7 @@
* @see org.apache.tuscany.core.config.ModuleComponentConfigurationLoader#loadModuleComponent(java.lang.String, java.lang.String, java.lang.String)
*/
public ModuleComponent loadModuleComponent(String name, String uri, String url) throws ConfigurationLoadException {
- return loadModuleComponent(name, uri, url, null);
+ return loadModuleComponent( name, uri, url, (Collection)null);
}
/**
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java Thu Feb 23 15:30:06 2006
@@ -60,6 +60,7 @@
}
super.start();
lifecycleState = RUNNING;
+ prepare();
}
public synchronized void stop() {
@@ -92,22 +93,18 @@
}
public InstanceContext getContext(String ctxName) {
- prepare();
return contextMap.get(ctxName);
}
public InstanceContext getContextByKey(String ctxName, Object key) {
- prepare();
return getContext(ctxName);
}
public void removeContext(String ctxName) {
- prepare();
removeContextByKey(ctxName, null);
}
public void removeContextByKey(String ctxName, Object key) {
- prepare();
contextMap.remove(ctxName);
}
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=380269&r1=380268&r2=380269&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 15:30:06 2006
@@ -37,7 +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;
@@ -226,7 +230,7 @@
// ----------------------------------
// AutowireContext methods
// ----------------------------------
-
+
public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException {
if (MonitorFactory.class.equals(instanceInterface)) {
return instanceInterface.cast(monitorFactory);
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemImplementationImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemImplementationImpl.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemImplementationImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/assembly/impl/SystemImplementationImpl.java Thu Feb 23 15:30:06 2006
@@ -19,8 +19,12 @@
import java.net.URL;
import org.apache.tuscany.core.system.assembly.SystemImplementation;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
import org.apache.tuscany.model.assembly.AssemblyModelContext;
import org.apache.tuscany.model.assembly.ComponentType;
+import org.apache.tuscany.model.assembly.Scope;
+import org.apache.tuscany.model.assembly.Service;
+import org.apache.tuscany.model.assembly.ServiceContract;
import org.apache.tuscany.model.assembly.impl.ComponentImplementationImpl;
/**
@@ -67,8 +71,19 @@
URL componentTypeFile = implClass.getResource(baseName + ".componentType");
if (componentTypeFile != null) {
return modelContext.getAssemblyLoader().getComponentType(componentTypeFile.toString());
- } else
- return null;
+ } else {
+ //FIXME Return a made-up component type for now
+ // We need to introspect the component implementation class, support a subset of what
+ // we support for java components.
+ AssemblyFactory factory=modelContext.getAssemblyFactory();
+ ComponentType componentType=factory.createComponentType();
+ Service service=factory.createService();
+ ServiceContract serviceContract=factory.createJavaServiceContract();
+ serviceContract.setScope(Scope.MODULE);
+ service.setServiceContract(serviceContract);
+ componentType.getServices().add(service);
+ return componentType;
+ }
}
/**
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentContextBuilder.java Thu Feb 23 15:30:06 2006
@@ -31,6 +31,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.core.context.impl.AggregateContextImpl;
import org.apache.tuscany.core.injection.EventInvoker;
import org.apache.tuscany.core.injection.FieldInjector;
import org.apache.tuscany.core.injection.Injector;
@@ -45,11 +46,14 @@
import org.apache.tuscany.core.system.annotation.ParentContext;
import org.apache.tuscany.core.system.assembly.SystemImplementation;
import org.apache.tuscany.core.system.config.SystemComponentRuntimeConfiguration;
+import org.apache.tuscany.core.system.context.SystemAggregateContextImpl;
import org.apache.tuscany.model.assembly.AssemblyModelObject;
import org.apache.tuscany.model.assembly.Component;
+import org.apache.tuscany.model.assembly.ComponentImplementation;
import org.apache.tuscany.model.assembly.ConfiguredProperty;
import org.apache.tuscany.model.assembly.ConfiguredReference;
import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.Module;
import org.apache.tuscany.model.assembly.Scope;
import org.osoa.sca.annotations.ComponentName;
import org.osoa.sca.annotations.Context;
@@ -82,179 +86,206 @@
return;
}
Component component = (Component) modelObject;
- if (component.getComponentImplementation() instanceof SystemImplementation
- && component.getComponentImplementation().getRuntimeConfiguration() == null) {
- SystemImplementation javaImpl = (SystemImplementation) component.getComponentImplementation();
- // FIXME scope
- Scope scope = component.getComponentImplementation().getComponentType().getServices().get(0).getServiceContract()
- .getScope();
- Class implClass = null;
- Set<Field> fields;
- Set<Method> methods;
- try {
- implClass = javaImpl.getImplementationClass();
- fields = JavaIntrospectionHelper.getAllFields(implClass);
- methods = JavaIntrospectionHelper.getAllUniqueMethods(implClass);
- String name = component.getName();
- Constructor ctr = implClass.getConstructor((Class[]) null);
-
- List<Injector> injectors = new ArrayList();
-
- // handle properties
- List<ConfiguredProperty> configuredProperties = component.getConfiguredProperties();
- if (configuredProperties != null) {
- for (ConfiguredProperty property : configuredProperties) {
- Injector injector = createPropertyInjector(property, fields, methods);
- injectors.add(injector);
- }
- }
-
- // handle references
- List<ConfiguredReference> configuredReferences = component.getConfiguredReferences();
- if (configuredReferences != null) {
- for (ConfiguredReference reference : configuredReferences) {
- Injector injector = createReferenceInjector(parentContext.getName(), component.getName(), parentContext,
- reference, fields, methods);
- injectors.add(injector);
- }
- }
-
- // create factory for the component implementation type
- EventInvoker initInvoker = null;
- boolean eagerInit = false;
- EventInvoker destroyInvoker = null;
- for (Field field : fields) {
- ComponentName compName = field.getAnnotation(ComponentName.class);
- if (compName != null) {
- Injector injector = new FieldInjector(field, new SingletonObjectFactory(name));
- injectors.add(injector);
- }
- Context context = field.getAnnotation(Context.class);
- if (context != null) {
- Injector injector = new FieldInjector(field, new SingletonObjectFactory(parentContext));
- injectors.add(injector);
- }
- ParentContext parentField = field.getAnnotation(ParentContext.class);
- if (parentField != null) {
- if (!(parentContext instanceof AggregateContext)) {
- BuilderConfigException e = new BuilderConfigException("Component must be a child of");
- e.setIdentifier(AggregateContext.class.getName());
- throw e;
- }
- Injector injector = new FieldInjector(field, new SingletonObjectFactory((parentContext)));
- injectors.add(injector);
- }
- Autowire autowire = field.getAnnotation(Autowire.class);
- if (autowire != null) {
- if (!(parentContext instanceof AutowireContext)) {
- BuilderConfigException e = new BuilderConfigException("Parent context must implement");
- e.setIdentifier(AutowireContext.class.getName());
- throw e;
- }
- AutowireContext ctx = (AutowireContext) parentContext;
- // for system aggregate context types, only allow autowire of certain types, otherwise we have a
- // chicken-and-egg problem
- if (SystemAggregateContext.class.isAssignableFrom(implClass)
- && !(field.getType().equals(ConfigurationContext.class)
- || field.getType().equals(MonitorFactory.class)
- || field.getType().equals(RuntimeContext.class) || field.getType().equals(
- AutowireContext.class))) {
- BuilderConfigException e = new BuilderConfigException("Illegal autowire type for system context");
- e.setIdentifier(field.getType().getName());
- throw e;
- }
-
- Object o = ctx.resolveInstance(field.getType());
- if (autowire.required() && o == null) {
- BuilderConfigException e = new BuilderConfigException("No autowire found for field");
- e.setIdentifier(field.getName());
- throw e;
- }
- Injector injector = new FieldInjector(field, new SingletonObjectFactory(o));
- injectors.add(injector);
- }
- }
- for (Method method : methods) {
- Init init = method.getAnnotation(Init.class);
- if (init != null && initInvoker == null) {
- initInvoker = new MethodEventInvoker(method);
- eagerInit = init.eager();
- continue;
- }
- Destroy destroy = method.getAnnotation(Destroy.class);
- if (destroy != null && destroyInvoker == null) {
- destroyInvoker = new MethodEventInvoker(method);
- continue;
- }
- ComponentName compName = method.getAnnotation(ComponentName.class);
- if (compName != null) {
- Injector injector = new MethodInjector(method, new SingletonObjectFactory(name));
- injectors.add(injector);
- }
- Context context = method.getAnnotation(Context.class);
- if (context != null) {
- Injector injector = new MethodInjector(method, new SingletonObjectFactory(parentContext));
- injectors.add(injector);
- }
- ParentContext parentMethod = method.getAnnotation(ParentContext.class);
- if (parentMethod != null) {
- if (!(parentContext instanceof AggregateContext)) {
- BuilderConfigException e = new BuilderConfigException("Component must be a child of ");
- e.setIdentifier(AggregateContext.class.getName());
- throw e;
- }
- Injector injector = new MethodInjector(method, new SingletonObjectFactory((parentContext)));
- injectors.add(injector);
- }
- Autowire autowire = method.getAnnotation(Autowire.class);
- if (autowire != null) {
- if (!(parentContext instanceof AutowireContext)) {
- BuilderConfigException e = new BuilderConfigException("Parent context must implement)");
- e.setIdentifier(AutowireContext.class.getName());
- throw e;
- }
- if (method.getParameterTypes() == null || method.getParameterTypes().length != 1) {
- BuilderConfigException e = new BuilderConfigException(
- "Autowire setter methods must take one parameter");
- e.setIdentifier(method.getName());
- throw e;
- }
- AutowireContext ctx = (AutowireContext) parentContext;
- Class paramType = method.getParameterTypes()[0];
- // for system aggregate context types, only allow autowire of certain types, otherwise we have a
- // chicken-and-egg problem
- if (SystemAggregateContext.class.isAssignableFrom(implClass)
- && !(paramType.equals(ConfigurationContext.class) || paramType.equals(MonitorFactory.class)
- || paramType.equals(RuntimeContext.class) || paramType.equals(AutowireContext.class))) {
- BuilderConfigException e = new BuilderConfigException("Illegal autowire type for system context");
- e.setIdentifier(paramType.getName());
- throw e;
- }
- Object o = ctx.resolveInstance(paramType);
- if (autowire.required() && o == null) {
- BuilderConfigException e = new BuilderConfigException("No autowire found for method ");
- e.setIdentifier(method.getName());
- throw e;
- }
-
- Injector injector = new MethodInjector(method, new SingletonObjectFactory(o));
- injectors.add(injector);
- }
- }
- // decorate the logical model
- SystemComponentRuntimeConfiguration config = new SystemComponentRuntimeConfiguration(name,
- JavaIntrospectionHelper.getDefaultConstructor(implClass), injectors, eagerInit, initInvoker,
- destroyInvoker, scope);
- component.getComponentImplementation().setRuntimeConfiguration(config);
- } catch (BuilderConfigException e) {
- e.addContextName(component.getName());
- e.addContextName(parentContext.getName());
- throw e;
- } catch (NoSuchMethodException e) {
- BuilderConfigException ce = new BuilderConfigException("Class does not have a no-arg constructor", e);
- ce.setIdentifier(implClass.getName());
- throw ce;
+
+ Class implClass = null;
+ Scope scope = null;
+
+ // Get the component implementation
+ ComponentImplementation componentImplementation = component.getComponentImplementation();
+ if (componentImplementation instanceof SystemImplementation
+ && componentImplementation.getRuntimeConfiguration() == null) {
+
+ // The component is a system component, implemented by a Java class
+ SystemImplementation javaImpl = (SystemImplementation) componentImplementation;
+ scope = componentImplementation.getComponentType().getServices().get(0).getServiceContract().getScope();
+ implClass = javaImpl.getImplementationClass();
+
+ } else if (componentImplementation instanceof Module) {
+ if (((Module)componentImplementation).getName().startsWith("org.apache.tuscany.core.system")) {
+
+ // The component is a system module component, fix the implementation class to our implementation
+ // of system module component context
+ implClass=SystemAggregateContextImpl.class;
+ scope = Scope.AGGREGATE;
+
+ } else {
+
+ // The component is an app module component, fix the implementation class to our implementation
+ // of app module component context
+ implClass=AggregateContextImpl.class;
+ scope = Scope.AGGREGATE;
+
}
+
+ } else {
+ return;
+ }
+
+ // FIXME scope
+ Set<Field> fields;
+ Set<Method> methods;
+ try {
+ fields = JavaIntrospectionHelper.getAllFields(implClass);
+ methods = JavaIntrospectionHelper.getAllUniqueMethods(implClass);
+ String name = component.getName();
+ Constructor ctr = implClass.getConstructor((Class[]) null);
+
+ List<Injector> injectors = new ArrayList();
+
+ // handle properties
+ List<ConfiguredProperty> configuredProperties = component.getConfiguredProperties();
+ if (configuredProperties != null) {
+ for (ConfiguredProperty property : configuredProperties) {
+ Injector injector = createPropertyInjector(property, fields, methods);
+ injectors.add(injector);
+ }
+ }
+
+ // handle references
+ List<ConfiguredReference> configuredReferences = component.getConfiguredReferences();
+ if (configuredReferences != null) {
+ for (ConfiguredReference reference : configuredReferences) {
+ Injector injector = createReferenceInjector(parentContext.getName(), component.getName(), parentContext,
+ reference, fields, methods);
+ injectors.add(injector);
+ }
+ }
+
+ // create factory for the component implementation type
+ EventInvoker initInvoker = null;
+ boolean eagerInit = false;
+ EventInvoker destroyInvoker = null;
+ for (Field field : fields) {
+ ComponentName compName = field.getAnnotation(ComponentName.class);
+ if (compName != null) {
+ Injector injector = new FieldInjector(field, new SingletonObjectFactory(name));
+ injectors.add(injector);
+ }
+ Context context = field.getAnnotation(Context.class);
+ if (context != null) {
+ Injector injector = new FieldInjector(field, new SingletonObjectFactory(parentContext));
+ injectors.add(injector);
+ }
+ ParentContext parentField = field.getAnnotation(ParentContext.class);
+ if (parentField != null) {
+ if (!(parentContext instanceof AggregateContext)) {
+ BuilderConfigException e = new BuilderConfigException("Component must be a child of");
+ e.setIdentifier(AggregateContext.class.getName());
+ throw e;
+ }
+ Injector injector = new FieldInjector(field, new SingletonObjectFactory((parentContext)));
+ injectors.add(injector);
+ }
+ Autowire autowire = field.getAnnotation(Autowire.class);
+ if (autowire != null) {
+ if (!(parentContext instanceof AutowireContext)) {
+ BuilderConfigException e = new BuilderConfigException("Parent context must implement");
+ e.setIdentifier(AutowireContext.class.getName());
+ throw e;
+ }
+ AutowireContext ctx = (AutowireContext) parentContext;
+ // for system aggregate context types, only allow autowire of certain types, otherwise we have a
+ // chicken-and-egg problem
+ if (SystemAggregateContext.class.isAssignableFrom(implClass)
+ && !(field.getType().equals(ConfigurationContext.class)
+ || field.getType().equals(MonitorFactory.class)
+ || field.getType().equals(RuntimeContext.class) || field.getType().equals(
+ AutowireContext.class))) {
+ BuilderConfigException e = new BuilderConfigException("Illegal autowire type for system context");
+ e.setIdentifier(field.getType().getName());
+ throw e;
+ }
+
+ Object o = ctx.resolveInstance(field.getType());
+ if (autowire.required() && o == null) {
+ BuilderConfigException e = new BuilderConfigException("No autowire found for field");
+ e.setIdentifier(field.getName());
+ throw e;
+ }
+ Injector injector = new FieldInjector(field, new SingletonObjectFactory(o));
+ injectors.add(injector);
+ }
+ }
+ for (Method method : methods) {
+ Init init = method.getAnnotation(Init.class);
+ if (init != null && initInvoker == null) {
+ initInvoker = new MethodEventInvoker(method);
+ eagerInit = init.eager();
+ continue;
+ }
+ Destroy destroy = method.getAnnotation(Destroy.class);
+ if (destroy != null && destroyInvoker == null) {
+ destroyInvoker = new MethodEventInvoker(method);
+ continue;
+ }
+ ComponentName compName = method.getAnnotation(ComponentName.class);
+ if (compName != null) {
+ Injector injector = new MethodInjector(method, new SingletonObjectFactory(name));
+ injectors.add(injector);
+ }
+ Context context = method.getAnnotation(Context.class);
+ if (context != null) {
+ Injector injector = new MethodInjector(method, new SingletonObjectFactory(parentContext));
+ injectors.add(injector);
+ }
+ ParentContext parentMethod = method.getAnnotation(ParentContext.class);
+ if (parentMethod != null) {
+ if (!(parentContext instanceof AggregateContext)) {
+ BuilderConfigException e = new BuilderConfigException("Component must be a child of ");
+ e.setIdentifier(AggregateContext.class.getName());
+ throw e;
+ }
+ Injector injector = new MethodInjector(method, new SingletonObjectFactory((parentContext)));
+ injectors.add(injector);
+ }
+ Autowire autowire = method.getAnnotation(Autowire.class);
+ if (autowire != null) {
+ if (!(parentContext instanceof AutowireContext)) {
+ BuilderConfigException e = new BuilderConfigException("Parent context must implement)");
+ e.setIdentifier(AutowireContext.class.getName());
+ throw e;
+ }
+ if (method.getParameterTypes() == null || method.getParameterTypes().length != 1) {
+ BuilderConfigException e = new BuilderConfigException(
+ "Autowire setter methods must take one parameter");
+ e.setIdentifier(method.getName());
+ throw e;
+ }
+ AutowireContext ctx = (AutowireContext) parentContext;
+ Class paramType = method.getParameterTypes()[0];
+ // for system aggregate context types, only allow autowire of certain types, otherwise we have a
+ // chicken-and-egg problem
+ if (SystemAggregateContext.class.isAssignableFrom(implClass)
+ && !(paramType.equals(ConfigurationContext.class) || paramType.equals(MonitorFactory.class)
+ || paramType.equals(RuntimeContext.class) || paramType.equals(AutowireContext.class))) {
+ BuilderConfigException e = new BuilderConfigException("Illegal autowire type for system context");
+ e.setIdentifier(paramType.getName());
+ throw e;
+ }
+ Object o = ctx.resolveInstance(paramType);
+ if (autowire.required() && o == null) {
+ BuilderConfigException e = new BuilderConfigException("No autowire found for method ");
+ e.setIdentifier(method.getName());
+ throw e;
+ }
+
+ Injector injector = new MethodInjector(method, new SingletonObjectFactory(o));
+ injectors.add(injector);
+ }
+ }
+ // decorate the logical model
+ SystemComponentRuntimeConfiguration config = new SystemComponentRuntimeConfiguration(name,
+ JavaIntrospectionHelper.getDefaultConstructor(implClass), injectors, eagerInit, initInvoker,
+ destroyInvoker, scope);
+ componentImplementation.setRuntimeConfiguration(config);
+ } catch (BuilderConfigException e) {
+ e.addContextName(component.getName());
+ e.addContextName(parentContext.getName());
+ throw e;
+ } catch (NoSuchMethodException e) {
+ BuilderConfigException ce = new BuilderConfigException("Class does not have a no-arg constructor", e);
+ ce.setIdentifier(implClass.getName());
+ throw ce;
}
}
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAggregateContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAggregateContextImpl.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAggregateContextImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemAggregateContextImpl.java Thu Feb 23 15:30:06 2006
@@ -56,7 +56,11 @@
import org.apache.tuscany.core.context.SystemAggregateContext;
import org.apache.tuscany.core.context.TargetException;
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.runtime.RuntimeContext;
import org.apache.tuscany.core.system.annotation.Autowire;
import org.apache.tuscany.core.system.annotation.ParentContext;
@@ -524,6 +528,10 @@
// ----------------------------------
// AutowireContext methods
// ----------------------------------
+
+ //FIXME These should be removed and configured
+ private static final MessageFactory messageFactory=new MessageFactoryImpl();
+ private static final ProxyFactoryFactory proxyFactoryFactory=new JDKProxyFactoryFactory();
public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException {
if (RuntimeContext.class.equals(instanceInterface)) {
@@ -534,7 +542,12 @@
return instanceInterface.cast(this);
} else if (AggregateContext.class.equals(instanceInterface)) {
return instanceInterface.cast(this);
+ } else if (MessageFactory.class.equals(instanceInterface)) {
+ return instanceInterface.cast(messageFactory);
+ } else if (ProxyFactoryFactory.class.equals(instanceInterface)) {
+ return instanceInterface.cast(proxyFactoryFactory);
}
+
NameToScope mapping = autowireIndex.get(instanceInterface);
if (mapping != null) {
try {
Added: 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=380269&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/resources/system.module (added)
+++ incubator/tuscany/java/sca/core/src/main/resources/system.module Thu Feb 23 15:30:06 2006
@@ -0,0 +1,20 @@
+<?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.
+ -->
+<module xmlns="http://www.osoa.org/xmlns/sca/0.9" xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ name="org.apache.tuscany.core.system">
+
+</module>
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=380269&r1=380268&r2=380269&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 15:30:06 2006
@@ -97,6 +97,8 @@
getComponents().addAll(moduleFragment.getComponents());
getEntryPoints().addAll(moduleFragment.getEntryPoints());
getExternalServices().addAll(moduleFragment.getExternalServices());
+
+ moduleFragment.initialize(modelContext);
}
// Initialize the aggregate
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=380269&r1=380268&r2=380269&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 15:30:06 2006
@@ -27,6 +27,7 @@
import org.apache.tuscany.model.assembly.ConfiguredReference;
import org.apache.tuscany.model.assembly.ConfiguredService;
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.SimpleComponent;
import org.apache.tuscany.model.scdl.Binding;
@@ -232,6 +233,7 @@
final JavaServiceContract serviceContract=factory.createJavaServiceContract();
serviceContract.setInterface(null);
serviceContract.setCallbackInterface(null);
+ serviceContract.setScope(Scope.INSTANCE);
linkServiceContract(object, serviceContract);
@@ -245,6 +247,7 @@
final WSDLServiceContract serviceContract=factory.createWSDLServiceContract();
serviceContract.setInterface(null);
serviceContract.setCallbackInterface(null);
+ serviceContract.setScope(Scope.INSTANCE);
linkServiceContract(object, serviceContract);
Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/scdl/loader/impl/SCDLXMLReader.java Thu Feb 23 15:30:06 2006
@@ -102,9 +102,9 @@
try {
XMLDocument document=XMLHelper.INSTANCE.load(new URL(uri).openStream());
return document.getRootObject();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
}
return object;
}
Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java?rev=380269&r1=380268&r2=380269&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/util/ModelTransformerImpl.java Thu Feb 23 15:30:06 2006
@@ -77,6 +77,8 @@
// Pass 1: compile, visit the source model and create target model objects
for (; iterator.hasNext(); ) {
Object source=iterator.next();
+ if (source==null)
+ System.out.println("Ooops");
Object target=handler.doSwitch(source);
// Record source to target associations