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/12/23 13:14:11 UTC

svn commit: r489888 [5/6] - in /incubator/tuscany/java/sca: kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/ kernel/core/src/main/java/org/apache/tuscany/core/builder/ kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ kerne...

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java Sat Dec 23 04:14:05 2006
@@ -37,11 +37,11 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.DuplicateNameException;
 import org.apache.tuscany.spi.component.IllegalTargetException;
+import org.apache.tuscany.spi.component.InvalidAutowireInterface;
 import org.apache.tuscany.spi.component.PrepareException;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.Service;
-import org.apache.tuscany.spi.component.TargetNotFoundException;
 import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.model.Scope;
@@ -66,10 +66,10 @@
     protected final List<Reference> systemReferences = new ArrayList<Reference>();
 
     // autowire mappings
-    protected final Map<Class, SCAObject> autowireInternal = new ConcurrentHashMap<Class, SCAObject>();
-    protected final Map<Class, Service> autowireExternal = new ConcurrentHashMap<Class, Service>();
-    protected final Map<Class, SCAObject> systemAutowireInternal = new ConcurrentHashMap<Class, SCAObject>();
-    protected final Map<Class, Service> systemAutowireExternal = new ConcurrentHashMap<Class, Service>();
+    protected final Map<Class, InboundWire> autowireInternal = new ConcurrentHashMap<Class, InboundWire>();
+    protected final Map<Class, InboundWire> autowireExternal = new ConcurrentHashMap<Class, InboundWire>();
+    protected final Map<Class, InboundWire> systemAutowireInternal = new ConcurrentHashMap<Class, InboundWire>();
+    protected final Map<Class, InboundWire> systemAutowireExternal = new ConcurrentHashMap<Class, InboundWire>();
 
     protected CompositeComponentExtension(String name,
                                           CompositeComponent parent,
@@ -78,6 +78,7 @@
         super(name, parent);
         this.propertyValues = propertyValues;
         this.connector = connector;
+        // JFM FIXME
     }
 
     public Scope getScope() {
@@ -224,14 +225,6 @@
         return null;
     }
 
-    public Object getServiceInstance() throws TargetResolutionException {
-        Service service = services.get(0);
-        if (service == null) {
-            throw new TargetNotFoundException("Component has no services");
-        }
-        return service.getServiceInstance();
-    }
-
     public Service getSystemService(String name) {
         SCAObject ctx = systemChildren.get(name);
         if (ctx instanceof Service) {
@@ -240,52 +233,6 @@
         return null;
     }
 
-    public <T> T locateService(Class<T> serviceInterface, String name) throws TargetResolutionException {
-        SCAObject target = children.get(name);
-        if (target == null) {
-            TargetNotFoundException e = new TargetNotFoundException(name);
-            e.addContextName(getName());
-            throw e;
-        }
-        return serviceInterface.cast(target.getServiceInstance());
-    }
-
-    public <T> T locateSystemService(Class<T> serviceInterface, String name) throws TargetResolutionException {
-        SCAObject object = systemChildren.get(name);
-        if (object == null) {
-            TargetNotFoundException e = new TargetNotFoundException(name);
-            e.addContextName(getName());
-            throw e;
-        }
-        return serviceInterface.cast(object.getServiceInstance());
-    }
-
-    public Object getServiceInstance(String name) throws TargetResolutionException {
-        SCAObject context = children.get(name);
-        if (context == null) {
-            TargetNotFoundException e = new TargetNotFoundException(name);
-            e.addContextName(getName());
-            throw e;
-        } else if (context instanceof Service) {
-            return context.getServiceInstance();
-        } else {
-            throw new IllegalTargetException("Target must be a service", name);
-        }
-    }
-
-    public Object getSystemServiceInstance(String name) throws TargetResolutionException {
-        SCAObject target = systemChildren.get(name);
-        if (target == null) {
-            TargetNotFoundException e = new TargetNotFoundException(name);
-            e.addContextName(getName());
-            throw e;
-        } else if (target instanceof Service) {
-            return target.getServiceInstance();
-        } else {
-            throw new IllegalTargetException("Target must be a service", name);
-        }
-    }
-
     public List<Class<?>> getServiceInterfaces() {
         List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>(services.size());
         synchronized (services) {
@@ -296,67 +243,46 @@
         return serviceInterfaces;
     }
 
-    public <T> T resolveInstance(Class<T> instanceInterface) throws TargetResolutionException {
-        if (CompositeComponent.class.equals(instanceInterface)) {
-            return instanceInterface.cast(this);
-        }
-        SCAObject context = autowireInternal.get(instanceInterface);
-        if (context != null) {
-            try {
-                if (context instanceof AtomicComponent || context instanceof Reference || context instanceof Service) {
-                    return instanceInterface.cast(context.getServiceInstance());
-                } else {
-                    String interfaceName = instanceInterface.getName();
-                    throw new IllegalTargetException("Autowire target must be a system type", interfaceName);
-                }
-            } catch (CoreRuntimeException e) {
-                e.addContextName(getName());
-                throw e;
+    public InboundWire resolveAutowire(Class<?> instanceInterface) throws TargetResolutionException {
+        InboundWire wire = autowireInternal.get(instanceInterface);
+        if (wire != null) {
+            SCAObject parent = wire.getContainer();
+            if (parent instanceof AtomicComponent || parent instanceof Reference
+                || parent instanceof Service) {
+                return wire;
+            } else {
+                throw new IllegalTargetException("Autowire target must be a system type", parent.getName());
             }
         } else {
-            if (CompositeComponent.class.isAssignableFrom(instanceInterface)) {
-                return instanceInterface.cast(this);
-            }
             // resolve to parent
             if (getParent() == null) {
                 return null;
             }
-            return getParent().resolveInstance(instanceInterface);
+            return getParent().resolveAutowire(instanceInterface);
         }
     }
 
-    public <T> T resolveSystemInstance(Class<T> instanceInterface) throws TargetResolutionException {
-        if (CompositeComponent.class.equals(instanceInterface)) {
-            return instanceInterface.cast(this);
-        }
-        SCAObject context = systemAutowireInternal.get(instanceInterface);
-        if (context != null) {
-            try {
-                if (context instanceof AtomicComponent || context instanceof Reference || context instanceof Service) {
-                    return instanceInterface.cast(context.getServiceInstance());
-                } else {
-                    String interfaceName = instanceInterface.getName();
-                    throw new IllegalTargetException("Autowire target must be a system type", interfaceName);
-                }
-            } catch (CoreRuntimeException e) {
-                e.addContextName(getName());
-                throw e;
-            }
+
+    public InboundWire resolveSystemAutowire(Class<?> instanceInterface) throws TargetResolutionException {
+        InboundWire wire = systemAutowireInternal.get(instanceInterface);
+        if (wire != null) {
+            return wire;
         } else {
             // resolve to parent
             if (getParent() != null) {
-                return getParent().resolveSystemInstance(instanceInterface);
+                return getParent().resolveSystemAutowire(instanceInterface);
             } else {
                 return null;
             }
         }
     }
 
-    public <T> T resolveExternalInstance(Class<T> instanceInterface) throws TargetResolutionException {
-        Service service = autowireExternal.get(instanceInterface);
-        if (service != null) {
+
+    public InboundWire resolveExternalAutowire(Class<?> instanceInterface) throws TargetResolutionException {
+        InboundWire wire = autowireExternal.get(instanceInterface);
+        if (wire != null) {
             try {
-                return instanceInterface.cast(service.getServiceInstance());
+                return wire;
             } catch (CoreRuntimeException e) {
                 e.addContextName(getName());
                 throw e;
@@ -366,11 +292,11 @@
         }
     }
 
-    public <T> T resolveSystemExternalInstance(Class<T> instanceInterface) throws TargetResolutionException {
-        Service service = systemAutowireExternal.get(instanceInterface);
-        if (service != null) {
+    public InboundWire resolveSystemExternalAutowire(Class<?> instanceInterface) throws TargetResolutionException {
+        InboundWire wire = systemAutowireExternal.get(instanceInterface);
+        if (wire != null) {
             try {
-                return instanceInterface.cast(service.getServiceInstance());
+                return wire;
             } catch (CoreRuntimeException e) {
                 e.addContextName(getName());
                 throw e;
@@ -427,7 +353,7 @@
         }
     }
 
-    protected void registerAutowireExternal(Class<?> interfaze, Service service) {
+    protected void registerAutowireExternal(Class<?> interfaze, Service service) throws InvalidAutowireInterface {
         if (interfaze == null) {
             // The ServiceContract is not from Java
             return;
@@ -436,52 +362,131 @@
             if (systemAutowireExternal.containsKey(interfaze)) {
                 return;
             }
-            systemAutowireExternal.put(interfaze, service);
+            InboundWire wire = service.getInboundWire();
+            if (!interfaze.isAssignableFrom(wire.getServiceContract().getInterfaceClass())) {
+                throw new InvalidAutowireInterface("Matching inbound wire not found for interface",
+                    interfaze.getName());
+            }
+            systemAutowireExternal.put(interfaze, wire);
         } else {
             if (autowireExternal.containsKey(interfaze)) {
                 return;
             }
-            autowireExternal.put(interfaze, service);
+            // JFM fixme hack remove null check; the null check is needed because of
+            // JDKWireService. public void createWires(Service service, String targetName, ServiceContract<?> contract)
+            // does not set the inbound wire on Composite Services. This should be changed
+            if (service.getInboundWire() != null) {
+                InboundWire wire = service.getInboundWire();
+                if (!interfaze.isAssignableFrom(wire.getServiceContract().getInterfaceClass())) {
+                    String iName = interfaze.getName();
+                    throw new InvalidAutowireInterface("Matching inbound wire not found for interface", iName);
+                }
+                autowireExternal.put(interfaze, service.getInboundWire());
+            }
         }
     }
 
-    protected void registerAutowireInternal(Class<?> interfaze, SCAObject object) {
+    protected void registerAutowireInternal(Class<?> interfaze, Service service) throws InvalidAutowireInterface {
         if (interfaze == null) {
             // The ServiceContract is not from Java
             return;
         }
-        if (object.isSystem()) {
+        if (service.isSystem()) {
             if (systemAutowireInternal.containsKey(interfaze)) {
                 return;
             }
-            systemAutowireInternal.put(interfaze, object);
+            systemAutowireInternal.put(interfaze, service.getInboundWire());
         } else {
             if (autowireInternal.containsKey(interfaze)) {
                 return;
             }
-            autowireInternal.put(interfaze, object);
+            InboundWire wire = service.getInboundWire();
+            if (!interfaze.isAssignableFrom(wire.getServiceContract().getInterfaceClass())) {
+                String iName = interfaze.getName();
+                throw new InvalidAutowireInterface("Matching inbound wire not found for interface", iName);
+            }
+            autowireInternal.put(interfaze, wire);
+        }
+    }
+
+    protected void registerAutowireInternal(Class<?> interfaze, Reference reference) throws InvalidAutowireInterface {
+        if (interfaze == null) {
+            // The ServiceContract is not from Java
+            return;
+        }
+        if (reference.isSystem()) {
+            if (systemAutowireInternal.containsKey(interfaze)) {
+                return;
+            }
+            InboundWire wire = reference.getInboundWire();
+            if (!interfaze.isAssignableFrom(wire.getServiceContract().getInterfaceClass())) {
+                throw new InvalidAutowireInterface("Matching inbound wire not found for interface",
+                    interfaze.getName());
+            }
+            systemAutowireInternal.put(interfaze, wire);
+        } else {
+            if (autowireInternal.containsKey(interfaze)) {
+                return;
+            }
+            InboundWire wire = reference.getInboundWire();
+            if (!interfaze.isAssignableFrom(wire.getServiceContract().getInterfaceClass())) {
+                String iName = interfaze.getName();
+                throw new InvalidAutowireInterface("Matching inbound wire not found for interface", iName);
+            }
+            autowireInternal.put(interfaze, reference.getInboundWire());
+        }
+    }
+
+    protected void registerAutowireInternal(Class<?> interfaze, AtomicComponent component)
+        throws InvalidAutowireInterface {
+        if (interfaze == null) {
+            // The ServiceContract is not from Java
+            return;
+        }
+        if (component.isSystem()) {
+            if (systemAutowireInternal.containsKey(interfaze) || component.getInboundWires().size() == 0) {
+                return;
+            }
+            for (InboundWire wire : component.getInboundWires().values()) {
+                if (wire.getServiceContract().getInterfaceClass().isAssignableFrom(interfaze)) {
+                    systemAutowireInternal.put(interfaze, wire);
+                    return;
+                }
+            }
+            throw new InvalidAutowireInterface("Matching inbound wire not found for interface", interfaze.getName());
+        } else {
+            if (autowireInternal.containsKey(interfaze) || component.getInboundWires().size() == 0) {
+                return;
+            }
+            for (InboundWire wire : component.getInboundWires().values()) {
+                if (interfaze.isAssignableFrom(wire.getServiceContract().getInterfaceClass())) {
+                    autowireInternal.put(interfaze, wire);
+                    return;
+                }
+            }
+            throw new InvalidAutowireInterface("Matching inbound wire not found for interface", interfaze.getName());
         }
     }
 
-    protected void registerAutowire(CompositeComponent component) {
+    protected void registerAutowire(CompositeComponent component) throws InvalidAutowireInterface {
         List<Service> services = component.getServices();
         for (Service service : services) {
             registerAutowireInternal(service.getInterface(), service);
         }
     }
 
-    protected void registerAutowire(AtomicComponent component) {
+    protected void registerAutowire(AtomicComponent component) throws InvalidAutowireInterface {
         List<Class<?>> services = component.getServiceInterfaces();
         for (Class<?> service : services) {
             registerAutowireInternal(service, component);
         }
     }
 
-    protected void registerAutowire(Reference reference) {
+    protected void registerAutowire(Reference reference) throws InvalidAutowireInterface {
         registerAutowireInternal(reference.getInterface(), reference);
     }
 
-    protected void registerAutowire(Service service) {
+    protected void registerAutowire(Service service) throws InvalidAutowireInterface {
         registerAutowireExternal(service.getInterface(), service);
     }
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceExtension.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceExtension.java Sat Dec 23 04:14:05 2006
@@ -22,7 +22,6 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
-import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
@@ -76,10 +75,6 @@
 
     public Class<?> getInterface() {
         return referenceInterface;
-    }
-
-    public Object getServiceInstance() throws TargetResolutionException {
-        return wireService.createProxy(inboundWire);
     }
 
     public WireInvocationHandler getHandler() {

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceExtension.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ServiceExtension.java Sat Dec 23 04:14:05 2006
@@ -23,7 +23,6 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
-import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
@@ -91,10 +90,6 @@
     public TargetInvoker createCallbackTargetInvoker(ServiceContract contract, Operation operation)
         throws TargetInvokerCreationException {
         throw new UnsupportedOperationException();
-    }
-
-    public Object getServiceInstance() throws TargetResolutionException {
-        return wireService.createProxy(inboundWire);
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/SystemAtomicComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/SystemAtomicComponentExtension.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/SystemAtomicComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/SystemAtomicComponentExtension.java Sat Dec 23 04:14:05 2006
@@ -22,8 +22,6 @@
 
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
-import org.apache.tuscany.spi.component.SystemAtomicComponent;
-import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -31,7 +29,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public abstract class SystemAtomicComponentExtension extends AtomicComponentExtension implements SystemAtomicComponent {
+public abstract class SystemAtomicComponentExtension extends AtomicComponentExtension {
     protected List<Class<?>> interfazes;
 
     public SystemAtomicComponentExtension(String name,
@@ -48,14 +46,6 @@
                                           int initLevel) {
         super(name, parent, scopeContainer, null, null, null, null, initLevel);
         this.interfazes = serviceInterfaces;
-    }
-
-    public Object getServiceInstance() throws TargetResolutionException {
-        return getTargetInstance();
-    }
-
-    public Object getServiceInstance(String name) throws TargetResolutionException {
-        throw new UnsupportedOperationException();
     }
 
     public List<Class<?>> getServiceInterfaces() {

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/ImplementationProcessorService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/ImplementationProcessorService.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/ImplementationProcessorService.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/ImplementationProcessorService.java Sat Dec 23 04:14:05 2006
@@ -35,8 +35,7 @@
     /**
      * Introspects the given interface to produce a mapped service
      */
-    JavaMappedService createService(Class<?> interfaze) throws InvalidServiceContractException,
-                                                               InvalidServiceContractException;
+    JavaMappedService createService(Class<?> interfaze) throws InvalidServiceContractException;
 
     JavaMappedReference createReference(String name, Member member, Class<?> paramType) throws ProcessingException;
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java Sat Dec 23 04:14:05 2006
@@ -52,6 +52,10 @@
      */
     void setTargetName(QualifiedName name);
 
+    boolean isAutowire();
+
+    void setAutowire(boolean val);
+
     /**
      * Sets the callback interface type generated proxies implement
      */

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java Sat Dec 23 04:14:05 2006
@@ -27,7 +27,6 @@
  * @version $Rev$ $Date$
  */
 public class WireObjectFactory implements ObjectFactory {
-
     private RuntimeWire wire;
     private WireService wireService;
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java Sat Dec 23 04:14:05 2006
@@ -23,8 +23,6 @@
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
-import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
@@ -39,7 +37,7 @@
      * Create a proxy for the supplied wire that implements the supplied interface.
      *
      * @param interfaze the interface that the proxy class must implement
-     * @param wire the wire to connect the proxy to
+     * @param wire      the wire to connect the proxy to
      * @return a proxy that allows invocation of the wire
      * @throws ProxyCreationException if there was a problem creating the proxy
      */
@@ -110,7 +108,7 @@
      * @param def       the model artifact representing the target reference
      * @return the wire for flowing outbound invocations to a reference
      */
-    OutboundWire createWire(ReferenceTarget reference, ReferenceDefinition def);
+    //OutboundWire createWire(ReferenceTarget reference, ReferenceDefinition def);
 
     /**
      * Creates wires for a component and injects them on the component

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java Sat Dec 23 04:14:05 2006
@@ -106,9 +106,6 @@
             return null;
         }
 
-        public Object getServiceInstance() throws TargetResolutionException {
-            return null;
-        }
     }
 
     private class TestEvent implements Event {

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java Sat Dec 23 04:14:05 2006
@@ -78,15 +78,11 @@
             super(null, null, scopeContainer, null, null, null, null, 0);
         }
 
-        public Object getServiceInstance() throws TargetResolutionException {
-            return null;
-        }
-
         public Object createInstance() throws ObjectCreationException {
             return null;
         }
 
-        public Object getServiceInstance(String name) throws TargetResolutionException {
+        public Object getTargetInstance() throws TargetResolutionException {
             return null;
         }
 

Modified: incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java (original)
+++ incubator/tuscany/java/sca/plugins/plugin.itest/src/main/java/org/apache/tuscany/sca/plugin/itest/MavenEmbeddedRuntime.java Sat Dec 23 04:14:05 2006
@@ -29,16 +29,19 @@
 import org.apache.tuscany.spi.bootstrap.ComponentNames;
 import org.apache.tuscany.spi.bootstrap.RuntimeComponent;
 import org.apache.tuscany.spi.builder.BuilderException;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.ComponentException;
 import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.deployer.CompositeClassLoader;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.services.artifact.ArtifactRepository;
+import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.core.bootstrap.Bootstrapper;
 import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
@@ -61,6 +64,7 @@
     private CompositeComponent application;
 
     private ArtifactRepository artifactRepository;
+    // leave untyped b/c of QDox error
     private Map extensions = new HashMap();
 
     public void addExtension(String extensionName, URL extentionSCDL) {
@@ -110,7 +114,17 @@
             tuscanySystem.start();
 
             // switch to the system deployer
-            deployer = (Deployer) tuscanySystem.getSystemChild("deployer").getServiceInstance();
+            SCAObject deployerComponent = tuscanySystem.getSystemChild(ComponentNames.TUSCANY_DEPLOYER);
+            if (!(deployerComponent instanceof AtomicComponent)) {
+                throw new InitializationException("Deployer must be an atomic component");
+            }
+            deployer = (Deployer) ((AtomicComponent) deployerComponent).getTargetInstance();
+
+            SCAObject wireServiceComponent = tuscanySystem.getSystemChild(ComponentNames.TUSCANY_WIRE_SERVICE);
+            if (!(wireServiceComponent instanceof AtomicComponent)) {
+                throw new InitializationException("WireService must be an atomic component");
+            }
+            WireService wireService = (WireService) ((AtomicComponent) wireServiceComponent).getTargetInstance();
 
             for (Object extensionName : extensions.keySet()) {
                 deployExtension(tuscanySystem, deployer, (String) extensionName, (URL) extensions.get(extensionName));
@@ -123,7 +137,7 @@
                 getApplicationClassLoader());
             application.start();
 
-            context = new CompositeContextImpl(application);
+            context = new CompositeContextImpl(application, wireService);
         } catch (LoaderException e) {
             // FIXME do something with this
             e.printStackTrace();

Modified: incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiService.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiService.java (original)
+++ incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiService.java Sat Dec 23 04:14:05 2006
@@ -23,7 +23,6 @@
 
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.SCAObjectStartException;
-import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.extension.ServiceExtension;
 import org.apache.tuscany.spi.wire.WireService;
 
@@ -64,11 +63,7 @@
         super.start();
         Properties properties = new Properties();
         Object instance;
-        try {
-            instance = getServiceInstance();
-        } catch (TargetException e) {
-            throw new SCAObjectStartException(e);
-        }
+        instance = wireService.createProxy(inboundWire);
         if (instance instanceof ServiceFactory) {
             host.registerService(osgiServiceName, instance, properties);
         } else {

Modified: incubator/tuscany/java/sca/runtime/standalone/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/standalone/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/runtime/standalone/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java (original)
+++ incubator/tuscany/java/sca/runtime/standalone/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java Sat Dec 23 04:14:05 2006
@@ -25,11 +25,14 @@
 import org.apache.tuscany.spi.bootstrap.ComponentNames;
 import org.apache.tuscany.spi.bootstrap.RuntimeComponent;
 import org.apache.tuscany.spi.builder.BuilderException;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.ComponentException;
 import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.core.bootstrap.Bootstrapper;
 import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
@@ -90,7 +93,17 @@
             tuscanySystem.start();
 
             // switch to the system deployer
-            deployer = (Deployer) tuscanySystem.getSystemChild("deployer").getServiceInstance();
+            SCAObject deployerComponent = tuscanySystem.getSystemChild(ComponentNames.TUSCANY_DEPLOYER);
+            if (!(deployerComponent instanceof AtomicComponent)) {
+                throw new InitializationException("Deployer must be an atomic component");
+            }
+            deployer = (Deployer) ((AtomicComponent) deployerComponent).getTargetInstance();
+
+            SCAObject wireServiceComponent = tuscanySystem.getSystemChild(ComponentNames.TUSCANY_WIRE_SERVICE);
+            if (!(wireServiceComponent instanceof AtomicComponent)) {
+                throw new InitializationException("WireService must be an atomic component");
+            }
+            WireService wireService = (WireService) ((AtomicComponent) wireServiceComponent).getTargetInstance();
 
             application = deployApplicationScdl(deployer,
                 runtime.getRootComponent(),
@@ -99,7 +112,7 @@
                 getApplicationClassLoader());
             application.start();
 
-            context = new CompositeContextImpl(application);
+            context = new CompositeContextImpl(application, wireService);
         } catch (LoaderException e) {
             // FIXME do something with this
             e.printStackTrace();

Modified: incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java (original)
+++ incubator/tuscany/java/sca/runtime/webapp/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/WebappRuntimeImpl.java Sat Dec 23 04:14:05 2006
@@ -27,11 +27,13 @@
 
 import org.apache.tuscany.spi.bootstrap.ComponentNames;
 import org.apache.tuscany.spi.bootstrap.RuntimeComponent;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.event.EventPublisher;
+import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.core.bootstrap.Bootstrapper;
 import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
@@ -103,7 +105,7 @@
             // hence the need to register this twice
             systemComponent.registerJavaObject(RuntimeInfo.COMPONENT_NAME,
                 RuntimeInfo.class,
-                (WebappRuntimeInfo) getRuntimeInfo());
+                getRuntimeInfo());
             systemComponent.registerJavaObject(WebappRuntimeInfo.COMPONENT_NAME,
                 WebappRuntimeInfo.class,
                 (WebappRuntimeInfo) getRuntimeInfo());
@@ -130,10 +132,24 @@
                 bootClassLoader);
             tuscanySystem.start();
 
-            requestInjector = (ServletRequestInjector) tuscanySystem.getSystemChild("servletHost").getServiceInstance();
+            SCAObject host = tuscanySystem.getSystemChild("servletHost");
+            if (!(host instanceof AtomicComponent)) {
+                throw new InitializationException("Servlet host must be an atomic component");
+            }
+            requestInjector = (ServletRequestInjector) ((AtomicComponent) host).getTargetInstance();
 
             // switch to the system deployer
-            deployer = (Deployer) tuscanySystem.getSystemChild("deployer").getServiceInstance();
+            SCAObject child = tuscanySystem.getSystemChild(ComponentNames.TUSCANY_DEPLOYER);
+            if (!(child instanceof AtomicComponent)) {
+                throw new InitializationException("Deployer must be an atomic component");
+            }
+            deployer = (Deployer) ((AtomicComponent) child).getTargetInstance();
+
+            SCAObject wireServiceComponent = tuscanySystem.getSystemChild(ComponentNames.TUSCANY_WIRE_SERVICE);
+            if (!(wireServiceComponent instanceof AtomicComponent)) {
+                throw new InitializationException("WireService must be an atomic component");
+            }
+            WireService wireService = (WireService) ((AtomicComponent) wireServiceComponent).getTargetInstance();
 
             if (getApplicationScdl() == null) {
                 throw new TuscanyInitException("Could not find application SCDL");
@@ -157,7 +173,7 @@
                     current = (CompositeComponent) o;
                 }
             }
-            context = new CompositeContextImpl(current);
+            context = new CompositeContextImpl(current, wireService);
         } catch (Exception e) {
             throw new ServletLauncherInitException(e);
         }

Modified: incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java Sat Dec 23 04:14:05 2006
@@ -18,7 +18,6 @@
  */
 package org.apache.tuscany.binding.celtix;
 
-import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.List;
@@ -42,7 +41,6 @@
 
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.extension.ServiceExtension;
 import org.apache.tuscany.spi.wire.WireService;
 
@@ -213,37 +211,41 @@
         }
         boolean inout = false;
 
-        Class<?> serviceInterface = this.getInterface();
-        Method meth = getMethod(serviceInterface, operationName.getLocalPart());
+ //       Class<?> serviceInterface = this.getInterface();
+        // Method meth = getMethod(serviceInterface, operationName.getLocalPart());
 
-        Object proxy = null;
-        try {
-            proxy = this.getServiceInstance();
-        } catch (TargetException e) {
-            throw new CeltixServiceInitException(e);
-        }
-
-        return new SCAServerDataBindingCallback(opInfo, inout, meth, proxy, typeHelper);
-    }
-
-    protected Method getMethod(Class<?> serviceInterface, String operationName) {
-        // Note: this doesn't support overloaded operations
-        Method[] methods = serviceInterface.getMethods();
-        for (Method m : methods) {
-            if (m.getName().equals(operationName)) {
-                return m;
-            }
-            // tolerate WSDL with capatalized operation name
-            StringBuilder sb = new StringBuilder(operationName);
-            sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));
-            if (m.getName().equals(sb.toString())) {
-                return m;
-            }
-        }
-        // FIXME
-        throw new CeltixServiceInitException("no operation named " + operationName
-            + " found on service interface: " + serviceInterface.getName());
-    }
+        // Object proxy = null;
+//        try {
+//         //   proxy = this.getServiceInstance();
+//        } catch (TargetException e) {
+//            throw new CeltixServiceInitException(e);
+//        }
+
+        return new SCAServerDataBindingCallback(opInfo,
+            inout,
+            operationName.getLocalPart(),
+            getInboundWire(),
+            typeHelper);
+    }
+
+//    protected Method getMethod(Class<?> serviceInterface, String operationName) {
+//        // Note: this doesn't support overloaded operations
+//        Method[] methods = serviceInterface.getMethods();
+//        for (Method m : methods) {
+//            if (m.getName().equals(operationName)) {
+//                return m;
+//            }
+//            // tolerate WSDL with capatalized operation name
+//            StringBuilder sb = new StringBuilder(operationName);
+//            sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));
+//            if (m.getName().equals(sb.toString())) {
+//                return m;
+//            }
+//        }
+//        // FIXME
+//        throw new CeltixServiceInitException("no operation named " + operationName
+//            + " found on service interface: " + serviceInterface.getName());
+//    }
 
     public DataBindingCallback getFaultDataBindingCallback(ObjectMessageContext objContext) {
         // REVISIT - what to do about faults

Modified: incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/io/SCAServerDataBindingCallback.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/io/SCAServerDataBindingCallback.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/io/SCAServerDataBindingCallback.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/io/SCAServerDataBindingCallback.java Sat Dec 23 04:14:05 2006
@@ -19,39 +19,51 @@
 package org.apache.tuscany.binding.celtix.io;
 
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
+import java.util.Map;
 
-import commonj.sdo.helper.TypeHelper;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.MessageImpl;
 
+import commonj.sdo.helper.TypeHelper;
 import org.objectweb.celtix.bindings.ServerDataBindingCallback;
 import org.objectweb.celtix.bus.bindings.WSDLOperationInfo;
 import org.objectweb.celtix.context.ObjectMessageContext;
 
 
 /**
- *
  * @version $Rev$ $Date$
  */
 public class SCAServerDataBindingCallback extends SCADataBindingCallback
-        implements ServerDataBindingCallback {
-    Method method;
-    Object targetObject;
+    implements ServerDataBindingCallback {
+    String operationName;
+    InboundWire wire;
 
     public SCAServerDataBindingCallback(WSDLOperationInfo op,
                                         boolean inout,
-                                        Method meth,
-                                        Object target,
+                                        String operationName,
+                                        InboundWire wire,
                                         TypeHelper theTypeHelper) {
         super(op, inout, theTypeHelper);
-        method = meth;
-        targetObject = target;
+        this.operationName = operationName;
+        this.wire = wire;
     }
 
 
     public void invoke(ObjectMessageContext octx) throws InvocationTargetException {
         Object ret;
         try {
-            ret = method.invoke(targetObject, octx.getMessageObjects());
+            InboundInvocationChain chain = null;
+            for (Map.Entry<Operation<?>, InboundInvocationChain> entry : wire.getInvocationChains().entrySet()) {
+                if (entry.getKey().getName().equals(operationName)) {
+                    chain = entry.getValue();
+                    break;
+                }
+            }
+            MessageImpl msg = new MessageImpl();
+            msg.setBody(octx.getMessageObjects());
+            ret = chain.getHeadInterceptor().invoke(msg);
         } catch (RuntimeException e) {
             throw e;
         } catch (Exception e) {
@@ -60,10 +72,10 @@
         octx.setReturn(ret);
     }
 
-    public void initObjectContext(ObjectMessageContext octx) {
-        Object o[] = new Object[method.getParameterTypes().length];
-        //REVIST - holders?
-        octx.setMessageObjects(o);
-    }
+//    public void initObjectContext(ObjectMessageContext octx) {
+//        Object o[] = new Object[method.getParameterTypes().length];
+//        //REVIST - holders?
+//        octx.setMessageObjects(o);
+//    }
 
 }

Modified: incubator/tuscany/java/sca/services/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.celtix/src/test/java/org/apache/tuscany/binding/celtix/CeltixServiceTestCase.java Sat Dec 23 04:14:05 2006
@@ -19,6 +19,9 @@
 package org.apache.tuscany.binding.celtix;
 
 import java.net.URL;
+import java.util.Map;
+import java.util.HashMap;
+import java.lang.reflect.Type;
 import javax.wsdl.Definition;
 import javax.wsdl.Port;
 import javax.wsdl.Service;
@@ -31,6 +34,11 @@
 import org.apache.tuscany.spi.idl.java.JavaServiceContract;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.MessageImpl;
+import org.apache.tuscany.spi.model.Operation;
 
 import junit.framework.TestCase;
 import org.easymock.classextension.EasyMock;
@@ -51,7 +59,21 @@
 
     public void testGetDataBindingCallback() throws Exception {
         CeltixService celtixService = createCeltixService();
-
+        Message msg = new MessageImpl();
+        msg.setBody("Hello Celtix");
+        Interceptor interceptor = EasyMock.createMock(Interceptor.class);
+        EasyMock.expect(interceptor.invoke(EasyMock.isA(Message.class))).andReturn(msg);
+        EasyMock.replay(interceptor);
+        InboundInvocationChain chain = EasyMock.createMock(InboundInvocationChain.class);
+        EasyMock.expect(chain.getHeadInterceptor()) .andReturn(interceptor);
+        EasyMock.replay(chain);
+        Map<Operation<?>,InboundInvocationChain> chains = new HashMap<Operation<?>, InboundInvocationChain>();
+        Operation<?> op = new Operation<Type>("greetMe", null, null, null);
+        chains.put(op, chain);
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getInvocationChains()).andReturn(chains);
+        EasyMock.replay(wire);
+        celtixService.setInboundWire(wire);
         QName operationName = new QName("greetMe");
         ObjectMessageContextImpl ctx = new ObjectMessageContextImpl();
         ctx.setMessageObjects(new String[]{"Celtix"});
@@ -59,8 +81,8 @@
         assertNotNull(callback1);
 
         callback1.invoke(ctx);
-        Object rtn = (String) ctx.getReturn();
-        assertEquals("Hello Celtix", rtn);
+        Message rtn = (Message) ctx.getReturn();
+        assertEquals("Hello Celtix", rtn.getBody());
 
     }
 

Modified: incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilder.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilder.java Sat Dec 23 04:14:05 2006
@@ -25,6 +25,7 @@
 import org.apache.tuscany.spi.extension.BindingBuilderExtension;
 import org.apache.tuscany.spi.host.ServletHost;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
+import org.apache.tuscany.spi.wire.WireService;
 
 /**
  * Builds a Service for JSON-RPC binding.
@@ -33,13 +34,24 @@
  */
 public class JSONRPCBindingBuilder extends BindingBuilderExtension<JSONRPCBinding> {
 
-    ServletHost servletHost;
+    private ServletHost servletHost;
+    private WireService wireService;
 
     @Autowire()
     public void setServletHost(ServletHost servletHost) {
         this.servletHost = servletHost;
     }
 
+    @Autowire
+    public void setWireService(WireService wireService) {
+        this.wireService = wireService;
+    }
+
+
+    public ServletHost getServletHost() {
+        return servletHost;
+    }
+
     protected Class<JSONRPCBinding> getBindingType() {
         return JSONRPCBinding.class;
     }
@@ -50,7 +62,7 @@
                              DeploymentContext deploymentContext) {
         Class<?> interfaze = serviceDefinition.getServiceContract().getInterfaceClass();
 
-        return new JSONRPCService(serviceDefinition.getName(), interfaze, parent, wireService, servletHost);
+        return new JSONRPCService(serviceDefinition.getName(), interfaze, parent, this.wireService, servletHost);
     }
 
-}
+}
\ No newline at end of file

Modified: incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java Sat Dec 23 04:14:05 2006
@@ -18,13 +18,12 @@
  */
 package org.apache.tuscany.binding.jsonrpc;
 
+import org.osoa.sca.annotations.Destroy;
+
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.SCAObjectStartException;
-import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.extension.ServiceExtension;
 import org.apache.tuscany.spi.host.ServletHost;
 import org.apache.tuscany.spi.wire.WireService;
-import org.osoa.sca.annotations.Destroy;
 
 /**
  * @version $Rev$ $Date$
@@ -37,7 +36,8 @@
 
     public static final String SCRIPT_GETTER_SERVICE_MAPPING = "/SCA/scripts";
 
-    public JSONRPCService(String theName, Class<?> interfaze, CompositeComponent parent, WireService wireService, ServletHost servletHost) {
+    public JSONRPCService(String theName, Class<?> interfaze, CompositeComponent parent, WireService wireService,
+                          ServletHost servletHost) {
 
         super(theName, interfaze, parent, wireService);
 
@@ -46,12 +46,10 @@
 
     public synchronized void start() {
         super.start();
-		  JSONRPCEntryPointServlet servlet;
-        try {
-            servlet = new JSONRPCEntryPointServlet(getName(), interfaze, this.getServiceInstance());
-		  } catch (TargetException e) {
-			  throw new SCAObjectStartException(e);
-		  }
+        JSONRPCEntryPointServlet servlet;
+        // FIXME this should not have to create a proxy but should instead dispatch directly down an invocation chain
+        Object instance = wireService.createProxy(interfaze, getInboundWire());
+        servlet = new JSONRPCEntryPointServlet(getName(), interfaze, instance);
 
         // register the servlet based on the service name
         servletHost.registerMapping("/" + getName(), servlet);

Modified: incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilderTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCBindingBuilderTestCase.java Sat Dec 23 04:14:05 2006
@@ -37,7 +37,7 @@
         ServletHost mockServletHost = createMock(ServletHost.class);
         replay(mockServletHost);
         bindingBuilder.setServletHost(mockServletHost);
-        assertEquals(mockServletHost, bindingBuilder.servletHost);
+        assertEquals(mockServletHost, bindingBuilder.getServletHost());
     }
 
     public void testGetBindingType() {

Modified: incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCServiceTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/test/java/org/apache/tuscany/binding/jsonrpc/JSONRPCServiceTestCase.java Sat Dec 23 04:14:05 2006
@@ -23,35 +23,42 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.host.ServletHost;
 import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.spi.wire.InboundWire;
 
 import static org.easymock.classextension.EasyMock.*;
+import org.easymock.EasyMock;
 
 import junit.framework.TestCase;
 
 public class JSONRPCServiceTestCase extends TestCase {
     private static final String SERVICE_NAME = "test_service_name";    
 
+    @SuppressWarnings({"unchecked"})
     public void testStart() {
         CompositeComponent mockParent = createMock(CompositeComponent.class);
         replay(mockParent);
         WireService mockWireService = createMock(WireService.class);
-        expect(mockWireService.createProxy(null)).andReturn(this);
+        expect(mockWireService.createProxy(EasyMock.isA(Class.class), EasyMock.isA(InboundWire.class))).andReturn(this);
         replay(mockWireService);
         ServletHost mockServletHost = createMock(ServletHost.class);
         expect(mockServletHost.isMappingRegistered(JSONRPCService.SCRIPT_GETTER_SERVICE_MAPPING)).andReturn(false);
         mockServletHost.registerMapping(eq("/" + SERVICE_NAME), (Servlet) notNull());
         mockServletHost.registerMapping(eq(JSONRPCService.SCRIPT_GETTER_SERVICE_MAPPING), (Servlet) notNull());
         replay(mockServletHost);
-        
+
         JSONRPCService jsonRpcService = new JSONRPCService(SERVICE_NAME, this.getClass(), mockParent, mockWireService, mockServletHost );
+        InboundWire wire = EasyMock.createNiceMock(InboundWire.class);
+        EasyMock.replay(wire);
+        jsonRpcService.setInboundWire(wire);
         jsonRpcService.start();
     }
 
+    @SuppressWarnings({"unchecked"})
     public void testStop() {
         CompositeComponent mockParent = createMock(CompositeComponent.class);
         replay(mockParent);
         WireService mockWireService = createMock(WireService.class);
-        expect(mockWireService.createProxy(null)).andReturn(this);
+        expect(mockWireService.createProxy(EasyMock.isA(Class.class), EasyMock.isA(InboundWire.class))).andReturn(this);
         replay(mockWireService);
         ServletHost mockServletHost = createMock(ServletHost.class);
         expect(mockServletHost.isMappingRegistered(JSONRPCService.SCRIPT_GETTER_SERVICE_MAPPING)).andReturn(false);
@@ -62,6 +69,9 @@
         replay(mockServletHost);
         
         JSONRPCService jsonRpcService = new JSONRPCService(SERVICE_NAME, this.getClass(), mockParent, mockWireService, mockServletHost );
+        InboundWire wire = EasyMock.createNiceMock(InboundWire.class);
+        EasyMock.replay(wire);
+        jsonRpcService.setInboundWire(wire);
         jsonRpcService.start();
         jsonRpcService.stop();
     }

Modified: incubator/tuscany/java/sca/services/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java Sat Dec 23 04:14:05 2006
@@ -25,7 +25,6 @@
 
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.ObjectFactory;
-import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.component.TargetNotFoundException;
 import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.extension.AtomicComponentExtension;
@@ -95,21 +94,8 @@
         return instance;
     }
 
-    public GroovyObject getTargetInstance() throws TargetException {
+    public GroovyObject getTargetInstance() throws TargetResolutionException {
         return (GroovyObject) scopeContainer.getInstance(this);
-    }
-
-    public Object getServiceInstance() throws TargetResolutionException {
-        //TODO this should return a default service from a wire
-        return scopeContainer.getInstance(this);
-    }
-
-    public Object getServiceInstance(String service) throws TargetResolutionException {
-        InboundWire wire = getInboundWire(service);
-        if (wire == null) {
-            throw new TargetNotFoundException("Service not found", service);
-        }
-        return wireService.createProxy(wire);
     }
 
     public void addPropertyFactory(String name, ObjectFactory<?> factory) {

Modified: incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java Sat Dec 23 04:14:05 2006
@@ -70,7 +70,7 @@
         expect((String) factory.getInstance()).andReturn("bar");
         replay(factory);
         component.addPropertyFactory("property", factory);
-        Greeting greeting = (Greeting) component.getServiceInstance();
+        Greeting greeting = (Greeting) component.getTargetInstance();
         assertEquals("bar", greeting.greet("foo"));
     }
 

Modified: incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java Sat Dec 23 04:14:05 2006
@@ -58,8 +58,8 @@
         configuration.setServices(services);
         configuration.setScopeContainer(scopeContainer);
         configuration.setWireService(createWireService());
-        GroovyAtomicComponent context = new GroovyAtomicComponent(configuration);
-        GroovyObject object = (GroovyObject) context.getServiceInstance();
+        GroovyAtomicComponent component = new GroovyAtomicComponent(configuration);
+        GroovyObject object = component.getTargetInstance();
         assertEquals("foo", object.invokeMethod("greet", "foo"));
     }
 

Modified: incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java Sat Dec 23 04:14:05 2006
@@ -18,8 +18,6 @@
  */
 package org.apache.tuscany.container.groovy;
 
-import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
-
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
@@ -27,6 +25,7 @@
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.model.Operation;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Message;
@@ -34,11 +33,13 @@
 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 groovy.lang.GroovyClassLoader;
 import groovy.lang.GroovyObject;
 import junit.framework.TestCase;
 import org.apache.tuscany.container.groovy.mock.Greeting;
+import org.apache.tuscany.test.ArtifactFactory;
 import static org.apache.tuscany.test.ArtifactFactory.createInboundWire;
 import static org.apache.tuscany.test.ArtifactFactory.createOutboundWire;
 import static org.apache.tuscany.test.ArtifactFactory.createWireService;
@@ -81,6 +82,7 @@
     private Class<? extends GroovyObject> implClass1;
     private Class<? extends GroovyObject> implClass2;
     private ScopeContainer scopeContainer;
+    private WireService wireService;
 
     /**
      * Tests a basic invocation down a source wire
@@ -109,7 +111,7 @@
             chain.setTargetInvoker(invoker);
         }
         component.addOutboundWire(wire);
-        Greeting greeting = (Greeting) component.getServiceInstance();
+        Greeting greeting = (Greeting) component.getTargetInstance();
         assertEquals("foo", greeting.greet("foo"));
         verify(invoker);
     }
@@ -171,10 +173,11 @@
             chain.setTargetInvoker(component.createTargetInvoker(null, chain.getOperation(), null));
         }
         component.addInboundWire(wire);
-        Greeting greeting = (Greeting) component.getServiceInstance("Greeting");
+        Greeting greeting = wireService.createProxy(Greeting.class, component.getInboundWire("Greeting"));
         assertEquals("foo", greeting.greet("foo"));
     }
 
+    @SuppressWarnings({"unchecked"})
     protected void setUp() throws Exception {
         super.setUp();
         GroovyClassLoader cl = new GroovyClassLoader(getClass().getClassLoader());
@@ -187,5 +190,6 @@
             }
         });
         replay(scopeContainer);
+        wireService = ArtifactFactory.createWireService();
     }
 }

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java Sat Dec 23 04:14:05 2006
@@ -25,7 +25,6 @@
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
-import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.component.TargetNotFoundException;
 import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -104,20 +103,8 @@
         return properties;
     }
 
-    public RhinoScriptInstance getTargetInstance() throws TargetException {
+    public RhinoScriptInstance getTargetInstance() throws TargetResolutionException {
         return (RhinoScriptInstance) scopeContainer.getInstance(this);
-    }
-
-    public Object getServiceInstance() throws TargetResolutionException {
-        return getServiceInstance(null);
-    }
-
-    public Object getServiceInstance(String service) throws TargetResolutionException {
-        InboundWire wire = getInboundWire(service);
-        if (wire == null) {
-            throw new TargetNotFoundException("ServiceDefinition not found", service);
-        }
-        return wireService.createProxy(wire);
     }
 
 }

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptIntrospector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptIntrospector.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptIntrospector.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptIntrospector.java Sat Dec 23 04:14:05 2006
@@ -80,6 +80,7 @@
             try {
                 ServiceContract<?> sc = processorRegistry.introspect(Class.forName(serviceClass));
                 service.setServiceContract(sc);
+                service.setName(sc.getInterfaceClass().getName());
                 componentType.add(service);
             } catch (ClassNotFoundException e) {
                 throw new MissingResourceException("Interface not found", e);

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/WireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/WireTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/WireTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/WireTestCase.java Sat Dec 23 04:14:05 2006
@@ -18,26 +18,25 @@
  */
 package org.apache.tuscany.container.javascript;
 
-import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
-
-import static org.easymock.EasyMock.reportMatcher;
-
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-import junit.framework.TestCase;
-
-import org.apache.tuscany.container.javascript.mock.Greeting;
-import org.apache.tuscany.container.javascript.rhino.RhinoScript;
-import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
 import org.apache.tuscany.spi.model.Operation;
+import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Message;
 import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.WireService;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.container.javascript.mock.Greeting;
+import org.apache.tuscany.container.javascript.rhino.RhinoScript;
+import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
 import org.apache.tuscany.test.ArtifactFactory;
+import static org.easymock.EasyMock.reportMatcher;
 import org.easymock.IArgumentMatcher;
 
 /**
@@ -61,6 +60,7 @@
     private RhinoScript implClass1;
 
     private RhinoScript implClass2;
+    private WireService wireService;
 
     /**
      * Tests a basic invocation down a source wire
@@ -150,13 +150,14 @@
             chain.setTargetInvoker(context.createTargetInvoker(null, chain.getOperation(), null));
         }
         context.addInboundWire(wire);
-        Greeting greeting = (Greeting) context.getServiceInstance("Greeting");
+        Greeting greeting = wireService.createProxy(Greeting.class, context.getInboundWire("Greeting"));
         assertEquals("foo", greeting.greet("foo"));
         scope.stop();
     }
 
     protected void setUp() throws Exception {
         super.setUp();
+        wireService = ArtifactFactory.createWireService();
         implClass1 = new RhinoScript("script1", SCRIPT);
         implClass2 = new RhinoScript("script2", SCRIPT2);
     }

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/HelloWorld.componentType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/HelloWorld.componentType?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/HelloWorld.componentType (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/HelloWorld.componentType Sat Dec 23 04:14:05 2006
@@ -20,7 +20,7 @@
 
 <componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
-    <service name="HelloWorldService">
+    <service name="helloworld.HelloWorldService">
         <interface.java interface="helloworld.HelloWorldService"/>
     </service>
 </componentType>

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/e4x.componentType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/e4x.componentType?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/e4x.componentType (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/e4x.componentType Sat Dec 23 04:14:05 2006
@@ -20,7 +20,7 @@
 
 <componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
-    <service name="HelloWorldService">
+    <service name="helloworld.HelloWorldService">
 <!--        <interface.wsdl interface="http://integration.rhino.container.tuscany.apache.org#HelloWorld"/> -->
 			<interface.java interface="helloworld.HelloWorldService"/>
     </service>

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/propertyTest.componentType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/propertyTest.componentType?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/propertyTest.componentType (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/test/resources/org/apache/tuscany/container/javascript/function/propertyTest.componentType Sat Dec 23 04:14:05 2006
@@ -19,7 +19,7 @@
 -->
 <componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
-    <service name="HelloWorldService">
+    <service name="helloworld.HelloWorldService">
         <interface.java interface="helloworld.HelloWorldService"/>
     </service>
 

Modified: incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java Sat Dec 23 04:14:05 2006
@@ -25,7 +25,6 @@
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
-import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.component.TargetNotFoundException;
 import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -121,21 +120,8 @@
         return properties;
     }
 
-    public RubyScriptInstance getTargetInstance() throws TargetException {
+    public RubyScriptInstance getTargetInstance() throws TargetResolutionException {
         return (RubyScriptInstance) scopeContainer.getInstance(this);
-    }
-
-    public Object getServiceInstance() throws TargetResolutionException {
-        return getServiceInstance(null);
-    }
-
-    @SuppressWarnings("unchecked")
-    public Object getServiceInstance(String service) throws TargetResolutionException {
-        InboundWire wire = getInboundWire(service);
-        if (wire == null) {
-            throw new TargetNotFoundException("ServiceDefinition not found", service); // TODO better error message
-        }
-        return wireService.createProxy(wire);
     }
 
 }

Modified: incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java Sat Dec 23 04:14:05 2006
@@ -80,6 +80,7 @@
             try {
                 ServiceContract<?> sc = processorRegistry.introspect(Class.forName(serviceClass));
                 service.setServiceContract(sc);
+                service.setName(sc.getInterfaceClass().getName());
                 componentType.add(service);
             } catch (ClassNotFoundException e) {
                 throw new MissingResourceException("Interface not found", e);

Modified: incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java Sat Dec 23 04:14:05 2006
@@ -18,24 +18,23 @@
  */
 package org.apache.tuscany.container.ruby;
 
-import static org.easymock.EasyMock.reportMatcher;
-
 import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
-import junit.framework.TestCase;
-
-import org.apache.tuscany.container.ruby.mock.Greeting;
-import org.apache.tuscany.container.ruby.rubyscript.RubyScript;
-import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
-
 import org.apache.tuscany.spi.model.DataType;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.WireService;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.container.ruby.mock.Greeting;
+import org.apache.tuscany.container.ruby.rubyscript.RubyScript;
+import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
 import org.apache.tuscany.test.ArtifactFactory;
+import static org.easymock.EasyMock.reportMatcher;
 import org.easymock.IArgumentMatcher;
 
 /**
@@ -44,15 +43,16 @@
 public class WireTestCase extends TestCase {
 
     private static final String SCRIPT = "   def setWire(ref)\n" + "       wire = ref\n"
-            + "end   \n" + "   def greet(name)\n" + "       return wire.greet(name) \n"
-            + "   end\n";
+        + "end   \n" + "   def greet(name)\n" + "       return wire.greet(name) \n"
+        + "   end\n";
 
     private static final String SCRIPT2 = "   def greet(name)\n" + "       return name  \n"
-            + "end \n";
+        + "end \n";
 
     private RubyScript implClass1;
 
     private RubyScript implClass2;
+    private WireService wireSerivce;
 
     /**
      * Tests a basic invocation down a source wire
@@ -113,19 +113,19 @@
         scope.start();
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
-        Map<String, Object> properties = new Hashtable<String,Object>();
-        properties.put("greeting","HeyThere");
-        
+        Map<String, Object> properties = new Hashtable<String, Object>();
+        properties.put("greeting", "HeyThere");
+
         RubyComponent context = new RubyComponent("source",
-                                                                      implClass2,
-                                                                      null,
-                                                                      services,
-                                                                      properties,
-                                                                      null,
-                                                                      scope,
-                                                                      ArtifactFactory.createWireService(),
-                                                                      null,
-                                                                       null);
+            implClass2,
+            null,
+            services,
+            properties,
+            null,
+            scope,
+            ArtifactFactory.createWireService(),
+            null,
+            null);
         scope.register(context);
         DataType<String> returnDataType = new DataType<String>(String.class, String.class.getName());
 //        Operation<String> operation = new Operation<String>("greet",
@@ -150,36 +150,37 @@
         scope.start();
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
-        Map<String, Object> properties = new Hashtable<String,Object>();
-        properties.put("greeting","HeyThere");
+        Map<String, Object> properties = new Hashtable<String, Object>();
+        properties.put("greeting", "HeyThere");
         RubyComponent context = new RubyComponent("source",
-                                                                      implClass2,
-                                                                      null,
-                                                                      services,
-                                                                      properties,
-                                                                      null,
-                                                                      scope,
-                                                                      ArtifactFactory.createWireService(),
-                                                                      null,
-                                                                        null);
+            implClass2,
+            null,
+            services,
+            properties,
+            null,
+            scope,
+            ArtifactFactory.createWireService(),
+            null,
+            null);
         scope.register(context);
 
         InboundWire wire = ArtifactFactory.createInboundWire("Greeting",
-                                                                Greeting.class);
+            Greeting.class);
         ArtifactFactory.terminateWire(wire);
         for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
             chain.setTargetInvoker(context.createTargetInvoker(null,
-                                                               chain.getOperation(), null));
+                chain.getOperation(), null));
         }
         context.addInboundWire(wire);
-        Greeting greeting = (Greeting) context.getServiceInstance("Greeting");
+        Greeting greeting = wireSerivce.createProxy(Greeting.class, context.getInboundWire("Greeting"));
         assertEquals("foo",
-                     greeting.greet("foo"));
+            greeting.greet("foo"));
         scope.stop();
     }
 
     protected void setUp() throws Exception {
         super.setUp();
+        wireSerivce = ArtifactFactory.createWireService();
         implClass1 = new RubyScript("script1", SCRIPT);
         implClass2 = new RubyScript("script2", SCRIPT2);
     }

Modified: incubator/tuscany/java/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType?view=diff&rev=489888&r1=489887&r2=489888
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType (original)
+++ incubator/tuscany/java/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType Sat Dec 23 04:14:05 2006
@@ -18,7 +18,7 @@
  * under the License.    
 -->
 <componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-    <service name="HelloWorldService">
+    <service name="helloworld.HelloWorldService">
         <interface.java interface="helloworld.HelloWorldService"/>
     </service>
     <reference name="extHelloWorld">



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