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/19 22:50:12 UTC

svn commit: r407909 - in /incubator/tuscany/sandbox/jboynes/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/context/ containers/container.java/src/test/java/org/apache/tuscany/container/java/context/ core/src/main/java/or...

Author: jmarino
Date: Fri May 19 13:50:11 2006
New Revision: 407909

URL: http://svn.apache.org/viewvc?rev=407909&view=rev
Log:
initial system wire refactors; more to come

Added:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/InvalidServiceTypeException.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/AutowireResolver.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/InterCompositeResolver.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/IntraCompositeResolver.java
      - copied, changed from r407028, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/LazyIntraCompositeResolver.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemSourceWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemTargetWire.java
Removed:
    incubator/tuscany/sandbox/jboynes/sca/core/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/LazyIntraCompositeResolver.java
Modified:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/CompositeContext.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicContextExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentContextExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java Fri May 19 13:50:11 2006
@@ -16,97 +16,35 @@
  */
 package org.apache.tuscany.container.java.context;
 
-import java.lang.reflect.Field;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.common.ObjectCreationException;
 import org.apache.tuscany.common.ObjectFactory;
 import org.apache.tuscany.container.java.invocation.JavaTargetInvoker;
-import org.apache.tuscany.core.context.PojoInstanceWrapper;
-import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
+import org.apache.tuscany.core.context.PojoAtomicContext;
 import org.apache.tuscany.core.injection.EventInvoker;
-import org.apache.tuscany.core.injection.FieldInjector;
 import org.apache.tuscany.core.injection.Injector;
-import org.apache.tuscany.core.injection.InvalidAccessorException;
-import org.apache.tuscany.core.injection.ListMultiplicityObjectFactory;
-import org.apache.tuscany.core.injection.MethodInjector;
-import org.apache.tuscany.core.injection.NoAccessorException;
-import org.apache.tuscany.core.injection.ProxyObjectFactory;
 import org.apache.tuscany.model.Scope;
-import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.TargetException;
-import org.apache.tuscany.spi.extension.AtomicContextExtension;
-import org.apache.tuscany.spi.wire.SourceWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.wire.TargetWire;
 
 /**
  * Provides a runtime context for Java component implementations
  *
  * @version $Rev$ $Date$
  */
-public class JavaAtomicContext<T> extends AtomicContextExtension<T> {
-
-    private List<Injector> injectors;
-    private Map<String, Member> members;
-
-    protected boolean eagerInit;
-    protected EventInvoker<Object> initInvoker;
-    protected EventInvoker<Object> destroyInvoker;
-    protected ObjectFactory<?> objectFactory;
-    protected List<Class<?>> serviceInterfaces;
-    protected Scope scope;
+public class JavaAtomicContext<T> extends PojoAtomicContext<T> {
 
     public JavaAtomicContext(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, Scope scope, boolean eagerInit, EventInvoker<Object> initInvoker,
                              EventInvoker<Object> destroyInvoker, List<Injector> injectors, Map<String, Member> members) {
-        this.name = name;
-        this.injectors = injectors != null ? injectors : new ArrayList<Injector>();
-        this.members = members != null ? members : new HashMap<String, Member>();
-        this.objectFactory = objectFactory;
-        this.eagerInit = eagerInit;
-        this.initInvoker = initInvoker;
-        this.destroyInvoker = destroyInvoker;
-        this.serviceInterfaces = serviceInterfaces;
+        super(name, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members);
         this.scope = scope;
     }
 
-    public List<Class<?>> getServiceInterfaces() {
-        return serviceInterfaces;
-    }
-
-    public Scope getScope() {
-        return scope;
-    }
-
-    public boolean isEagerInit() {
-        return eagerInit;
-    }
-
-    public void init(Object instance) throws TargetException {
-        if (initInvoker != null) {
-            initInvoker.invokeEvent(instance);
-        }
-    }
-
-    public void destroy(Object instance) throws TargetException {
-        if (destroyInvoker != null) {
-            destroyInvoker.invokeEvent(instance);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    public T getTargetInstance() throws TargetException {
-        return (T) scopeContext.getInstance(this);
-    }
-
-
     public Object getService(String name) throws TargetException {
-        // TODO implement proxying
+        // FIXME implement
         return getTargetInstance();
     }
 
@@ -118,85 +56,9 @@
         }
     }
 
-    public InstanceWrapper createInstance() throws ObjectCreationException {
-        Object instance = objectFactory.getInstance();
-        // inject the instance with properties and references
-        for (Injector<Object> injector : injectors) {
-            injector.inject(instance);
-        }
-        InstanceWrapper ctx = new PojoInstanceWrapper(this, instance);
-        ctx.start();
-        return ctx;
-    }
-
-    public void onSourceWire(SourceWire wire) {
-        String referenceName = wire.getReferenceName();
-        Member member = members.get(referenceName);
-        if (member == null) {
-            throw new NoAccessorException(referenceName);
-        }
-        injectors.add(createInjector(member, wire));
-    }
-
-    public void onSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
-        assert(wires.size() > 0): "Wire wires was empty";
-        String referenceName = wires.get(0).getReferenceName();
-        Member member = members.get(referenceName);
-        if (member == null) {
-            throw new NoAccessorException(referenceName);
-        }
-        injectors.add(createMultiplicityInjector(member, multiplicityClass, wires));
-    }
-
-
-    public void onTargetWire(TargetWire wire) {
-
-    }
-
     public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
         return new JavaTargetInvoker(operation, this);
     }
 
-    public void prepare() {
-    }
-
-    private Injector createInjector(Member member, SourceWire wire) {
-        ObjectFactory<?> factory = new ProxyObjectFactory(wire);
-        if (member instanceof Field) {
-            return new FieldInjector(((Field) member), factory);
-        } else if (member instanceof Method) {
-            return new MethodInjector(((Method) member), factory);
-        } else {
-            InvalidAccessorException e = new InvalidAccessorException("Member must be a field or method");
-            e.setIdentifier(member.getName());
-            throw e;
-        }
-    }
-
-    private Injector createMultiplicityInjector(Member member, Class<?> interfaceType, List<SourceWire> wireFactories) {
-        List<ObjectFactory<?>> factories = new ArrayList<ObjectFactory<?>>();
-        for (SourceWire wire : wireFactories) {
-            factories.add(new ProxyObjectFactory(wire));
-        }
-        if (member instanceof Field) {
-            Field field = (Field) member;
-            if (field.getType().isArray()) {
-                return new FieldInjector(field, new ArrayMultiplicityObjectFactory(interfaceType, factories));
-            } else {
-                return new FieldInjector(field, new ListMultiplicityObjectFactory(factories));
-            }
-        } else if (member instanceof Method) {
-            Method method = (Method) member;
-            if (method.getParameterTypes()[0].isArray()) {
-                return new MethodInjector(method, new ArrayMultiplicityObjectFactory(interfaceType, factories));
-            } else {
-                return new MethodInjector(method, new ListMultiplicityObjectFactory(factories));
-            }
-        } else {
-            InvalidAccessorException e = new InvalidAccessorException("Member must be a field or method");
-            e.setIdentifier(member.getName());
-            throw e;
-        }
-    }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java Fri May 19 13:50:11 2006
@@ -44,8 +44,7 @@
 
 
     public void testDifferentInterfaceInjection() throws Exception {
-        Map<String, Member> members;
-        members = new HashMap<String, Member>();
+        Map<String, Member> members = new HashMap<String, Member>();
         Method m = SourceImpl.class.getMethod("setTarget", Target.class);
         members.put("target", m);
         WorkContext ctx = new WorkContextImpl();
@@ -62,8 +61,7 @@
     }
 
     public void testDifferentInterfaceMultiplicityInjection() throws Exception {
-        Map<String, Member> members;
-        members = new HashMap<String, Member>();
+        Map<String, Member> members = new HashMap<String, Member>();
         Method m = SourceImpl.class.getMethod("setTargets", List.class);
         members.put("target", m);
         WorkContext ctx = new WorkContextImpl();

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/AbstractCompositeContext.java Fri May 19 13:50:11 2006
@@ -11,8 +11,8 @@
 
 import org.apache.tuscany.core.system.context.SystemServiceContext;
 import org.apache.tuscany.spi.CoreRuntimeException;
-import org.apache.tuscany.spi.context.AbstractContext;
 import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.context.AbstractContext;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.Context;
@@ -190,6 +190,29 @@
         assert (componentName != null) : "Name was null";
         return children.get(componentName);
     }
+
+//    public <T> T resolve(QualifiedName name, Class<T> serviceType) {
+//        Context context = children.get(name.getPartName());
+//        if (context instanceof ComponentContext) {
+//            return serviceType.cast(((ComponentContext) context).getService(name.getPortName()));
+//        } else {
+//            Object o = context.getService();
+//            if (o == null) {
+//                CompositeContext<?> parent = getParent();
+//                if (parent == null){
+//                    throw new TargetNotFoundException(name.getQualifiedName());
+//                }
+//                return parent.resolve(name,serviceType);
+//            } else if (!(serviceType.isAssignableFrom(o.getClass()))) {
+//                InvalidServiceTypeException e = new InvalidServiceTypeException("Service implements a different interface");
+//                e.setIdentifier(serviceType.getName());
+//                e.addContextName(context.getName());
+//                e.addContextName(getName());
+//                throw e;
+//            }
+//            return serviceType.cast(o);
+//        }
+//    }
 
     public <T> T resolveInstance(Class<T> instanceInterface) throws AutowireResolutionException {
         if (AutowireContext.class.equals(instanceInterface)) {

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/InvalidServiceTypeException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/InvalidServiceTypeException.java?rev=407909&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/InvalidServiceTypeException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/InvalidServiceTypeException.java Fri May 19 13:50:11 2006
@@ -0,0 +1,23 @@
+package org.apache.tuscany.core.context;
+
+import org.apache.tuscany.spi.context.TargetException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class InvalidServiceTypeException extends TargetException {
+    public InvalidServiceTypeException() {
+    }
+
+    public InvalidServiceTypeException(String message) {
+        super(message);
+    }
+
+    public InvalidServiceTypeException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public InvalidServiceTypeException(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/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java?rev=407909&r1=407908&r2=407909&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 19 13:50:11 2006
@@ -1,82 +1,85 @@
 package org.apache.tuscany.core.context;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.tuscany.common.ObjectCreationException;
 import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
 import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.core.injection.FieldInjector;
 import org.apache.tuscany.core.injection.Injector;
-import org.apache.tuscany.model.Scope;
-import org.apache.tuscany.spi.context.AbstractContext;
+import org.apache.tuscany.core.injection.InvalidAccessorException;
+import org.apache.tuscany.core.injection.ListMultiplicityObjectFactory;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.ProxyObjectFactory;
+import org.apache.tuscany.core.injection.NoAccessorException;
 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.extension.AtomicContextExtension;
+import org.apache.tuscany.spi.wire.SourceWire;
 
 /**
  * Base implementation of an {@link AtomicContext} whose implementation type is a Java class
  *
  * @version $$Rev$$ $$Date$$
  */
-public abstract class PojoAtomicContext<T> extends AbstractContext<T> implements AtomicContext<T> {
+public abstract class PojoAtomicContext<T> extends AtomicContextExtension<T> {
 
-    protected ScopeContext<AtomicContext> scopeContext;
     protected boolean eagerInit;
     protected EventInvoker<Object> initInvoker;
     protected EventInvoker<Object> destroyInvoker;
     protected ObjectFactory<?> objectFactory;
     protected List<Class<?>> serviceInterfaces;
     protected List<Injector> injectors;
+    protected Map<String, Member> members;
+
 
     public PojoAtomicContext(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
-                             EventInvoker<Object> destroyInvoker, List<Injector> injectors) {
-        super(name);
-        List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
-        serviceInterfaces.add(serviceInterface);
+                             EventInvoker<Object> destroyInvoker, List<Injector> injectors, Map<String, Member> members) {
         assert (objectFactory != null) : "Object factory was null";
         if (eagerInit && initInvoker == null) {
             throw new AssertionError("No intialization method found for eager init implementation");
         }
+        this.name = name;
+        List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
+        serviceInterfaces.add(serviceInterface);
         this.objectFactory = objectFactory;
         this.eagerInit = eagerInit;
         this.initInvoker = initInvoker;
         this.destroyInvoker = destroyInvoker;
         this.serviceInterfaces = serviceInterfaces;
         this.injectors = (injectors == null) ? new ArrayList<Injector>() : injectors;
+        this.members = members != null ? members : new HashMap<String, Member>();
+
     }
 
     public PojoAtomicContext(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
-                             EventInvoker<Object> destroyInvoker,List<Injector> injectors) {
-        super(name);
+                             EventInvoker<Object> destroyInvoker, List<Injector> injectors, Map<String, Member> members) {
         assert (objectFactory != null) : "Object factory was null";
         if (eagerInit && initInvoker == null) {
             throw new AssertionError("No intialization method found for eager init implementation");
         }
+        this.name = name;
         this.objectFactory = objectFactory;
         this.eagerInit = eagerInit;
         this.initInvoker = initInvoker;
         this.destroyInvoker = destroyInvoker;
         this.serviceInterfaces = serviceInterfaces;
         this.injectors = (injectors == null) ? new ArrayList<Injector>() : injectors;
+        this.members = members != null ? members : new HashMap<String, Member>();
     }
 
     public List<Class<?>> getServiceInterfaces() {
         return serviceInterfaces;
     }
 
-    public Scope getScope() {
-        if (scopeContext == null) {
-            return null;
-        }
-        return scopeContext.getScope();
-    }
-
-    public void setScopeContext(ScopeContext<AtomicContext> scopeContext) {
-        this.scopeContext = scopeContext;
-        scopeContext.register(this);
-    }
-
     public boolean isEagerInit() {
         return eagerInit;
     }
@@ -107,6 +110,64 @@
         }
         ctx.start();
         return ctx;
+    }
+
+    public void onSourceWire(SourceWire wire) {
+        String referenceName = wire.getReferenceName();
+        Member member = members.get(referenceName);
+        if (member == null) {
+            throw new NoAccessorException(referenceName);
+        }
+        injectors.add(createInjector(member, wire));
+    }
+
+    public void onSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
+        assert(wires.size() > 0): "Wire wires was empty";
+        String referenceName = wires.get(0).getReferenceName();
+        Member member = members.get(referenceName);
+        if (member == null) {
+            throw new NoAccessorException(referenceName);
+        }
+        injectors.add(createMultiplicityInjector(member, multiplicityClass, wires));
+    }
+
+    protected Injector createInjector(Member member, SourceWire wire) {
+        ObjectFactory<?> factory = new ProxyObjectFactory(wire);
+        if (member instanceof Field) {
+            return new FieldInjector(((Field) member), factory);
+        } else if (member instanceof Method) {
+            return new MethodInjector(((Method) member), factory);
+        } else {
+            InvalidAccessorException e = new InvalidAccessorException("Member must be a field or method");
+            e.setIdentifier(member.getName());
+            throw e;
+        }
+    }
+
+    protected Injector createMultiplicityInjector(Member member, Class<?> interfaceType, List<SourceWire> wireFactories) {
+        List<ObjectFactory<?>> factories = new ArrayList<ObjectFactory<?>>();
+        for (SourceWire wire : wireFactories) {
+            factories.add(new ProxyObjectFactory(wire));
+        }
+        if (member instanceof Field) {
+            Field field = (Field) member;
+            if (field.getType().isArray()) {
+                return new FieldInjector(field, new ArrayMultiplicityObjectFactory(interfaceType, factories));
+            } else {
+                return new FieldInjector(field, new ListMultiplicityObjectFactory(factories));
+            }
+        } else if (member instanceof Method) {
+            Method method = (Method) member;
+            if (method.getParameterTypes()[0].isArray()) {
+                return new MethodInjector(method, new ArrayMultiplicityObjectFactory(interfaceType, factories));
+            } else {
+                return new MethodInjector(method, new ListMultiplicityObjectFactory(factories));
+            }
+        } else {
+            InvalidAccessorException e = new InvalidAccessorException("Member must be a field or method");
+            e.setIdentifier(member.getName());
+            throw e;
+        }
     }
 
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java?rev=407909&r1=407908&r2=407909&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 19 13:50:11 2006
@@ -83,11 +83,11 @@
     }
 
     private InstanceWrapper getInstance(AtomicContext context, Object key) {
-        Map<Object, InstanceWrapper> contextMap = contexts.get(context);
-        InstanceWrapper ctx = contextMap.get(key);
+        Map<Object, InstanceWrapper> wrappers = contexts.get(context);
+        InstanceWrapper ctx = wrappers.get(key);
         if (ctx == null) {
             ctx = context.createInstance();
-            contextMap.put(key, ctx);
+            wrappers.put(key, ctx);
             List<InstanceWrapper> destroyQueue = destroyQueues.get(key);
             if (destroyQueue == null) {
                 destroyQueue = new ArrayList<InstanceWrapper>();

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/AutowireResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/AutowireResolver.java?rev=407909&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/AutowireResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/AutowireResolver.java Fri May 19 13:50:11 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.core.context.AutowireContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class AutowireResolver<T> implements ObjectFactory<T> {
+
+    private AutowireContext<?> parent;
+
+    private Class<T> autowireType;
+
+    public AutowireResolver(Class<T> autowireType, AutowireContext parent) {
+        assert (autowireType != null) : "Autwire type was null";
+        this.autowireType = autowireType;
+        this.parent = parent;
+    }
+
+    public T getInstance() throws ObjectCreationException {
+        return parent.resolveInstance(autowireType);
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/InterCompositeResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/InterCompositeResolver.java?rev=407909&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/InterCompositeResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/InterCompositeResolver.java Fri May 19 13:50:11 2006
@@ -0,0 +1,47 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.common.ObjectCreationException;
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.core.context.InvalidServiceTypeException;
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.context.ComponentContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.TargetNotFoundException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class InterCompositeResolver<T> implements ObjectFactory<T> {
+
+    private CompositeContext parent;
+    private QualifiedName name;
+    private Class<T> serviceType;
+
+    public InterCompositeResolver(CompositeContext parent, QualifiedName name, Class<T> serviceType) {
+        assert(parent != null): "Parent context was null";
+        assert(name != null): "Qualified name was null";
+        this.parent = parent;
+        this.name = name;
+        this.serviceType = serviceType;
+    }
+
+    @SuppressWarnings("unchecked")
+    public T getInstance() throws ObjectCreationException {
+        Context context = parent.getContext(name.getPartName());
+        if (context instanceof ComponentContext) {
+            return serviceType.cast(((ComponentContext) context).getService(name.getPortName()));
+        } else {
+            Object o = context.getService();
+            if (o == null) {
+                throw new TargetNotFoundException(name.getQualifiedName());
+            } else if (!(serviceType.isAssignableFrom(o.getClass()))) {
+                InvalidServiceTypeException e = new InvalidServiceTypeException("Service implements a different interface");
+                e.setIdentifier(serviceType.getName());
+                e.addContextName(context.getName());
+                throw e;
+            }
+            return serviceType.cast(o);
+        }
+    }
+}

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/IntraCompositeResolver.java (from r407028, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/LazyIntraCompositeResolver.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/IntraCompositeResolver.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/IntraCompositeResolver.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/LazyIntraCompositeResolver.java&r1=407028&r2=407909&rev=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/LazyIntraCompositeResolver.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/IntraCompositeResolver.java Fri May 19 13:50:11 2006
@@ -2,46 +2,37 @@
 
 import org.apache.tuscany.common.ObjectCreationException;
 import org.apache.tuscany.common.ObjectFactory;
-import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.context.ComponentContext;
-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;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
-public class LazyIntraCompositeResolver<T> implements ObjectFactory<T> {
+public class IntraCompositeResolver<T> implements ObjectFactory<T> {
 
-    private CompositeContext parent;
-    private QualifiedName name;
-    private Context context;
+    private Context target;
+    private String name;
 
-    public LazyIntraCompositeResolver(CompositeContext parent, QualifiedName name) {
-        assert(parent != null): "Parent context was null";
-        assert(name != null): "Qualified name was null";
-        this.parent = parent;
-        this.name = name;
+    public IntraCompositeResolver(Context target, String serviceName) {
+        assert(target != null): "Target was null";
+        if (!(target instanceof ComponentContext) && !(target instanceof ReferenceContext)) {
+            IllegalTargetException e = new IllegalTargetException("Invalid target type");
+            e.setIdentifier(target.getName());
+            throw e;
+
+        }
+        name = serviceName;
+        this.target = target;
     }
 
     @SuppressWarnings("unchecked")
     public T getInstance() throws ObjectCreationException {
-        if (context == null) {
-            context = parent.getContext(name.getPartName());
-            if (context == null) {
-                ObjectCreationException e = new ObjectCreationException("Target not found");
-                e.setIdentifier(name.getQualifiedName());
-                throw e;
-            }
-        }
-        if (context instanceof ComponentContext) {
-            return (T) ((CompositeContext) context).getService(name.getPortName());
-        } else if (context instanceof ReferenceContext) {
-            return (T) context.getService();
+        if (target instanceof ComponentContext) {
+            return (T) ((ComponentContext) target).getService(name);
         } else {
-            ObjectCreationException e = new ObjectCreationException("Invalid target type");
-            e.setIdentifier(context.getName());
-            throw e;
+            return (T) target.getService();
         }
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java Fri May 19 13:50:11 2006
@@ -1,22 +1,21 @@
 package org.apache.tuscany.core.system.builder;
 
 import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
 import java.lang.reflect.Member;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.tuscany.common.ObjectFactory;
 import org.apache.tuscany.core.injection.ContextInjector;
-import org.apache.tuscany.core.injection.FieldInjector;
 import org.apache.tuscany.core.injection.Injector;
-import org.apache.tuscany.core.injection.LazyIntraCompositeResolver;
-import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.IntraCompositeResolver;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.model.PojoComponentType;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.core.system.context.SystemAtomicContextImpl;
 import org.apache.tuscany.core.system.model.SystemImplementation;
+import org.apache.tuscany.core.system.wire.SystemSourceWire;
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
 import org.apache.tuscany.model.Component;
 import org.apache.tuscany.model.ReferenceTarget;
@@ -26,6 +25,7 @@
 import org.apache.tuscany.spi.builder.ComponentBuilder;
 import org.apache.tuscany.spi.context.ComponentContext;
 import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.Context;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -52,6 +52,7 @@
         ObjectFactory<?> factory = new PojoObjectFactory(constr);
         List<Injector> injectors = new ArrayList<Injector>();
         injectors.addAll(componentType.getInjectors());
+        Map<String, Member> members = componentType.getReferenceMembers();
         for (Injector injector : injectors) {
             if (injector instanceof ContextInjector) {
                 // a context injector is found; iterate and determine if the parent context
@@ -66,24 +67,28 @@
                 }
             }
         }
+        SystemAtomicContext systemContext = new SystemAtomicContextImpl(component.getName(), serviceInterfaces, factory,
+                componentType.isEagerInit(), componentType.getInitInvoker(), componentType.getDestroyInvoker(), injectors, members);
+
         for (ReferenceTarget target : component.getReferenceTargets().values()) {
-            //FIXME support multiplicity!
-            assert(target.getTargets().size() == 1): "Multiplicity not yet implemented";
-            LazyIntraCompositeResolver resolver = new LazyIntraCompositeResolver(parent, new QualifiedName(target.getTargets().get(0).getPath()));
-            Member member = componentType.getReferenceMember(target.getReferenceName());
+            String referenceName = target.getReferenceName();
+            Class interfaze = target.getReference().getServiceContract().getInteface();
+            Member member = componentType.getReferenceMember(referenceName);
             if (member == null) {
                 BuilderConfigException e = new BuilderConfigException("Reference not found");
                 e.setIdentifier(target.getReferenceName());
                 e.addContextName(component.getName());
                 e.addContextName(parent.getName());
                 throw e;
-            } else if (member instanceof Field) {
-                injectors.add(new FieldInjector((Field) member, resolver));
-            } else if (member instanceof Method) {
-                injectors.add(new MethodInjector((Method) member, resolver));
             }
+            //FIXME support multiplicity!
+            assert(target.getTargets().size() == 1): "Multiplicity not yet implemented";
+            QualifiedName targetName = new QualifiedName(target.getTargets().get(0).getPath());
+            Context targetContext = parent.getContext(targetName.getPartName());
+            IntraCompositeResolver resolver = new IntraCompositeResolver(targetContext, targetName.getPortName());
+            SystemSourceWire wire = new SystemSourceWire(referenceName, targetName, interfaze, resolver);
+            systemContext.addSourceWire(wire);
         }
-        return new SystemAtomicContextImpl(component.getName(), serviceInterfaces, factory,
-                componentType.isEagerInit(), componentType.getInitInvoker(), componentType.getDestroyInvoker(), injectors);
+        return systemContext;
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/AutowireSystemReferenceContext.java Fri May 19 13:50:11 2006
@@ -47,7 +47,7 @@
         return referenceInterface;
     }
 
-    public TargetWire getTargetWire() {
+    public TargetWire<T> getTargetWire() {
         throw new UnsupportedOperationException();
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContextImpl.java Fri May 19 13:50:11 2006
@@ -1,6 +1,7 @@
 package org.apache.tuscany.core.system.context;
 
 import java.lang.reflect.Method;
+import java.lang.reflect.Member;
 import java.util.List;
 import java.util.Map;
 
@@ -9,27 +10,22 @@
 import org.apache.tuscany.core.injection.EventInvoker;
 import org.apache.tuscany.core.injection.Injector;
 import org.apache.tuscany.spi.context.TargetException;
-import org.apache.tuscany.spi.wire.SourceWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.wire.TargetWire;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class SystemAtomicContextImpl<T> extends PojoAtomicContext<T> implements SystemAtomicContext<T> {
 
-    public SystemAtomicContextImpl(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory, List<Injector> injectors) {
-        super(name, serviceInterface, objectFactory, false, null, null, injectors);
-    }
 
     public SystemAtomicContextImpl(String name, Class<?> serviceInterface, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
-                                   EventInvoker<Object> destroyInvoker, List<Injector> injectors) {
-        super(name, serviceInterface, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors);
+                                   EventInvoker<Object> destroyInvoker, List<Injector> injectors, Map<String, Member> members) {
+        super(name, serviceInterface, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members);
     }
 
     public SystemAtomicContextImpl(String name, List<Class<?>> serviceInterfaces, ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
-                                   EventInvoker<Object> destroyInvoker, List<Injector> injectors) {
-        super(name, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors);
+                                   EventInvoker<Object> destroyInvoker, List<Injector> injectors,Map<String, Member> members) {
+        super(name, serviceInterfaces, objectFactory, eagerInit, initInvoker, destroyInvoker, injectors, members);
     }
 
     @SuppressWarnings("unchecked")
@@ -46,30 +42,6 @@
 
     public T getService() throws TargetException {
         return getTargetInstance();
-    }
-
-    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) {

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemSourceWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemSourceWire.java?rev=407909&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemSourceWire.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemSourceWire.java Fri May 19 13:50:11 2006
@@ -0,0 +1,77 @@
+package org.apache.tuscany.core.system.wire;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.wire.ProxyCreationException;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
+import org.apache.tuscany.spi.wire.SourceWire;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemSourceWire implements SourceWire {
+    private String referenceName;
+    private QualifiedName targetName;
+    private Class businessInterface;
+    private ObjectFactory factory;
+
+    public SystemSourceWire(String referenceName, QualifiedName targetName, Class businessInterface, ObjectFactory factory) {
+        this.referenceName = referenceName;
+        this.targetName = targetName;
+        this.businessInterface = businessInterface;
+        this.factory = factory;
+    }
+
+    public String getReferenceName() {
+        return referenceName;
+    }
+
+    public void setReferenceName(String referenceName) {
+        this.referenceName = referenceName;
+    }
+
+    public QualifiedName getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(QualifiedName targetName) {
+        this.targetName = targetName;
+    }
+
+    public Object createProxy() throws ProxyCreationException {
+        return factory.getInstance();
+    }
+
+    public Class getBusinessInterface() {
+        return businessInterface;
+    }
+
+    public void setBusinessInterface(Class businessInterface) {
+        this.businessInterface = businessInterface;
+    }
+
+    public Class[] getImplementedInterfaces() {
+        return new Class[0];
+    }
+
+    public Map getInvocationChains() {
+        return Collections.emptyMap();
+    }
+
+    public void addInvocationChain(Method method, SourceInvocationChain chains) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInvocationChains(Map chains) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInterface(Class claz) {
+        throw new UnsupportedOperationException();
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemTargetWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemTargetWire.java?rev=407909&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemTargetWire.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/wire/SystemTargetWire.java Fri May 19 13:50:11 2006
@@ -0,0 +1,73 @@
+package org.apache.tuscany.core.system.wire;
+
+import java.util.Map;
+import java.util.Collections;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.ProxyCreationException;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
+import org.apache.tuscany.common.ObjectFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemTargetWire implements TargetWire {
+    private String serviceName;
+    private Class businessInterface;
+    private ObjectFactory factory;
+
+    public SystemTargetWire(String serviceName, Class businessInterface, ObjectFactory factory) {
+        this.serviceName = serviceName;
+        this.businessInterface = businessInterface;
+        this.factory = factory;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+     public Object createProxy() throws ProxyCreationException {
+         return factory.getInstance();
+    }
+
+    public Class getBusinessInterface() {
+        return businessInterface;
+    }
+
+
+    public void setBusinessInterface(Class businessInterface) {
+        this.businessInterface = businessInterface;
+    }
+
+    public Class[] getImplementedInterfaces() {
+        return new Class[0];
+    }
+
+    public Map getInvocationChains() {
+        return Collections.emptyMap();
+    }
+
+    public void addInvocationChain(Method method, TargetInvocationChain chain) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInvocationChain(Method method, SourceInvocationChain chains) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInvocationChains(Map chains) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addInterface(Class claz) {
+        throw new UnsupportedOperationException();
+    }
+
+
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKSourceWire.java Fri May 19 13:50:11 2006
@@ -56,7 +56,7 @@
         throw new UnsupportedOperationException("Additional proxy interfaces not yet supported");
     }
 
-    public Class[] getImplementatedInterfaces() {
+    public Class[] getImplementedInterfaces() {
         return businessInterfaces;
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java Fri May 19 13:50:11 2006
@@ -84,6 +84,6 @@
     }
 
     private SystemAtomicContext createContext() {
-        return new SystemAtomicContextImpl("foo", SessionScopeInitDestroyComponent.class, factory, false, initInvoker, destroyInvoker, null);
+        return new SystemAtomicContextImpl("foo", SessionScopeInitDestroyComponent.class, factory, false, initInvoker, destroyInvoker, null,null);
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java Fri May 19 13:50:11 2006
@@ -77,6 +77,6 @@
     }
 
     private SystemAtomicContext createContext() {
-        return new SystemAtomicContextImpl("foo", ModuleScopeInitDestroyComponent.class,factory, false, initInvoker, destroyInvoker, null);
+        return new SystemAtomicContextImpl("foo", ModuleScopeInitDestroyComponent.class,factory, false, initInvoker, destroyInvoker, null,null);
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java Fri May 19 13:50:11 2006
@@ -76,6 +76,6 @@
     }
 
     private SystemAtomicContext createContext() {
-        return new SystemAtomicContextImpl("foo", RequestScopeInitDestroyComponent.class,factory, false, initInvoker, destroyInvoker, null);
+        return new SystemAtomicContextImpl("foo", RequestScopeInitDestroyComponent.class,factory, false, initInvoker, destroyInvoker, null,null);
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java Fri May 19 13:50:11 2006
@@ -26,7 +26,7 @@
         List<Class<?>> interfaces = new ArrayList<Class<?>>();
         interfaces.add(HttpSessionScopeRestartTestCase.InitDestroyOnce.class);
         SystemAtomicContext context = MockContextFactory.createSystemAtomicContext("InitDestroy", interfaces,
-                HttpSessionScopeRestartTestCase.InitDestroyOnce.class, false, initInvoker, destroyInvoker, null);
+                HttpSessionScopeRestartTestCase.InitDestroyOnce.class, false, initInvoker, destroyInvoker, null,null);
         context.setScopeContext(scope);
         context.start();
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java Fri May 19 13:50:11 2006
@@ -26,7 +26,7 @@
         List<Class<?>> interfaces = new ArrayList<Class<?>>();
         interfaces.add(InitDestroyOnce.class);
         SystemAtomicContext context = MockContextFactory.createSystemAtomicContext("InitDestroy", interfaces,
-                InitDestroyOnce.class, false, initInvoker, destroyInvoker, null);
+                InitDestroyOnce.class, false, initInvoker, destroyInvoker, null,null);
         context.setScopeContext(scope);
         context.start();
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java Fri May 19 13:50:11 2006
@@ -25,7 +25,7 @@
         List<Class<?>> interfaces = new ArrayList<Class<?>>();
         interfaces.add(RequestScopeRestartTestCase.InitDestroyOnce.class);
         SystemAtomicContext context = MockContextFactory.createSystemAtomicContext("InitDestroy", interfaces,
-                RequestScopeRestartTestCase.InitDestroyOnce.class, false, initInvoker, destroyInvoker, null);
+                RequestScopeRestartTestCase.InitDestroyOnce.class, false, initInvoker, destroyInvoker, null,null);
         context.setScopeContext(scope);
         context.start();
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java Fri May 19 13:50:11 2006
@@ -2,6 +2,9 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import java.lang.reflect.Member;
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.context.WorkContextImpl;
@@ -9,6 +12,7 @@
 import org.apache.tuscany.core.injection.Injector;
 import org.apache.tuscany.core.injection.MethodInjector;
 import org.apache.tuscany.core.injection.TargetInstanceResolver;
+import org.apache.tuscany.core.injection.IntraCompositeResolver;
 import org.apache.tuscany.core.mock.MockContextFactory;
 import org.apache.tuscany.core.mock.component.Source;
 import org.apache.tuscany.core.mock.component.SourceImpl;
@@ -18,8 +22,10 @@
 import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.core.system.context.SystemCompositeContext;
 import org.apache.tuscany.core.system.context.SystemCompositeContextImpl;
+import org.apache.tuscany.core.system.wire.SystemSourceWire;
 import org.apache.tuscany.spi.context.ReferenceContext;
 import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.QualifiedName;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -33,12 +39,12 @@
         scope.start();
         ReferenceContext<Target> serviceContext = new MockReferenceContext<Target>("service", Target.class, new TargetImpl());
         context.registerContext(serviceContext);
-        List<Injector> injectors = new ArrayList<Injector>();
-        MethodInjector injector = new MethodInjector(SourceImpl.class.getMethod("setTarget", Target.class), new TargetInstanceResolver<Target>(serviceContext));
-        injectors.add(injector);
+        Map<String, Member> members = new HashMap<String,Member>();
+        members.put("setTarget",SourceImpl.class.getMethod("setTarget", Target.class));
         List<Class<?>> interfaces = new ArrayList<Class<?>>();
         interfaces.add(Source.class);
-        SystemAtomicContext sourceContext = MockContextFactory.createSystemAtomicContext("source", interfaces, SourceImpl.class, injectors);
+        SystemAtomicContext sourceContext = MockContextFactory.createSystemAtomicContext("source", interfaces, SourceImpl.class, null,members);
+        sourceContext.addSourceWire(new SystemSourceWire("setTarget",new QualifiedName("service"),Target.class, new IntraCompositeResolver(serviceContext,"")));
         context.registerContext(sourceContext);
         sourceContext.setScopeContext(scope);
         context.start();

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockContextFactory.java Fri May 19 13:50:11 2006
@@ -1,25 +1,27 @@
 package org.apache.tuscany.core.mock;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.common.ObjectCreationException;
 import org.apache.tuscany.common.ObjectFactory;
 import org.apache.tuscany.core.injection.EventInvoker;
 import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.IntraCompositeResolver;
 import org.apache.tuscany.core.injection.MethodEventInvoker;
-import org.apache.tuscany.core.injection.MethodInjector;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.core.system.context.SystemAtomicContextImpl;
+import org.apache.tuscany.core.system.wire.SystemSourceWire;
 import org.apache.tuscany.core.util.MethodHashMap;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
 import org.apache.tuscany.core.wire.TargetInvocationChainImpl;
 import org.apache.tuscany.core.wire.jdk.JDKTargetWire;
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.ScopeContext;
 import org.apache.tuscany.spi.wire.TargetInvocationChain;
@@ -73,10 +75,16 @@
         if (setter == null) {
             throw new IllegalArgumentException("No setter found on source for target");
         }
-        MethodInjector injector = new MethodInjector(setter, new AtomicContextInstanceFactory(targetCtx));
-        List<Injector> injectors = new ArrayList<Injector>();
-        injectors.add(injector);
-        SystemAtomicContext sourceCtx = createSystemAtomicContext(source, sourceInterfaces, sourceClass, injectors);//, sourceEager, sourceInitInvoker, sourceDestroyInvoker, injectors);
+
+//        MethodInjector injector = new MethodInjector(setter, new AtomicContextInstanceFactory(targetCtx));
+//        List<Injector> injectors = new ArrayList<Injector>();
+//        injectors.add(injector);
+        Map<String, Member> members = new HashMap<String, Member>();
+        members.put(setter.getName(), setter);
+        SystemAtomicContext sourceCtx = createSystemAtomicContext(source, sourceInterfaces, sourceClass, null, members);//, sourceEager, sourceInitInvoker, sourceDestroyInvoker, injectors);
+        QualifiedName targetName = new QualifiedName(target);
+        SystemSourceWire wire = new SystemSourceWire(setter.getName(), targetName, targetClass, new IntraCompositeResolver(targetCtx, targetName.getPortName()));
+        sourceCtx.addSourceWire(wire);
         sourceCtx.setScopeContext(sourceScopeCtx);
         contexts.put(source, sourceCtx);
         contexts.put(target, targetCtx);
@@ -87,11 +95,11 @@
     public static SystemAtomicContext createSystemAtomicContext(String name, Class<?> clazz) throws NoSuchMethodException {
         List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
         serviceInterfaces.add(clazz);
-        return createSystemAtomicContext(name, serviceInterfaces, clazz, null);
+        return createSystemAtomicContext(name, serviceInterfaces, clazz, null, null);
     }
 
     public static SystemAtomicContext createSystemAtomicContext(String name, List<Class<?>> serviceInterfaces,
-                                                                Class<?> clazz, List<Injector> injectors) throws NoSuchMethodException {
+                                                                Class<?> clazz, List<Injector> injectors, Map<String, Member> members) throws NoSuchMethodException {
         Method[] methods = clazz.getMethods();
         EventInvoker<Object> initInvoker = null;
         EventInvoker<Object> destroyInvoker = null;
@@ -106,7 +114,7 @@
                 destroyInvoker = new MethodEventInvoker<Object>(method);
             }
         }
-        return createSystemAtomicContext(name, serviceInterfaces, clazz, eager, initInvoker, destroyInvoker, injectors);
+        return createSystemAtomicContext(name, serviceInterfaces, clazz, eager, initInvoker, destroyInvoker, injectors, members);
     }
 
     /**
@@ -121,8 +129,8 @@
      * @throws NoSuchMethodException
      */
     public static SystemAtomicContextImpl createSystemAtomicContext(String name, List<Class<?>> serviceInterfaces, Class<?> clazz, boolean eagerInit, EventInvoker<Object> initInvoker,
-                                                                    EventInvoker<Object> destroyInvoker, List<Injector> injectors) throws NoSuchMethodException {
-        return new SystemAtomicContextImpl(name, serviceInterfaces, createObjectFactory(clazz), eagerInit, initInvoker, destroyInvoker, injectors);
+                                                                    EventInvoker<Object> destroyInvoker, List<Injector> injectors, Map<String, Member> members) throws NoSuchMethodException {
+        return new SystemAtomicContextImpl(name, serviceInterfaces, createObjectFactory(clazz), eagerInit, initInvoker, destroyInvoker, injectors, members);
     }
 
     public static <T> TargetWire<T> createTargetWireFactory(String serviceName, Class<T> interfaze) {
@@ -151,20 +159,19 @@
         return new PojoObjectFactory<T>(ctr);
     }
 
-
-    /**
-     * Used for injecting references
-     */
-    private static class AtomicContextInstanceFactory implements ObjectFactory {
-        private SystemAtomicContext ctx;
-
-        public AtomicContextInstanceFactory(SystemAtomicContext ctx) {
-            this.ctx = ctx;
-        }
-
-        public Object getInstance() throws ObjectCreationException {
-            return ctx.getTargetInstance();
-        }
-    }
+//    /**
+//     * Used for injecting references
+//     */
+//    private static class AtomicContextInstanceFactory implements ObjectFactory {
+//        private SystemAtomicContext ctx;
+//
+//        public AtomicContextInstanceFactory(SystemAtomicContext ctx) {
+//            this.ctx = ctx;
+//        }
+//
+//        public Object getInstance() throws ObjectCreationException {
+//            return ctx.getTargetInstance();
+//        }
+//    }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java Fri May 19 13:50:11 2006
@@ -27,7 +27,7 @@
         interfaces.add(Source.class);
         interfaces.add(Source2.class);
         SystemAtomicContext context = MockContextFactory.createSystemAtomicContext("source", interfaces,
-                SourceImpl.class, false, null, null, null);
+                SourceImpl.class, false, null, null, null,null);
         scopeContext.register(context);
         context.setScopeContext(scopeContext);
         parent.registerContext(context);
@@ -49,7 +49,7 @@
         interfaces.add(Source.class);
         interfaces.add(Source2.class);
         SystemAtomicContext context = MockContextFactory.createSystemAtomicContext("source", interfaces,
-                SourceImpl.class, false, null, null, null);
+                SourceImpl.class, false, null, null, null,null);
         scopeContext.register(context);
         context.setScopeContext(scopeContext);
         SystemServiceContext<Source> serviceContext = new SystemServiceContextImpl<Source>("sourceService", Source.class, "source", parent);

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java Fri May 19 13:50:11 2006
@@ -94,7 +94,7 @@
         List<Class<?>> interfaces = new ArrayList<Class<?>>();
         interfaces.add(ModuleScopeInitDestroyComponent.class);
         SystemAtomicContext context = MockContextFactory.createSystemAtomicContext("source", interfaces,
-                ModuleScopeInitDestroyComponent.class, false, initInvoker, destroyInvoker, null);
+                ModuleScopeInitDestroyComponent.class, false, initInvoker, destroyInvoker, null,null);
         scopeContext.register(context);
         context.setScopeContext(scopeContext);
         child2.registerContext(context);

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java Fri May 19 13:50:11 2006
@@ -19,7 +19,7 @@
     public void testContextCreationAndInit() throws Exception {
         ObjectFactory<Foo> factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor((Class[]) null), null);
         ScopeContext<AtomicContext> scopeContext = new MockScopeContext();
-        SystemAtomicContext context = new SystemAtomicContextImpl("foo",Foo.class,factory,false,initInvoker,null, null);
+        SystemAtomicContext context = new SystemAtomicContextImpl("foo",Foo.class,factory,false,initInvoker,null, null,null);
         context.setScopeContext(scopeContext);
         Foo instance = (Foo) context.getService(null);
         assertNotNull(instance);

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/CompositeContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/CompositeContext.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/CompositeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/CompositeContext.java Fri May 19 13:50:11 2006
@@ -19,6 +19,7 @@
 import java.util.List;
 
 import org.apache.tuscany.spi.event.RuntimeEventListener;
+import org.apache.tuscany.spi.QualifiedName;
 
 /**
  * A context which contains child component contexts.
@@ -55,6 +56,5 @@
      * Returns the reference context contained by the composite
      */
     List<ReferenceContext> getReferenceContexts();
-
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicContextExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicContextExtension.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicContextExtension.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicContextExtension.java Fri May 19 13:50:11 2006
@@ -3,24 +3,34 @@
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.TargetException;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public abstract class AtomicContextExtension<T> extends ComponentContextExtension<T> implements AtomicContext<T> {
 
-    protected ScopeContext scopeContext;
+    protected ScopeContext<AtomicContext> scopeContext;
+    protected Scope scope;
 
     public Scope getScope() {
-        if (scopeContext != null) {
-            return scopeContext.getScope();
-        } else {
-            return null;
-        }
+        return scope;
     }
 
-    public void setScopeContext(ScopeContext context) {
+    public void setScopeContext(ScopeContext<AtomicContext> context) {
         scopeContext = context;
+        context.register(this);
     }
 
+    public boolean isEagerInit() {
+        return false;
+    }
+
+    public void init(Object instance) throws TargetException {
+
+    }
+
+    public void destroy(Object instance) throws TargetException {
+
+    }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentContextExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentContextExtension.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentContextExtension.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentContextExtension.java Fri May 19 13:50:11 2006
@@ -54,10 +54,10 @@
         }
     }
 
-    public abstract void onSourceWire(SourceWire wire);
+    public void onSourceWire(SourceWire wire){}
 
-    public abstract void onSourceWires(Class<?> multiplicityClass, List<SourceWire> wires);
+    public void onSourceWires(Class<?> multiplicityClass, List<SourceWire> wires){}
 
-    public abstract void onTargetWire(TargetWire wire);
+    public void onTargetWire(TargetWire wire){}
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java?rev=407909&r1=407908&r2=407909&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/SourceWire.java Fri May 19 13:50:11 2006
@@ -69,7 +69,7 @@
     /**
      * Returns an array of all interfaces implemented by generated proxies
      */
-    Class[] getImplementatedInterfaces();
+    Class[] getImplementedInterfaces();
 
     /**
      * Returns the invocation configuration for each operation on a service specified by a reference or a



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