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/13 07:45:29 UTC

svn commit: r406016 [2/4] - in /incubator/tuscany/sandbox/jboynes/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/ containers/container.java/src/main/java/org/apache/tuscany/container/java/context/ containers/cont...

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/CompositeContextImpl.java Fri May 12 22:45:22 2006
@@ -0,0 +1,101 @@
+package org.apache.tuscany.core.context;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.event.Event;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.ServiceContext;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.osoa.sca.ModuleContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.ServiceUnavailableException;
+
+/**
+ * The standard implementation of an composite context. Autowiring is performed by delegating to the parent
+ * context.
+ *
+ * @version $Rev: 399348 $ $Date: 2006-05-03 09:33:22 -0700 (Wed, 03 May 2006) $
+ */
+public class CompositeContextImpl<T> extends AbstractCompositeContext<T> implements ModuleContext {
+
+    public CompositeContextImpl() {
+        super();
+    }
+
+    public CompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext) {
+        super(name, parent, autowireContext);
+    }
+
+    public void onEvent(Event event) {
+       publish(event); // propagate event to children
+    }
+
+    // ----------------------------------
+    // ModuleContext methods
+    // ----------------------------------
+
+    private String uri;
+
+    public String getURI() {
+        return uri;
+    }
+
+    public void setURI(String uri) {
+        this.uri = uri;
+    }
+
+    public Object locateService(String name) throws ServiceUnavailableException {
+        checkInit();
+        QualifiedName qName = new QualifiedName(name);
+        Context context = children.get(qName.getPartName());
+        if (context == null){
+            throw new ServiceUnavailableException("Service not found ["+name+"]");
+        }
+        try {
+            if(context instanceof AtomicContext){
+                return ((AtomicContext)context).getService(qName.getPortName());
+            }else if(context instanceof ServiceContext || context instanceof ReferenceContext){
+                return context.getService();
+            }else{
+                throw new ServiceUnavailableException("Illegal target type ["+name+"]");
+            }
+        } catch (TargetException e) {
+            e.addContextName(getName());
+            throw new ServiceUnavailableException(e);
+        }
+    }
+
+    public ServiceReference createServiceReference(String serviceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    public RequestContext getRequestContext() {
+        throw new UnsupportedOperationException();
+    }
+
+    public ServiceReference createServiceReferenceForSession(Object self) {
+        throw new UnsupportedOperationException();
+    }
+
+    public ServiceReference createServiceReferenceForSession(Object self, String serviceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    public ServiceReference newSession(String serviceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    public ServiceReference newSession(String serviceName, Object sessionId) {
+        throw new UnsupportedOperationException();
+    }
+
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        return null;
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ContextInitException.java Fri May 12 22:45:22 2006
@@ -0,0 +1,23 @@
+package org.apache.tuscany.core.context;
+
+import org.apache.tuscany.spi.context.ContextRuntimeException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ContextInitException extends ContextRuntimeException {
+    public ContextInitException() {
+    }
+
+    public ContextInitException(String message) {
+        super(message);
+    }
+
+    public ContextInitException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public ContextInitException(Throwable cause) {
+        super(cause);
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/DuplicateNameException.java Fri May 12 22:45:22 2006
@@ -0,0 +1,28 @@
+package org.apache.tuscany.core.context;
+
+import org.apache.tuscany.spi.context.ContextRuntimeException;
+
+/**
+ * Denotes an attempt to add a context with a name equal to an existing context
+ *
+ * @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006) $
+ */
+public class DuplicateNameException extends ContextRuntimeException {
+
+    public DuplicateNameException() {
+        super();
+    }
+
+    public DuplicateNameException(String message) {
+        super(message);
+    }
+
+    public DuplicateNameException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public DuplicateNameException(Throwable cause) {
+        super(cause);
+    }
+
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java Fri May 12 22:45:22 2006
@@ -1,28 +1,36 @@
 package org.apache.tuscany.core.context;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.tuscany.common.ObjectCreationException;
 import org.apache.tuscany.common.ObjectFactory;
 import org.apache.tuscany.core.injection.EventInvoker;
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.context.TargetException;
 
 /**
+ * Base implementation of an {@link AtomicContext} whose implementation type is a Java class
+ *
  * @version $$Rev$$ $$Date$$
  */
-public abstract class PojoAtomicContext extends AbstractContext implements AtomicContext {
+public abstract class PojoAtomicContext<T> extends AbstractContext<T> implements AtomicContext<T> {
 
     protected ScopeContext<AtomicContext> scopeContext;
     protected boolean eagerInit;
     protected EventInvoker<Object> initInvoker;
     protected EventInvoker<Object> destroyInvoker;
     protected ObjectFactory<?> objectFactory;
+    protected List<Class<?>> serviceInterfaces;
 
-    public PojoAtomicContext(String name, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+    public PojoAtomicContext(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
                              EventInvoker<Object> destroyInvoker) {
         super(name);
+        List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
+        serviceInterfaces.add(serviceInterface);
         assert (objectFactory != null) : "Object factory was null";
         if (eagerInit && initInvoker == null) {
             throw new AssertionError("No intialization method found for eager init implementation");
@@ -31,6 +39,25 @@
         this.eagerInit = eagerInit;
         this.initInvoker = initInvoker;
         this.destroyInvoker = destroyInvoker;
+        this.serviceInterfaces = serviceInterfaces;
+    }
+
+    public PojoAtomicContext(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+                             EventInvoker<Object> destroyInvoker) {
+        super(name);
+        assert (objectFactory != null) : "Object factory was null";
+        if (eagerInit && initInvoker == null) {
+            throw new AssertionError("No intialization method found for eager init implementation");
+        }
+        this.objectFactory = objectFactory;
+        this.eagerInit = eagerInit;
+        this.initInvoker = initInvoker;
+        this.destroyInvoker = destroyInvoker;
+        this.serviceInterfaces = serviceInterfaces;
+    }
+
+    public List<Class<?>> getServiceInterfaces() {
+        return serviceInterfaces;
     }
 
     public Scope getScope() {
@@ -61,12 +88,13 @@
         }
     }
 
-    public Object getTargetInstance() throws TargetException {
-        return scopeContext.getInstance(this);
+    @SuppressWarnings("unchecked")
+    public T getTargetInstance() throws TargetException {
+        return (T)scopeContext.getInstance(this);
     }
 
-    public InstanceContext createInstance() throws ObjectCreationException {
-        InstanceContext ctx = new PojoInstanceContext(this, objectFactory.getInstance());
+    public InstanceWrapper createInstance() throws ObjectCreationException {
+        InstanceWrapper ctx = new PojoInstanceWrapper(this, objectFactory.getInstance());
         ctx.start();
         return ctx;
     }

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoInstanceWrapper.java Fri May 12 22:45:22 2006
@@ -16,17 +16,18 @@
 import org.apache.tuscany.core.AbstractLifecycle;
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 
 /**
+ * Manages an Java class-based implementation instance 
  * @version $$Rev$$ $$Date$$
  */
-public class PojoInstanceContext extends AbstractLifecycle implements InstanceContext {
+public class PojoInstanceWrapper extends AbstractLifecycle implements InstanceWrapper {
 
     private Object instance;
     private AtomicContext context;
 
-    public PojoInstanceContext(AtomicContext context, Object instance) {
+    public PojoInstanceWrapper(AtomicContext context, Object instance) {
         assert(context != null);
         assert(instance != null);
         this.context = context;

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ReferenceContextImpl.java Fri May 12 22:45:22 2006
@@ -13,55 +13,51 @@
  */
 package org.apache.tuscany.core.context;
 
-import org.apache.tuscany.common.ObjectFactory;
-import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.context.TargetException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import org.apache.tuscany.core.wire.jdk.JDKInvocationHandler;
 import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.wire.ProxyCreationException;
-import org.apache.tuscany.spi.wire.TargetWireFactory;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
  * The default implementation of an external service context
  *
  * @version $Rev$ $Date$
  */
-public class ReferenceContextImpl extends AbstractContext implements ReferenceContext {
+public class ReferenceContextImpl<T> extends AbstractContext<T> implements ReferenceContext<T> {
 
-    private TargetWireFactory<?> targetWireFactory;
-
-    private ObjectFactory targetInstanceFactory;
+    private TargetWire<T> targetWire;
+    private Class<T> referenceInterface;
 
     /**
      * Creates a reference context
      *
-     * @param name the name of the reference context
-     * @param targetWireFactory the factory which creates proxies implementing the configured service interface for the
-     *        reference context. There is always only one proxy factory as an reference context is configured with one
-     *        service
-     * @param targetInstanceFactory the object factory that creates an artifact capabile of communicating over the
-     *        binding transport configured on the reference context. The object factory may implement a caching strategy.
+     * @param name              the name of the reference context
+     * @param targetWire the factory which creates proxies implementing the configured service
+     *                          interface for the reference context. There is always only one proxy factory as
+     *                          an reference context is configured with one service
      */
-    public ReferenceContextImpl(String name, TargetWireFactory targetWireFactory, ObjectFactory targetInstanceFactory) {
+    public ReferenceContextImpl(String name, Class<T> referenceInterface, TargetWire<T> targetWire) {
         super(name);
-        assert (targetWireFactory != null) : "Target proxy factory was null";
-        assert (targetInstanceFactory != null) : "Target instance factory was null";
-        this.targetWireFactory = targetWireFactory;
-        this.targetInstanceFactory = targetInstanceFactory;
-    }
-
-    public void start() {
-        lifecycleState = RUNNING;
+        assert (targetWire != null) : "Target proxy factory was null";
+        assert (referenceInterface != null) : "Reference interface was null";
+        this.targetWire = targetWire;
+        this.referenceInterface = referenceInterface;
     }
 
-    public void stop() {
-        lifecycleState = STOPPED;
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        return null;  // TODO implements
     }
 
-
-    public Object getInstance(QualifiedName qName) throws TargetException {
+    public T getService() throws TargetException {
         try {
-            return targetWireFactory.createProxy();
-            // TODO do we cache the proxy, (assumes stateful capabilities will be provided in an interceptor)
+            return targetWire.createProxy();
         } catch (ProxyCreationException e) {
             TargetException te = new TargetException(e);
             te.addContextName(getName());
@@ -69,7 +65,14 @@
         }
     }
 
-    public Object getHandler() throws TargetException {
-        return targetInstanceFactory.getInstance();
+    public InvocationHandler getHandler() throws TargetException {
+        Map<Method, TargetInvocationChain> configuration = targetWire.getInvocationChains();
+        assert(configuration != null);
+        return new JDKInvocationHandler(configuration);
     }
+
+    public Class<T> getInterface() {
+        return referenceInterface;
+    }
+
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/ServiceContextImpl.java Fri May 12 22:45:22 2006
@@ -1,24 +1,24 @@
 package org.apache.tuscany.core.context;
 
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
 
 import org.apache.tuscany.core.wire.jdk.JDKInvocationHandler;
 import org.apache.tuscany.spi.CoreRuntimeException;
-import org.apache.tuscany.spi.Lifecycle;
-import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.context.ServiceContext;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.wire.ProxyCreationException;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
  * The default implementation of an service context
  *
  * @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006) $
  */
-public class ServiceContextImpl<T extends Class> extends AbstractContext implements ServiceContext<T> {
+public class ServiceContextImpl<T extends Class> extends AbstractContext<T> implements ServiceContext<T> {
 
-    private SourceWireFactory<T> sourceWireFactory;
+    private SourceWire<T> sourceWire;
     private InvocationHandler invocationHandler;
     // a proxy implementing the service exposed by the context backed by the invocation handler
     private T proxy;
@@ -27,20 +27,24 @@
      * Creates a new service context
      *
      * @param name              the bound service name
-     * @param sourceWireFactory the proxy factory containing the invocation chains for the service
+     * @param sourceWire the proxy factory containing the invocation chains for the service
      * @throws CoreRuntimeException if an error occurs creating the service context
      */
-    public ServiceContextImpl(String name, SourceWireFactory<T> sourceWireFactory) throws CoreRuntimeException {
+    public ServiceContextImpl(String name, SourceWire<T> sourceWire) throws CoreRuntimeException {
         super(name);
-        assert (sourceWireFactory != null) : "Proxy factory was null";
-        this.sourceWireFactory = sourceWireFactory;
-        invocationHandler = new JDKInvocationHandler(sourceWireFactory.getConfiguration().getInvocationConfigurations());
+        assert (sourceWire != null) : "Proxy factory was null";
+        this.sourceWire = sourceWire;
+        invocationHandler = new JDKInvocationHandler(sourceWire.getInvocationChains());
     }
 
-    public Object getInstance(QualifiedName qName) throws TargetException {
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        return null;  //TODO implement
+    }
+
+    public T getService() throws TargetException {
         if (proxy == null) {
             try {
-                proxy = sourceWireFactory.createProxy();
+                proxy = sourceWire.createProxy();
             } catch (ProxyCreationException e) {
                 TargetException te = new TargetException(e);
                 te.addContextName(getName());
@@ -50,20 +54,12 @@
         return proxy;
     }
 
-    public void start() {
-        lifecycleState = Lifecycle.RUNNING;
-    }
-
-    public void stop() {
-        lifecycleState = Lifecycle.STOPPED;
-    }
-
     public Object getHandler() {
         return invocationHandler;
     }
 
-    public Class<T> getServiceInterface() {
-        return sourceWireFactory.getBusinessInterface();
+    public Class<T> getInterface() {
+        return sourceWire.getBusinessInterface();
     }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/AbstractScopeContext.java Fri May 12 22:45:22 2006
@@ -9,7 +9,7 @@
 import org.apache.tuscany.core.AbstractLifecycle;
 import org.apache.tuscany.core.context.event.filter.TrueFilter;
 import org.apache.tuscany.spi.context.Context;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.context.WorkContext;
@@ -76,7 +76,7 @@
     }
 
     public Object getInstance(T context) throws TargetException {
-        InstanceContext ctx = getInstanceContext(context);
+        InstanceWrapper ctx = getInstanceContext(context);
         if (ctx != null) {
             if (ctx.getLifecycleState() == UNINITIALIZED) {
                 ctx.start();

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/CompositeScopeContext.java Fri May 12 22:45:22 2006
@@ -20,7 +20,7 @@
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.Lifecycle;
 import org.apache.tuscany.spi.context.CompositeContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.event.Event;
@@ -46,10 +46,14 @@
     }
 
     public void start(){
+        if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+            throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
+        }
         lifecycleState = Lifecycle.RUNNING;
     }
 
     public void stop(){
+        contexts.clear();
         lifecycleState = STOPPED;
     }
 
@@ -66,7 +70,7 @@
         return context; // return the context since it is the instance
     }
 
-    public InstanceContext getInstanceContext(CompositeContext context) throws TargetException {
+    public InstanceWrapper getInstanceContext(CompositeContext context) throws TargetException {
         throw new UnsupportedOperationException();
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java Fri May 12 22:45:22 2006
@@ -10,7 +10,7 @@
 import org.apache.tuscany.core.context.event.HttpSessionStart;
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.context.WorkContext;
 import org.apache.tuscany.spi.event.Event;
@@ -24,13 +24,13 @@
 
     public static final Object HTTP_IDENTIFIER = new Object();
 
-    private final Map<AtomicContext, Map<Object, InstanceContext>> contexts;
-    private final Map<Object, List<InstanceContext>> destroyQueues;
+    private final Map<AtomicContext, Map<Object, InstanceWrapper>> contexts;
+    private final Map<Object, List<InstanceWrapper>> destroyQueues;
 
     public HttpSessionScopeContext(WorkContext workContext) {
         super("Session Scope", workContext);
-        contexts = new ConcurrentHashMap<AtomicContext, Map<Object, InstanceContext>>();
-        destroyQueues = new ConcurrentHashMap<Object, List<InstanceContext>>();
+        contexts = new ConcurrentHashMap<AtomicContext, Map<Object, InstanceWrapper>>();
+        destroyQueues = new ConcurrentHashMap<Object, List<InstanceWrapper>>();
     }
 
     public Scope getScope() {
@@ -41,7 +41,7 @@
         checkInit();
         if (event instanceof HttpSessionStart) {
             Object key = ((HttpSessionStart) event).getId();
-            for (Map.Entry<AtomicContext, Map<Object, InstanceContext>> entry : contexts.entrySet()) {
+            for (Map.Entry<AtomicContext, Map<Object, InstanceWrapper>> entry : contexts.entrySet()) {
                 if(entry.getKey().isEagerInit()){
                     getInstance(entry.getKey(),key);
                 }
@@ -52,38 +52,41 @@
     }
 
     public synchronized void start() {
-        if (lifecycleState != UNINITIALIZED) {
-            throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+        if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+            throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
         }
         lifecycleState = RUNNING;
     }
 
     public synchronized void stop() {
-        //TODO stop semantics
+        contexts.clear();
+        synchronized(destroyQueues){
+            destroyQueues.clear();
+        }
         lifecycleState = STOPPED;
     }
 
     public void register(AtomicContext context) {
-        contexts.put(context, new ConcurrentHashMap<Object, InstanceContext>());
+        contexts.put(context, new ConcurrentHashMap<Object, InstanceWrapper>());
         context.addListener(this);
 
     }
 
-    public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
+    public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
         Object key = workContext.getIdentifier(HTTP_IDENTIFIER);
         assert(key != null):"HTTP session key not bound in work context";
         return getInstance(context, key);
     }
 
-    private InstanceContext getInstance(AtomicContext context, Object key) {
-        Map<Object, InstanceContext> contextMap = contexts.get(context);
-        InstanceContext ctx = contextMap.get(key);
+    private InstanceWrapper getInstance(AtomicContext context, Object key) {
+        Map<Object, InstanceWrapper> contextMap = contexts.get(context);
+        InstanceWrapper ctx = contextMap.get(key);
         if (ctx == null) {
             ctx = context.createInstance();
             contextMap.put(key, ctx);
-            List<InstanceContext> destroyQueue = destroyQueues.get(key);
+            List<InstanceWrapper> destroyQueue = destroyQueues.get(key);
             if (destroyQueue == null) {
-                destroyQueue = new ArrayList<InstanceContext>();
+                destroyQueue = new ArrayList<InstanceWrapper>();
                 destroyQueues.put(key, destroyQueue);
             }
             synchronized (destroyQueue) {
@@ -95,12 +98,12 @@
     }
 
     private void shutdownInstances(Object key) {
-        List<InstanceContext> destroyQueue = destroyQueues.remove(key);
+        List<InstanceWrapper> destroyQueue = destroyQueues.remove(key);
         if (destroyQueue != null) {
-            for (Map<Object, InstanceContext> map : contexts.values()) {
+            for (Map<Object, InstanceWrapper> map : contexts.values()) {
                 map.remove(key);
             }
-            ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+            ListIterator<InstanceWrapper> iter = destroyQueue.listIterator(destroyQueue.size());
             synchronized (destroyQueue) {
                 while (iter.hasPrevious()) {
                     try {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java Fri May 12 22:45:22 2006
@@ -12,7 +12,7 @@
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.context.WorkContext;
 import org.apache.tuscany.spi.event.Event;
@@ -24,15 +24,15 @@
  */
 public class ModuleScopeContext extends AbstractScopeContext<AtomicContext> {
 
-    private final Map<AtomicContext, InstanceContext> instanceContexts;
+    private final Map<AtomicContext, InstanceWrapper> instanceContexts;
     // the queue of instanceContexts to destroy, in the order that their instances were created
-    private final List<InstanceContext> destroyQueue;
-    private static final InstanceContext EMPTY = new EmptyContext();
+    private final List<InstanceWrapper> destroyQueue;
+    private static final InstanceWrapper EMPTY = new EmptyWrapper();
 
     public ModuleScopeContext(WorkContext workContext) {
         super("Module Scope", workContext);
-        instanceContexts = new ConcurrentHashMap<AtomicContext, InstanceContext>();
-        destroyQueue = new ArrayList<InstanceContext>();
+        instanceContexts = new ConcurrentHashMap<AtomicContext, InstanceWrapper>();
+        destroyQueue = new ArrayList<InstanceWrapper>();
     }
 
     public Scope getScope() {
@@ -51,16 +51,19 @@
     }
 
     public synchronized void start() {
-        if (lifecycleState != UNINITIALIZED) {
-            throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+        if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+            throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
         }
         lifecycleState = RUNNING;
     }
 
     public synchronized void stop() {
         checkInit();
+        instanceContexts.clear();
+        synchronized (destroyQueue){
+            destroyQueue.clear();
+        }
         lifecycleState = STOPPED;
-        //TODO implement stop semantics
     }
 
 
@@ -73,7 +76,7 @@
         }
         synchronized (destroyQueue) {
             // shutdown destroyable instances in reverse instantiation order
-            ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+            ListIterator<InstanceWrapper> iter = destroyQueue.listIterator(destroyQueue.size());
             while (iter.hasPrevious()) {
                 iter.previous().stop();
             }
@@ -87,9 +90,9 @@
     }
 
 
-    public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
+    public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
         checkInit();
-        InstanceContext ctx = instanceContexts.get(context);
+        InstanceWrapper ctx = instanceContexts.get(context);
         if (ctx == EMPTY) {
             ctx = context.createInstance();
             instanceContexts.put(context, ctx);
@@ -101,10 +104,10 @@
     }
 
     private void eagerInitContexts() throws CoreRuntimeException {
-        for (Map.Entry<AtomicContext, InstanceContext> entry : instanceContexts.entrySet()) {
+        for (Map.Entry<AtomicContext, InstanceWrapper> entry : instanceContexts.entrySet()) {
             AtomicContext context = entry.getKey();
             if (context.isEagerInit()) {
-                InstanceContext instanceCtx = context.createInstance();
+                InstanceWrapper instanceCtx = context.createInstance();
                 instanceContexts.put(context, instanceCtx);
                 destroyQueue.add(instanceCtx);
             }
@@ -112,7 +115,7 @@
 
     }
 
-    private static class EmptyContext extends AbstractLifecycle implements InstanceContext {
+    private static class EmptyWrapper extends AbstractLifecycle implements InstanceWrapper {
         public Object getInstance() {
             return null;
         }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java Fri May 12 22:45:22 2006
@@ -10,7 +10,7 @@
 import org.apache.tuscany.core.context.event.RequestStart;
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.context.WorkContext;
 import org.apache.tuscany.spi.event.Event;
@@ -22,13 +22,13 @@
  */
 public class RequestScopeContext extends AbstractScopeContext<AtomicContext> {
 
-    private final Map<AtomicContext, Map<Thread, InstanceContext>> contexts;
-    private final Map<Thread, List<InstanceContext>> destroyQueues;
+    private final Map<AtomicContext, Map<Thread, InstanceWrapper>> contexts;
+    private final Map<Thread, List<InstanceWrapper>> destroyQueues;
 
     public RequestScopeContext(WorkContext workContext) {
         super("Request Scope", workContext);
-        contexts = new ConcurrentHashMap<AtomicContext, Map<Thread, InstanceContext>>();
-        destroyQueues = new ConcurrentHashMap<Thread, List<InstanceContext>>();
+        contexts = new ConcurrentHashMap<AtomicContext, Map<Thread, InstanceWrapper>>();
+        destroyQueues = new ConcurrentHashMap<Thread, List<InstanceWrapper>>();
     }
 
     public Scope getScope() {
@@ -38,7 +38,7 @@
     public void onEvent(Event event) {
         checkInit();
         if (event instanceof RequestStart) {
-            for (Map.Entry<AtomicContext, Map<Thread, InstanceContext>> entry : contexts.entrySet()) {
+            for (Map.Entry<AtomicContext, Map<Thread, InstanceWrapper>> entry : contexts.entrySet()) {
                 if (entry.getKey().isEagerInit()) {
                     getInstance(entry.getKey());
                 }
@@ -49,31 +49,34 @@
     }
 
     public synchronized void start() {
-        if (lifecycleState != UNINITIALIZED) {
-            throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+        if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+            throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
         }
         lifecycleState = RUNNING;
     }
 
     public synchronized void stop() {
-        //TODO stop semantics
+        contexts.clear();
+        synchronized(destroyQueues){
+            destroyQueues.clear();
+        }
         lifecycleState = STOPPED;
     }
 
     public void register(AtomicContext context) {
-        contexts.put(context, new ConcurrentHashMap<Thread, InstanceContext>());
+        contexts.put(context, new ConcurrentHashMap<Thread, InstanceWrapper>());
     }
 
-    public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
-        Map<Thread, InstanceContext> instanceContextMap = contexts.get(context);
+    public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
+        Map<Thread, InstanceWrapper> instanceContextMap = contexts.get(context);
         assert(instanceContextMap != null):"Atomic context not registered";
-        InstanceContext ctx = instanceContextMap.get(Thread.currentThread());
+        InstanceWrapper ctx = instanceContextMap.get(Thread.currentThread());
         if (ctx == null) {
             ctx = context.createInstance();
             instanceContextMap.put(Thread.currentThread(), ctx);
-            List<InstanceContext> destroyQueue = destroyQueues.get(Thread.currentThread());
+            List<InstanceWrapper> destroyQueue = destroyQueues.get(Thread.currentThread());
             if (destroyQueue == null) {
-                destroyQueue = new ArrayList<InstanceContext>();
+                destroyQueue = new ArrayList<InstanceWrapper>();
                 destroyQueues.put(Thread.currentThread(), destroyQueue);
             }
             synchronized (destroyQueue) {
@@ -84,14 +87,14 @@
     }
 
     private void shutdownInstances(Thread key) {
-        List<InstanceContext> destroyQueue = destroyQueues.remove(key);
+        List<InstanceWrapper> destroyQueue = destroyQueues.remove(key);
         if (destroyQueue != null && destroyQueue.size() > 0) {
             if (destroyQueue != null) {
                 Thread thread = Thread.currentThread();
-                for (Map<Thread, InstanceContext> map : contexts.values()) {
+                for (Map<Thread, InstanceWrapper> map : contexts.values()) {
                     map.remove(thread);
                 }
-                ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+                ListIterator<InstanceWrapper> iter = destroyQueue.listIterator(destroyQueue.size());
                 synchronized (destroyQueue) {
                     while (iter.hasPrevious()) {
                         try {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java Fri May 12 22:45:22 2006
@@ -15,7 +15,7 @@
 
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.context.WorkContext;
 import org.apache.tuscany.spi.event.Event;
@@ -37,8 +37,8 @@
     }
 
     public synchronized void start() {
-        if (lifecycleState != UNINITIALIZED) {
-            throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
+        if (lifecycleState != UNINITIALIZED && lifecycleState != STOPPED) {
+            throw new IllegalStateException("Scope must be in UNINITIALIZED or STOPPED state [" + lifecycleState + "]");
         }
         lifecycleState = RUNNING;
     }
@@ -48,7 +48,6 @@
             throw new IllegalStateException("Scope in wrong state [" + lifecycleState + "]");
         }
         lifecycleState = STOPPED;
-        //TODO stop all contexts
     }
 
     public void onEvent(Event event) {
@@ -58,7 +57,7 @@
         checkInit();
     }
 
-    public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
+    public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
         return context.createInstance();
     }
 

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/DynamicTargetResolver.java Fri May 12 22:45:22 2006
@@ -0,0 +1,58 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+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.Context;
+import org.apache.tuscany.spi.context.ServiceContext;
+import org.apache.tuscany.spi.context.TargetNotFoundException;
+import org.apache.tuscany.spi.context.UnknownTargetTypeException;
+import org.apache.tuscany.spi.context.ReferenceContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class DynamicTargetResolver<T> implements ObjectFactory<T> {
+
+    private CompositeContext parent;
+    private QualifiedName targetName;
+
+    public DynamicTargetResolver(CompositeContext parent, String targetName) {
+        assert(parent != null): "Parent context was null";
+        assert(targetName != null): "Target name not specified";
+        this.parent = parent;
+        this.targetName = new QualifiedName(targetName);
+    }
+
+    @SuppressWarnings("unchecked")
+    public T getInstance() throws ObjectCreationException {
+        Context ctx = parent.getContext(targetName.getPartName());
+        if (ctx == null) {
+            TargetNotFoundException e = new TargetNotFoundException("No target component with name");
+            e.setIdentifier(targetName.getPartName());
+            throw e;
+        }
+        if (ctx instanceof AtomicContext) {
+            return (T) ((AtomicContext) ctx).getService(targetName.getPortName());
+        } else if (ctx instanceof ServiceContext) {
+            return (T) ((ServiceContext) ctx).getService();
+        } else if (ctx instanceof CompositeContext) {
+            ServiceContext serviceContext = ((CompositeContext) ctx).getServiceContext(targetName.getPortName());
+            if (serviceContext == null) {
+                TargetNotFoundException e = new TargetNotFoundException("Service not found");
+                e.setIdentifier(targetName.getPortName());
+                e.addContextName(targetName.getPortName());
+                throw e;
+            }
+            return (T) serviceContext.getService();
+        } else if (ctx instanceof ReferenceContext){
+            return (T) ((ReferenceContext) ctx).getService();
+        }else {
+            UnknownTargetTypeException e = new UnknownTargetTypeException(ctx.getClass().getName());
+            e.setIdentifier(targetName.getQualifiedName());
+            throw e;
+        }
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java Fri May 12 22:45:22 2006
@@ -24,6 +24,10 @@
             method.invoke(instance, objectFactory.getInstance());
         } catch (IllegalAccessException e) {
             throw new AssertionError("Method is not accessible [" + method + "]");
+        } catch (IllegalArgumentException e) {
+            ObjectCreationException oce= new ObjectCreationException("Exception thrown by setter", e);
+            oce.setIdentifier(method.getName());
+            throw oce;
         } catch (InvocationTargetException e) {
             ObjectCreationException oce= new ObjectCreationException("Exception thrown by setter", e);
             oce.setIdentifier(method.getName());

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/ProxyObjectFactory.java Fri May 12 22:45:22 2006
@@ -3,7 +3,7 @@
 import org.apache.tuscany.common.ObjectCreationException;
 import org.apache.tuscany.common.ObjectFactory;
 import org.apache.tuscany.spi.wire.ProxyCreationException;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
+import org.apache.tuscany.spi.wire.SourceWire;
 
 /**
  * Uses a proxy factory to return an object instance
@@ -12,9 +12,9 @@
  */
 public class ProxyObjectFactory implements ObjectFactory {
 
-    private SourceWireFactory factory;
+    private SourceWire factory;
 
-    public ProxyObjectFactory(SourceWireFactory factory) {
+    public ProxyObjectFactory(SourceWire factory) {
         this.factory = factory;
     }
 

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetInstanceResolver.java Fri May 12 22:45:22 2006
@@ -0,0 +1,22 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.spi.context.Context;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class TargetInstanceResolver<T> implements ObjectFactory<T> {
+
+    private Context<T> context;
+
+    public TargetInstanceResolver(Context<T> context) {
+        assert(context != null): "Context was null";
+        this.context = context;
+    }
+
+    public T getInstance() throws ObjectCreationException {
+        return context.getService();
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/TargetServiceResolver.java Fri May 12 22:45:22 2006
@@ -0,0 +1,26 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.spi.context.AtomicContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class TargetServiceResolver<T> implements ObjectFactory<T> {
+
+    private AtomicContext<T> context;
+    private String targetServiceName;
+
+    public TargetServiceResolver(AtomicContext<T> context, String targetServiceName) {
+        assert(context != null): "Context was null";
+        assert(targetServiceName != null): "Target service name was null";
+        this.context = context;
+        this.targetServiceName = targetServiceName;
+    }
+
+    @SuppressWarnings("unchecked")
+    public T getInstance() throws ObjectCreationException {
+        return (T) context.getService(targetServiceName);
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,48 @@
+package org.apache.tuscany.core.system.context;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * The default implementation of an external service context
+ *
+ * @version $Rev: 399991 $ $Date: 2006-05-04 23:44:07 -0700 (Thu, 04 May 2006) $
+ */
+public class AutowireSystemReferenceContext<T> extends AbstractContext<T> implements ReferenceContext<T> {
+
+    private Class<T> referenceInterface;
+    private AutowireContext<?> autowireContext;
+
+    public AutowireSystemReferenceContext(String name, Class<T> referenceInterface, CompositeContext parent) {
+        super(name);
+        assert (referenceInterface != null) : "Reference interface was null";
+        assert (parent instanceof AutowireContext) : "Parent must implement " + AutowireContext.class.getName();
+        this.referenceInterface = referenceInterface;
+        autowireContext = (AutowireContext) parent;
+        setParent(parent);
+    }
+
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        return null;
+    }
+
+    public T getService() throws TargetException {
+        return autowireContext.resolveInstance(referenceInterface);
+    }
+
+    public InvocationHandler getHandler() throws TargetException {
+        throw new UnsupportedOperationException();
+    }
+
+    public Class<T> getInterface() {
+        return referenceInterface;
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/ObjectRegistrationException.java Fri May 12 22:45:22 2006
@@ -0,0 +1,23 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.spi.context.ContextRuntimeException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ObjectRegistrationException extends ContextRuntimeException {
+    public ObjectRegistrationException() {
+    }
+
+    public ObjectRegistrationException(String message) {
+        super(message);
+    }
+
+    public ObjectRegistrationException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public ObjectRegistrationException(Throwable cause) {
+        super(cause);
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,9 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.spi.context.AtomicContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SystemAtomicContext<T> extends AtomicContext<T> {
+}

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java Fri May 12 22:45:22 2006
@@ -2,35 +2,45 @@
 
 import java.util.List;
 import java.util.Map;
+import java.lang.reflect.Method;
 
 import org.apache.tuscany.common.ObjectCreationException;
 import org.apache.tuscany.common.ObjectFactory;
 import org.apache.tuscany.core.context.PojoAtomicContext;
-import org.apache.tuscany.core.context.PojoInstanceContext;
+import org.apache.tuscany.core.context.PojoInstanceWrapper;
 import org.apache.tuscany.core.injection.EventInvoker;
-import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.TargetException;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
-import org.apache.tuscany.spi.wire.TargetWireFactory;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
-public class SystemAtomicContext extends PojoAtomicContext {
+public class SystemAtomicContextImpl<T> extends PojoAtomicContext<T> implements SystemAtomicContext<T> {
 
-    public SystemAtomicContext(String name, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
-                               EventInvoker<Object> destroyInvoker) {
-        super(name, objectFactory, eagerInit, initInvoker, destroyInvoker);
-        this.objectFactory = objectFactory;
+    public SystemAtomicContextImpl(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory) {
+        super(name, serviceInterface, objectFactory, false, null, null);
     }
 
-    public Object getTargetInstance() throws TargetException {
-        return scopeContext.getInstance(this);
+    public SystemAtomicContextImpl(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+                                   EventInvoker<Object> destroyInvoker) {
+        super(name, serviceInterface, objectFactory, eagerInit, initInvoker, destroyInvoker);
     }
 
-    public InstanceContext createInstance() throws ObjectCreationException {
-        InstanceContext ctx = new PojoInstanceContext(this, objectFactory.getInstance());
+    public SystemAtomicContextImpl(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
+                                   EventInvoker<Object> destroyInvoker) {
+        super(name, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker);
+    }
+
+    @SuppressWarnings("unchecked")
+    public T getTargetInstance() throws TargetException {
+        return (T)scopeContext.getInstance(this);
+    }
+
+    public InstanceWrapper createInstance() throws ObjectCreationException {
+        InstanceWrapper ctx = new PojoInstanceWrapper(this, objectFactory.getInstance());
         ctx.start();
         return ctx;
     }
@@ -38,33 +48,40 @@
     public void prepare() {
     }
 
-    public Object getInstance(QualifiedName qName) throws TargetException {
+    public Object getService(String name) throws TargetException {
         return getTargetInstance();
     }
 
-    public void addTargetWireFactory(TargetWireFactory factory) {
+    public T getService() throws TargetException {
+        return getTargetInstance();
+    }
+
+    public void addTargetWire(TargetWire wire) {
         throw new UnsupportedOperationException();
     }
 
-    public TargetWireFactory getTargetWireFactory(String serviceName) {
+    public TargetWire getTargetWire(String serviceName) {
         throw new UnsupportedOperationException();
     }
 
-    public Map<String, TargetWireFactory> getTargetWireFactories() {
+    public Map<String, TargetWire> getTargetWires() {
         throw new UnsupportedOperationException();
     }
 
-    public void addSourceWireFactory(SourceWireFactory factory) {
+    public void addSourceWire(SourceWire wire) {
         throw new UnsupportedOperationException();
     }
 
-    public void addSourceWireFactories(Class<?> multiplicityClass,  List<SourceWireFactory> factories){
+    public void addSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
         throw new UnsupportedOperationException();
     }
 
-    public List<SourceWireFactory> getSourceWireFactories() {
+    public List<SourceWire> getSourceWires() {
         throw new UnsupportedOperationException();
     }
 
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation){
+        throw new UnsupportedOperationException();
+    }
 
 }

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,22 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.core.context.AutowireContext;
+
+/**
+ * Marker type for system composite contexts
+ *
+ * @version $Rev: 392199 $ $Date: 2006-04-06 23:32:29 -0700 (Thu, 06 Apr 2006) $
+ */
+public interface SystemCompositeContext<T> extends AutowireContext<T> {
+
+    /**
+     * Register a simple Java Object as a system component. This is primarily intended for use by bootstrap
+     * code to create the initial configuration components.
+     *
+     * @param name     the name of the resulting component
+     * @param service
+     * @param instance the Object that will become the component's implementation
+     * @throws ObjectRegistrationException
+     */
+    void registerJavaObject(String name, Class<?> service, Object instance) throws ObjectRegistrationException;
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java Fri May 12 22:45:22 2006
@@ -0,0 +1,50 @@
+package org.apache.tuscany.core.system.context;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.AbstractCompositeContext;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.AutowireResolutionException;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.event.Event;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * Implements an composite context for system components. In addition, it implements an autowire policy A
+ * system context may contain child composite contexts but an entry point in a child context will only be
+ * outwardly accessible if there is an entry point that exposes it configured in the top-level system
+ * context.
+ *
+ * @version $Rev: 399161 $ $Date: 2006-05-02 23:09:37 -0700 (Tue, 02 May 2006) $
+ */
+public class SystemCompositeContextImpl<S> extends AbstractCompositeContext<S> implements SystemCompositeContext<S> {
+
+    public SystemCompositeContextImpl() {
+        super();
+    }
+
+    public SystemCompositeContextImpl(String name, CompositeContext parent, AutowireContext autowireContext) {
+        super(name, parent, autowireContext);
+    }
+
+    public void registerJavaObject(String componentName, Class<?> service, Object instance) throws ObjectRegistrationException {
+        SystemAtomicContext<Object> context = new SystemSingletonAtomicContext<Object>(componentName, service, instance);
+        registerContext(context);
+    }
+
+    public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException {
+        if (CompositeContext.class.equals(instanceInterface)) {
+            return instanceInterface.cast(this);
+        } else {
+            return super.resolveInstance(instanceInterface);
+        }
+    }
+
+    public void onEvent(Event event) {
+        publish(event); // propagate event to children
+    }
+
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        return null;
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,13 @@
+package org.apache.tuscany.core.system.context;
+
+import org.apache.tuscany.spi.context.ServiceContext;
+
+/**
+ * Marker for system service contexts
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SystemServiceContext<T> extends ServiceContext<T> {
+
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemServiceContextImpl.java Fri May 12 22:45:22 2006
@@ -0,0 +1,68 @@
+package org.apache.tuscany.core.system.context;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.spi.CoreRuntimeException;
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.IllegalTargetException;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.TargetNotFoundException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemServiceContextImpl<T> extends AbstractContext<T> implements SystemServiceContext<T> {
+
+    // a reference to the component's implementation instance exposed by the entry point
+    private T cachedInstance;
+    private Class<T> interfaze;
+    private QualifiedName target;
+
+    public SystemServiceContextImpl(String name, Class<T> interfaze, String targetName, CompositeContext parent) throws CoreRuntimeException {
+        super(name);
+        this.interfaze = interfaze;
+        target = new QualifiedName(targetName);
+        setParent(parent);
+    }
+
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        return null; //TOD implement
+    }
+
+    @SuppressWarnings("unchecked")
+    public T getService() {
+        if (cachedInstance == null) {
+            Context ctx = getParent().getContext(target.getPartName());
+            if ((ctx instanceof AtomicContext)) {
+                cachedInstance = (T) ((AtomicContext) ctx).getService(target.getPortName());
+            } else if ((ctx instanceof ReferenceContext)) {
+                cachedInstance = (T) ((ReferenceContext) ctx).getService();
+            } else if (ctx == null){
+                TargetNotFoundException e = new TargetNotFoundException(name);
+                e.addContextName(getName());
+                throw e;
+            }else {
+                IllegalTargetException e = new IllegalTargetException("Reference target must be a component or reference context");
+                e.setIdentifier(name);
+                e.addContextName(getName());
+                throw e;
+            }
+        }
+        return cachedInstance;
+    }
+
+
+    public Object getHandler() {
+        return null;
+    }
+
+    public Class<T> getInterface() {
+        return interfaze;
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemSingletonAtomicContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,108 @@
+package org.apache.tuscany.core.system.context;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
+import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * An {@link org.apache.tuscany.spi.context.AtomicContext} used when registering objects directly into a
+ * composite
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemSingletonAtomicContext<T> extends AbstractContext<T> implements SystemAtomicContext<T> {
+
+    private T instance;
+    private List<Class<?>> serviceInterfaces;
+
+    public SystemSingletonAtomicContext(String name, Class<?> serviceInterface, T instance) {
+        super(name);
+        this.instance = instance;
+        serviceInterfaces = new ArrayList<Class<?>>();
+        serviceInterfaces.add(serviceInterface);
+    }
+
+    public List<Class<?>>getServiceInterfaces() {
+        return serviceInterfaces;
+    }
+
+    public Scope getScope() {
+        return Scope.MODULE;
+    }
+
+    public void setScopeContext(ScopeContext<AtomicContext> context) {
+        // do nothing
+    }
+
+    public boolean isEagerInit() {
+        return false;
+    }
+
+    public T getTargetInstance() throws TargetException {
+        return instance;
+    }
+
+    public void prepare() {
+    }
+
+    public Object getService(String name) throws TargetException {
+        return getTargetInstance();
+    }
+
+    public T getService() throws TargetException {
+        return getTargetInstance();
+    }
+
+    public void init(Object instance) throws TargetException {
+
+    }
+
+    public void destroy(Object instance) throws TargetException {
+
+    }
+
+    public InstanceWrapper createInstance() throws ObjectCreationException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addTargetWire(TargetWire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public TargetWire getTargetWire(String serviceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Map<String, TargetWire> getTargetWires() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addSourceWire(SourceWire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
+        throw new UnsupportedOperationException();
+    }
+
+    public List<SourceWire> getSourceWires() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation){
+        throw new UnsupportedOperationException();
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/MethodHashMap.java Fri May 12 22:45:22 2006
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.util.HashMap;
 
-import org.apache.tuscany.spi.wire.InvocationConfiguration;
+import org.apache.tuscany.spi.wire.InvocationChain;
 
 /**
  * A <code>Map</code> implementation that performs a lookup on a collection of methods by method name. This
@@ -29,7 +29,7 @@
  *
  * @version $Rev$ $Date$
  */
-public class MethodHashMap<T extends InvocationConfiguration> extends HashMap<Method, T> {
+public class MethodHashMap<T extends InvocationChain> extends HashMap<Method, T> {
 
     public MethodHashMap() {
         super();

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationConfigurationImpl.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationConfigurationImpl.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationConfigurationImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/InvocationChainImpl.java Fri May 12 22:45:22 2006
@@ -20,13 +20,13 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.tuscany.spi.wire.InvocationConfiguration;
+import org.apache.tuscany.spi.wire.InvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.Interceptor;
 import org.apache.tuscany.spi.wire.MessageHandler;
 
 
-public abstract class InvocationConfigurationImpl implements InvocationConfiguration {
+public abstract class InvocationChainImpl implements InvocationChain {
 
     // the operation on the target that will utlimately be invoked
     protected Method operation;
@@ -42,7 +42,7 @@
 
     protected List<MessageHandler> responseHandlers;
 
-    public InvocationConfigurationImpl(Method operation) {
+    public InvocationChainImpl(Method operation) {
         assert (operation != null) : "No operation type specified";
         this.operation = operation;
     }

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfigurationImpl.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfigurationImpl.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationConfigurationImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/SourceInvocationChainImpl.java Fri May 12 22:45:22 2006
@@ -15,7 +15,7 @@
 
 import java.lang.reflect.Method;
 
-import org.apache.tuscany.spi.wire.SourceInvocationConfiguration;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
 import org.apache.tuscany.spi.wire.Interceptor;
 import org.apache.tuscany.spi.wire.MessageChannel;
 import org.apache.tuscany.spi.wire.MessageHandler;
@@ -25,7 +25,7 @@
  *
  * @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $
  */
-public class SourceInvocationConfigurationImpl extends InvocationConfigurationImpl implements SourceInvocationConfiguration {
+public class SourceInvocationChainImpl extends InvocationChainImpl implements SourceInvocationChain {
 
     // the pointer to the bridged target head interceptor or null if the target has no interceptors
     private Interceptor targetInterceptorChainHead;
@@ -42,7 +42,7 @@
      * @param operation the method on the interface representing specified by the reference, where the method corresponds to the
      *                  service operation
      */
-    public SourceInvocationConfigurationImpl(Method operation) {
+    public SourceInvocationChainImpl(Method operation) {
         super(operation);
     }
 

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfigurationImpl.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfigurationImpl.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationConfigurationImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/TargetInvocationChainImpl.java Fri May 12 22:45:22 2006
@@ -15,7 +15,7 @@
 
 import java.lang.reflect.Method;
 
-import org.apache.tuscany.spi.wire.TargetInvocationConfiguration;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
 import org.apache.tuscany.spi.wire.MessageHandler;
 
 /**
@@ -23,7 +23,7 @@
  *
  * @version $Rev: 394379 $ $Date: 2006-04-15 15:01:36 -0700 (Sat, 15 Apr 2006) $
  */
-public class TargetInvocationConfigurationImpl extends InvocationConfigurationImpl implements TargetInvocationConfiguration {
+public class TargetInvocationChainImpl extends InvocationChainImpl implements TargetInvocationChain {
 
     /**
      * Creates an new target-side pipeline for the given operation
@@ -31,7 +31,7 @@
      * @param operation the method on the interface representing target service, where the method corresponds
      *                  to the service operation
      */
-    public TargetInvocationConfigurationImpl(Method operation) {
+    public TargetInvocationChainImpl(Method operation) {
         super(operation);
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java Fri May 12 22:45:22 2006
@@ -25,7 +25,7 @@
 import org.apache.tuscany.core.wire.MessageImpl;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.wire.Interceptor;
-import org.apache.tuscany.spi.wire.InvocationConfiguration;
+import org.apache.tuscany.spi.wire.InvocationChain;
 import org.apache.tuscany.spi.wire.Message;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
@@ -45,10 +45,10 @@
      */
     private Map<Method, ConfigHolder> configuration;
 
-    public JDKInvocationHandler(Map<Method, ? extends InvocationConfiguration> configuration) {
+    public JDKInvocationHandler(Map<Method, ? extends InvocationChain> configuration) {
         assert (configuration != null) : "Configuration not specified";
         this.configuration = new HashMap<Method, ConfigHolder>(configuration.size());
-        for (Map.Entry<Method, ? extends InvocationConfiguration> entry : configuration.entrySet()) {
+        for (Map.Entry<Method, ? extends InvocationChain> entry : configuration.entrySet()) {
             this.configuration.put(entry.getKey(), new ConfigHolder(entry.getValue()));
         }
     }
@@ -64,7 +64,7 @@
             e.setIdentifier(method.getName());
             throw e;
         }
-        InvocationConfiguration config = holder.config;
+        InvocationChain config = holder.config;
         if (config != null) {
             headInterceptor = config.getHeadInterceptor();
         }
@@ -121,10 +121,10 @@
      */
     private class ConfigHolder {
 
-        InvocationConfiguration config;
+        InvocationChain config;
         TargetInvoker cachedInvoker;
 
-        public ConfigHolder(InvocationConfiguration config) {
+        public ConfigHolder(InvocationChain config) {
             this.config = config;
         }
 

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWireFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java Fri May 12 22:45:22 2006
@@ -19,10 +19,9 @@
 import java.util.Map;
 
 import org.apache.tuscany.core.util.MethodHashMap;
-import org.apache.tuscany.spi.wire.SourceInvocationConfiguration;
-import org.apache.tuscany.spi.wire.SourceWireFactory;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
+import org.apache.tuscany.spi.wire.SourceWire;
 import org.apache.tuscany.spi.wire.WireFactoryInitException;
-import org.apache.tuscany.spi.wire.WireSourceConfiguration;
 
 /**
  * Creates proxies that are injected on references using JDK dynamic proxy facilities and front a wire. The
@@ -30,7 +29,7 @@
  *
  * @version $Rev: 394431 $ $Date: 2006-04-15 21:27:44 -0700 (Sat, 15 Apr 2006) $
  */
-public class JDKSourceWireFactory<T> implements SourceWireFactory<T> {
+public class JDKSourceWire<T> implements SourceWire<T> {
 
     private static final int UNINITIALIZED = 0;
 
@@ -40,9 +39,7 @@
 
     private Class<T>[] businessInterfaceArray;
 
-    private Map<Method, SourceInvocationConfiguration> methodToInvocationConfig;
-
-    private WireSourceConfiguration configuration;
+    private Map<Method, SourceInvocationChain> methodToInvocationConfig;
 
     @SuppressWarnings("unchecked")
     public T createProxy() {
@@ -53,14 +50,6 @@
         return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaceArray, handler);
     }
 
-    public WireSourceConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(WireSourceConfiguration config) {
-        configuration = config;
-    }
-
     @SuppressWarnings("unchecked")
     public void setBusinessInterface(Class<T> interfaze) {
         businessInterfaceArray = new Class[]{interfaze};
@@ -82,13 +71,33 @@
         if (state != UNINITIALIZED) {
             throw new IllegalStateException("Proxy factory in wrong state [" + state + "]");
         }
-        Map<Method, SourceInvocationConfiguration> invocationConfigs = configuration.getInvocationConfigurations();
-        methodToInvocationConfig = new MethodHashMap<SourceInvocationConfiguration>(invocationConfigs.size());
-        for (Map.Entry<Method, SourceInvocationConfiguration> entry : invocationConfigs.entrySet()) {
-            Method method = entry.getKey();
-            methodToInvocationConfig.put(method, entry.getValue());
+        if (invocationChains != null) {
+            methodToInvocationConfig = new MethodHashMap<SourceInvocationChain>(invocationChains.size());
+            for (Map.Entry<Method, SourceInvocationChain> entry : invocationChains.entrySet()) {
+                Method method = entry.getKey();
+                methodToInvocationConfig.put(method, entry.getValue());
+            }
         }
         state = INITIALIZED;
     }
-    
+
+    private Map<Method, SourceInvocationChain> invocationChains;
+
+    public Map<Method, SourceInvocationChain> getInvocationChains() {
+        return invocationChains;
+    }
+
+    public void setInvocationChains(Map<Method, SourceInvocationChain> chains) {
+        invocationChains = chains;
+    }
+
+    public String getReferenceName() {
+        return referenceName;
+    }
+
+    public void setReferenceName(String referenceName) {
+        this.referenceName = referenceName;
+    }
+
+    private String referenceName;
 }