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/06/01 07:32:29 UTC

svn commit: r410755 [1/2] - in /incubator/tuscany/sandbox/jboynes/sca: containers/container.groovy/ containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/ containers/container.groovy/src/test/java/org/apache/tuscany/container/gr...

Author: jmarino
Date: Wed May 31 22:32:27 2006
New Revision: 410755

URL: http://svn.apache.org/viewvc?rev=410755&view=rev
Log:
removal of proxy creation from wires; removal of getTargetService from RuntimeWire and moved to system wires only

Added:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemWireObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWireImpl.java
      - copied, changed from r410546, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWireImpl.java
      - copied, changed from r410546, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireService.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/ProxyCreationException.java
Removed:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/
Modified:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/pom.xml
    incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicContext.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaAtomicContext.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/GetServiceByNameTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaComponentBuilderTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaReferenceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/OutboundWireToJavaTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/composite/builder/CompositeBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/WireObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemBindingBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemReferenceContextImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundAutowire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InboundWireImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/OutboundWireImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/factories/MockContextFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/AtomicContextWireInvocationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/SystemInboundtoOutboundTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/SystemOutboundToInboundTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/SystemServiceContextWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicContextExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeContextExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceContextExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceContextExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/RuntimeWire.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
    incubator/tuscany/sandbox/jboynes/sca/test/src/main/java/org/apache/tuscany/test/ArtifactFactory.java

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/pom.xml?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/pom.xml (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/pom.xml Wed May 31 22:32:27 2006
@@ -54,6 +54,12 @@
             <version>1.1.3.4-RC8</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany</groupId>
+            <artifactId>tuscany-test</artifactId>
+            <version>${pom.version}</version>
+            <scope>test</scope>
+        </dependency>
         
         <dependency>
             <groupId>junit</groupId>

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicContext.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicContext.java Wed May 31 22:32:27 2006
@@ -33,6 +33,7 @@
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.WireService;
 import org.codehaus.groovy.control.CompilationFailedException;
 
 /**
@@ -44,9 +45,14 @@
     private List<Class<?>> services;
     private List<PropertyInjector> injectors;
 
-    public GroovyAtomicContext(String name, String script, List<Class<?>>services, Scope scope,
-                               List<PropertyInjector> injectors, CompositeContext parent, ScopeContext scopeContext) {
-        super(name, parent, scopeContext);
+    public GroovyAtomicContext(String name, String script,
+                               List<Class<?>>services,
+                               Scope scope,
+                               List<PropertyInjector> injectors,
+                               CompositeContext parent,
+                               ScopeContext scopeContext,
+                               WireService wireService) {
+        super(name, parent, scopeContext,wireService);
         this.script = script;
         this.services = services;
         this.scope = scope;
@@ -78,7 +84,7 @@
             // inject wires
             for (List<OutboundWire> referenceWires : getOutboundWires().values()) {
                 for (OutboundWire<?> wire : referenceWires) {
-                    object.setProperty(wire.getReferenceName(), wire.getTargetService());
+                    object.setProperty(wire.getReferenceName(), wireService.createProxy(wire));
                 }
             }
             return new GroovyInstanceWrapper(this, object);
@@ -109,7 +115,7 @@
             e.setIdentifier(service);
             throw e;
         }
-        return wire.getTargetService();
+        return wireService.createProxy(wire);
     }
 
     public void init(Object instance) throws TargetException {

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java Wed May 31 22:32:27 2006
@@ -33,7 +33,7 @@
         String script = component.getImplementation().getScript();
         String name = component.getName();
         Scope scope = component.getImplementation().getComponentType().getLifecycleScope();
-        return new GroovyAtomicContext(name, script, services, scope, null,parent, deploymentContext.getModuleScope());
+        return new GroovyAtomicContext(name, script, services, scope, null,parent, deploymentContext.getModuleScope(),wireService);
     }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java Wed May 31 22:32:27 2006
@@ -7,6 +7,7 @@
 import org.apache.tuscany.container.groovy.mock.Greeting;
 import org.apache.tuscany.core.context.scope.ModuleScopeContext;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.test.ArtifactFactory;
 import org.jmock.MockObjectTestCase;
 
 /**
@@ -33,7 +34,7 @@
         List<PropertyInjector> injectors = new ArrayList<PropertyInjector>();
         injectors.add(new SingletonInjector("property", "bar"));
         GroovyAtomicContext<Greeting> context = new GroovyAtomicContext<Greeting>("source", PropertyTestCase.SCRIPT,
-                services, Scope.MODULE, injectors, null,scope);
+                services, Scope.MODULE, injectors, null, scope, ArtifactFactory.createWireService());
         scope.register(context);
         Greeting greeting = context.getService();
         assertEquals("bar", greeting.greet("foo"));

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java Wed May 31 22:32:27 2006
@@ -7,6 +7,7 @@
 import org.apache.tuscany.container.groovy.mock.Greeting;
 import org.apache.tuscany.core.context.scope.ModuleScopeContext;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.test.ArtifactFactory;
 import org.jmock.MockObjectTestCase;
 
 /**
@@ -25,7 +26,7 @@
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
         GroovyAtomicContext<GroovyObject> context = new GroovyAtomicContext<GroovyObject>("source", script2,
-                services, Scope.MODULE, null, null,scope);
+                services, Scope.MODULE, null, null,scope, ArtifactFactory.createWireService());
         scope.register(context);
         GroovyObject object = context.getService();
         assertEquals("foo", object.invokeMethod("greet", "foo"));

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java Wed May 31 22:32:27 2006
@@ -9,6 +9,7 @@
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.test.ArtifactFactory;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 import org.jmock.core.Invocation;
@@ -43,7 +44,7 @@
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
         GroovyAtomicContext<Greeting> context = new GroovyAtomicContext<Greeting>("source", SCRIPT, services,
-                Scope.MODULE, null, null, scope);
+                Scope.MODULE, null, null, scope, ArtifactFactory.createWireService());
         scope.register(context);
         Mock mock = mock(OutboundWire.class);
         mock.expects(atLeastOnce()).method("getTargetService").will(
@@ -70,7 +71,7 @@
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
         GroovyAtomicContext<Greeting> context = new GroovyAtomicContext<Greeting>("source", SCRIPT2, services,
-                Scope.MODULE, null, null, scope);
+                Scope.MODULE, null, null, scope,ArtifactFactory.createWireService());
         scope.register(context);
         TargetInvoker invoker = context.createTargetInvoker("greeting", Greeting.class.getMethod("greet", String.class));
         assertEquals("foo", invoker.invokeTarget(new String[]{"foo"}));
@@ -87,7 +88,7 @@
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
         final GroovyAtomicContext<Greeting> context = new GroovyAtomicContext<Greeting>("source", SCRIPT2,
-                services, Scope.MODULE, null, null, scope);
+                services, Scope.MODULE, null, null, scope,ArtifactFactory.createWireService());
         scope.register(context);
         Mock mock = mock(InboundWire.class);
         mock.stubs().method("getServiceName").will(returnValue("Greeting"));

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml Wed May 31 22:32:27 2006
@@ -35,6 +35,12 @@
             <version>${pom.version}</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany</groupId>
+            <artifactId>tuscany-test</artifactId>
+            <version>${pom.version}</version>
+            <scope>test</scope>
+        </dependency>
 
         <dependency>
             <groupId>junit</groupId>

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaAtomicContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaAtomicContext.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaAtomicContext.java Wed May 31 22:32:27 2006
@@ -32,6 +32,7 @@
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.WireService;
 
 /**
  * Provides a runtime context for Java component implementations
@@ -50,8 +51,9 @@
                              EventInvoker<Object> initInvoker,
                              EventInvoker<Object> destroyInvoker,
                              List<Injector> injectors,
-                             Map<String, Member> members) {
-        super(name, parent, scopeContext, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members);
+                             Map<String, Member> members,
+                             WireService wireService) {
+        super(name, parent, scopeContext, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members, wireService);
         this.scope = scope;
     }
 
@@ -62,7 +64,7 @@
             e.addContextName(getName());
             throw e;
         }
-        return wire.getTargetService();
+        return wireService.createProxy(wire);
     }
 
     public T getService() throws TargetException {

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentBuilder.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentBuilder.java Wed May 31 22:32:27 2006
@@ -26,7 +26,7 @@
 
     public JavaAtomicContext build(CompositeContext parent, Component<JavaImplementation> component, DeploymentContext deploymentContext)
             throws BuilderConfigException {
-        PojoComponentType<?,?,?> componentType = component.getImplementation().getComponentType();
+        PojoComponentType<?, ?, ?> componentType = component.getImplementation().getComponentType();
 
         List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
         for (Service service : componentType.getServices().values()) {
@@ -75,7 +75,8 @@
                 componentType.getInitInvoker(),
                 componentType.getDestroyInvoker(),
                 injectors,
-                componentType.getReferenceMembers());
+                componentType.getReferenceMembers(),
+                wireService);
     }
 
 

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/GetServiceByNameTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/GetServiceByNameTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/GetServiceByNameTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/GetServiceByNameTestCase.java Wed May 31 22:32:27 2006
@@ -23,19 +23,15 @@
                 MockContextFactory.createJavaAtomicContext("target", scope, TargetImpl.class, Target.class, Scope.MODULE);
 
         Mock mock = mock(InboundWire.class);
+        mock.stubs().method("getBusinessInterface").will(returnValue(Target.class));
         mock.stubs().method("getServiceName").will(returnValue("Target"));
-        mock.stubs().method("getInvocationChains").will(returnValue(Collections.emptyMap()));
+        mock.expects(atLeastOnce()).method("getInvocationChains").will(returnValue(Collections.emptyMap()));
 
         InboundWire<Target> wire = (InboundWire<Target>) mock.proxy();
         context.addInboundWire(wire);
         context.prepare();
         context.start();
-
-        mock.expects(once()).method("getTargetService").will(returnValue(context.getTargetInstance()));
-
-        Target target = (Target) context.getService("Target");
-        target.setString("foo");
-        assertEquals("foo",target.getString());
+        assertTrue(context.getService("Target") instanceof Target);
     }
 
     

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaComponentBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaComponentBuilderTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaComponentBuilderTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaComponentBuilderTestCase.java Wed May 31 22:32:27 2006
@@ -13,6 +13,7 @@
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.Service;
 import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.test.ArtifactFactory;
 import org.jmock.MockObjectTestCase;
 
 /**
@@ -23,7 +24,7 @@
 
     @SuppressWarnings("unchecked")
     public void testBuild() throws Exception {
-        CompositeContext parent = new CompositeContextImpl(null, null, null);
+        CompositeContext parent = new CompositeContextImpl(null, null, null, ArtifactFactory.createWireService());
         ModuleScopeContext scope = new ModuleScopeContext(null);
         scope.start();
         PojoComponentType sourceType = new PojoComponentType();

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaReferenceWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaReferenceWireTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaReferenceWireTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/JavaReferenceWireTestCase.java Wed May 31 22:32:27 2006
@@ -1,21 +1,27 @@
 package org.apache.tuscany.container.java;
 
+import java.lang.reflect.Constructor;
 import java.lang.reflect.Member;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.container.java.mock.MockContextFactory;
 import org.apache.tuscany.container.java.mock.components.Source;
 import org.apache.tuscany.container.java.mock.components.SourceImpl;
 import org.apache.tuscany.container.java.mock.components.Target;
 import org.apache.tuscany.container.java.mock.components.TargetImpl;
 import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.WireService;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
+import org.jmock.core.Invocation;
+import org.jmock.core.Stub;
 
 /**
- * Validates wiring from a Java atomic contexts by scope to a reference context
+ * Validates wiring from a Java atomic context
  *
  * @version $$Rev$$ $$Date$$
  */
@@ -24,21 +30,36 @@
     public void testReferenceSet() throws Exception {
         ModuleScopeContext scope = new ModuleScopeContext(null);
         scope.start();
-        Target target = new TargetImpl();
+        final Target target = new TargetImpl();
         Map<String, Member> members = new HashMap<String, Member>();
         members.put("target", SourceImpl.class.getMethod("setTarget", Target.class));
-        JavaAtomicContext<?> sourceContext = MockContextFactory.createJavaAtomicContext("source", null, scope,
-                SourceImpl.class, Source.class,
-                scope.getScope(), false, null, null, null, members);
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(Source.class);
+        Constructor<SourceImpl> ctr = SourceImpl.class.getConstructor();
 
         Mock mock = mock(OutboundWire.class);
-        mock.expects(atLeastOnce()).method("getTargetService").will(returnValue(target));
+        mock.expects(atLeastOnce()).method("getInvocationChains");
         mock.expects(atLeastOnce()).method("getReferenceName").will(returnValue("target"));
         OutboundWire<Target> wire = (OutboundWire<Target>) mock.proxy();
-        sourceContext.addOutboundWire(wire);
 
-        sourceContext.start();
+        Mock mockService = mock(WireService.class);
+        mockService.expects(atLeastOnce()).method("createProxy").with(eq(wire)).will(new Stub() {
+            public Object invoke(Invocation invocation) throws Throwable {
+                OutboundWire wire = (OutboundWire) invocation.parameterValues.get(0);
+                wire.getInvocationChains();
+                return target;
+            }
+
+            public StringBuffer describeTo(StringBuffer stringBuffer) {
+                return null;
+            }
+        });
+        WireService wireService = (WireService) mockService.proxy();
+        JavaAtomicContext sourceContext = new JavaAtomicContext("source", null, scope, interfaces,
+                new PojoObjectFactory<SourceImpl>(ctr), scope.getScope(), false, null, null, null, members, wireService);
 
+        sourceContext.addOutboundWire(wire);
+        sourceContext.start();
         Source source = (Source) sourceContext.getService();
         assertSame(target, source.getTarget());
         scope.stop();

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/OutboundWireToJavaTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/OutboundWireToJavaTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/OutboundWireToJavaTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/OutboundWireToJavaTestCase.java Wed May 31 22:32:27 2006
@@ -33,6 +33,8 @@
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.test.ArtifactFactory;
 
 /**
  * Validates wiring from a service context to Java atomic contexts by scope
@@ -41,12 +43,13 @@
  */
 public class OutboundWireToJavaTestCase extends TestCase {
     private WorkContext workContext;
+    private WireService wireService = ArtifactFactory.createWireService();
 
     public void testToStatelessScope() throws Exception {
         StatelessScopeContext scope = new StatelessScopeContext(workContext);
         scope.start();
-        final OutboundWire wire = getWire(scope);
-        Target service = (Target) wire.getTargetService();
+        final OutboundWire<Target> wire = getWire(scope);
+        Target service = wireService.createProxy(wire);
         assertNotNull(service);
         service.setString("foo");
         assertEquals(null, service.getString());
@@ -59,8 +62,8 @@
 
         scope.onEvent(new RequestStart(this));
 
-        final OutboundWire wire = getWire(scope);
-        Target service = (Target) wire.getTargetService();
+        final OutboundWire<Target> wire = getWire(scope);
+        Target service = wireService.createProxy(wire);
         assertNotNull(service);
         service.setString("foo");
 
@@ -69,8 +72,8 @@
         FutureTask<Void> future = new FutureTask<Void>(new Runnable() {
             public void run() {
                 scope.onEvent(new RequestStart(this));
-                Target service2 = (Target) wire.getTargetService();
-                Target target2 = (Target) wire.getTargetService();
+                Target service2 = wireService.createProxy(wire);
+                Target target2 = wireService.createProxy(wire);
                 assertEquals(null, service2.getString());
                 service2.setString("bar");
                 assertEquals("bar", service2.getString());
@@ -93,9 +96,9 @@
         workContext.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session1);
         scope.onEvent(new HttpSessionStart(this, session1));
 
-        final OutboundWire wire = getWire(scope);
-        Target service = (Target) wire.getTargetService();
-        Target target = (Target) wire.getTargetService();
+        final OutboundWire<Target> wire = getWire(scope);
+        Target service = wireService.createProxy(wire);
+        Target target = wireService.createProxy(wire);
         assertNotNull(service);
         service.setString("foo");
         assertEquals("foo", service.getString());
@@ -108,10 +111,10 @@
         workContext.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session2);
         scope.onEvent(new HttpSessionStart(this, session2));
 
-        Target service2 = (Target) wire.getTargetService();
+        Target service2 = wireService.createProxy(wire);
         assertNotNull(service2);
         assertNull(service2.getString());
-        Target target2 = (Target) wire.getTargetService();
+        Target target2 = wireService.createProxy(wire);
         service2.setString("bar");
         assertEquals("bar", service2.getString());
         assertEquals("bar", target2.getString());
@@ -131,11 +134,10 @@
 
         ModuleScopeContext scope = new ModuleScopeContext(workContext);
         scope.start();
-        final OutboundWire wire = getWire(scope);
         scope.onEvent(new ModuleStart(this, null));
-        Target service = (Target) wire.getTargetService();
-        Target target = (Target) wire.getTargetService();
-
+        final OutboundWire<Target> wire = getWire(scope);
+        Target service = wireService.createProxy(wire);
+        Target target = wireService.createProxy(wire);
         assertNotNull(service);
         service.setString("foo");
         assertEquals("foo", service.getString());
@@ -145,7 +147,7 @@
     }
 
     @SuppressWarnings("unchecked")
-    private OutboundWire getWire(ScopeContext scope) throws NoSuchMethodException {
+    private OutboundWire<Target> getWire(ScopeContext scope) throws NoSuchMethodException {
         Connector connector = new ConnectorImpl();
         OutboundWire<Target> wire = createOutboundWire(new QualifiedName("target/Target"), Target.class);
 

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockContextFactory.java Wed May 31 22:32:27 2006
@@ -33,12 +33,16 @@
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.test.ArtifactFactory;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class MockContextFactory {
 
+    private static final WireService wireService = ArtifactFactory.createWireService();
+
     public static JavaAtomicContext<?> createJavaAtomicContext(String name, ScopeContext scopeContext, Class<?> clazz, Scope scope) throws NoSuchMethodException {
         return createJavaAtomicContext(name, null, scopeContext, clazz, clazz, scope, false, null, null, null, null);
 
@@ -63,7 +67,8 @@
             throws NoSuchMethodException {
         List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
         serviceInterfaces.add(service);
-        return new JavaAtomicContext(name, parent, scopeContext, serviceInterfaces, createObjectFactory(clazz), scope, eagerInit, initInvoker, destroyInvoker, injectors, members);
+        return new JavaAtomicContext(name, parent, scopeContext, serviceInterfaces, createObjectFactory(clazz),
+                scope, eagerInit, initInvoker, destroyInvoker, injectors, members,wireService);
     }
 
     /**

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java Wed May 31 22:32:27 2006
@@ -31,7 +31,7 @@
                                   DeploymentContext deploymentContext) throws BuilderConfigException {
         String name = component.getName();
         GenericApplicationContext applicationContext = component.getImplementation().getApplicationContext();
-        SpringCompositeContext context = new SpringCompositeContext(name, applicationContext, parent);
+        SpringCompositeContext context = new SpringCompositeContext(name, applicationContext, parent,wireService);
         CompositeComponentType<BoundService, BoundReference, ? extends Property> componentType = component.getImplementation().getComponentType();
         for (BoundService service : componentType.getServices().values()) {
             // call back into deployment context to handle building of services

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java Wed May 31 22:32:27 2006
@@ -12,6 +12,7 @@
 import org.apache.tuscany.spi.context.ServiceContext;
 import org.apache.tuscany.spi.extension.CompositeContextExtension;
 import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.WireService;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.BeanFactory;
 import org.springframework.beans.factory.BeanNotOfRequiredTypeException;
@@ -42,8 +43,8 @@
      * @param springContext the pre-instantiated Spring applicaiton context
      * @param parent        the SCA composite parent
      */
-    public SpringCompositeContext(String name, GenericApplicationContext springContext, CompositeContext parent) {
-        super(name, parent);
+    public SpringCompositeContext(String name, GenericApplicationContext springContext, CompositeContext parent, WireService wireService) {
+        super(name, parent, wireService);
         scaApplicationContext = new SCAApplicationContext();
         springContext.setParent(scaApplicationContext);
         this.springContext = springContext;

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java Wed May 31 22:32:27 2006
@@ -3,6 +3,7 @@
 import org.apache.tuscany.container.spring.mock.TestBean;
 import org.apache.tuscany.container.spring.mock.TestBeanImpl;
 import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.test.ArtifactFactory;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 import org.springframework.beans.PropertyValue;
@@ -21,7 +22,7 @@
 
     public void testInvocation() throws Exception {
         GenericApplicationContext ctx = createSpringContext();
-        SpringCompositeContext parent = new SpringCompositeContext("spring", ctx, null);
+        SpringCompositeContext parent = new SpringCompositeContext("spring", ctx, null, ArtifactFactory.createWireService());
         parent.start();
         TestBean referenceTarget = new TestBeanImpl();
         Mock mock = mock(ReferenceContext.class);

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java Wed May 31 22:32:27 2006
@@ -23,12 +23,12 @@
 public class ServiceInvocationTestCase extends TestCase {
 
     public void testInvocation() {
-        SpringCompositeContext context = new SpringCompositeContext("parent", createSpringContext(), null);
+        SpringCompositeContext context = new SpringCompositeContext("parent", createSpringContext(), null,ArtifactFactory.createWireService());
         context.start();
         InboundWire<TestBean> inboundWire = ArtifactFactory.createInboundWire("fooService", TestBean.class);
         OutboundWire<TestBean> outboundWire = ArtifactFactory.createOutboundWire("fooService", TestBean.class);
         ArtifactFactory.terminateWire(outboundWire);
-        ServiceContext<TestBean> serviceContext = new ServiceContextExtension<TestBean>("fooService", context);
+        ServiceContext<TestBean> serviceContext = new ServiceContextExtension<TestBean>("fooService", context, ArtifactFactory.createWireService());
         serviceContext.setInboundWire(inboundWire);
         serviceContext.setOutboundWire(outboundWire);
         Connector conntector = ArtifactFactory.createConnector();

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java Wed May 31 22:32:27 2006
@@ -6,6 +6,8 @@
 import org.apache.tuscany.container.spring.mock.TestBean;
 import org.apache.tuscany.container.spring.mock.TestBeanImpl;
 import org.apache.tuscany.container.spring.mock.VMBinding;
+import org.apache.tuscany.core.builder.Connector;
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.ServiceContext;
@@ -15,9 +17,8 @@
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundWire;
-import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.wire.WireService;
 import org.apache.tuscany.test.ArtifactFactory;
-import org.apache.tuscany.core.builder.Connector;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 import org.springframework.beans.factory.config.BeanDefinition;
@@ -31,20 +32,22 @@
 public class SpringCompositeBuilderTestCase extends MockObjectTestCase {
 
     public void testBuild() throws Exception {
+        WireService wireService = ArtifactFactory.createWireService();
         SpringCompositeBuilder builder = new SpringCompositeBuilder();
+        builder.setWireService(wireService);
         SpringImplementation impl = new SpringImplementation();
         impl.setComponentType(createComponentType());
         impl.setApplicationContext(createSpringContext());
         Component<SpringImplementation> component = new Component<SpringImplementation>("spring", impl);
         Mock mock = mock(BuilderRegistry.class);
-        ServiceContextExtension<TestBean> serviceContext = new ServiceContextExtension<TestBean>("fooService", null);
+        ServiceContextExtension<TestBean> serviceContext = new ServiceContextExtension<TestBean>("fooService", null, wireService);
         InboundWire<TestBean> inboundWire = ArtifactFactory.createInboundWire("fooSerice", TestBean.class);
         OutboundWire<TestBean> outboundwire = ArtifactFactory.createOutboundWire("fooService", TestBean.class);
         outboundwire.setTargetName(new QualifiedName("foo"));
         serviceContext.setInboundWire(inboundWire);
         serviceContext.setOutboundWire(outboundwire);
         Connector connector = ArtifactFactory.createConnector();
-        connector.connect(inboundWire,outboundwire,true);
+        connector.connect(inboundWire, outboundwire, true);
         ArtifactFactory.terminateWire(inboundWire);
         mock.expects(atLeastOnce()).method("build").will(returnValue(serviceContext));
         builder.setBuilderRegistry((BuilderRegistry) mock.proxy());

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/composite/builder/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/composite/builder/CompositeBuilder.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/composite/builder/CompositeBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/composite/builder/CompositeBuilder.java Wed May 31 22:32:27 2006
@@ -43,7 +43,7 @@
                                   DeploymentContext deploymentContext) throws BuilderConfigException {
         CompositeImplementation implementation = component.getImplementation();
         CompositeComponentType<?,?,?> componentType = implementation.getComponentType();
-        CompositeContextImpl<?> context = new CompositeContextImpl(component.getName(), parent, null);
+        CompositeContextImpl<?> context = new CompositeContextImpl(component.getName(), parent, null, wireService);
         for (ReferenceTarget target : component.getReferenceTargets().values()) {
             Reference reference = target.getReference();
             if (reference instanceof BoundReference) {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java Wed May 31 22:32:27 2006
@@ -21,6 +21,7 @@
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.extension.CompositeContextExtension;
 import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.WireService;
 
 /**
  * The base implementation of a composite context
@@ -48,8 +49,8 @@
 
     protected ScopeContext scopeContext;
 
-    public AbstractCompositeContext(String name, CompositeContext parent, AutowireContext autowireContext) {
-        super(name, parent);
+    public AbstractCompositeContext(String name, CompositeContext parent, AutowireContext autowireContext, WireService wireService) {
+        super(name, parent, wireService);
         this.autowireContext = autowireContext;
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java Wed May 31 22:32:27 2006
@@ -1,6 +1,7 @@
 package org.apache.tuscany.core.context;
 
 import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.wire.WireService;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.Context;
@@ -17,8 +18,8 @@
  */
 public class CompositeContextImpl<T> extends AbstractCompositeContext<T> {
 
-    public CompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext) {
-        super(name, parent, autowireContext);
+    public CompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext, WireService wireService) {
+        super(name, parent, autowireContext,wireService);
     }
 
     private String uri;

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java Wed May 31 22:32:27 2006
@@ -8,8 +8,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.spi.ObjectCreationException;
-import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
 import org.apache.tuscany.core.injection.EventInvoker;
 import org.apache.tuscany.core.injection.FieldInjector;
@@ -17,15 +15,18 @@
 import org.apache.tuscany.core.injection.InvalidAccessorException;
 import org.apache.tuscany.core.injection.ListMultiplicityObjectFactory;
 import org.apache.tuscany.core.injection.MethodInjector;
-import org.apache.tuscany.core.injection.WireObjectFactory;
 import org.apache.tuscany.core.injection.NoAccessorException;
+import org.apache.tuscany.core.injection.WireObjectFactory;
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceWrapper;
-import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.extension.AtomicContextExtension;
 import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.WireService;
 
 /**
  * Base implementation of an {@link AtomicContext} whose type is a Java class
@@ -51,8 +52,9 @@
                              EventInvoker<Object> initInvoker,
                              EventInvoker<Object> destroyInvoker,
                              List<Injector> injectors,
-                             Map<String, Member> members) {
-        super(name, parent, scopeContext);
+                             Map<String, Member> members,
+                             WireService wireService) {
+        super(name, parent, scopeContext, wireService);
         assert (objectFactory != null) : "Object factory was null";
         if (eagerInit && initInvoker == null) {
             throw new AssertionError("No intialization method found for eager init implementation");
@@ -78,8 +80,9 @@
                              EventInvoker<Object> initInvoker,
                              EventInvoker<Object> destroyInvoker,
                              List<Injector> injectors,
-                             Map<String, Member> members) {
-        super(name, parent, scopeContext);
+                             Map<String, Member> members,
+                             WireService wireService) {
+        super(name, parent, scopeContext, wireService);
         assert (objectFactory != null) : "Object factory was null";
         if (eagerInit && initInvoker == null) {
             throw new AssertionError("No intialization method found for eager init implementation");
@@ -149,7 +152,7 @@
     }
 
     protected Injector createInjector(Member member, OutboundWire wire) {
-        ObjectFactory<?> factory = new WireObjectFactory(wire);
+        ObjectFactory<?> factory = new WireObjectFactory(wire, wireService);
         if (member instanceof Field) {
             return new FieldInjector(((Field) member), factory);
         } else if (member instanceof Method) {
@@ -164,7 +167,7 @@
     protected Injector createMultiplicityInjector(Member member, Class<?> interfaceType, List<OutboundWire> wireFactories) {
         List<ObjectFactory<?>> factories = new ArrayList<ObjectFactory<?>>();
         for (OutboundWire wire : wireFactories) {
-            factories.add(new WireObjectFactory(wire));
+            factories.add(new WireObjectFactory(wire, wireService));
         }
         if (member instanceof Field) {
             Field field = (Field) member;

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/WireObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/WireObjectFactory.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/WireObjectFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/WireObjectFactory.java Wed May 31 22:32:27 2006
@@ -3,6 +3,7 @@
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.WireService;
 
 /**
  * Uses a wire to return an object instance
@@ -11,14 +12,16 @@
  */
 public class WireObjectFactory implements ObjectFactory {
 
-    private OutboundWire factory;
+    private OutboundWire<?> wire;
+    private WireService wireService;
 
-    public WireObjectFactory(OutboundWire factory) {
-        this.factory = factory;
+    public WireObjectFactory(OutboundWire<?> factory, WireService wireService) {
+        this.wire = factory;
+        this.wireService = wireService;
     }
 
     public Object getInstance() throws ObjectCreationException {
-        return factory.getTargetService();
+        return wireService.createProxy(wire);
 
 
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemBindingBuilder.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemBindingBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemBindingBuilder.java Wed May 31 22:32:27 2006
@@ -5,8 +5,10 @@
 import org.apache.tuscany.core.system.context.SystemServiceContext;
 import org.apache.tuscany.core.system.context.SystemServiceContextImpl;
 import org.apache.tuscany.core.system.model.SystemBinding;
-import org.apache.tuscany.core.system.wire.SystemInboundWire;
+import org.apache.tuscany.core.system.wire.SystemInboundWireImpl;
 import org.apache.tuscany.core.system.wire.SystemOutboundAutowire;
+import org.apache.tuscany.core.system.wire.SystemOutboundWireImpl;
+import org.apache.tuscany.core.system.wire.SystemInboundWire;
 import org.apache.tuscany.core.system.wire.SystemOutboundWire;
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.builder.BindingBuilder;
@@ -27,8 +29,8 @@
         Class<?> interfaze = boundService.getServiceContract().getInterfaceClass();
         QualifiedName targetName = new QualifiedName(boundService.getTarget().getPath());
         ComponentContext target = (ComponentContext) parent.getContext(targetName.getPartName());
-        SystemInboundWire<?> inboundWire = new SystemInboundWire(boundService.getName(), interfaze, target);
-        SystemOutboundWire<?> outboundWire = new SystemOutboundWire(boundService.getName(), targetName, interfaze);
+        SystemInboundWire<?> inboundWire = new SystemInboundWireImpl(boundService.getName(), interfaze, target);
+        SystemOutboundWire<?> outboundWire = new SystemOutboundWireImpl(boundService.getName(), targetName, interfaze);
         SystemServiceContext context = new SystemServiceContextImpl(boundService.getName(), parent);
         context.setInboundWire(inboundWire);
         context.setOutboundWire(outboundWire);
@@ -40,7 +42,7 @@
         AutowireContext autowireContext = (AutowireContext) parent.getParent();
         Class<?> interfaze = boundReference.getServiceContract().getInterfaceClass();
         SystemReferenceContextImpl ctx = new SystemReferenceContextImpl(boundReference.getName(), interfaze, parent);
-        SystemInboundWire<?> inboundWire = new SystemInboundWire(boundReference.getName(), interfaze);
+        SystemInboundWire<?> inboundWire = new SystemInboundWireImpl(boundReference.getName(), interfaze);
         OutboundWire<?> outboundWire = new SystemOutboundAutowire(boundReference.getName(), interfaze, autowireContext);
         ctx.setInboundWire(inboundWire);
         ctx.setOutboundWire(outboundWire);

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java Wed May 31 22:32:27 2006
@@ -14,9 +14,10 @@
 import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.core.system.context.SystemAtomicContextImpl;
 import org.apache.tuscany.core.system.model.SystemImplementation;
-import org.apache.tuscany.core.system.wire.SystemInboundWire;
+import org.apache.tuscany.core.system.wire.SystemInboundWireImpl;
 import org.apache.tuscany.core.system.wire.SystemOutboundAutowire;
-import org.apache.tuscany.core.system.wire.SystemOutboundWire;
+import org.apache.tuscany.core.system.wire.SystemOutboundWireImpl;
+import org.apache.tuscany.core.system.wire.SystemInboundWire;
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.QualifiedName;
@@ -85,7 +86,7 @@
 
         for (Service service : componentType.getServices().values()) {
             Class interfaze = service.getServiceContract().getInterfaceClass();
-            SystemInboundWire<?> wire = new SystemInboundWire(service.getName(), interfaze, systemContext);
+            SystemInboundWire<?> wire = new SystemInboundWireImpl(service.getName(), interfaze, systemContext);
             systemContext.addInboundWire(wire);
         }
         for (ReferenceTarget target : component.getReferenceTargets().values()) {
@@ -106,7 +107,7 @@
                 //FIXME support multiplicity!
                 assert(target.getTargets().size() == 1): "Multiplicity not yet implemented";
                 QualifiedName targetName = new QualifiedName(target.getTargets().get(0).getPath());
-                wire = new SystemOutboundWire(referenceName, targetName, interfaze);
+                wire = new SystemOutboundWireImpl(referenceName, targetName, interfaze);
             }
             systemContext.addOutboundWire(wire);
         }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java Wed May 31 22:32:27 2006
@@ -1,18 +1,27 @@
 package org.apache.tuscany.core.system.context;
 
+import java.lang.reflect.Field;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.tuscany.core.context.PojoAtomicContext;
+import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
 import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.core.injection.FieldInjector;
 import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.InvalidAccessorException;
+import org.apache.tuscany.core.injection.ListMultiplicityObjectFactory;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.system.wire.SystemOutboundWire;
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
@@ -33,7 +42,7 @@
                                    EventInvoker<Object> destroyInvoker,
                                    List<Injector> injectors,
                                    Map<String, Member> members) {
-        super(name, parent, scopeContext, serviceInterface, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members);
+        super(name, parent, scopeContext, serviceInterface, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members, null);
         scope = Scope.MODULE;
     }
 
@@ -47,7 +56,7 @@
                                    EventInvoker<Object> destroyInvoker,
                                    List<Injector> injectors,
                                    Map<String, Member> members) {
-        super(name, parent, scopeContext, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members);
+        super(name, parent, scopeContext, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members, null);
         scope = Scope.MODULE;
     }
 
@@ -67,6 +76,50 @@
     public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
         throw new UnsupportedOperationException();
     }
+
+    protected Injector createInjector(Member member, OutboundWire wire) {
+        assert(wire instanceof SystemOutboundWire): "wire must be an instance of " + SystemOutboundWire.class.getName();
+        SystemOutboundWire systemWire = (SystemOutboundWire) wire;
+        ObjectFactory<?> factory = new SystemWireObjectFactory(systemWire);
+        if (member instanceof Field) {
+            return new FieldInjector(((Field) member), factory);
+        } else if (member instanceof Method) {
+            return new MethodInjector(((Method) member), factory);
+        } else {
+            InvalidAccessorException e = new InvalidAccessorException("Member must be a field or method");
+            e.setIdentifier(member.getName());
+            throw e;
+        }
+    }
+
+    protected Injector createMultiplicityInjector(Member member, Class<?> interfaceType, List<OutboundWire> wireFactories) {
+        List<ObjectFactory<?>> factories = new ArrayList<ObjectFactory<?>>();
+        for (OutboundWire wire : wireFactories) {
+            assert(wire instanceof SystemOutboundWire): "wire must be an instance of " + SystemOutboundWire.class.getName();
+            SystemOutboundWire systemWire = (SystemOutboundWire) wire;
+            factories.add(new SystemWireObjectFactory(systemWire));
+        }
+        if (member instanceof Field) {
+            Field field = (Field) member;
+            if (field.getType().isArray()) {
+                return new FieldInjector(field, new ArrayMultiplicityObjectFactory(interfaceType, factories));
+            } else {
+                return new FieldInjector(field, new ListMultiplicityObjectFactory(factories));
+            }
+        } else if (member instanceof Method) {
+            Method method = (Method) member;
+            if (method.getParameterTypes()[0].isArray()) {
+                return new MethodInjector(method, new ArrayMultiplicityObjectFactory(interfaceType, factories));
+            } else {
+                return new MethodInjector(method, new ListMultiplicityObjectFactory(factories));
+            }
+        } else {
+            InvalidAccessorException e = new InvalidAccessorException("Member must be a field or method");
+            e.setIdentifier(member.getName());
+            throw e;
+        }
+    }
+
 
     public void prepare() {
         // override and do nothing since system services do not proxy

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java Wed May 31 22:32:27 2006
@@ -16,7 +16,7 @@
 public class SystemCompositeContextImpl<S> extends AbstractCompositeContext<S> implements SystemCompositeContext<S> {
 
     public SystemCompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext) {
-        super(name, parent, autowireContext);
+        super(name, parent, autowireContext,null);
     }
 
     public <S, I extends S> void registerJavaObject(String name, Class<S> service, I instance) throws ObjectRegistrationException {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemReferenceContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemReferenceContextImpl.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemReferenceContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemReferenceContextImpl.java Wed May 31 22:32:27 2006
@@ -2,9 +2,15 @@
 
 import java.lang.reflect.Method;
 
+import org.apache.tuscany.core.system.wire.SystemInboundWire;
+import org.apache.tuscany.core.system.wire.SystemOutboundWire;
+import org.apache.tuscany.spi.context.AbstractContext;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.TargetException;
-import org.apache.tuscany.spi.extension.ReferenceContextExtension;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.WireInvocationHandler;
 
@@ -14,12 +20,54 @@
  *
  * @version $Rev: 399991 $ $Date: 2006-05-04 23:44:07 -0700 (Thu, 04 May 2006) $
  */
-public class SystemReferenceContextImpl<T> extends ReferenceContextExtension<T> implements SystemReferenceContext<T> {
+public class SystemReferenceContextImpl<T> extends AbstractContext<T> implements SystemReferenceContext<T> {
+
+    protected SystemInboundWire<T> inboundWire;
+    protected SystemOutboundWire<T> outboundWire;
+    protected Class<T> referenceInterface;
+
 
     public SystemReferenceContextImpl(String name, Class<T> referenceInterface, CompositeContext parent) {
         super(name, parent);
         assert (referenceInterface != null) : "Reference interface was null";
         this.referenceInterface = referenceInterface;
+    }
+
+    public Scope getScope() {
+        return Scope.COMPOSITE;
+    }
+
+    public void setInboundWire(InboundWire<T> wire) {
+        assert(wire instanceof SystemInboundWire): "wire must be a " + SystemInboundWire.class.getName();
+        this.inboundWire = (SystemInboundWire<T>) wire;
+    }
+
+    public InboundWire<T> getInboundWire() {
+        return inboundWire;
+    }
+
+    public OutboundWire<T> getOutboundWire() {
+        return outboundWire;
+    }
+
+    public void setOutboundWire(OutboundWire<T> wire) {
+        assert(wire instanceof SystemOutboundWire): "wire must be a " + SystemOutboundWire.class.getName();
+        this.outboundWire = (SystemOutboundWire<T>) wire;
+    }
+
+    public Class<T> getInterface() {
+        return referenceInterface;
+    }
+
+    public void setInterface(Class<T> referenceInterface) {
+        this.referenceInterface = referenceInterface;
+    }
+
+    public void prepare() {
+        for (InboundInvocationChain chain : inboundWire.getInvocationChains().values()) {
+            chain.setTargetInvoker(createTargetInvoker(outboundWire.getTargetName().getQualifiedName(), chain.getMethod()));
+            chain.build();
+        }
     }
 
     public T getService() throws TargetException {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java Wed May 31 22:32:27 2006
@@ -1,8 +1,14 @@
 package org.apache.tuscany.core.system.context;
 
+import org.apache.tuscany.core.system.wire.SystemInboundWire;
+import org.apache.tuscany.core.system.wire.SystemOutboundWire;
 import org.apache.tuscany.spi.CoreRuntimeException;
+import org.apache.tuscany.spi.context.AbstractContext;
 import org.apache.tuscany.spi.context.CompositeContext;
-import org.apache.tuscany.spi.extension.ServiceContextExtension;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.WireInvocationHandler;
 
 /**
@@ -10,15 +16,48 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class SystemServiceContextImpl<T> extends ServiceContextExtension<T> implements SystemServiceContext<T> {
+public class SystemServiceContextImpl<T> extends AbstractContext<T> implements SystemServiceContext<T> {
+
+    protected SystemInboundWire<T> inboundWire;
+    protected SystemOutboundWire<T> outboundWire;
 
     public SystemServiceContextImpl(String name, CompositeContext parent) throws CoreRuntimeException {
         super(name, parent);
     }
 
+    public Scope getScope() {
+        return Scope.COMPOSITE;
+    }
+
+    public InboundWire<T> getInboundWire() {
+        return inboundWire;
+    }
+
+    public void setInboundWire(InboundWire<T> wire) {
+        assert(wire instanceof SystemInboundWire): "wire must be a " + SystemInboundWire.class.getName();
+        this.inboundWire = (SystemInboundWire<T>) wire;
+    }
+
+    public OutboundWire<T> getOutboundWire() {
+        return outboundWire;
+    }
+
+    public void setOutboundWire(OutboundWire<T> wire) {
+        assert(wire instanceof SystemOutboundWire): "wire must be a " + SystemOutboundWire.class.getName();
+        this.outboundWire = (SystemOutboundWire<T>) wire;
+    }
+
+    public Class<T> getInterface() {
+        return inboundWire.getBusinessInterface();
+    }
+
     public WireInvocationHandler getHandler() {
         // system services do not proxy
         throw new UnsupportedOperationException();
+    }
+
+    public T getService() throws TargetException {
+        return inboundWire.getTargetService();
     }
 
 }

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemWireObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemWireObjectFactory.java?rev=410755&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemWireObjectFactory.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemWireObjectFactory.java Wed May 31 22:32:27 2006
@@ -0,0 +1,24 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.core.system.wire.SystemOutboundWire;
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.ObjectFactory;
+
+/**
+ * Uses a system wire to return an object instance
+ *
+ * @version $Rev$ $Date$
+ */
+public class SystemWireObjectFactory implements ObjectFactory {
+
+    private SystemOutboundWire<?> wire;
+
+    public SystemWireObjectFactory(SystemOutboundWire<?> factory) {
+        this.wire = factory;
+    }
+
+    public Object getInstance() throws ObjectCreationException {
+        return wire.getTargetService();
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java?rev=410755&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java Wed May 31 22:32:27 2006
@@ -0,0 +1,16 @@
+package org.apache.tuscany.core.system.wire;
+
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.context.TargetException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SystemInboundWire<T> extends InboundWire<T> {
+
+    /**
+     * Returns the target instance for this wire
+     */
+    T getTargetService() throws TargetException;
+
+}

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWireImpl.java (from r410546, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWireImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWireImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java&r1=410546&r2=410755&rev=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundWireImpl.java Wed May 31 22:32:27 2006
@@ -7,7 +7,6 @@
 import org.apache.tuscany.spi.context.ComponentContext;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
-import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundWire;
 
 /**
@@ -16,25 +15,26 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class SystemInboundWire<T> implements InboundWire<T> {
+public class SystemInboundWireImpl<T> implements SystemInboundWire<T> {
     private String serviceName;
     private Class<T> businessInterface;
     private ComponentContext<?> componentContext;
-    private OutboundWire<T> wire;
+    private SystemOutboundWire<T> wire;
 
     /**
      * Constructs a new inbound wire
-     * @param serviceName the name of the service the inbound wire represents
+     *
+     * @param serviceName       the name of the service the inbound wire represents
      * @param businessInterface the service interface
-     * @param target the target context the wire is connected to
+     * @param target            the target context the wire is connected to
      */
-    public SystemInboundWire(String serviceName, Class<T> businessInterface, ComponentContext<?> target) {
+    public SystemInboundWireImpl(String serviceName, Class<T> businessInterface, ComponentContext<?> target) {
         this.serviceName = serviceName;
         this.businessInterface = businessInterface;
         this.componentContext = target;
     }
 
-    public SystemInboundWire(String serviceName, Class<T> businessInterface) {
+    public SystemInboundWireImpl(String serviceName, Class<T> businessInterface) {
         this.serviceName = serviceName;
         this.businessInterface = businessInterface;
     }
@@ -88,7 +88,8 @@
     }
 
     public void setTargetWire(OutboundWire<T> wire) {
-        this.wire = wire;
+        assert(wire instanceof SystemOutboundWire): "wire must be a " + SystemOutboundWireImpl.class.getName();
+        this.wire = (SystemOutboundWire<T>) wire;
     }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundAutowire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundAutowire.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundAutowire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundAutowire.java Wed May 31 22:32:27 2006
@@ -16,7 +16,7 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class SystemOutboundAutowire<T> implements OutboundAutowire<T> {
+public class SystemOutboundAutowire<T> implements OutboundAutowire<T>, SystemOutboundWire<T> {
     private String referenceName;
     private Class<T> businessInterface;
     private AutowireContext<?> context;

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java?rev=410755&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java Wed May 31 22:32:27 2006
@@ -0,0 +1,17 @@
+package org.apache.tuscany.core.system.wire;
+
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.context.TargetException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SystemOutboundWire<T> extends OutboundWire<T> {
+
+    /**
+     * Returns the target instance for this wire
+     */
+    T getTargetService() throws TargetException;
+
+}

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWireImpl.java (from r410546, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWireImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWireImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java&r1=410546&r2=410755&rev=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemOutboundWireImpl.java Wed May 31 22:32:27 2006
@@ -8,7 +8,6 @@
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
-import org.apache.tuscany.spi.wire.OutboundWire;
 
 /**
  * An outbound wire configured to use the {@link org.apache.tuscany.core.system.model.SystemBinding}. System
@@ -16,13 +15,13 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class SystemOutboundWire<T> implements OutboundWire<T> {
+public class SystemOutboundWireImpl<T> implements SystemOutboundWire<T> {
     private String referenceName;
     private QualifiedName targetName;
     private Class<T> businessInterface;
-    private InboundWire<T> targetWire;
+    private SystemInboundWire<T> targetWire;
 
-    public SystemOutboundWire(String referenceName, QualifiedName targetName, Class<T> businessInterface) {
+    public SystemOutboundWireImpl(String referenceName, QualifiedName targetName, Class<T> businessInterface) {
         this.referenceName = referenceName;
         this.targetName = targetName;
         this.businessInterface = businessInterface;
@@ -81,7 +80,8 @@
     }
 
     public void setTargetWire(InboundWire<T> wire) {
-        targetWire = wire;
+        assert(wire instanceof SystemInboundWire): "wire must be a " + SystemInboundWire.class.getName();
+        this.targetWire = (SystemInboundWire<T>) wire;
     }
 
     public boolean isOptimizable() {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InboundWireImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InboundWireImpl.java?rev=410755&r1=410754&r2=410755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InboundWireImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InboundWireImpl.java Wed May 31 22:32:27 2006
@@ -26,8 +26,9 @@
 
     @SuppressWarnings("unchecked")
     public T getTargetService() throws TargetException {
-        JDKInboundInvocationHandler handler = new JDKInboundInvocationHandler(invocationChains);
-        return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaces, handler);
+        throw new UnsupportedOperationException();
+//        JDKInboundInvocationHandler handler = new JDKInboundInvocationHandler(invocationChains);
+//        return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaces, handler);
     }
 
     public void setBusinessInterface(Class interfaze) {



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org