Author: jmarino
Date: Mon Apr 24 08:42:24 2006
New Revision: 396585
URL: http://svn.apache.org/viewcvs?rev=396585&view=rev
Log:
fix class cast exception related to wiring entry points directly to an external
service
Added:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooExternalServiceTargetInvoker.java
- copied, changed from r396550,
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java
Removed:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java
Modified:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
incubator/tuscany/java/sca/containers/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/config/processor/ReferenceAndPropertyProcessor.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
Added:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java?rev=396585&view=auto
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java
(added)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EPtoExternalServiceTestCase.java
Mon Apr 24 08:42:24 2006
@@ -0,0 +1,86 @@
+package org.apache.tuscany.container.java.integration.binding;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import org.apache.tuscany.container.java.assembly.mock.HelloWorldService;
+import org.apache.tuscany.container.java.builder.MockInterceptorBuilder;
+import org.apache.tuscany.container.java.invocation.mock.MockSyncInterceptor;
+import org.apache.tuscany.container.java.mock.MockFactory;
+import org.apache.tuscany.core.builder.system.PolicyBuilderRegistry;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.context.EntryPointContext;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.event.RequestEnd;
+import org.apache.tuscany.core.context.event.RequestStart;
+import org.apache.tuscany.core.runtime.RuntimeContext;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class EPtoExternalServiceTestCase extends TestCase {
+ private Method hello;
+
+ public void testEPtoESInvocation() throws Throwable {
+
+
+ RuntimeContext runtime =
MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
+ PolicyBuilderRegistry registry = (PolicyBuilderRegistry)
((CompositeContext)
runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
+
.getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
+ MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
+ MockInterceptorBuilder interceptorBuilder = new
MockInterceptorBuilder(mockInterceptor, false);
+ registry.registerTargetBuilder(interceptorBuilder);
+
runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
+ CompositeContext child = (CompositeContext)
runtime.getRootContext().getContext("test.module");
+
child.registerModelObject(MockFactory.createModuleWithEntryPointToExternalService());
+ child.publish(new ModuleStart(this));
+ Object id = new Object();
+ child.publish(new RequestStart(this, id));
+ EntryPointContext ctx = (EntryPointContext) child.getContext("source");
+ Assert.assertNotNull(ctx);
+ InvocationHandler handler = (InvocationHandler) ctx.getHandler();
+ Assert.assertEquals(0, mockInterceptor.getCount());
+ Object response = handler.invoke(null, hello, new Object[]{"foo"});
+ Assert.assertEquals("foo", response);
+ Assert.assertEquals(1, mockInterceptor.getCount());
+
+ ctx = (EntryPointContext) child.getContext("source");
+ Assert.assertNotNull(ctx);
+ handler = (InvocationHandler) ctx.getHandler();
+ response = handler.invoke(null, hello, new Object[]{"foo"});
+// HelloWorldService service1 = (HelloWorldService)
child.getContext("target").getInstance(null);
+// Assert.assertEquals(2, service1.count());
+//
+ child.publish(new RequestEnd(this, id));
+
+ // second request
+ Object id2 = new Object();
+ child.publish(new RequestStart(this, id2));
+ ctx = (EntryPointContext) child.getContext("source");
+ Assert.assertNotNull(ctx);
+ handler = (InvocationHandler) ctx.getHandler();
+ Assert.assertEquals(2, mockInterceptor.getCount());
+ response = handler.invoke(null, hello, new Object[]{"foo"});
+ Assert.assertEquals("foo", response);
+ Assert.assertEquals(3, mockInterceptor.getCount());
+// HelloWorldService service2 = (HelloWorldService)
child.getContext("target").getInstance(null);
+// Assert.assertEquals(1, service2.count());
+ child.publish(new RequestEnd(this, id2));
+
+ child.publish(new ModuleStop(this));
+ runtime.stop();
+
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ hello = HelloWorldService.class.getMethod("hello", String.class);
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+}
Added:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java?rev=396585&view=auto
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java
(added)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/ExternalServiceProxyInvokeTestCase.java
Mon Apr 24 08:42:24 2006
@@ -0,0 +1,55 @@
+package org.apache.tuscany.container.java.integration.binding;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import org.apache.tuscany.container.java.assembly.mock.HelloWorldService;
+import org.apache.tuscany.container.java.builder.MockInterceptorBuilder;
+import org.apache.tuscany.container.java.invocation.mock.MockSyncInterceptor;
+import org.apache.tuscany.container.java.mock.MockFactory;
+import org.apache.tuscany.core.builder.system.PolicyBuilderRegistry;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.event.RequestEnd;
+import org.apache.tuscany.core.context.event.RequestStart;
+import org.apache.tuscany.core.runtime.RuntimeContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ExternalServiceProxyInvokeTestCase extends TestCase {
+
+ /**
+ * Tests that an external service can be invoked by locating a proxy
+ * @throws Throwable
+ */
+ public void testProxyInvocation() throws Throwable {
+ RuntimeContext runtime =
MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
+ PolicyBuilderRegistry registry = (PolicyBuilderRegistry)
((CompositeContext)
runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
+
.getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
+ MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
+ MockInterceptorBuilder interceptorBuilder = new
MockInterceptorBuilder(mockInterceptor, false);
+ registry.registerTargetBuilder(interceptorBuilder);
+
runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
+ CompositeContext child = (CompositeContext)
runtime.getRootContext().getContext("test.module");
+
child.registerModelObject(MockFactory.createModuleWithEntryPointToExternalService());
+ child.publish(new ModuleStart(this));
+ Object id = new Object();
+ child.publish(new RequestStart(this, id));
+ HelloWorldService service1 = (HelloWorldService)
child.getContext("target").getInstance(null);
+ Assert.assertEquals("foo", service1.hello("foo"));
+
+ child.publish(new RequestEnd(this, id));
+ child.publish(new ModuleStop(this));
+ runtime.stop();
+
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+}
Modified:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java?rev=396585&r1=396584&r2=396585&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
(original)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
Mon Apr 24 08:42:24 2006
@@ -16,17 +16,9 @@
*/
package org.apache.tuscany.container.java.mock;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
import junit.framework.Assert;
-import org.osoa.sca.annotations.ComponentName;
-import org.osoa.sca.annotations.Destroy;
-import org.osoa.sca.annotations.Init;
-
+import org.apache.tuscany.common.monitor.MonitorFactory;
+import org.apache.tuscany.common.monitor.impl.NullMonitorFactory;
import org.apache.tuscany.container.java.assembly.JavaAssemblyFactory;
import org.apache.tuscany.container.java.assembly.JavaImplementation;
import org.apache.tuscany.container.java.assembly.impl.JavaAssemblyFactoryImpl;
@@ -50,11 +42,12 @@
import org.apache.tuscany.core.builder.BuilderException;
import org.apache.tuscany.core.builder.ContextFactory;
import org.apache.tuscany.core.builder.ContextFactoryBuilder;
-import org.apache.tuscany.core.builder.WireBuilder;
import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry;
-import org.apache.tuscany.core.builder.system.PolicyBuilderRegistry;
-import org.apache.tuscany.core.builder.system.DefaultPolicyBuilderRegistry;
+import org.apache.tuscany.core.builder.WireBuilder;
import org.apache.tuscany.core.builder.impl.DefaultWireBuilder;
+import org.apache.tuscany.core.builder.system.DefaultPolicyBuilderRegistry;
+import org.apache.tuscany.core.builder.system.PolicyBuilderRegistry;
+import org.apache.tuscany.core.client.BootstrapHelper;
import org.apache.tuscany.core.config.ConfigurationException;
import org.apache.tuscany.core.config.JavaIntrospectionHelper;
import org.apache.tuscany.core.context.CompositeContext;
@@ -68,6 +61,8 @@
import org.apache.tuscany.core.injection.MethodInjector;
import org.apache.tuscany.core.injection.PojoObjectFactory;
import org.apache.tuscany.core.injection.SingletonObjectFactory;
+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.runtime.RuntimeContextImpl;
import org.apache.tuscany.core.system.assembly.SystemAssemblyFactory;
@@ -76,12 +71,9 @@
import org.apache.tuscany.core.system.builder.SystemContextFactoryBuilder;
import org.apache.tuscany.core.system.builder.SystemEntryPointBuilder;
import org.apache.tuscany.core.system.builder.SystemExternalServiceBuilder;
-import org.apache.tuscany.core.client.BootstrapHelper;
-import org.apache.tuscany.core.message.impl.MessageFactoryImpl;
-import org.apache.tuscany.core.message.MessageFactory;
import org.apache.tuscany.core.wire.WireFactoryFactory;
-import org.apache.tuscany.core.wire.service.DefaultWireFactoryService;
import org.apache.tuscany.core.wire.jdk.JDKWireFactoryFactory;
+import org.apache.tuscany.core.wire.service.DefaultWireFactoryService;
import org.apache.tuscany.model.assembly.AssemblyContext;
import org.apache.tuscany.model.assembly.AtomicComponent;
import org.apache.tuscany.model.assembly.Component;
@@ -97,8 +89,15 @@
import org.apache.tuscany.model.assembly.Service;
import org.apache.tuscany.model.assembly.impl.AssemblyContextImpl;
import org.apache.tuscany.model.types.java.JavaServiceContract;
-import org.apache.tuscany.common.monitor.MonitorFactory;
-import org.apache.tuscany.common.monitor.impl.NullMonitorFactory;
+import org.osoa.sca.annotations.ComponentName;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
/**
* Generates test components, modules, and runtime artifacts
@@ -294,8 +293,8 @@
}
/**
- * Creates a module with a Java-based source component wired to a "target"
external service configured with the
- * [EMAIL PROTECTED] FooBinding}
+ * Creates a module with a Java-based source component wired to a "target"
external service configured with the [EMAIL PROTECTED]
+ * FooBinding}
*/
public static Module createModuleWithExternalService() {
Component sourceComponent = createComponent("source",
HelloWorldClient.class, Scope.MODULE);
@@ -332,8 +331,8 @@
}
/**
- * Creates a module with an entry point named "source" configured with the
[EMAIL PROTECTED] FooBinding} wired to a service
- * offered by a Java-based component named "target"
+ * Creates a module with an entry point named "source" configured with the
[EMAIL PROTECTED] FooBinding} wired to a service offered by a
+ * Java-based component named "target"
*
* @param scope the scope of the target service
*/
@@ -373,6 +372,49 @@
return module;
}
+ /**
+ * Creates a module with an entry point wired to a "target" external
service configured with the [EMAIL PROTECTED] FooBinding}
+ */
+ public static Module createModuleWithEntryPointToExternalService() {
+ //Component sourceComponent = createComponent("source",
HelloWorldClient.class, Scope.MODULE);
+
+ EntryPoint sourceEP = createFooBindingEntryPoint("source",
HelloWorldService.class);
+ sourceEP.getConfiguredService().getPort().setName("HelloWorldService");
+ sourceEP.initialize(assemblyContext);
+
+
+ ExternalService targetES = createFooBindingExternalService("target",
HelloWorldService.class);
+
+ Service targetService = factory.createService();
+ JavaServiceContract targetContract =
factory.createJavaServiceContract();
+ targetContract.setInterface(HelloWorldService.class);
+ targetService.setServiceContract(targetContract);
+ targetService.setName("HelloWorld");
+ ConfiguredService cTargetService = factory.createConfiguredService();
+ cTargetService.setPort(targetService);
+ targetES.setConfiguredService(cTargetService);
+ targetES.initialize(assemblyContext);
+
+ Reference ref = factory.createReference();
+ ref.setName("setHelloWorldService");
+ JavaServiceContract inter = factory.createJavaServiceContract();
+ inter.setInterface(HelloWorldService.class);
+ ref.setServiceContract(inter);
+
+
+ ConfiguredReference cref =
factory.createConfiguredReference(ref.getName(), "target");
+ cref.setPort(ref);
+ cref.initialize(assemblyContext);
+ sourceEP.setConfiguredReference(cref);
+ sourceEP.initialize(assemblyContext);
+
+ Module module = factory.createModule();
+ module.setName("test.module");
+ module.getEntryPoints().add(sourceEP);
+ module.getExternalServices().add(targetES);
+ module.initialize(assemblyContext);
+ return module;
+ }
/**
@@ -443,7 +485,6 @@
cReference2.initialize(assemblyContext);
source.getConfiguredReferences().add(cReference2);
-
// wire multiplicity using a field
JavaServiceContract refContract3 =
systemFactory.createJavaServiceContract();
refContract3.setInterface(Target.class);
@@ -482,7 +523,7 @@
/**
* Creates a test system module with source and target components wired
together.
- *
+ *
* @see org.apache.tuscany.core.mock.component.Source
* @see org.apache.tuscany.core.mock.component.Target
*/
@@ -548,7 +589,6 @@
cReference2.initialize(assemblyContext);
source.getConfiguredReferences().add(cReference2);
-
// wire multiplicity using a field
JavaServiceContract refContract3 =
systemFactory.createJavaServiceContract();
refContract3.setInterface(Target.class);
@@ -585,7 +625,6 @@
}
-
/**
* Returns a collection of bootstrap configuration builders
*/
@@ -600,7 +639,7 @@
/**
* Creates an composite context faxtory
*
- * @param name the name of the component
+ * @param name the name of the component
* @throws BuilderException
* @see ContextFactory
*/
Modified:
incubator/tuscany/java/sca/containers/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/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java?rev=396585&r1=396584&r2=396585&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java
(original)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBindingWireBuilder.java
Mon Apr 24 08:42:24 2006
@@ -3,11 +3,13 @@
import org.apache.tuscany.core.builder.BuilderConfigException;
import org.apache.tuscany.core.builder.WireBuilder;
import org.apache.tuscany.core.context.ScopeContext;
-import org.apache.tuscany.core.wire.SourceInvocationConfiguration;
-import org.apache.tuscany.core.wire.TargetWireFactory;
-import org.apache.tuscany.core.wire.SourceWireFactory;
import org.apache.tuscany.core.runtime.RuntimeContext;
import org.apache.tuscany.core.system.annotation.Autowire;
+import org.apache.tuscany.core.wire.SourceInvocationConfiguration;
+import org.apache.tuscany.core.wire.SourceWireFactory;
+import org.apache.tuscany.core.wire.TargetInvocationConfiguration;
+import org.apache.tuscany.core.wire.TargetInvoker;
+import org.apache.tuscany.core.wire.TargetWireFactory;
import org.osoa.sca.annotations.Init;
public class FooBindingWireBuilder implements WireBuilder {
@@ -15,7 +17,7 @@
public FooBindingWireBuilder() {
super();
}
-
+
private RuntimeContext runtimeContext;
@Autowire
@@ -23,35 +25,36 @@
runtimeContext = context;
}
- @Init(eager=true)
+ @Init(eager = true)
public void init() {
runtimeContext.addBuilder(this);
}
public void connect(SourceWireFactory sourceFactory, TargetWireFactory
targetFactory, Class targetType, boolean downScope,
- ScopeContext targetScopeContext) throws BuilderConfigException {
+ ScopeContext targetScopeContext) throws
BuilderConfigException {
if
(!FooExternalServiceContextFactory.class.isAssignableFrom(targetType)) {
return;
}
for (SourceInvocationConfiguration sourceInvocationConfig :
sourceFactory.getConfiguration().getInvocationConfigurations()
.values()) {
- FooESTargetInvoker invoker = new
FooESTargetInvoker(sourceFactory.getConfiguration().getTargetName()
- .getPartName(), targetScopeContext);
+ FooExternalServiceTargetInvoker invoker = new
FooExternalServiceTargetInvoker(sourceFactory.getConfiguration().getTargetName()
+ .getPartName());
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);
- // }
}
}
public void completeTargetChain(TargetWireFactory targetFactory, Class
targetType, ScopeContext targetScopeContext)
throws BuilderConfigException {
- // TODO implement
+ if
(FooExternalServiceContextFactory.class.isAssignableFrom(targetType)) {
+ for (TargetInvocationConfiguration targetInvocationConfig :
targetFactory.getConfiguration().getInvocationConfigurations()
+ .values()) {
+ TargetInvoker invoker = new
FooExternalServiceTargetInvoker(targetFactory.getConfiguration().getTargetName().getQualifiedName());
+ targetInvocationConfig.setTargetInvoker(invoker);
+ }
+
+ }
}
}
Copied:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooExternalServiceTargetInvoker.java
(from r396550,
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java)
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooExternalServiceTargetInvoker.java?p2=incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooExternalServiceTargetInvoker.java&p1=incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java&r1=396550&r2=396585&rev=396585&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooESTargetInvoker.java
(original)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooExternalServiceTargetInvoker.java
Mon Apr 24 08:42:24 2006
@@ -13,48 +13,30 @@
*/
package org.apache.tuscany.container.java.mock.binding.foo;
-import java.lang.reflect.InvocationTargetException;
-
+import org.apache.tuscany.core.context.ExternalServiceContext;
+import org.apache.tuscany.core.message.Message;
import org.apache.tuscany.core.wire.Interceptor;
import org.apache.tuscany.core.wire.TargetInvoker;
-import org.apache.tuscany.core.message.Message;
-import org.apache.tuscany.core.context.ExternalServiceContext;
-import org.apache.tuscany.core.context.ScopeContext;
-import org.apache.tuscany.core.context.TargetException;
-import org.apache.tuscany.core.context.Context;
+
+import java.lang.reflect.InvocationTargetException;
/**
- * Responsible for invoking a mock transport binding client configured for an
external service
- *
+ * Responsible for invoking a mock transport binding client configured for an
external service over a wire
+ *
* @version $Rev$ $Date$
*/
-public class FooESTargetInvoker implements TargetInvoker {
+public class FooExternalServiceTargetInvoker implements TargetInvoker {
private String name;
-
- private ScopeContext container;
-
private ExternalServiceContext context;
- public FooESTargetInvoker(String esName, ScopeContext container) {
+ public FooExternalServiceTargetInvoker(String esName) {
assert (esName != null) : "No external service name specified";
- assert (container != null) : "No scope container specified";
- name = esName;
- this.container = container;
+ name = esName; // name is not used; it is included for illustration
}
public Object invokeTarget(Object payload) throws
InvocationTargetException {
- if (context == null) {
- Context iContext = container.getContext(name);
- if (!(iContext instanceof ExternalServiceContext)) {
- TargetException te = new TargetException("Unexpected target
context type");
- te.setIdentifier(iContext.getClass().getName());
- te.addContextName(iContext.getName());
- throw te;
- }
- context = (ExternalServiceContext) iContext;
- }
- FooClient client = (FooClient) context.getHandler();
+ FooClient client = new FooClient();
if (payload != null) {
return client.invoke(payload);
} else {
@@ -84,8 +66,7 @@
public Object clone() throws CloneNotSupportedException {
try {
- FooESTargetInvoker invoker = (FooESTargetInvoker) super.clone();
- invoker.container = container;
+ FooExternalServiceTargetInvoker invoker =
(FooExternalServiceTargetInvoker) super.clone();
invoker.context = this.context;
invoker.name = this.name;
return invoker;
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceAndPropertyProcessor.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceAndPropertyProcessor.java?rev=396585&r1=396584&r2=396585&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceAndPropertyProcessor.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceAndPropertyProcessor.java
Mon Apr 24 08:42:24 2006
@@ -15,12 +15,15 @@
import org.apache.tuscany.core.config.ConfigurationLoadException;
import org.apache.tuscany.core.config.InvalidSetterException;
+import org.apache.tuscany.core.system.annotation.Autowire;
import org.apache.tuscany.model.assembly.ComponentInfo;
import org.apache.tuscany.model.assembly.Multiplicity;
import org.apache.tuscany.model.assembly.Property;
import org.apache.tuscany.model.assembly.Reference;
import org.apache.tuscany.model.assembly.ServiceContract;
+import org.apache.tuscany.model.assembly.AssemblyFactory;
import org.osoa.sca.annotations.Remotable;
+import org.osoa.sca.annotations.Scope;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
@@ -32,11 +35,20 @@
/**
* @version $$Rev$$ $$Date$$
*/
[EMAIL PROTECTED]("MODULE")
public class ReferenceAndPropertyProcessor extends AnnotationProcessorSupport {
+ private AssemblyFactory assemblyFactory;
- public void visitImplementationMethod(Method method, Annotation
annotation, ComponentInfo type) {
+ @Autowire
+ public void setAssemblyFactory(AssemblyFactory assemblyFactory) {
+ this.assemblyFactory = assemblyFactory;
+ }
+ public void visitImplementationMethod(Method method, Annotation
annotation, ComponentInfo type) {
+ if (annotation instanceof org.osoa.sca.annotations.Property){
+ // type.getProperties().add()
+ }
}
public void visitField(Field field, Annotation annotation, ComponentInfo
type) {
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java?rev=396585&r1=396584&r2=396585&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
Mon Apr 24 08:42:24 2006
@@ -379,6 +379,7 @@
}
for (ExternalService es : newModule.getExternalServices()) {
ContextFactory<Context> contextFactory =
(ContextFactory<Context>) es.getContextFactory();
+ wireSource(contextFactory);
buildTarget(contextFactory);
contextFactory.prepare(this);
try {
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java?rev=396585&r1=396584&r2=396585&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/NonProxiedTargetFactory.java
Mon Apr 24 08:42:24 2006
@@ -42,15 +42,7 @@
assert (resolver != null) : "Context resolver was null";
this.resolver = resolver;
- if (targetService.getPart() == null) {
- // FIXME not correct
- if (targetService.getPort() == null) {
- throw new FactoryInitException("No target service specified");
- }
- targetName = new QualifiedName(targetService.getPort().getName());
- } else {
- targetName = new QualifiedName(targetService.getPart().getName());
- }
+ targetName = new QualifiedName(targetService.getPart().getName());
qualifiedServiceName = new
QualifiedName("./"+targetName.getPortName());
}
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java?rev=396585&r1=396584&r2=396585&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/CompositeImpl.java
Mon Apr 24 08:42:24 2006
@@ -267,9 +267,13 @@
String partName = sourceURI.getPartName();
String referenceName = sourceURI.getServiceName();
if (referenceName != null) {
- Component<?> component = (Component<?>)getPart(partName);
- if (component != null) {
- configuredReference =
component.getConfiguredReference(referenceName);
+ //Component<?> component = (Component<?>)getPart(partName);
+// if (component != null) {
+ Part part = getPart(partName);
+ if (part instanceof Component){
+ configuredReference =
((Component)part).getConfiguredReference(referenceName);
+ } else if (part instanceof EntryPoint){
+ configuredReference =
((EntryPoint)part).getConfiguredReference();
}
} else {
EntryPoint entryPoint = (EntryPoint)getPart(partName);