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/05/30 19:37:46 UTC

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

Author: jmarino
Date: Tue May 30 10:37:42 2006
New Revision: 410323

URL: http://svn.apache.org/viewvc?rev=410323&view=rev
Log:
more inbound/outbound wire changes; refactoring/cleanup to come

Added:
    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/wire/PojoTargetInvoker.java
      - copied, changed from r410163, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/StaticPojoTargetInvoker.java   (contents, props changed)
      - copied, changed from r410163, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.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
      - copied, changed from r410164, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/ReferenceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/SystemServiceContextWireTestCase.java
      - copied, changed from r410164, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/SystemServiceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/StaticPojoInvokerTestCase.java
      - copied, changed from r410163, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/StaticPojoInvokerTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java
      - copied, changed from r410164, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireOptimizationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/ReferenceInvocationHandlerTestCase.java
      - copied, changed from r410164, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKSourceInvocationHandlerTestCase.java
Removed:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemInboundAutowire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/builder/ReferenceToReferenceConnectTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/builder/ServiceToServiceConnectTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/ReferenceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/ServiceContextToAtomicContextTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/wire/SystemServiceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKSourceInvocationHandlerTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireOptimizationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/StaticPojoInvokerTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/WireTestCase.java
Modified:
    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/test/java/org/apache/tuscany/container/groovy/WireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.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/JavaReferenceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ServiceToJavaTestCase.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/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/builder/Connector.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.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/SystemServiceContextImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.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/jdk/JDKInboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKOutboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/builder/SystemBuildersTestCase.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/context/AutowireTestCase.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/wire/jdk/MediationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ComponentContext.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ServiceContext.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/CompositeContextExtension.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/InboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/RuntimeWire.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/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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -76,7 +76,7 @@
                 injector.inject(object);
             }
             // inject wires
-            for (List<OutboundWire> referenceWires : getReferenceWires().values()) {
+            for (List<OutboundWire> referenceWires : getOutboundWires().values()) {
                 for (OutboundWire<?> wire : referenceWires) {
                     object.setProperty(wire.getReferenceName(), wire.getTargetService());
                 }
@@ -103,7 +103,7 @@
     }
 
     public Object getService(String service) throws TargetException {
-        InboundWire<?> wire = getServiceWire(service);
+        InboundWire<?> wire = getInboundWire(service);
         if (wire == null) {
             TargetException e =  new TargetException("Service not found"); // TODO better error message
             e.setIdentifier(service);

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -54,7 +54,7 @@
                 }));
         mock.expects(atLeastOnce()).method("getReferenceName").will(returnValue("wire"));
         OutboundWire<Greeting> wire = (OutboundWire<Greeting>) mock.proxy();
-        context.addReferenceWire(wire);
+        context.addOutboundWire(wire);
         Greeting greeting = context.getService();
         assertEquals("foo", greeting.greet("foo"));
         scope.stop();
@@ -103,7 +103,7 @@
                 });
 
         InboundWire<Greeting> wire = (InboundWire<Greeting>) mock.proxy();
-        context.addServiceWire(wire);
+        context.addInboundWire(wire);
         Greeting greeting = (Greeting) context.getService("Greeting");
         assertEquals("foo", greeting.greet("foo"));
         scope.stop();

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java Tue May 30 10:37:42 2006
@@ -18,7 +18,7 @@
 
 import java.lang.reflect.Method;
 
-import org.apache.tuscany.core.wire.jdk.PojoTargetInvoker;
+import org.apache.tuscany.core.wire.PojoTargetInvoker;
 import org.apache.tuscany.spi.context.TargetException;
 
 /**

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -27,7 +27,7 @@
         mock.stubs().method("getInvocationChains").will(returnValue(Collections.emptyMap()));
 
         InboundWire<Target> wire = (InboundWire<Target>) mock.proxy();
-        context.addServiceWire(wire);
+        context.addInboundWire(wire);
         context.prepare();
         context.start();
 

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -35,7 +35,7 @@
         mock.expects(atLeastOnce()).method("getTargetService").will(returnValue(target));
         mock.expects(atLeastOnce()).method("getReferenceName").will(returnValue("target"));
         OutboundWire<Target> wire = (OutboundWire<Target>) mock.proxy();
-        sourceContext.addReferenceWire(wire);
+        sourceContext.addOutboundWire(wire);
 
         sourceContext.start();
 

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ServiceToJavaTestCase.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/ServiceToJavaTestCase.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ServiceToJavaTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ServiceToJavaTestCase.java Tue May 30 10:37:42 2006
@@ -23,18 +23,16 @@
 import org.apache.tuscany.core.context.scope.ModuleScopeContext;
 import org.apache.tuscany.core.context.scope.RequestScopeContext;
 import org.apache.tuscany.core.context.scope.StatelessScopeContext;
-import org.apache.tuscany.core.system.context.SystemCompositeContext;
-import org.apache.tuscany.core.system.context.SystemCompositeContextImpl;
 import org.apache.tuscany.core.util.MethodHashMap;
-import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
-import org.apache.tuscany.core.wire.jdk.JDKInboundWire;
+import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
+import org.apache.tuscany.core.wire.jdk.JDKOutboundWire;
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.context.WorkContext;
-import org.apache.tuscany.spi.extension.ServiceContextExtension;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
 
 /**
  * Validates wiring from a service context to Java atomic contexts by scope
@@ -43,34 +41,29 @@
  */
 public class ServiceToJavaTestCase extends TestCase {
     private WorkContext workContext;
-    private SystemCompositeContext parent;
+    //private SystemCompositeContext parent;
 
 
     public void testToStatelessScope() throws Exception {
         StatelessScopeContext scope = new StatelessScopeContext(workContext);
         scope.start();
-        setupComposite(parent, scope);
-        parent.start();
-        Target service = (Target) parent.getContext("service").getService();
+        final OutboundWire wire = getWire(scope);
+        Target service = (Target) wire.getTargetService();
         assertNotNull(service);
-        Target target = (Target) parent.getContext("target").getService();
         service.setString("foo");
         assertEquals(null, service.getString());
-        assertEquals(null, target.getString());
-        parent.stop();
         scope.stop();
     }
 
     public void testToRequestScope() throws Exception {
         final RequestScopeContext scope = new RequestScopeContext(workContext);
         scope.start();
-        setupComposite(parent, scope);
-        parent.start();
 
         scope.onEvent(new RequestStart(this));
-        Target service = (Target) parent.getContext("service").getService();
+
+        final OutboundWire wire = getWire(scope);
+        Target service = (Target) wire.getTargetService();
         assertNotNull(service);
-        Target target = (Target) parent.getContext("target").getService();
         service.setString("foo");
 
         // another request
@@ -78,8 +71,8 @@
         FutureTask<Void> future = new FutureTask<Void>(new Runnable() {
             public void run() {
                 scope.onEvent(new RequestStart(this));
-                Target service2 = (Target) parent.getContext("service").getService();
-                Target target2 = (Target) parent.getContext("target").getService();
+                Target service2 = (Target) wire.getTargetService();
+                Target target2 = (Target) wire.getTargetService();
                 assertEquals(null, service2.getString());
                 service2.setString("bar");
                 assertEquals("bar", service2.getString());
@@ -91,24 +84,21 @@
         future.get();
 
         assertEquals("foo", service.getString());
-        assertEquals("foo", target.getString());
         scope.onEvent(new RequestEnd(this));
-        parent.stop();
         scope.stop();
     }
 
     public void testToSessionScope() throws Exception {
         HttpSessionScopeContext scope = new HttpSessionScopeContext(workContext);
         scope.start();
-        setupComposite(parent, scope);
-        parent.start();
         Object session1 = new Object();
         workContext.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session1);
         scope.onEvent(new HttpSessionStart(this, session1));
 
-        Target service = (Target) parent.getContext("service").getService();
+        final OutboundWire wire = getWire(scope);
+        Target service = (Target) wire.getTargetService();
+        Target target = (Target) wire.getTargetService();
         assertNotNull(service);
-        Target target = (Target) parent.getContext("target").getService();
         service.setString("foo");
         assertEquals("foo", service.getString());
         assertEquals("foo", target.getString());
@@ -120,10 +110,10 @@
         workContext.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session2);
         scope.onEvent(new HttpSessionStart(this, session2));
 
-        Target service2 = (Target) parent.getContext("service").getService();
+        Target service2 = (Target) wire.getTargetService();
         assertNotNull(service2);
         assertNull(service2.getString());
-        Target target2 = (Target) parent.getContext("target").getService();
+        Target target2 = (Target) wire.getTargetService();
         service2.setString("bar");
         assertEquals("bar", service2.getString());
         assertEquals("bar", target2.getString());
@@ -136,7 +126,6 @@
 
         scope.onEvent(new HttpSessionEnd(this, session1));
 
-        parent.stop();
         scope.stop();
     }
 
@@ -144,53 +133,51 @@
 
         ModuleScopeContext scope = new ModuleScopeContext(workContext);
         scope.start();
-        setupComposite(parent, scope);
-        parent.start();
-        scope.onEvent(new ModuleStart(this, parent));
-        Target service = (Target) parent.getContext("service").getService();
+        final OutboundWire wire = getWire(scope);
+        scope.onEvent(new ModuleStart(this, null));
+        Target service = (Target) wire.getTargetService();
+        Target target = (Target) wire.getTargetService();
+
         assertNotNull(service);
-        Target target = (Target) parent.getContext("target").getService();
         service.setString("foo");
         assertEquals("foo", service.getString());
         assertEquals("foo", target.getString());
-        scope.onEvent(new ModuleStop(this, parent));
-        parent.stop();
+        scope.onEvent(new ModuleStop(this, null));
         scope.stop();
     }
 
     @SuppressWarnings("unchecked")
-    private void setupComposite(CompositeContext<?> parent, ScopeContext scope) throws NoSuchMethodException {
+    private OutboundWire getWire(ScopeContext scope) throws NoSuchMethodException {
         Connector connector = new ConnectorImpl();
-        InboundWire<Target> sourceWire = createServiceWire("target", Target.class);
-        sourceWire.setServiceName("Target");
-        ServiceContextExtension<Target> serviceContext = new ServiceContextExtension<Target>("service", sourceWire, parent);
+        OutboundWire<Target> wire = createOutboundWire(new QualifiedName("target/Target"), Target.class);
+
         AtomicContext<?> atomicContext = MockContextFactory.createJavaAtomicContext("target", scope, TargetImpl.class, Target.class, scope.getScope());
         InboundWire targetWire = MockContextFactory.createTargetWire("Target", Target.class);
-        atomicContext.addServiceWire(targetWire);
-        parent.registerContext(serviceContext);
-        parent.registerContext(atomicContext);
-        connector.connect(serviceContext.getInboundWire(), atomicContext);
+        atomicContext.addInboundWire(targetWire);
+        connector.connect(wire, atomicContext.getInboundWire("Target"), atomicContext, false);
+        atomicContext.start();
+        return wire;
     }
 
     protected void setUp() throws Exception {
         super.setUp();
         workContext = new WorkContextImpl();
-        parent = new SystemCompositeContextImpl(null, null, null);
+        //parent = new SystemCompositeContextImpl(null, null, null);
     }
 
-    public static <T> InboundWire<T> createServiceWire(String serviceName, Class<T> interfaze) {
-        InboundWire<T> wire = new JDKInboundWire<T>();
+    public static <T> OutboundWire<T> createOutboundWire(QualifiedName targetName, Class<T> interfaze) {
+        OutboundWire<T> wire = new JDKOutboundWire<T>();
         wire.setBusinessInterface(interfaze);
-        wire.setServiceName(serviceName);
-        wire.addInvocationChains(createServiceInvocationChains(interfaze));
+        wire.setTargetName(targetName);
+        wire.addInvocationChains(createInvocationChains(interfaze));
         return wire;
     }
 
-    private static Map<Method, InboundInvocationChain> createServiceInvocationChains(Class<?> interfaze) {
-        Map<Method, InboundInvocationChain> invocations = new MethodHashMap<InboundInvocationChain>();
+    private static Map<Method, OutboundInvocationChain> createInvocationChains(Class<?> interfaze) {
+        Map<Method, OutboundInvocationChain> invocations = new MethodHashMap<OutboundInvocationChain>();
         Method[] methods = interfaze.getMethods();
         for (Method method : methods) {
-            InboundInvocationChain chain = new InboundInvocationChainImpl(method);
+            OutboundInvocationChain chain = new OutboundInvocationChainImpl(method);
             invocations.put(method, chain);
         }
         return invocations;

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -14,25 +14,25 @@
 import org.apache.tuscany.core.injection.Injector;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.util.MethodHashMap;
+import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
 import org.apache.tuscany.core.wire.MessageChannelImpl;
 import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
-import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
-import org.apache.tuscany.core.wire.jdk.JDKOutboundWire;
 import org.apache.tuscany.core.wire.jdk.JDKInboundWire;
-import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.core.wire.jdk.JDKOutboundWire;
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.ScopeContext;
+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.Interceptor;
 import org.apache.tuscany.spi.wire.MessageHandler;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.wire.InboundWire;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -114,12 +114,12 @@
         JavaAtomicContext targetContext = createJavaAtomicContext(targetName, targetScope, targetClass, targetScope.getScope());
         InboundWire inboundWire = createServiceWire(targetService.getName().substring(
                 targetService.getName().lastIndexOf('.') + 1), targetService, targetHeadInterceptor, targetRequestHeadHandler, targetResponseHeadHandler);
-        targetContext.addServiceWire(inboundWire);
+        targetContext.addInboundWire(inboundWire);
 
         JavaAtomicContext sourceContext = createJavaAtomicContext(sourceName, null, sourceScope, sourceClass, sourceClass, sourceScope.getScope(), false, null, null, null, members);
         OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, sourceHeadInterceptor,
                 sourceHeadRequestHandler, sourceHeadResponseHandler);
-        sourceContext.addReferenceWire(outboundWire);
+        sourceContext.addOutboundWire(outboundWire);
         targetScope.register(targetContext);
         sourceScope.register(sourceContext);
         connect(outboundWire, inboundWire, targetContext, false);
@@ -152,13 +152,13 @@
         JavaAtomicContext targetContext = createJavaAtomicContext(targetName, targetScope, targetClass, targetScope.getScope());
         InboundWire inboundWire = createServiceWire(targetService.getName().substring(
                 targetService.getName().lastIndexOf('.') + 1), targetService, null, null, null);
-        targetContext.addServiceWire(inboundWire);
+        targetContext.addInboundWire(inboundWire);
 
         JavaAtomicContext sourceContext = createJavaAtomicContext(sourceName, null, sourceScope, sourceClass, sourceClass, sourceScope.getScope(), false, null, null, null, members);
         OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, null, null, null);
         List<OutboundWire> factories = new ArrayList<OutboundWire>();
         factories.add(outboundWire);
-        sourceContext.addReferenceWires(sourceReferenceClass, factories);
+        sourceContext.addOutboundWires(sourceReferenceClass, factories);
         targetScope.register(targetContext);
         sourceScope.register(sourceContext);
         connect(outboundWire, inboundWire, targetContext, false);
@@ -185,9 +185,9 @@
     }
 
     public static <T> OutboundWire<T> createReferenceWire(String refName, Class<T> interfaze,
-                                                           Interceptor headInterceptor,
-                                                           MessageHandler headRequestHandler,
-                                                           MessageHandler headResponseHandler) {
+                                                          Interceptor headInterceptor,
+                                                          MessageHandler headRequestHandler,
+                                                          MessageHandler headResponseHandler) {
 
         OutboundWire<T> wire = new JDKOutboundWire<T>();
         wire.setReferenceName(refName);
@@ -216,7 +216,8 @@
         if (inboundWire != null) {
             // if null, the target side has no interceptors or handlers
             Map<Method, InboundInvocationChain> targetInvocationConfigs = inboundWire.getInvocationChains();
-            for (OutboundInvocationChain outboundInvocationConfig : outboundWire.getInvocationChains().values()) {
+            for (OutboundInvocationChain outboundInvocationConfig : outboundWire.getInvocationChains().values())
+            {
                 // match wire chains
                 InboundInvocationChain inboundInvocationConfig = targetInvocationConfigs.get(outboundInvocationConfig.getMethod());
                 if (inboundInvocationConfig == null) {
@@ -260,8 +261,8 @@
     }
 
     private static Map<Method, OutboundInvocationChain> createReferenceInvocationChains(Class<?> interfaze,
-                                                                                         Interceptor headInterceptor, MessageHandler headRequestHandler,
-                                                                                         MessageHandler headResponseHandler) {
+                                                                                        Interceptor headInterceptor, MessageHandler headRequestHandler,
+                                                                                        MessageHandler headResponseHandler) {
         Map<Method, OutboundInvocationChain> invocations = new HashMap<Method, OutboundInvocationChain>();
         Method[] methods = interfaze.getMethods();
         for (Method method : methods) {

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -14,8 +14,11 @@
 import org.apache.tuscany.spi.model.Reference;
 import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.Service;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.QualifiedName;
 import org.springframework.context.support.GenericApplicationContext;
 
 /**
@@ -35,15 +38,21 @@
         for (Service service : componentType.getServices().values()) {
             if (service instanceof BoundService) {
                 // call back into deployment context to handle building of services
+                BoundService<? extends Binding> boundService = (BoundService<? extends Binding>) service;
                 ServiceContext<?> childContext = (ServiceContext) builderRegistry.build(parent,
-                        (BoundService<? extends Binding>) service,
+                        boundService,
                         deploymentContext);
                 // wire service to bean invokers
                 InboundWire<?> wire = childContext.getInboundWire();
+                //FIXME ME
+                QualifiedName targetName = new QualifiedName(boundService.getTarget().getPath());
                 for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
-                    String beanName = wire.getTargetName().getPartName();
-                    chain.setTargetInvoker(context.createTargetInvoker(beanName, chain.getMethod()));
+                    chain.setTargetInvoker(context.createTargetInvoker(targetName.getPartName(), chain.getMethod()));
                 }
+//                for (OutboundInvocationChain chain : wire.getInvocationChains().values()) {
+//                    String beanName = wire.getTargetName().getPartName();
+//                    chain.setTargetInvoker(context.createTargetInvoker(beanName, chain.getMethod()));
+//                }
                 context.registerContext(childContext);
             }
         }

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -3,10 +3,12 @@
 import junit.framework.TestCase;
 import org.apache.tuscany.container.spring.mock.TestBean;
 import org.apache.tuscany.container.spring.mock.TestBeanImpl;
+import org.apache.tuscany.core.builder.Connector;
 import org.apache.tuscany.spi.context.ServiceContext;
 import org.apache.tuscany.spi.extension.ServiceContextExtension;
 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.test.ArtifactFactory;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -23,12 +25,18 @@
     public void testInvocation() {
         SpringCompositeContext context = new SpringCompositeContext("parent", createSpringContext(), null);
         context.start();
-        InboundWire<TestBean> wire = ArtifactFactory.createTargetWire("fooService", TestBean.class);
-        for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
+        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.setInboundWire(inboundWire);
+        serviceContext.setOutboundWire(outboundWire);
+        Connector conntector = ArtifactFactory.createConnector();
+        conntector.connect(inboundWire, outboundWire, true);
+        // TODO fix below
+        for (InboundInvocationChain chain : inboundWire.getInvocationChains().values()) {
             chain.setTargetInvoker(context.createTargetInvoker("foo", chain.getMethod()));
         }
-        ServiceContext<TestBean> serviceContext = new ServiceContextExtension<TestBean>("fooService", wire, context);
-        serviceContext.setInboundWire(wire);
         context.registerContext(serviceContext);
         assertEquals("bar", ((TestBean) context.getContext("fooService").getService()).echo("bar"));
     }

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -14,8 +14,10 @@
 import org.apache.tuscany.spi.model.Component;
 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.test.ArtifactFactory;
+import org.apache.tuscany.core.builder.Connector;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 import org.springframework.beans.factory.config.BeanDefinition;
@@ -35,10 +37,15 @@
         impl.setApplicationContext(createSpringContext());
         Component<SpringImplementation> component = new Component<SpringImplementation>("spring", impl);
         Mock mock = mock(BuilderRegistry.class);
-        ServiceContextExtension<TestBean> serviceContext = new ServiceContextExtension<TestBean>("fooService", null, null);
-        InboundWire<TestBean> wire = ArtifactFactory.createTargetWire("foo", TestBean.class);
-        wire.setTargetName(new QualifiedName("foo"));
-        serviceContext.setInboundWire(wire);
+        ServiceContextExtension<TestBean> serviceContext = new ServiceContextExtension<TestBean>("fooService", null);
+        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);
+        ArtifactFactory.terminateWire(inboundWire);
         mock.expects(atLeastOnce()).method("build").will(returnValue(serviceContext));
         builder.setBuilderRegistry((BuilderRegistry) mock.proxy());
         CompositeContext context = (CompositeContext) builder.build(null, component, null);

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/Connector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/Connector.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/Connector.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/Connector.java Tue May 30 10:37:42 2006
@@ -2,7 +2,10 @@
 
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.model.Scope;
 
 /**
  * Implementations are responsible for bridging invocation chains as an assembly is converted to runtime
@@ -14,7 +17,9 @@
 
     <T> void connect(Context<T> source);
 
-    public <T> void connect(InboundWire<T> sourceWire, Context<?> targetContext) throws BuilderConfigException;
+    public <T> void connect(InboundWire<T> inboundWire, OutboundWire<T> outboundWire, boolean optimizable) throws BuilderConfigException;
 
+    public <T> void connect(OutboundWire<T> outboundWire, CompositeContext<?> parent, Scope sourceScope) throws BuilderConfigException;
+    public <T> void connect(OutboundWire<T> sourceWire, InboundWire<T> targetWire, Context<?> context, boolean optimizable);
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Tue May 30 10:37:42 2006
@@ -5,13 +5,11 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.core.wire.BridgingHandler;
 import org.apache.tuscany.core.wire.BridgingInterceptor;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
 import org.apache.tuscany.core.wire.MessageChannelImpl;
 import org.apache.tuscany.core.wire.MessageDispatcher;
 import org.apache.tuscany.core.wire.OutboundAutowire;
-import org.apache.tuscany.core.wire.RequestResponseInterceptor;
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.context.AtomicContext;
@@ -40,7 +38,7 @@
         Scope scope = source.getScope();
         if (source instanceof AtomicContext) {
             AtomicContext<T> sourceContext = (AtomicContext<T>) source;
-            for (List<OutboundWire> referenceWires : sourceContext.getReferenceWires().values()) {
+            for (List<OutboundWire> referenceWires : sourceContext.getOutboundWires().values()) {
                 for (OutboundWire<T> outboundWire : referenceWires) {
                     if (outboundWire instanceof OutboundAutowire) {
                         continue;
@@ -63,7 +61,7 @@
     }
 
     @SuppressWarnings("unchecked")
-    private <T> void connect(OutboundWire<T> sourceWire, CompositeContext<?> parent, Scope sourceScope) throws BuilderConfigException {
+    public <T> void connect(OutboundWire<T> sourceWire, CompositeContext<?> parent, Scope sourceScope) throws BuilderConfigException {
         assert(sourceScope != null): "Source scope was null";
         assert(sourceWire.getTargetName() != null): "Wire target name was null";
         QualifiedName targetName = sourceWire.getTargetName();
@@ -76,7 +74,7 @@
 
         if (target instanceof AtomicContext) {
             AtomicContext<?> targetContext = (AtomicContext<?>) target;
-            InboundWire<?> targetWire = targetContext.getServiceWire(targetName.getPortName());
+            InboundWire<T> targetWire = targetContext.getInboundWire(targetName.getPortName());
             if (targetWire == null) {
                 BuilderConfigException e = new BuilderConfigException("Target service not found for reference " + sourceWire.getReferenceName());
                 e.setIdentifier(targetName.getPortName());
@@ -85,7 +83,7 @@
             if (!sourceWire.getBusinessInterface().isAssignableFrom(targetWire.getBusinessInterface())) {
                 throw new BuilderConfigException("Incompatible source and target interfaces");
             }
-            connect(sourceWire, (InboundWire<T>) targetWire, target, isOptimizable(sourceScope, targetContext.getScope()));
+            connect(sourceWire, targetWire, target, isOptimizable(sourceScope, target.getScope()));
         } else if (target instanceof ReferenceContext) {
             InboundWire<T> targetWire = ((ReferenceContext) target).getInboundWire();
             assert(targetWire != null);
@@ -99,120 +97,45 @@
         }
     }
 
-    @SuppressWarnings("unchecked")
-    public <T> void connect(InboundWire<T> sourceWire, Context<?> targetContext) throws BuilderConfigException {
-        if (targetContext instanceof ComponentContext) {
-            InboundWire<T> targetWire = ((ComponentContext) targetContext).getServiceWire(sourceWire.getServiceName());
-            // perform optimization, if possible
-            if (sourceWire.getInvocationChains().isEmpty() && targetWire.getInvocationChains().isEmpty()) {
-                sourceWire.setTargetWire(targetWire);
-                return;
-            }
-            for (InboundInvocationChain sourceChain : sourceWire.getInvocationChains().values()) {
-                if (targetWire.getInvocationChains() != null || targetWire.getInvocationChains().isEmpty()) {
-                    if (sourceChain.getTailInterceptor() != null &&
-                            !(sourceChain.getTailInterceptor() instanceof InvokerInterceptor)) {
-                        sourceChain.getTailInterceptor().setNext(new InvokerInterceptor());
-                    } else {
-                        // special case where we need to attach the invoker of the second chain
-                        if (targetContext instanceof ComponentContext) {
-                            sourceChain.setTargetInvoker(((ComponentContext) targetContext).createTargetInvoker(
-                                    sourceWire.getServiceName(), sourceChain.getMethod()));
-                        } else if (targetContext instanceof ReferenceContext) {
-                            sourceChain.setTargetInvoker(((ReferenceContext) targetContext).createTargetInvoker(
-                                    sourceWire.getServiceName(), sourceChain.getMethod()));
-                        }
-                    }
-                }
-                InboundInvocationChain targetChain = targetWire.getInvocationChains().get(sourceChain.getMethod());
-                connect(sourceChain, targetChain);
-            }
-        } else if (targetContext instanceof ReferenceContext) {
-            InboundWire<T> targetWire = ((ReferenceContext) targetContext).getInboundWire();
-            // perform optimization, if possible
-            if (sourceWire.getInvocationChains().isEmpty() && targetWire.getInvocationChains().isEmpty()) {
-                sourceWire.setTargetWire(targetWire);
-                return;
-            }
-            for (InboundInvocationChain sourceChain : sourceWire.getInvocationChains().values()) {
-                if (targetWire.getInvocationChains() != null || targetWire.getInvocationChains().isEmpty()) {
-                    if (sourceChain.getTailInterceptor() != null &&
-                            !(sourceChain.getTailInterceptor() instanceof InvokerInterceptor)) {
-                        sourceChain.getTailInterceptor().setNext(new InvokerInterceptor());
-                    } else {
-                        // special case where we need to attach the invoker of the second chain
-                        if (targetContext instanceof ComponentContext) {
-                            sourceChain.setTargetInvoker(((ComponentContext) targetContext).createTargetInvoker(
-                                    sourceWire.getServiceName(), sourceChain.getMethod()));
-                        } else if (targetContext instanceof ReferenceContext) {
-                            sourceChain.setTargetInvoker(((ReferenceContext) targetContext).createTargetInvoker(
-                                    sourceWire.getServiceName(), sourceChain.getMethod()));
-                        }
-                    }
-                }
-                InboundInvocationChain targetChain = targetWire.getInvocationChains().get(sourceChain.getMethod());
-                connect(sourceChain, targetChain);
-            }
-        } else {
-            BuilderConfigException e = new BuilderConfigException("Invalid target context type");
-            e.setIdentifier(targetContext.getName());
-            throw e;
-        }
-    }
-
-    public <T> void connect(OutboundWire<T> sourceWire, InboundWire<T> targetWire, Context<?> target, boolean optimizable) {
-        Map<Method, InboundInvocationChain> targetChains = targetWire.getInvocationChains();
+    public <T> void connect(InboundWire<T> sourceWire, OutboundWire<T> targetWire, boolean optimizable) throws BuilderConfigException {
+        Map<Method, OutboundInvocationChain> targetChains = targetWire.getInvocationChains();
         // perform optimization, if possible
         if (optimizable && sourceWire.getInvocationChains().isEmpty() && targetChains.isEmpty()) {
             sourceWire.setTargetWire(targetWire);
             return;
         }
-        String serviceName = targetWire.getServiceName();
-        for (OutboundInvocationChain outboundChain : sourceWire.getInvocationChains().values()) {
+        //String serviceName = targetWire.getTargetName();
+        for (InboundInvocationChain inboundChain : sourceWire.getInvocationChains().values()) {
             // match wire chains
-            InboundInvocationChain inboundChain = targetChains.get(outboundChain.getMethod());
-            if (inboundChain == null) {
-                BuilderConfigException e = new BuilderConfigException("Incompatible sourceWire and target chain interfaces for reference");
-                e.setIdentifier(sourceWire.getReferenceName());
+            OutboundInvocationChain outboundChain = targetChains.get(inboundChain.getMethod());
+            if (outboundChain == null) {
+                BuilderConfigException e = new BuilderConfigException("Incompatible source and target wire interfaces");
+                e.setIdentifier(sourceWire.getServiceName());
                 throw e;
             }
-            if (target instanceof ReferenceContext) {
-                ReferenceContext referenceContext = (ReferenceContext) target;
-                TargetInvoker invoker = referenceContext.createTargetInvoker(serviceName, outboundChain.getMethod());
-                connect(outboundChain, inboundChain, invoker);
-            } else {
-                ComponentContext componentContext = (ComponentContext) target;
-                TargetInvoker invoker = componentContext.createTargetInvoker(serviceName, outboundChain.getMethod());
-                connect(outboundChain, inboundChain, invoker);
-            }
+            connect(inboundChain, outboundChain);
         }
     }
 
-    public <T> void connect(OutboundWire<T> sourceWire, OutboundWire<T> targetWire, Context<?> target, boolean optimizable) {
-        //xcv
-        Map<Method, OutboundInvocationChain> targetChains = targetWire.getInvocationChains();
+    public <T> void connect(OutboundWire<T> sourceWire, InboundWire<T> targetWire, Context<?> context, boolean optimizable) {
+        Map<Method, InboundInvocationChain> targetChains = targetWire.getInvocationChains();
         // perform optimization, if possible
         if (optimizable && sourceWire.getInvocationChains().isEmpty() && targetChains.isEmpty()) {
             sourceWire.setTargetWire(targetWire);
             return;
         }
-        String serviceName = targetWire.getTargetName().getPortName();
         for (OutboundInvocationChain outboundChain : sourceWire.getInvocationChains().values()) {
             // match wire chains
-            OutboundInvocationChain serviceChain = targetChains.get(outboundChain.getMethod());
-            if (serviceChain == null) {
+            InboundInvocationChain inboundChain = targetChains.get(outboundChain.getMethod());
+            if (inboundChain == null) {
                 BuilderConfigException e = new BuilderConfigException("Incompatible sourceWire and target chain interfaces for reference");
                 e.setIdentifier(sourceWire.getReferenceName());
                 throw e;
             }
-            if (target instanceof ReferenceContext) {
-                ReferenceContext referenceContext = (ReferenceContext) target;
-                TargetInvoker invoker = referenceContext.createTargetInvoker(serviceName, outboundChain.getMethod());
-                connect(outboundChain, serviceChain, invoker);
-            } else {
-                ComponentContext componentContext = (ComponentContext) target;
-                TargetInvoker invoker = componentContext.createTargetInvoker(serviceName, outboundChain.getMethod());
-                connect(outboundChain, serviceChain, invoker);
+            if (context instanceof ComponentContext) {
+                connect(outboundChain, inboundChain, ((ComponentContext) context).createTargetInvoker(targetWire.getServiceName(), inboundChain.getMethod()));
+            } else if (context instanceof ReferenceContext) {
+                connect(outboundChain, inboundChain, ((ReferenceContext) context).createTargetInvoker(targetWire.getServiceName(), inboundChain.getMethod()));
             }
         }
     }
@@ -253,79 +176,6 @@
         sourceChain.setTargetInvoker(invoker);
     }
 
-    public void connect(InboundInvocationChain sourceChain, InboundInvocationChain targetChain) {
-        if (sourceChain.getTailInterceptor() != null) {
-            // connect the tail interceptor to a target request channel or target interceptor
-            if (targetChain.getRequestHandlers() != null) {
-                MessageChannel targetRequestChannel = targetChain.getRequestChannel();
-                MessageChannel targetResponseChannel = targetChain.getResponseChannel();
-                sourceChain.setTargetRequestChannel(targetRequestChannel);
-                sourceChain.setTargetResponseChannel(targetResponseChannel);
-                sourceChain.getTailInterceptor().setNext(new RequestResponseInterceptor(null, targetRequestChannel,
-                        null, targetResponseChannel));
-            } else {
-                // connect to target interceptor
-                if (targetChain.getHeadInterceptor() == null) {
-                    BuilderConfigException e = new BuilderConfigException("Service chain must have an interceptor");
-                    e.setIdentifier(targetChain.getMethod().getName());
-                    throw e;
-                }
-                sourceChain.getTailInterceptor().setNext(new BridgingInterceptor(targetChain.getHeadInterceptor()));
-            }
-        } else {
-            // no source interceptor
-            List<MessageHandler> sourceRequestHandlers = sourceChain.getRequestHandlers();
-            List<MessageHandler> targetRequestHandlers = targetChain.getRequestHandlers();
-            List<MessageHandler> targetResponseHandlers = targetChain.getResponseHandlers();
-            List<MessageHandler> sourceResponseHandlers = sourceChain.getResponseHandlers();
-            if (sourceRequestHandlers != null && !sourceRequestHandlers.isEmpty()) {
-                // connect source and target side request handlers
-                if (targetRequestHandlers != null && !targetRequestHandlers.isEmpty()) {
-                    sourceRequestHandlers.add(new BridgingHandler(targetRequestHandlers.get(0)));
-                } else {
-                    sourceRequestHandlers.add(new MessageDispatcher(targetChain.getHeadInterceptor()));
-                }
-            } else {
-                // no source interceptor or request handlers
-                MessageChannel targetRequestChannel = targetChain.getRequestChannel();
-                MessageChannel targetResponseChannel = targetChain.getResponseChannel();
-                if ((targetRequestHandlers == null || targetRequestHandlers.isEmpty())
-                        && (targetResponseHandlers == null || targetResponseHandlers.isEmpty())) {
-                    // no handlers on target, connect directly to head target interceptor (there must be at least one)
-                    if (targetChain.getHeadInterceptor() == null) {
-                        BuilderConfigException e = new BuilderConfigException("Service chain must have an interceptor");
-                        e.setIdentifier(targetChain.getMethod().getName());
-                        throw e;
-                    }
-                    sourceChain.setTargetInterceptor(targetChain.getHeadInterceptor());
-                } else {
-                    if (targetRequestChannel == null) {
-                        sourceChain.setTargetInterceptor(new BridgingInterceptor(targetChain.getHeadInterceptor()));
-
-                    } else {
-                        sourceChain.setTargetRequestChannel(targetRequestChannel);
-                        sourceChain.addInterceptor(new RequestResponseInterceptor(null, targetRequestChannel, null, targetResponseChannel));
-                    }
-                    sourceChain.setTargetResponseChannel(targetResponseChannel);
-                }
-            }
-            // bridge response handlers
-            if (sourceResponseHandlers != null && !sourceResponseHandlers.isEmpty()) {
-                if (targetResponseHandlers != null && !targetResponseHandlers.isEmpty()) {
-                    sourceResponseHandlers.add(new BridgingHandler(targetResponseHandlers.get(0)));
-                }
-            }
-        }
-    }
-
-    public void connect(OutboundInvocationChain sourceChain, OutboundInvocationChain targetChain, TargetInvoker invoker) {
-        if (sourceChain.getRequestChannel() != null) {
-            sourceChain.addRequestHandler(new MessageDispatcher(targetChain.getHeadInterceptor()));
-        } else {
-            sourceChain.setTargetInterceptor(targetChain.getHeadInterceptor());
-        }
-        sourceChain.setTargetInvoker(invoker);
-    }
 
     public void connect(InboundInvocationChain sourceChain, OutboundInvocationChain targetChain) {
         sourceChain.addInterceptor(new BridgingInterceptor(targetChain.getHeadInterceptor()));

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -2,10 +2,12 @@
 
 import org.apache.tuscany.core.context.AutowireContext;
 import org.apache.tuscany.core.system.context.SystemReferenceContextImpl;
+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.SystemInboundAutowire;
 import org.apache.tuscany.core.system.wire.SystemInboundWire;
+import org.apache.tuscany.core.system.wire.SystemOutboundAutowire;
+import org.apache.tuscany.core.system.wire.SystemOutboundWire;
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.builder.BindingBuilder;
 import org.apache.tuscany.spi.context.ComponentContext;
@@ -14,7 +16,7 @@
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.BoundReference;
 import org.apache.tuscany.spi.model.BoundService;
-import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundWire;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -25,8 +27,12 @@
         Class<?> interfaze = boundService.getServiceContract().getInterfaceClass();
         QualifiedName targetName = new QualifiedName(boundService.getTarget().getPath());
         ComponentContext target = (ComponentContext) parent.getContext(targetName.getPartName());
-        SystemInboundWire<?> wire = new SystemInboundWire(targetName.getPortName(), interfaze, target);
-        return new SystemServiceContextImpl(boundService.getName(), wire, parent);
+        SystemInboundWire<?> inboundWire = new SystemInboundWire(boundService.getName(), interfaze, target);
+        SystemOutboundWire<?> outboundWire = new SystemOutboundWire(boundService.getName(), targetName, interfaze);
+        SystemServiceContext context = new SystemServiceContextImpl(boundService.getName(), parent);
+        context.setInboundWire(inboundWire);
+        context.setOutboundWire(outboundWire);
+        return context;
     }
 
     public Context build(CompositeContext parent, BoundReference<SystemBinding> boundReference, DeploymentContext deploymentContext) {
@@ -34,8 +40,10 @@
         AutowireContext autowireContext = (AutowireContext) parent.getParent();
         Class<?> interfaze = boundReference.getServiceContract().getInterfaceClass();
         SystemReferenceContextImpl ctx = new SystemReferenceContextImpl(boundReference.getName(), interfaze, parent);
-        InboundWire<?> wire = new SystemInboundAutowire(interfaze, autowireContext);
-        ctx.setInboundWire(wire);
+        SystemInboundWire<?> inboundWire = new SystemInboundWire(boundReference.getName(), interfaze);
+        OutboundWire<?> outboundWire = new SystemOutboundAutowire(boundReference.getName(), interfaze, autowireContext);
+        ctx.setInboundWire(inboundWire);
+        ctx.setOutboundWire(outboundWire);
         return ctx;
     }
 }

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -6,7 +6,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.core.context.AutowireContext;
 import org.apache.tuscany.core.injection.ContextInjector;
 import org.apache.tuscany.core.injection.Injector;
@@ -15,20 +14,21 @@
 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.SystemOutboundAutowire;
 import org.apache.tuscany.core.system.wire.SystemOutboundWire;
-import org.apache.tuscany.core.system.wire.SystemInboundWire;
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
-import org.apache.tuscany.spi.model.Component;
-import org.apache.tuscany.spi.model.ReferenceTarget;
-import org.apache.tuscany.spi.model.Service;
+import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.ComponentBuilder;
 import org.apache.tuscany.spi.context.ComponentContext;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.model.Component;
+import org.apache.tuscany.spi.model.ReferenceTarget;
+import org.apache.tuscany.spi.model.Service;
 import org.apache.tuscany.spi.wire.OutboundWire;
 
 /**
@@ -85,8 +85,8 @@
 
         for (Service service : component.getImplementation().getComponentType().getServices().values()) {
             Class interfaze = service.getServiceContract().getInterfaceClass();
-            SystemInboundWire wire = new SystemInboundWire(service.getName(), interfaze, systemContext);
-            systemContext.addServiceWire(wire);
+            SystemInboundWire<?> wire = new SystemInboundWire(service.getName(), interfaze, systemContext);
+            systemContext.addInboundWire(wire);
         }
         for (ReferenceTarget target : component.getReferenceTargets().values()) {
             String referenceName = target.getReferenceName();
@@ -108,7 +108,7 @@
                 QualifiedName targetName = new QualifiedName(target.getTargets().get(0).getPath());
                 wire = new SystemOutboundWire(referenceName, targetName, interfaze);
             }
-            systemContext.addReferenceWire(wire);
+            systemContext.addOutboundWire(wire);
         }
         return systemContext;
     }

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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -3,7 +3,6 @@
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.extension.ServiceContextExtension;
-import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.WireInvocationHandler;
 
 /**
@@ -13,11 +12,12 @@
  */
 public class SystemServiceContextImpl<T> extends ServiceContextExtension<T> implements SystemServiceContext<T> {
 
-    public SystemServiceContextImpl(String name, InboundWire<T> wire, CompositeContext parent) throws CoreRuntimeException {
-        super(name, wire, parent);
+    public SystemServiceContextImpl(String name, CompositeContext parent) throws CoreRuntimeException {
+        super(name, parent);
     }
 
     public WireInvocationHandler getHandler() {
+        // system services do not proxy
         throw new UnsupportedOperationException();
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java Tue May 30 10:37:42 2006
@@ -72,23 +72,23 @@
         throw new UnsupportedOperationException();
     }
 
-    public void addServiceWire(InboundWire wire) {
+    public void addInboundWire(InboundWire wire) {
         throw new UnsupportedOperationException();
     }
 
-    public InboundWire getServiceWire(String serviceName) {
+    public InboundWire getInboundWire(String serviceName) {
         throw new UnsupportedOperationException();
     }
 
-    public void addReferenceWire(OutboundWire wire) {
+    public void addOutboundWire(OutboundWire wire) {
         throw new UnsupportedOperationException();
     }
 
-    public void addReferenceWires(Class<?> multiplicityClass, List<OutboundWire> wires) {
+    public void addOutboundWires(Class<?> multiplicityClass, List<OutboundWire> wires) {
         throw new UnsupportedOperationException();
     }
 
-    public Map<String,List<OutboundWire>> getReferenceWires() {
+    public Map<String,List<OutboundWire>> getOutboundWires() {
         throw new UnsupportedOperationException();
     }
 

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=410323&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 Tue May 30 10:37:42 2006
@@ -0,0 +1,94 @@
+package org.apache.tuscany.core.system.wire;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.Map;
+
+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;
+
+/**
+ * An inbound wire configured to use the {@link org.apache.tuscany.core.system.model.SystemBinding}. System
+ * wires bind directly to their targets without proxying or interposing invocation chains.
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemInboundWire<T> implements InboundWire<T> {
+    private String serviceName;
+    private Class<T> businessInterface;
+    private ComponentContext<?> componentContext;
+    private OutboundWire<T> wire;
+
+    /**
+     * Constructs a new inbound wire
+     * @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
+     */
+    public SystemInboundWire(String serviceName, Class<T> businessInterface, ComponentContext<?> target) {
+        this.serviceName = serviceName;
+        this.businessInterface = businessInterface;
+        this.componentContext = target;
+    }
+
+    public SystemInboundWire(String serviceName, Class<T> businessInterface) {
+        this.serviceName = serviceName;
+        this.businessInterface = businessInterface;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    @SuppressWarnings("unchecked")
+    public T getTargetService() throws TargetException {
+        if (wire != null) {
+            return wire.getTargetService();
+        }
+        return (T) componentContext.getService(serviceName);
+    }
+
+    public Class<T> getBusinessInterface() {
+        return businessInterface;
+    }
+
+    public void setBusinessInterface(Class<T> businessInterface) {
+        this.businessInterface = businessInterface;
+    }
+
+    public Class[] getImplementedInterfaces() {
+        return new Class[0];
+    }
+
+    public Map<Method, InboundInvocationChain> getInvocationChains() {
+        return Collections.emptyMap();
+    }
+
+    public void addInvocationChain(Method method, InboundInvocationChain chain) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInvocationChains(Map chains) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInterface(Class claz) {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isOptimizable() {
+        return true;  // system wires are always optimizable
+    }
+
+    public void setTargetWire(OutboundWire<T> wire) {
+        this.wire = 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=410323&r1=410322&r2=410323&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 Tue May 30 10:37:42 2006
@@ -10,10 +10,9 @@
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.RuntimeWire;
 
 /**
- * The source side of an wire configured to autowire
+ * An outbound wire that relies on the runtime autowire algorithm to resolve a target instance
  *
  * @version $$Rev$$ $$Date$$
  */
@@ -59,7 +58,7 @@
         return new Class[0];
     }
 
-    public void setTargetWire(RuntimeWire<T> wire) {
+    public void setTargetWire(InboundWire<T> wire) {
         throw new UnsupportedOperationException();
     }
 
@@ -77,9 +76,6 @@
 
     public void addInterface(Class claz) {
         throw new UnsupportedOperationException();
-    }
-
-    public void setTargetWire(InboundWire<T> wire) {
     }
 
     public boolean isOptimizable() {

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=410323&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 Tue May 30 10:37:42 2006
@@ -0,0 +1,91 @@
+package org.apache.tuscany.core.system.wire;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.tuscany.spi.QualifiedName;
+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
+ * wires bind directly to their targets without prxying or interposing invocation chains.
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemOutboundWire<T> implements OutboundWire<T> {
+    private String referenceName;
+    private QualifiedName targetName;
+    private Class<T> businessInterface;
+    private InboundWire<T> targetWire;
+
+    public SystemOutboundWire(String referenceName, QualifiedName targetName, Class<T> businessInterface) {
+        this.referenceName = referenceName;
+        this.targetName = targetName;
+        this.businessInterface = businessInterface;
+    }
+
+    public String getReferenceName() {
+        return referenceName;
+    }
+
+    public void setReferenceName(String referenceName) {
+        this.referenceName = referenceName;
+    }
+
+    public QualifiedName getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(QualifiedName targetName) {
+        this.targetName = targetName;
+    }
+
+    public T getTargetService() throws TargetException {
+        if (targetWire == null) {
+            throw new TargetException("No target wire connected to source wire");
+        }
+        return targetWire.getTargetService();
+    }
+
+    public Class<T> getBusinessInterface() {
+        return businessInterface;
+    }
+
+    public void setBusinessInterface(Class<T> businessInterface) {
+        this.businessInterface = businessInterface;
+    }
+
+    public Class[] getImplementedInterfaces() {
+        return new Class[0];
+    }
+
+
+    public Map<Method, OutboundInvocationChain> getInvocationChains() {
+        return Collections.emptyMap();
+    }
+
+    public void addInvocationChain(Method method, OutboundInvocationChain chains) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInvocationChains(Map chains) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInterface(Class claz) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setTargetWire(InboundWire<T> wire) {
+        targetWire = wire;
+    }
+
+    public boolean isOptimizable() {
+        return true;
+    }
+
+}

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/PojoTargetInvoker.java (from r410163, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/PojoTargetInvoker.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/PojoTargetInvoker.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java&r1=410163&r2=410323&rev=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/PojoTargetInvoker.java Tue May 30 10:37:42 2006
@@ -1,4 +1,4 @@
-package org.apache.tuscany.core.wire.jdk;
+package org.apache.tuscany.core.wire;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/StaticPojoTargetInvoker.java (from r410163, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/StaticPojoTargetInvoker.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/StaticPojoTargetInvoker.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java&r1=410163&r2=410323&rev=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/StaticPojoTargetInvoker.java Tue May 30 10:37:42 2006
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.tuscany.core.wire.jdk;
+package org.apache.tuscany.core.wire;
 
 import java.lang.reflect.Method;
 

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/StaticPojoTargetInvoker.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/StaticPojoTargetInvoker.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInboundWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInboundWire.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInboundWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInboundWire.java Tue May 30 10:37:42 2006
@@ -6,13 +6,12 @@
 
 import org.apache.tuscany.core.util.MethodHashMap;
 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.Interceptor;
 import org.apache.tuscany.spi.wire.MessageHandler;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.ServiceInvocationHandler;
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.RuntimeWire;
-import org.apache.tuscany.spi.QualifiedName;
 
 /**
  * Creates proxies that are returned to non-SCA clients using JDK dynamic proxy facilities and front a wire.
@@ -23,10 +22,9 @@
  */
 public class JDKInboundWire<T> implements InboundWire<T> {
 
+    private String serviceName;
     private Class[] businessInterfaces;
     private Map<Method, InboundInvocationChain> invocationChains = new MethodHashMap<InboundInvocationChain>();
-    private String serviceName;
-    private QualifiedName targetName;
 
     @SuppressWarnings("unchecked")
     public T getTargetService() throws TargetException {
@@ -59,14 +57,6 @@
         this.serviceName = serviceName;
     }
 
-    public QualifiedName getTargetName() {
-        return targetName;
-    }
-
-    public void setTargetName(QualifiedName targetName) {
-        this.targetName = targetName;
-    }
-    
     public Map<Method, InboundInvocationChain> getInvocationChains() {
         return invocationChains;
     }
@@ -79,7 +69,7 @@
         invocationChains.put(method, chain);
     }
 
-    public void setTargetWire(RuntimeWire<T> wire) {
+    public void setTargetWire(OutboundWire<T> wire) {
         throw new UnsupportedOperationException("not yet implemented"); // FIXME
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKOutboundWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKOutboundWire.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKOutboundWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKOutboundWire.java Tue May 30 10:37:42 2006
@@ -20,12 +20,12 @@
 import org.apache.tuscany.core.util.MethodHashMap;
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Interceptor;
 import org.apache.tuscany.spi.wire.MessageHandler;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.ReferenceInvocationHandler;
-import org.apache.tuscany.spi.wire.RuntimeWire;
 
 /**
  * Creates proxies that are injected on references using JDK dynamic proxy facilities and front a wire. The
@@ -39,7 +39,7 @@
     private Map<Method, OutboundInvocationChain> invocationChains = new MethodHashMap<OutboundInvocationChain>();
     private String referenceName;
     private QualifiedName targetName;
-    private RuntimeWire<T> targetWire;
+    private InboundWire<T> targetWire;
 
     @SuppressWarnings("unchecked")
     public T getTargetService() throws TargetException {
@@ -68,8 +68,8 @@
         return businessInterfaces;
     }
 
-    public void setTargetWire(RuntimeWire<T> wire) {
-       this.targetWire = wire;
+    public void setTargetWire(InboundWire<T> wire) {
+        this.targetWire = wire;
     }
 
     public Map<Method, OutboundInvocationChain> getInvocationChains() {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java?rev=410323&r1=410322&r2=410323&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java Tue May 30 10:37:42 2006
@@ -4,17 +4,17 @@
 import java.util.Set;
 
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
-import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
 import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
-import org.apache.tuscany.spi.model.Reference;
-import org.apache.tuscany.spi.model.Service;
+import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.model.Reference;
+import org.apache.tuscany.spi.model.Service;
 import org.apache.tuscany.spi.policy.PolicyBuilderRegistry;
-import org.apache.tuscany.spi.wire.OutboundInvocationChain;
-import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 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.WireFactoryService;
 import org.apache.tuscany.spi.wire.WireService;
 import org.osoa.sca.annotations.Init;



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