You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/02/27 10:07:57 UTC
svn commit: r381293 - in /incubator/tuscany/java/sca:
container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/
container.java/src/test/java/org/apache/tuscany/container/java/mock/
container.java/src/test/java/org/apache/tusca...
Author: jmarino
Date: Mon Feb 27 01:07:48 2006
New Revision: 381293
URL: http://svn.apache.org/viewcvs?rev=381293&view=rev
Log:
checkin fix for TUSCANY-40; continued entrypoint implementation, which will not work yet
Added:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java
- copied, changed from r381049, incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java
Removed:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java
Modified:
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java
incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java
Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/JavaToExternalServiceTestCase.java Mon Feb 27 01:07:48 2006
@@ -86,7 +86,7 @@
runtime.getRootContext().registerModelObject(
MockAssemblyFactory.createSystemComponent("test.module", AggregateContextImpl.class.getName(), Scope.AGGREGATE));
AggregateContext child = (AggregateContext) runtime.getRootContext().getContext("test.module");
- child.registerModelObject(MockModuleFactory.createModuleWithExerntalService());
+ child.registerModelObject(MockModuleFactory.createModuleWithExternalService());
child.fireEvent(EventContext.MODULE_START, null);
HelloWorldService source = (HelloWorldService) child.locateInstance("source");
Assert.assertNotNull(source);
Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockAssemblyFactory.java Mon Feb 27 01:07:48 2006
@@ -27,6 +27,7 @@
import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
import org.apache.tuscany.model.assembly.Component;
import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
import org.apache.tuscany.model.assembly.ExternalService;
import org.apache.tuscany.model.assembly.Scope;
import org.apache.tuscany.model.assembly.Service;
@@ -103,4 +104,20 @@
return es;
}
+ public static EntryPoint createFooBindingEntryPoint(String name, Class interfaz) throws NoSuchMethodException,
+ ClassNotFoundException {
+ EntryPoint ep = factory.createEntryPoint();
+ ep.setName(name);
+ Service s = factory.createService();
+ JavaServiceContract ji = factory.createJavaServiceContract();
+ ji.setScope(Scope.MODULE);
+ ji.setInterface(interfaz);
+ s.setServiceContract(ji);
+ ConfiguredService configuredService = factory.createConfiguredService();
+ configuredService.setService(s);
+ ep.setConfiguredService(configuredService);
+ FooBinding binding = new FooBinding();
+ ep.getBindings().add(binding);
+ return ep;
+ }
}
Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockModuleFactory.java Mon Feb 27 01:07:48 2006
@@ -1,5 +1,6 @@
package org.apache.tuscany.container.java.mock;
+import org.apache.tuscany.container.java.assembly.mock.HelloWorldImpl;
import org.apache.tuscany.container.java.assembly.mock.HelloWorldService;
import org.apache.tuscany.container.java.mock.components.GenericComponent;
import org.apache.tuscany.container.java.mock.components.HelloWorldClient;
@@ -9,6 +10,7 @@
import org.apache.tuscany.model.assembly.Component;
import org.apache.tuscany.model.assembly.ConfiguredReference;
import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
import org.apache.tuscany.model.assembly.ExternalService;
import org.apache.tuscany.model.assembly.Module;
import org.apache.tuscany.model.assembly.Reference;
@@ -63,7 +65,7 @@
}
- public static Module createModuleWithExerntalService() throws Exception {
+ public static Module createModuleWithExternalService() throws Exception {
Component sourceComponent = MockAssemblyFactory.createComponent("source", HelloWorldClient.class,Scope.MODULE);
ExternalService targetES = MockAssemblyFactory.createFooBindingExternalService("target",HelloWorldService.class);
@@ -97,5 +99,41 @@
return module;
}
+
+ public static Module createModuleWithEntryPoint() throws Exception {
+ EntryPoint sourceEP = MockAssemblyFactory.createFooBindingEntryPoint("source", HelloWorldService.class);
+ Component targetComponent = MockAssemblyFactory.createComponent("target",HelloWorldImpl.class,Scope.MODULE);
+
+ Service targetService = factory.createService();
+ JavaServiceContract targetContract = factory.createJavaServiceContract();
+ targetContract.setInterface(HelloWorldService.class);
+ targetService.setServiceContract(targetContract);
+ targetService.setName("HelloWorld");
+ ConfiguredService cTargetService = factory.createConfiguredService();
+ cTargetService.setService(targetService);
+ targetComponent.getConfiguredServices().add(cTargetService);
+ targetComponent.initialize(assemblyContext);
+
+ Reference ref = factory.createReference();
+ ConfiguredReference cref = factory.createConfiguredReference();
+ ref.setName("setHelloWorldService");
+ JavaServiceContract inter = factory.createJavaServiceContract();
+ inter.setInterface(HelloWorldService.class);
+ ref.setServiceContract(inter);
+ cref.setReference(ref);
+ cref.getTargetConfiguredServices().add(cTargetService);
+ cref.initialize(assemblyContext);
+ sourceEP.setConfiguredReference(cref);
+ sourceEP.initialize(assemblyContext);
+
+ Module module = factory.createModule();
+ module.setName("test.module");
+ module.getEntryPoints().add(sourceEP);
+ module.getComponents().add(targetComponent);
+ module.initialize(assemblyContext);
+ return module;
+ }
+
+
}
Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingBuilder.java Mon Feb 27 01:07:48 2006
@@ -15,18 +15,19 @@
import java.lang.reflect.Method;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.tuscany.core.builder.BuilderException;
import org.apache.tuscany.core.builder.ObjectFactory;
import org.apache.tuscany.core.builder.RuntimeConfigurationBuilder;
+import org.apache.tuscany.core.builder.impl.EntryPointRuntimeConfiguration;
import org.apache.tuscany.core.config.JavaIntrospectionHelper;
import org.apache.tuscany.core.context.Context;
import org.apache.tuscany.core.context.QualifiedName;
import org.apache.tuscany.core.injection.ObjectCreationException;
import org.apache.tuscany.core.invocation.InvocationConfiguration;
-import org.apache.tuscany.core.invocation.MethodHashMap;
import org.apache.tuscany.core.invocation.ProxyConfiguration;
import org.apache.tuscany.core.invocation.impl.InvokerInterceptor;
import org.apache.tuscany.core.invocation.spi.ProxyFactory;
@@ -36,6 +37,7 @@
import org.apache.tuscany.core.system.annotation.Autowire;
import org.apache.tuscany.model.assembly.AssemblyModelObject;
import org.apache.tuscany.model.assembly.ConfiguredService;
+import org.apache.tuscany.model.assembly.EntryPoint;
import org.apache.tuscany.model.assembly.ExternalService;
import org.apache.tuscany.model.assembly.Service;
import org.apache.tuscany.model.assembly.ServiceContract;
@@ -43,7 +45,8 @@
import org.osoa.sca.annotations.Scope;
/**
- * Creates a <code>RuntimeConfigurationBuilder</code> for an external service configured with the {@link FooBinding}
+ * Creates a <code>RuntimeConfigurationBuilder</code> for an entry point or external service configured with the
+ * {@link FooBinding}
*
* @version $Rev$ $Date$
*/
@@ -104,43 +107,81 @@
}
public void build(AssemblyModelObject object, Context context) throws BuilderException {
- if (!(object instanceof ExternalService)) {
- return;
- }
- ExternalService es = (ExternalService) object;
- if (es.getBindings().size() < 1 || !(es.getBindings().get(0) instanceof FooBinding)) {
- return;
- }
+ if (object instanceof EntryPoint) {
+ EntryPoint ep = (EntryPoint) object;
+ if (ep.getBindings().size() < 1 || !(ep.getBindings().get(0) instanceof FooBinding)) {
+ return;
+ }
+
+ // TODO create entry point context
+ EntryPointRuntimeConfiguration config = new FooEntryPointRuntimeConfiguration(ep.getName(), ep.getConfiguredService()
+ .getService().getName(), messageFactory);
+
+ ConfiguredService configuredService = ep.getConfiguredService();
+ Service service = configuredService.getService();
+ ServiceContract serviceContract = service.getServiceContract();
+ Map<Method, InvocationConfiguration> iConfigMap = new HashMap();
+ ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
+ Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());
+ for (Method method : javaMethods) {
+ InvocationConfiguration iConfig = new InvocationConfiguration(method);
+ iConfigMap.put(method, iConfig);
+ }
+ QualifiedName qName = new QualifiedName(ep.getName() + "/" + service.getName());
+ ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
+ proxyFactory.setBusinessInterface(serviceContract.getInterface());
+ proxyFactory.setProxyConfiguration(pConfiguration);
+ config.addSourceProxyFactory(service.getName(), proxyFactory);
+ configuredService.setProxyFactory(proxyFactory);
+ if (policyBuilder != null) {
+ // invoke the reference builder to handle additional policy metadata
+ policyBuilder.build(configuredService, context);
+ }
+ // add tail interceptor
+ for (InvocationConfiguration iConfig : (Collection<InvocationConfiguration>) iConfigMap.values()) {
+ iConfig.addTargetInterceptor(new InvokerInterceptor());
+ }
+ ep.getConfiguredReference().setRuntimeConfiguration(config);
+
+ } else if (object instanceof ExternalService) {
+ ExternalService es = (ExternalService) object;
+ if (es.getBindings().size() < 1 || !(es.getBindings().get(0) instanceof FooBinding)) {
+ return;
+ }
+
+ FooExternalServiceRuntimeConfiguration config = new FooExternalServiceRuntimeConfiguration(es.getName(),
+ new FooClientFactory());
+
+ ConfiguredService configuredService = es.getConfiguredService();
+ Service service = configuredService.getService();
+ ServiceContract serviceContract = service.getServiceContract();
+ Map<Method, InvocationConfiguration> iConfigMap = new HashMap();
+ ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
+ Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());
+ for (Method method : javaMethods) {
+ InvocationConfiguration iConfig = new InvocationConfiguration(method);
+ iConfigMap.put(method, iConfig);
+ }
+ QualifiedName qName = new QualifiedName(es.getName() + "/" + service.getName());
+ ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
+ proxyFactory.setBusinessInterface(serviceContract.getInterface());
+ proxyFactory.setProxyConfiguration(pConfiguration);
+ config.addTargetProxyFactory(service.getName(), proxyFactory);
+ configuredService.setProxyFactory(proxyFactory);
+ if (policyBuilder != null) {
+ // invoke the reference builder to handle additional policy metadata
+ policyBuilder.build(configuredService, context);
+ }
+ // add tail interceptor
+ for (InvocationConfiguration iConfig : (Collection<InvocationConfiguration>) iConfigMap.values()) {
+ iConfig.addTargetInterceptor(new InvokerInterceptor());
+ }
- FooExternalServiceRuntimeConfiguration config = new FooExternalServiceRuntimeConfiguration(es.getName(),
- new FooClientFactory());
+ es.getConfiguredService().setRuntimeConfiguration(config);
+ } else {
+ return;
- ConfiguredService configuredService = es.getConfiguredService();
- Service service = configuredService.getService();
- ServiceContract serviceContract = service.getServiceContract();
- Map<Method, InvocationConfiguration> iConfigMap = new MethodHashMap();
- ProxyFactory proxyFactory = proxyFactoryFactory.createProxyFactory();
- Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(serviceContract.getInterface());
- for (Method method : javaMethods) {
- InvocationConfiguration iConfig = new InvocationConfiguration(method);
- iConfigMap.put(method, iConfig);
- }
- QualifiedName qName = new QualifiedName(es.getName() + "/" + service.getName());
- ProxyConfiguration pConfiguration = new ProxyConfiguration(qName, iConfigMap, null, messageFactory);
- proxyFactory.setBusinessInterface(serviceContract.getInterface());
- proxyFactory.setProxyConfiguration(pConfiguration);
- config.addTargetProxyFactory(service.getName(), proxyFactory);
- configuredService.setProxyFactory(proxyFactory);
- if (policyBuilder != null) {
- // invoke the reference builder to handle additional policy metadata
- policyBuilder.build(configuredService, context);
}
- // add tail interceptor
- for (InvocationConfiguration iConfig : (Collection<InvocationConfiguration>) iConfigMap.values()) {
- iConfig.addTargetInterceptor(new InvokerInterceptor());
- }
-
- es.getConfiguredService().setRuntimeConfiguration(config);
}
private class FooClientFactory implements ObjectFactory {
Modified: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java Mon Feb 27 01:07:48 2006
@@ -14,27 +14,35 @@
public void connect(ProxyFactory sourceFactory, ProxyFactory targetFactory, Class targetType, boolean downScope,
ScopeContext targetScopeContext) throws BuilderConfigException {
- if (!(FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType))) {
+ if (!(FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType) || FooEntryPointRuntimeConfiguration.class
+ .isAssignableFrom(targetType))) {
return;
}
for (InvocationConfiguration sourceInvocationConfig : sourceFactory.getProxyConfiguration().getInvocationConfigurations()
.values()) {
- FooTargetInvoker invoker = new FooTargetInvoker(sourceFactory.getProxyConfiguration().getTargetName().getPartName(),
- targetScopeContext);
+ if (FooExternalServiceRuntimeConfiguration.class.isAssignableFrom(targetType)) {
+ FooESTargetInvoker invoker = new FooESTargetInvoker(sourceFactory.getProxyConfiguration().getTargetName()
+ .getPartName(), targetScopeContext);
+ sourceInvocationConfig.setTargetInvoker(invoker);
+ } else {
+ FooEPTargetInvoker invoker = new FooEPTargetInvoker(sourceFactory.getProxyConfiguration().getTargetName()
+ .getPartName(), sourceInvocationConfig.getMethod(), targetScopeContext);
+ sourceInvocationConfig.setTargetInvoker(invoker);
+
+ }
// if (downScope) {
// // the source scope is shorter than the target, so the invoker can cache the target instance
// invoker.setCacheable(true);
// } else {
// invoker.setCacheable(false);
// }
- sourceInvocationConfig.setTargetInvoker(invoker);
}
}
public void completeTargetChain(ProxyFactory targetFactory, Class targetType, ScopeContext targetScopeContext)
throws BuilderConfigException {
- //TODO implement
+ // TODO implement
}
}
Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java?rev=381293&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEPTargetInvoker.java Mon Feb 27 01:07:48 2006
@@ -0,0 +1,93 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.container.java.mock.binding.foo;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.EntryPointContext;
+import org.apache.tuscany.core.context.InstanceContext;
+import org.apache.tuscany.core.context.ScopeContext;
+import org.apache.tuscany.core.context.TargetException;
+import org.apache.tuscany.core.invocation.Interceptor;
+import org.apache.tuscany.core.invocation.TargetInvoker;
+import org.apache.tuscany.core.message.Message;
+
+/**
+ *
+ * @version $Rev$ $Date$
+ */
+public class FooEPTargetInvoker implements TargetInvoker {
+
+ private String name;
+
+ private ScopeContext container;
+
+ private EntryPointContext context;
+
+ private Method operation;
+
+ public FooEPTargetInvoker(String esName, Method operation, ScopeContext container) {
+ assert (esName != null) : "No external service name specified";
+ assert (container != null) : "No scope container specified";
+ assert (operation != null) : "No operation method specified";
+ name = esName;
+ this.container = container;
+ }
+
+ public Object invokeTarget(Object payload) throws InvocationTargetException {
+ if (context == null) {
+ InstanceContext iContext = container.getContext(name);
+ if (!(iContext instanceof EntryPointContext)) {
+ TargetException te = new TargetException("Unexpected target context type");
+ te.setIdentifier(iContext.getClass().getName());
+ te.addContextName(iContext.getName());
+ throw te;
+ }
+ context = (EntryPointContext) iContext;
+ }
+ try {
+ InvocationHandler handler = (InvocationHandler) context.getInstance(null);
+ if (payload != null) {
+ return handler.invoke(null, operation, new Object[] { payload });
+ } else {
+ return handler.invoke(null, operation, (Object[]) null);
+ }
+ } catch (Throwable e) {
+ throw new TargetException(e);
+ }
+ }
+
+ public boolean isCacheable() {
+ return false;
+ }
+
+ public Message invoke(Message msg) {
+ try {
+ Object resp = invokeTarget(msg.getBody());
+ msg.setBody(resp);
+ } catch (InvocationTargetException e) {
+ msg.setBody(e.getCause());
+ } catch (Throwable e) {
+ msg.setBody(e);
+ }
+ return msg;
+ }
+
+ public void setNext(Interceptor next) {
+ throw new UnsupportedOperationException();
+ }
+
+}
Copied: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java (from r381049, incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java?p2=incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java&p1=incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java&r1=381049&r2=381293&rev=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java Mon Feb 27 01:07:48 2006
@@ -24,11 +24,11 @@
import org.apache.tuscany.core.message.Message;
/**
- * Responsible for invoking a mock transport binding client
+ * Responsible for invoking a mock transport binding client configured for an external service
*
* @version $Rev$ $Date$
*/
-public class FooTargetInvoker implements TargetInvoker {
+public class FooESTargetInvoker implements TargetInvoker {
private String name;
@@ -36,7 +36,7 @@
private ExternalServiceContext context;
- public FooTargetInvoker(String esName, ScopeContext container) {
+ public FooESTargetInvoker(String esName, ScopeContext container) {
assert (esName != null) : "No external service name specified";
assert (container != null) : "No scope container specified";
name = esName;
Added: incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java?rev=381293&view=auto
==============================================================================
--- incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java (added)
+++ incubator/tuscany/java/sca/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooEntryPointRuntimeConfiguration.java Mon Feb 27 01:07:48 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.container.java.mock.binding.foo;
+
+import org.apache.tuscany.core.builder.impl.EntryPointRuntimeConfiguration;
+import org.apache.tuscany.core.message.MessageFactory;
+
+/**
+ *
+ *
+ * @version $Rev$ $Date$
+ */
+public class FooEntryPointRuntimeConfiguration extends EntryPointRuntimeConfiguration {
+
+ public FooEntryPointRuntimeConfiguration(String name, String serviceName, MessageFactory msgFactory) {
+ super(name, serviceName, msgFactory);
+ }
+
+}
+
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/BaseExternalServiceRuntimeConfiguration.java Mon Feb 27 01:07:48 2006
@@ -44,7 +44,7 @@
private String targetServiceName;
- private Map targetProxyFactories;
+ private Map<String,ProxyFactory> targetProxyFactories;
public BaseExternalServiceRuntimeConfiguration(String name, ObjectFactory objectFactory) {
assert (name != null) : "Name was null";
@@ -83,7 +83,7 @@
}
}
- public Map getTargetProxyFactories() {
+ public Map<String,ProxyFactory> getTargetProxyFactories() {
if (targetProxyFactories == null) {
targetProxyFactories = new HashMap(1);
targetProxyFactories.put(targetServiceName, proxyFactory);
Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java?rev=381293&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/EntryPointRuntimeConfiguration.java Mon Feb 27 01:07:48 2006
@@ -0,0 +1,101 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.tuscany.core.builder.impl;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.core.builder.ContextCreationException;
+import org.apache.tuscany.core.builder.RuntimeConfiguration;
+import org.apache.tuscany.core.context.EntryPointContext;
+import org.apache.tuscany.core.context.impl.EntryPointContextImpl;
+import org.apache.tuscany.core.invocation.spi.ProxyFactory;
+import org.apache.tuscany.core.message.MessageFactory;
+import org.apache.tuscany.model.assembly.Scope;
+
+/**
+ * Produces entry point contexts
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class EntryPointRuntimeConfiguration implements RuntimeConfiguration<EntryPointContext> {
+
+ private String name;
+
+ private ProxyFactory proxyFactory;
+
+ private String epServiceName;
+
+ private MessageFactory msgFactory;
+
+ private Map<String,ProxyFactory> sourceProxyFactories;
+
+ public EntryPointRuntimeConfiguration(String name, String serviceName, MessageFactory msgFactory) {
+ assert (name != null) : "Entry point name was null";
+ assert (msgFactory != null) : "Message factory was null";
+ this.name = name;
+ this.msgFactory = msgFactory;
+ }
+
+ public EntryPointContext createInstanceContext() throws ContextCreationException {
+ return new EntryPointContextImpl(name,proxyFactory,msgFactory);
+ }
+
+ public Scope getScope() {
+ return Scope.MODULE;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void prepare() {
+ }
+
+ public void addTargetProxyFactory(String serviceName, ProxyFactory factory) {
+ // no wires to an entry point from with an aggregate
+ }
+
+ public ProxyFactory getTargetProxyFactory(String serviceName) {
+ return null;
+ }
+
+ public Map<String,ProxyFactory> getTargetProxyFactories() {
+ return Collections.EMPTY_MAP;
+ }
+
+ public void addSourceProxyFactory(String referenceName, ProxyFactory factory) {
+ assert (referenceName != null) : "No reference name specified";
+ assert (factory != null) : "Proxy factory was null";
+ this.epServiceName = referenceName; // entry points are configured with only one reference
+ this.proxyFactory = factory;
+ }
+
+ public ProxyFactory getSourceProxyFactory(String referenceName) {
+ if (this.epServiceName.equals(referenceName)) {
+ return proxyFactory;
+ } else {
+ return null;
+ }
+ }
+
+ public Map<String,ProxyFactory> getSourceProxyFactories() {
+ if (sourceProxyFactories == null) {
+ sourceProxyFactories = new HashMap(1);
+ sourceProxyFactories.put(epServiceName, proxyFactory);
+ }
+ return sourceProxyFactories;
+ }
+}
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractAggregateContext.java Mon Feb 27 01:07:48 2006
@@ -120,7 +120,7 @@
public AbstractAggregateContext() {
scopeIndex = new ConcurrentHashMap();
- //FIXME the factory should be injected
+ // FIXME the factory should be injected
module = new AssemblyFactoryImpl().createModule();
}
@@ -133,7 +133,7 @@
this.monitorFactory = factory;
scopeIndex = new ConcurrentHashMap();
parentContext = parent;
- //FIXME the factory should be injected
+ // FIXME the factory should be injected
module = new AssemblyFactoryImpl().createModule();
}
@@ -345,6 +345,52 @@
}
}
+ for (EntryPoint ep : newModule.getEntryPoints()) {
+ RuntimeConfiguration<InstanceContext> config = (RuntimeConfiguration<InstanceContext>) ep
+ .getConfiguredReference().getRuntimeConfiguration();
+ wireSource(config);
+ buildTarget(config);
+ try {
+ if (config.getSourceProxyFactories() != null) {
+ for (ProxyFactory sourceProxyFactory : (Collection<ProxyFactory>) config.getSourceProxyFactories()
+ .values()) {
+ sourceProxyFactory.initialize();
+ }
+ }
+ if (config.getTargetProxyFactories() != null) {
+ for (ProxyFactory targetProxyFactory : (Collection<ProxyFactory>) config.getTargetProxyFactories()
+ .values()) {
+ targetProxyFactory.initialize();
+ }
+ }
+ } catch (ProxyInitializationException e) {
+ throw new ConfigurationException(e);
+ }
+
+ }
+ for (ExternalService es : newModule.getExternalServices()) {
+ RuntimeConfiguration<InstanceContext> config = (RuntimeConfiguration<InstanceContext>) es
+ .getConfiguredService().getRuntimeConfiguration();
+ buildTarget(config);
+ try {
+ if (config.getSourceProxyFactories() != null) {
+ for (ProxyFactory sourceProxyFactory : (Collection<ProxyFactory>) config.getSourceProxyFactories()
+ .values()) {
+ sourceProxyFactory.initialize();
+ }
+ }
+ if (config.getTargetProxyFactories() != null) {
+ for (ProxyFactory targetProxyFactory : (Collection<ProxyFactory>) config.getTargetProxyFactories()
+ .values()) {
+ targetProxyFactory.initialize();
+ }
+ }
+ } catch (ProxyInitializationException e) {
+ throw new ConfigurationException(e);
+ }
+
+ }
+
}
// merge existing module component assets
module.getComponents().addAll(oldModule.getComponents());
@@ -544,13 +590,13 @@
.getPortName());
boolean downScope = scopeStrategy.downScopeReference(sourceScope, target.getScope());
configurationContext.wire(sourceFactory, targetFactory, target.getClass(), downScope, scopeContexts
- .get(sourceScope));
+ .get(target.getScope()));
}
}
// wire invokers when the proxy only contains the target chain
- if(source.getTargetProxyFactories() != null){
+ if (source.getTargetProxyFactories() != null) {
for (ProxyFactory targetFactory : ((Map<String, ProxyFactory>) source.getTargetProxyFactories()).values()) {
- configurationContext.wire(targetFactory,source.getClass(),scopeContexts.get(sourceScope));
+ configurationContext.wire(targetFactory, source.getClass(), scopeContexts.get(sourceScope));
}
}
source.prepare();
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java?rev=381293&r1=381292&r2=381293&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/EntryPointContextImpl.java Mon Feb 27 01:07:48 2006
@@ -16,7 +16,6 @@
import java.lang.reflect.InvocationHandler;
import org.apache.tuscany.core.context.AbstractContext;
-import org.apache.tuscany.core.context.AggregateContext;
import org.apache.tuscany.core.context.ContextInitException;
import org.apache.tuscany.core.context.CoreRuntimeException;
import org.apache.tuscany.core.context.EntryPointContext;
@@ -35,8 +34,6 @@
private MessageFactory messageFactory;
- private AggregateContext parentContext;
-
private ProxyFactory proxyFactory;
private Object target;
@@ -56,15 +53,15 @@
* @param messageFactory a factory for generating invocation messages
* @throws ContextInitException if an error occurs creating the entry point
*/
- public EntryPointContextImpl(String name, ProxyFactory proxyFactory, AggregateContext parentContext,
- MessageFactory messageFactory) throws ContextInitException {
+ public EntryPointContextImpl(String name, ProxyFactory proxyFactory, MessageFactory messageFactory)
+ throws ContextInitException {
super(name);
assert (proxyFactory != null) : "Proxy factory was null";
assert (messageFactory != null) : "Message factory was null";
this.proxyFactory = proxyFactory;
- this.parentContext = parentContext;
this.messageFactory = messageFactory;
- invocationHandler = new JDKInvocationHandler(messageFactory,proxyFactory.getProxyConfiguration().getInvocationConfigurations());
+ invocationHandler = new JDKInvocationHandler(messageFactory, proxyFactory.getProxyConfiguration()
+ .getInvocationConfigurations());
}
// ----------------------------------