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);


Reply via email to