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/08/06 20:53:38 UTC

svn commit: r429173 - in /incubator/tuscany/java/sca: containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/ containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ containers/container.javascript/src/main...

Author: jmarino
Date: Sun Aug  6 11:53:36 2006
New Revision: 429173

URL: http://svn.apache.org/viewvc?rev=429173&view=rev
Log:
start to add non-blocking callback support to Groovy; refactor Groovy to beging using new property injection framework; cleanup to extension APIs related to adding callback support in Groovy

Added:
    incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyConfiguration.java   (with props)
Modified:
    incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java
    incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java
    incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentType.java
    incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyInvoker.java
    incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/ImplementationLoader.java
    incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ImplementationLoaderTestCase.java
    incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java
    incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java
    incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java
    incubator/tuscany/java/sca/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPojoProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/services/work/jsr237/workmanager/ThreadPoolWorkManager.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/GetServiceByNameTestCase.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderTestCase.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaReferenceWireTestCase.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/component/OutboundWireToJavaTestCase.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/mock/MockFactory.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java
    incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java
    incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java
    incubator/tuscany/java/sca/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyAtomicComponent.java Sun Aug  6 11:53:36 2006
@@ -18,17 +18,17 @@
 
 import java.lang.reflect.Method;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.tuscany.spi.ObjectCreationException;
-import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.extension.AtomicComponentExtension;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.wire.WireService;
 
 import groovy.lang.GroovyObject;
 
@@ -38,25 +38,21 @@
 public class GroovyAtomicComponent<T> extends AtomicComponentExtension<T> {
     private final Class<? extends GroovyObject> groovyClass;
     private final List<Class<?>> services;
-    private final List<PropertyInjector> injectors;
-
-    public GroovyAtomicComponent(String name,
-                                 Class<? extends GroovyObject> groovyClass,
-                                 List<Class<?>>services,
-                                 List<PropertyInjector> injectors,
-                                 CompositeComponent parent,
-                                 ScopeContainer scopeContainer,
-                                 WireService wireService) {
-        super(name, parent, scopeContainer, wireService, null, 0);
-        this.scope = scopeContainer.getScope();
+    //FIXME properties should move up to AtomicComponentExtension
+    private final Map<String, ObjectFactory> properties;
 
+    public GroovyAtomicComponent(GroovyConfiguration configuration) {
+        super(configuration.getName(),
+            configuration.getParent(),
+            configuration.getScopeContainer(),
+            configuration.getWireService(),
+            configuration.getWorkContext(),
+            null, configuration.getInitLevel());
+
+        this.groovyClass = configuration.getGroovyClass();
+        this.services = Collections.unmodifiableList(configuration.getServices());
+        this.properties = new HashMap<String, ObjectFactory>();
         assert groovyClass != null;
-        assert services != null;
-        assert injectors != null;
-
-        this.groovyClass = groovyClass;
-        this.services = Collections.unmodifiableList(services);
-        this.injectors = injectors;
     }
 
     public List<Class<?>> getServiceInterfaces() {
@@ -78,11 +74,11 @@
         }
 
         // inject properties
-        for (PropertyInjector injector : injectors) {
-            injector.inject(instance);
+        for (Map.Entry<String, ObjectFactory> property : properties.entrySet()) {
+            instance.setProperty(property.getKey(), property.getValue().getInstance());
         }
 
-        // inject wires
+        // inject references
         for (List<OutboundWire> referenceWires : getOutboundWires().values()) {
             for (OutboundWire<?> wire : referenceWires) {
                 instance.setProperty(wire.getReferenceName(), wireService.createProxy(wire));
@@ -108,5 +104,9 @@
             throw e;
         }
         return wireService.createProxy(wire);
+    }
+
+    public void addPropertyFactory(String name, ObjectFactory<?> factory) {
+        properties.put(name, factory);
     }
 }

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentBuilder.java Sun Aug  6 11:53:36 2006
@@ -1,14 +1,13 @@
 package org.apache.tuscany.container.groovy;
 
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
-import groovy.lang.GroovyClassLoader;
-import groovy.lang.GroovyObject;
-import org.codehaus.groovy.control.CompilationFailedException;
-
+import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
@@ -16,7 +15,19 @@
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
+
+import groovy.lang.GroovyClassLoader;
+import groovy.lang.GroovyObject;
+import org.apache.tuscany.core.wire.InvokerInterceptor;
+import org.codehaus.groovy.control.CompilationFailedException;
 
 /**
  * Extension point for creating {@link GroovyAtomicComponent}s from an assembly configuration
@@ -32,12 +43,14 @@
     public Component<?> build(CompositeComponent<?> parent,
                               ComponentDefinition<GroovyImplementation> componentDefinition,
                               DeploymentContext deploymentContext)
-            throws BuilderConfigException {
+        throws BuilderConfigException {
 
         String name = componentDefinition.getName();
         GroovyImplementation implementation = componentDefinition.getImplementation();
         GroovyComponentType componentType = implementation.getComponentType();
 
+        int initLevel = componentType.getInitLevel();
+
         // get list of services provided by this component
         Collection<ServiceDefinition> collection = componentType.getServices().values();
         List<Class<?>> services = new ArrayList<Class<?>>(collection.size());
@@ -59,18 +72,112 @@
         Class<? extends GroovyObject> groovyClass;
         try {
             String script = implementation.getScript();
+            // REVIEW JFM can we cache the class?
             groovyClass = groovyClassLoader.parseClass(script);
         } catch (CompilationFailedException e) {
             BuilderConfigException bce = new BuilderConfigException(e);
             bce.setIdentifier(name);
             throw bce;
         }
+        // TODO deal with init and destroy
+
+        // TODO set up injectors
+        //List<PropertyInjector> injectors = Collections.emptyList();
+
+        GroovyConfiguration configuration = new GroovyConfiguration();
+        configuration.setName(name);
+        configuration.setGroovyClass(groovyClass);
+        configuration.setParent(parent);
+        configuration.setScopeContainer(scopeContainer);
+        configuration.setWireService(wireService);
+        configuration.setWorkContext(workContext);
+        configuration.setInitLevel(initLevel);
+        configuration.setServices(services);
+        GroovyAtomicComponent component = new GroovyAtomicComponent(configuration);
+
+        // handle properties
+        for (Property<?> property : componentType.getProperties().values()) {
+            ObjectFactory<?> factory = property.getDefaultValueFactory();
+            if (factory != null) {
+                component.addPropertyFactory(property.getName(), factory);
+            }
+        }
+
+//        for (ServiceDefinition service : componentType.getServices().values()) {
+//            // TODO handle callbacks
+//             Callback callback = service. getCallbackReference();
+//             if (callback != null) {
+//                // Only if there is a callback reference in the service
+//                configuration.addCallbackSite(callback.getName(), callback.getMember());
+//             }
+//             component.addInboundWire(createWire(service));
+//        }
+
+        // handle references
+        for (ReferenceTarget referenceTarget : componentDefinition.getReferenceTargets().values()) {
+            Map<String, ReferenceDefinition> references = componentType.getReferences();
+            ReferenceDefinition referenceDefinition = references.get(referenceTarget.getReferenceName());
+            OutboundWire wire = createWire(referenceTarget, referenceDefinition);
+            component.addOutboundWire(wire);
+        }
+        return component;
+    }
 
-        // todo set up injectors
-        List<PropertyInjector> injectors = Collections.emptyList();
+    @SuppressWarnings("unchecked")
+    private OutboundWire createWire(ReferenceTarget reference, ReferenceDefinition def) {
+        //TODO multiplicity
+        if (reference.getTargets().size() != 1) {
+            throw new UnsupportedOperationException();
+        }
+        Class<?> interfaze = def.getServiceContract().getInterfaceClass();
+        OutboundWire wire = wireService.createOutboundWire();
+        wire.setTargetName(new QualifiedName(reference.getTargets().get(0).toString()));
+        wire.setBusinessInterface(interfaze);
+        wire.setReferenceName(reference.getReferenceName());
+        for (Method method : interfaze.getMethods()) {
+            //TODO handle policy
+            OutboundInvocationChain chain = wireService.createOutboundChain(method);
+            wire.addInvocationChain(method, chain);
+        }
+        // TODO handle callback
+//        ServiceContract contract = def.getServiceContract();
+//        Class<?> callbackInterface = contract.getCallbackClass();
+//        if (callbackInterface != null) {
+//            wire.setCallbackInterface(callbackInterface);
+//            for (Method callbackMethod : callbackInterface.getMethods()) {
+//                InboundInvocationChain callbackTargetChain = wireService.createInboundChain(callbackMethod);
+//                OutboundInvocationChain callbackSourceChain = wireService.createOutboundChain(callbackMethod);
+//                // TODO handle policy
+//                //TODO statement below could be cleaner
+//                callbackTargetChain.addInterceptor(new InvokerInterceptor());
+//                wire.addTargetCallbackInvocationChain(callbackMethod, callbackTargetChain);
+//                wire.addSourceCallbackInvocationChain(callbackMethod, callbackSourceChain);
+//            }
+//        }
+        return wire;
+    }
 
-        // create the actual component
-        return new GroovyAtomicComponent(name, groovyClass, services, injectors, parent, scopeContainer, wireService);
+    @SuppressWarnings("unchecked")
+    private InboundWire createWire(ServiceDefinition service) {
+        Class<?> interfaze = service.getServiceContract().getInterfaceClass();
+        InboundWire wire = wireService.createInboundWire();
+        wire.setBusinessInterface(interfaze);
+        wire.setServiceName(service.getName());
+        for (Method method : interfaze.getMethods()) {
+            InboundInvocationChain chain = wireService.createInboundChain(method);
+            // TODO handle policy
+            //TODO statement below could be cleaner
+            chain.addInterceptor(new InvokerInterceptor());
+            wire.addInvocationChain(method, chain);
+        }
+        //TODO handle callback
+//         ServiceContract contract = service.getServiceContract();
+//         Class<?> callbackInterface = contract.getCallbackClass();
+//         if (callbackInterface != null) {
+//             wire.setCallbackReferenceName(service.getCallbackReference().getName());
+//         }
+        return wire;
     }
+
 
 }

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentType.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentType.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyComponentType.java Sun Aug  6 11:53:36 2006
@@ -1,15 +1,19 @@
 package org.apache.tuscany.container.groovy;
 
 import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
  * Model object representing a Groovy component type
+ *
  * @version $$Rev$$ $$Date$$
  */
-public class GroovyComponentType extends ComponentType {
+public class GroovyComponentType extends ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> {
     private Scope lifecycleScope;
-    
+
     public Scope getLifecycleScope() {
         return lifecycleScope;
     }

Added: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyConfiguration.java?rev=429173&view=auto
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyConfiguration.java (added)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyConfiguration.java Sun Aug  6 11:53:36 2006
@@ -0,0 +1,132 @@
+package org.apache.tuscany.container.groovy;
+
+import java.lang.reflect.Member;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.wire.WireService;
+
+import groovy.lang.GroovyObject;
+
+/**
+ * Encapsulates confuration for a Groovy-based atomic component
+ *
+ * @version $Rev$ $Date$
+ */
+public class GroovyConfiguration {
+
+    private CompositeComponent<?> parent;
+    private ScopeContainer scopeContainer;
+    private int initLevel;
+    private Map<String, Member> referenceSites = new HashMap<String, Member>();
+    private Map<String, Member> propertySites = new HashMap<String, Member>();
+    private Map<String, Member> callbackSites = new HashMap<String, Member>();
+    private List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
+    private WireService wireService;
+    private WorkContext workContext;
+    private String name;
+    private Class<? extends GroovyObject> groovyClass;
+    private List<Class<?>> services;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Class<? extends GroovyObject> getGroovyClass() {
+        return groovyClass;
+    }
+
+    public void setGroovyClass(Class<? extends GroovyObject> groovyClass) {
+        this.groovyClass = groovyClass;
+    }
+
+    public CompositeComponent<?> getParent() {
+        return parent;
+    }
+
+    public void setParent(CompositeComponent<?> parent) {
+        this.parent = parent;
+    }
+
+    public ScopeContainer getScopeContainer() {
+        return scopeContainer;
+    }
+
+    public void setScopeContainer(ScopeContainer scopeContainer) {
+        this.scopeContainer = scopeContainer;
+    }
+
+    public List<Class<?>> getServiceInterfaces() {
+        return serviceInterfaces;
+    }
+
+    public void addServiceInterface(Class<?> serviceInterface) {
+        serviceInterfaces.add(serviceInterface);
+    }
+
+    public int getInitLevel() {
+        return initLevel;
+    }
+
+    public void setInitLevel(int initLevel) {
+        this.initLevel = initLevel;
+    }
+
+    public List<Class<?>> getServices() {
+        return services;
+    }
+
+    public void setServices(List<Class<?>> services) {
+        this.services = services;
+    }
+
+    public Map<String, Member> getReferenceSite() {
+        return referenceSites;
+    }
+
+    public void addReferenceSite(String name, Member member) {
+        referenceSites.put(name, member);
+    }
+
+    public Map<String, Member> getCallbackSite() {
+        return callbackSites;
+    }
+
+    public void addCallbackSite(String name, Member member) {
+        callbackSites.put(name, member);
+    }
+
+    public Map<String, Member> getPropertySites() {
+        return propertySites;
+    }
+
+    public void addPropertySite(String name, Member member) {
+        propertySites.put(name, member);
+    }
+
+    public WireService getWireService() {
+        return wireService;
+    }
+
+    public void setWireService(WireService wireService) {
+        this.wireService = wireService;
+    }
+
+    public WorkContext getWorkContext() {
+        return workContext;
+    }
+
+    public void setWorkContext(WorkContext workContext) {
+        this.workContext = workContext;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyConfiguration.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyConfiguration.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyInvoker.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyInvoker.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/GroovyInvoker.java Sun Aug  6 11:53:36 2006
@@ -18,10 +18,11 @@
 
 import java.lang.reflect.InvocationTargetException;
 
-import groovy.lang.GroovyObject;
-import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.wire.Message;
 import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+import groovy.lang.GroovyObject;
 
 /**
  * Dispatches to a Groovy implementation instance

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/ImplementationLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/ImplementationLoader.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/ImplementationLoader.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/main/java/org/apache/tuscany/container/groovy/ImplementationLoader.java Sun Aug  6 11:53:36 2006
@@ -40,7 +40,7 @@
  */
 public class ImplementationLoader extends LoaderExtension<GroovyImplementation> {
     private static final QName IMPLEMENTATION_GROOVY =
-            new QName("http://tuscany.apache.org/xmlns/groovy/1.0", "implementation");
+        new QName("http://tuscany.apache.org/xmlns/groovy/1.0", "implementation");
 
     public ImplementationLoader(LoaderRegistry registry) {
         super(registry);

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ImplementationLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ImplementationLoaderTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ImplementationLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ImplementationLoaderTestCase.java Sun Aug  6 11:53:36 2006
@@ -16,17 +16,20 @@
  */
 package org.apache.tuscany.container.groovy;
 
-import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
 
-import junit.framework.TestCase;
-import static org.easymock.classextension.EasyMock.*;
-
-import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.loader.MissingResourceException;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.component.CompositeComponent;
+
+import junit.framework.TestCase;
+import static org.easymock.classextension.EasyMock.createMock;
+import static org.easymock.classextension.EasyMock.expect;
+import static org.easymock.classextension.EasyMock.replay;
+import static org.easymock.classextension.EasyMock.verify;
 
 /**
  * @version $Rev$ $Date$
@@ -80,7 +83,7 @@
 
     public void testLoadScript() throws LoaderException {
         String script = loader.loadSource(getClass().getClassLoader(),
-                                          "org/apache/tuscany/container/groovy/mock/TestScript.groovy");
+            "org/apache/tuscany/container/groovy/mock/TestScript.groovy");
         assertEquals("Test Script", script);
     }
 

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/PropertyTestCase.java Sun Aug  6 11:53:36 2006
@@ -3,29 +3,36 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.TestCase;
-
-import org.apache.tuscany.container.groovy.injectors.SingletonInjector;
-import org.apache.tuscany.container.groovy.mock.Greeting;
-import org.apache.tuscany.core.component.scope.ModuleScopeContainer;
-import org.apache.tuscany.spi.wire.WireService;
-import org.apache.tuscany.test.ArtifactFactory;
+import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.ScopeContainer;
 
-import groovy.lang.GroovyObject;
 import groovy.lang.GroovyClassLoader;
+import groovy.lang.GroovyObject;
+import junit.framework.TestCase;
+import org.apache.tuscany.container.groovy.mock.Greeting;
+import static org.apache.tuscany.test.ArtifactFactory.createWireService;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.getCurrentArguments;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import org.easymock.IAnswer;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class PropertyTestCase extends TestCase {
 
+    private ScopeContainer scopeContainer;
+
     private static final String SCRIPT = "import org.apache.tuscany.container.groovy.mock.Greeting;"
-            + "class Foo implements Greeting{"
-            + "   String property;"
-            + "   public String greet(String name){"
-            + "       return property;  "
-            + "   }"
-            + "}";
+        + "class Foo implements Greeting{"
+        + "   String property;"
+        + "   public String greet(String name){"
+        + "       return property;  "
+        + "   }"
+        + "}";
 
     private Class<? extends GroovyObject> implClass;
 
@@ -33,29 +40,34 @@
      * Tests injecting a simple property type on a Groovy implementation instance
      */
     public void testPropertyInjection() throws Exception {
-        ModuleScopeContainer scope = new ModuleScopeContainer(null);
-        scope.start();
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
-        List<PropertyInjector> injectors = new ArrayList<PropertyInjector>();
-        injectors.add(new SingletonInjector("property", "bar"));
-        WireService wireService = ArtifactFactory.createWireService();
-        GroovyAtomicComponent<Greeting> context = new GroovyAtomicComponent<Greeting>("source",
-                                                                                      implClass,
-                                                                                      services,
-                                                                                      injectors,
-                                                                                      null,
-                                                                                      scope,
-                                                                                      wireService);
-        scope.register(context);
-        Greeting greeting = context.getServiceInstance();
+        GroovyConfiguration configuration = new GroovyConfiguration();
+        configuration.setName("source");
+        configuration.setGroovyClass(implClass);
+        configuration.setServices(services);
+        configuration.setScopeContainer(scopeContainer);
+        configuration.setWireService(createWireService());
+        GroovyAtomicComponent<Greeting> component = new GroovyAtomicComponent<Greeting>(configuration);
+        ObjectFactory<?> factory = createMock(ObjectFactory.class);
+        expect(factory.getInstance()).andReturn("bar");
+        replay(factory);
+        component.addPropertyFactory("property", factory);
+        Greeting greeting = component.getServiceInstance();
         assertEquals("bar", greeting.greet("foo"));
-        scope.stop();
     }
 
+    @SuppressWarnings("unchecked")
     protected void setUp() throws Exception {
         super.setUp();
         GroovyClassLoader cl = new GroovyClassLoader(getClass().getClassLoader());
         implClass = cl.parseClass(SCRIPT);
+        scopeContainer = createMock(ScopeContainer.class);
+        expect(scopeContainer.getInstance(isA(AtomicComponent.class))).andStubAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                return ((AtomicComponent) getCurrentArguments()[0]).createInstance();
+            }
+        });
+        replay(scopeContainer);
     }
 }

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/ScriptInvokeTestCase.java Sun Aug  6 11:53:36 2006
@@ -2,15 +2,21 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Collections;
 
-import groovy.lang.GroovyObject;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.ScopeContainer;
+
 import groovy.lang.GroovyClassLoader;
+import groovy.lang.GroovyObject;
 import junit.framework.TestCase;
-
 import org.apache.tuscany.container.groovy.mock.Greeting;
-import org.apache.tuscany.core.component.scope.ModuleScopeContainer;
-import org.apache.tuscany.test.ArtifactFactory;
+import static org.apache.tuscany.test.ArtifactFactory.createWireService;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.getCurrentArguments;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import org.easymock.IAnswer;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -18,35 +24,38 @@
 public class ScriptInvokeTestCase extends TestCase {
 
     private static final String SCRIPT = "def greet(name) { return name }";
-    private static final List<PropertyInjector> INJECTORS = Collections.emptyList();
 
     private Class<? extends GroovyObject> implClass;
+    private ScopeContainer scopeContainer;
 
     /**
      * Tests the invocation of a Groovy "script" as opposed to a class
      */
     public void testBasicScriptInvocation() throws Exception {
-        ModuleScopeContainer scope = new ModuleScopeContainer(null);
-        scope.start();
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
-        GroovyAtomicComponent<GroovyObject> context =
-                new GroovyAtomicComponent<GroovyObject>("source",
-                                                        implClass,
-                                                        services,
-                                                        INJECTORS,
-                                                        null,
-                                                        scope,
-                                                        ArtifactFactory.createWireService());
-        scope.register(context);
+        GroovyConfiguration configuration = new GroovyConfiguration();
+        configuration.setName("source");
+        configuration.setGroovyClass(implClass);
+        configuration.setServices(services);
+        configuration.setScopeContainer(scopeContainer);
+        configuration.setWireService(createWireService());
+        GroovyAtomicComponent<GroovyObject> context = new GroovyAtomicComponent<GroovyObject>(configuration);
         GroovyObject object = context.getServiceInstance();
         assertEquals("foo", object.invokeMethod("greet", "foo"));
-        scope.stop();
     }
 
+    @SuppressWarnings("unchecked")
     protected void setUp() throws Exception {
         super.setUp();
         GroovyClassLoader cl = new GroovyClassLoader(getClass().getClassLoader());
         implClass = cl.parseClass(SCRIPT);
+        scopeContainer = createMock(ScopeContainer.class);
+        expect(scopeContainer.getInstance(isA(AtomicComponent.class))).andStubAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                return ((AtomicComponent) getCurrentArguments()[0]).createInstance();
+            }
+        });
+        replay(scopeContainer);
     }
 }

Modified: incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.groovy/src/test/java/org/apache/tuscany/container/groovy/WireTestCase.java Sun Aug  6 11:53:36 2006
@@ -2,14 +2,9 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Collections;
 
-import junit.framework.TestCase;
-import static org.easymock.EasyMock.*;
-import org.easymock.IArgumentMatcher;
-
-import org.apache.tuscany.container.groovy.mock.Greeting;
-import org.apache.tuscany.core.component.scope.ModuleScopeContainer;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Message;
@@ -17,59 +12,69 @@
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.test.ArtifactFactory;
 
 import groovy.lang.GroovyClassLoader;
 import groovy.lang.GroovyObject;
+import junit.framework.TestCase;
+import org.apache.tuscany.container.groovy.mock.Greeting;
+import static org.apache.tuscany.test.ArtifactFactory.createInboundWire;
+import static org.apache.tuscany.test.ArtifactFactory.createOutboundWire;
+import static org.apache.tuscany.test.ArtifactFactory.createWireService;
+import static org.apache.tuscany.test.ArtifactFactory.terminateWire;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.getCurrentArguments;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reportMatcher;
+import static org.easymock.EasyMock.verify;
+import org.easymock.IAnswer;
+import org.easymock.IArgumentMatcher;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class WireTestCase extends TestCase {
-    private static final List<PropertyInjector> INJECTORS = Collections.emptyList();
 
     private static final String SCRIPT = "import org.apache.tuscany.container.groovy.mock.Greeting;"
-            + "class Foo implements Greeting{"
-            + "   Greeting wire;"
-            + "   "
-            + "   void setWire(Greeting ref){"
-            + "       wire = ref;"
-            + "   };"
-            + "   "
-            + "   String greet(String name){"
-            + "       return wire.greet(name);  "
-            + "   };"
-            + "}";
+        + "class Foo implements Greeting{"
+        + "   Greeting wire;"
+        + "   "
+        + "   void setWire(Greeting ref){"
+        + "       wire = ref;"
+        + "   };"
+        + "   "
+        + "   String greet(String name){"
+        + "       return wire.greet(name);  "
+        + "   };"
+        + "}";
 
     private static final String SCRIPT2 = "import org.apache.tuscany.container.groovy.mock.Greeting;"
-            + "class Foo implements Greeting{"
-            + "   public String greet(String name){"
-            + "       return name;  "
-            + "   }"
-            + "}";
+        + "class Foo implements Greeting{"
+        + "   public String greet(String name){"
+        + "       return name;  "
+        + "   }"
+        + "}";
 
     private Class<? extends GroovyObject> implClass1;
     private Class<? extends GroovyObject> implClass2;
+    private ScopeContainer scopeContainer;
 
     /**
      * Tests a basic invocation down a source wire
      */
     public void testReferenceWireInvocation() throws Exception {
-        ModuleScopeContainer scope = new ModuleScopeContainer(null);
-        scope.start();
-
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
-        GroovyAtomicComponent<Greeting> context =
-                new GroovyAtomicComponent<Greeting>("source",
-                                                    implClass1,
-                                                    services,
-                                                    INJECTORS,
-                                                    null,
-                                                    scope,
-                                                    ArtifactFactory.createWireService());
-        OutboundWire<?> wire = ArtifactFactory.createOutboundWire("wire", Greeting.class);
-        ArtifactFactory.terminateWire(wire);
+        GroovyConfiguration configuration = new GroovyConfiguration();
+        configuration.setName("source");
+        configuration.setGroovyClass(implClass1);
+        configuration.setServices(services);
+        configuration.setScopeContainer(scopeContainer);
+        configuration.setWireService(createWireService());
+        GroovyAtomicComponent<Greeting> component = new GroovyAtomicComponent<Greeting>(configuration);
+        OutboundWire<?> wire = createOutboundWire("wire", Greeting.class);
+        terminateWire(wire);
 
         TargetInvoker invoker = createMock(TargetInvoker.class);
         expect(invoker.isCacheable()).andReturn(false);
@@ -81,13 +86,10 @@
         for (OutboundInvocationChain chain : wire.getInvocationChains().values()) {
             chain.setTargetInvoker(invoker);
         }
-        scope.register(context);
-        context.addOutboundWire(wire);
-        Greeting greeting = context.getServiceInstance();
+        component.addOutboundWire(wire);
+        Greeting greeting = component.getServiceInstance();
         assertEquals("foo", greeting.greet("foo"));
         verify(invoker);
-
-        scope.stop();
     }
 
     // todo this could be generalized and moved to test module
@@ -113,23 +115,18 @@
      * Tests a basic invocation to a target
      */
     public void testTargetInvocation() throws Exception {
-        ModuleScopeContainer scope = new ModuleScopeContainer(null);
-        scope.start();
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
-        GroovyAtomicComponent<Greeting> context =
-                new GroovyAtomicComponent<Greeting>("source",
-                                                    implClass2,
-                                                    services,
-                                                    INJECTORS,
-                                                    null,
-                                                    scope,
-                                                    ArtifactFactory.createWireService());
-        scope.register(context);
+        GroovyConfiguration configuration = new GroovyConfiguration();
+        configuration.setName("source");
+        configuration.setGroovyClass(implClass2);
+        configuration.setServices(services);
+        configuration.setScopeContainer(scopeContainer);
+        configuration.setWireService(createWireService());
+        GroovyAtomicComponent<Greeting> component = new GroovyAtomicComponent<Greeting>(configuration);
         TargetInvoker invoker =
-                context.createTargetInvoker("greeting", Greeting.class.getMethod("greet", String.class));
+            component.createTargetInvoker("greeting", Greeting.class.getMethod("greet", String.class));
         assertEquals("foo", invoker.invokeTarget(new String[]{"foo"}));
-        scope.stop();
     }
 
 
@@ -137,29 +134,23 @@
      * Tests a basic invocation down a target wire
      */
     public void testTargetWireInvocation() throws Exception {
-        ModuleScopeContainer scope = new ModuleScopeContainer(null);
-        scope.start();
         List<Class<?>> services = new ArrayList<Class<?>>();
         services.add(Greeting.class);
-        GroovyAtomicComponent<Greeting> context =
-                new GroovyAtomicComponent<Greeting>("source",
-                                                    implClass2,
-                                                    services,
-                                                    INJECTORS,
-                                                    null,
-                                                    scope,
-                                                    ArtifactFactory.createWireService());
-        scope.register(context);
-
-        InboundWire<?> wire = ArtifactFactory.createInboundWire("Greeting", Greeting.class);
-        ArtifactFactory.terminateWire(wire);
+        GroovyConfiguration configuration = new GroovyConfiguration();
+        configuration.setName("source");
+        configuration.setGroovyClass(implClass2);
+        configuration.setServices(services);
+        configuration.setScopeContainer(scopeContainer);
+        configuration.setWireService(createWireService());
+        GroovyAtomicComponent<Greeting> component = new GroovyAtomicComponent<Greeting>(configuration);
+        InboundWire<?> wire = createInboundWire("Greeting", Greeting.class);
+        terminateWire(wire);
         for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
-            chain.setTargetInvoker(context.createTargetInvoker("Greeting", chain.getMethod()));
+            chain.setTargetInvoker(component.createTargetInvoker("Greeting", chain.getMethod()));
         }
-        context.addInboundWire(wire);
-        Greeting greeting = (Greeting) context.getServiceInstance("Greeting");
+        component.addInboundWire(wire);
+        Greeting greeting = (Greeting) component.getServiceInstance("Greeting");
         assertEquals("foo", greeting.greet("foo"));
-        scope.stop();
     }
 
     protected void setUp() throws Exception {
@@ -167,5 +158,12 @@
         GroovyClassLoader cl = new GroovyClassLoader(getClass().getClassLoader());
         implClass1 = cl.parseClass(SCRIPT);
         implClass2 = cl.parseClass(SCRIPT2);
+        scopeContainer = createMock(ScopeContainer.class);
+        expect(scopeContainer.getInstance(isA(AtomicComponent.class))).andStubAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                return ((AtomicComponent) getCurrentArguments()[0]).createInstance();
+            }
+        });
+        replay(scopeContainer);
     }
 }

Modified: incubator/tuscany/java/sca/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java (original)
+++ incubator/tuscany/java/sca/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java Sun Aug  6 11:53:36 2006
@@ -49,7 +49,7 @@
 
     public JavaScriptComponent(String name, RhinoScript rhinoScript, List<Class<?>> services, Map<String, Object> properties,
             CompositeComponent parent, ScopeContainer scopeContainer, WireService wireService, WorkContext workContext) {
-        super(name, parent, scopeContainer, wireService, workContext, 0);
+        super(name, parent, scopeContainer, wireService, workContext, null, 0);
 
         this.rhinoScript = rhinoScript;
         this.services = services;

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java Sun Aug  6 11:53:36 2006
@@ -62,6 +62,7 @@
             configuration.getScopeContainer(),
             configuration.getWireService(),
             configuration.getWorkContext(),
+            configuration.getScheduler(),
             configuration.getInitLevel());
         assert configuration.getInstanceFactory() != null : "Object factory was null";
         initInvoker = configuration.getInitInvoker();

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java Sun Aug  6 11:53:36 2006
@@ -22,6 +22,7 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.services.work.WorkScheduler;
 import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.core.injection.EventInvoker;
@@ -49,6 +50,7 @@
     private List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
     private WireService wireService;
     private WorkContext workContext;
+    private WorkScheduler scheduler;
 
     public CompositeComponent<?> getParent() {
         return parent;
@@ -164,6 +166,14 @@
 
     public void setWorkContext(WorkContext workContext) {
         this.workContext = workContext;
+    }
+
+    public WorkScheduler getScheduler() {
+        return scheduler;
+    }
+
+    public void setScheduler(WorkScheduler scheduler) {
+        this.scheduler = scheduler;
     }
 
 }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java Sun Aug  6 11:53:36 2006
@@ -23,7 +23,6 @@
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.component.TargetNotFoundException;
-import org.apache.tuscany.spi.services.work.WorkScheduler;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.RuntimeWire;
@@ -46,14 +45,13 @@
  */
 public class JavaAtomicComponent<T> extends PojoAtomicComponent<T> {
 
-    private WorkScheduler workScheduler;
     private AsyncMonitor monitor;
 
-    public JavaAtomicComponent(String name, PojoConfiguration configuration, WorkScheduler scheduler,
+    public JavaAtomicComponent(String name,
+                               PojoConfiguration configuration,
                                AsyncMonitor monitor) {
         super(name, configuration);
         this.scope = configuration.getScopeContainer().getScope();
-        this.workScheduler = scheduler;
         this.monitor = monitor;
     }
 

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java Sun Aug  6 11:53:36 2006
@@ -45,10 +45,7 @@
 import org.apache.tuscany.core.injection.MethodEventInvoker;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.policy.async.AsyncMonitor;
-import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
-import org.apache.tuscany.core.wire.InboundWireImpl;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
-import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
 
 /**
  * Builds a Java-based atomic context from a component definition
@@ -96,6 +93,8 @@
 
         configuration.setWireService(wireService);
         configuration.setWorkContext(workContext);
+        configuration.setScheduler(workScheduler);
+
         // setup property injection sites
         for (JavaMappedProperty<?> property : componentType.getProperties().values()) {
             configuration.addPropertySite(property.getName(), property.getMember());
@@ -117,7 +116,7 @@
         configuration.getConstructorParamNames().addAll(ctorDef.getInjectionNames());
 
         JavaAtomicComponent component =
-            new JavaAtomicComponent(definition.getName(), configuration, workScheduler, monitor);
+            new JavaAtomicComponent(definition.getName(), configuration, monitor);
 
         // handle properties
         for (JavaMappedProperty<?> property : componentType.getProperties().values()) {
@@ -170,8 +169,8 @@
         if (callbackInterface != null) {
             wire.setCallbackInterface(callbackInterface);
             for (Method callbackMethod : callbackInterface.getMethods()) {
-                InboundInvocationChain callbackTargetChain = new InboundInvocationChainImpl(callbackMethod);
-                OutboundInvocationChain callbackSourceChain = new OutboundInvocationChainImpl(callbackMethod);
+                InboundInvocationChain callbackTargetChain = wireService.createInboundChain(callbackMethod);
+                OutboundInvocationChain callbackSourceChain = wireService.createOutboundChain(callbackMethod);
                 // TODO handle policy
                 //TODO statement below could be cleaner
                 callbackTargetChain.addInterceptor(new InvokerInterceptor());
@@ -185,11 +184,11 @@
     @SuppressWarnings("unchecked")
     private InboundWire createWire(JavaMappedService service) {
         Class<?> interfaze = service.getServiceContract().getInterfaceClass();
-        InboundWire wire = new InboundWireImpl();
+        InboundWire wire = wireService.createInboundWire();
         wire.setBusinessInterface(interfaze);
         wire.setServiceName(service.getName());
         for (Method method : interfaze.getMethods()) {
-            InboundInvocationChain chain = new InboundInvocationChainImpl(method);
+            InboundInvocationChain chain = wireService.createInboundChain(method);
             // TODO handle policy
             //TODO statement below could be cleaner
             chain.addInterceptor(new InvokerInterceptor());

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPojoProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPojoProcessor.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPojoProcessor.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPojoProcessor.java Sun Aug  6 11:53:36 2006
@@ -220,13 +220,10 @@
             }
         } else {
             if (!areUnique(params)) {
-                throw new AmbiguousConstructorException(
-                    "Unable to resolve parameter types as they are not unique, use @Constructor");
+                throw new AmbiguousConstructorException("Cannot resolve non-unique parameter types, use @Constructor");
             }
             if (!calcPropRefUniqueness(props.values(), refs.values())) {
-                throw new AmbiguousConstructorException(
-                    "Unable to resolve parameter types as reference and property types are not unique, "
-                        + "use @Constructor");
+                throw new AmbiguousConstructorException("Cannot resolve non-unique parameter types, use @Constructor");
             }
             boolean empty = props.size() + refs.size() == 0;
             if (!empty) {
@@ -289,7 +286,7 @@
             if (property.getJavaType().equals(type)) {
                 if (name != null) {
                     AmbiguousConstructorException e = new AmbiguousConstructorException(
-                        "Cannot unambiguously determine property or reference for constructor type");
+                        "Ambiguous property or reference for constructor type");
                     e.setIdentifier(type.getName());
                     throw e;
                 }
@@ -301,7 +298,7 @@
             if (reference.getServiceContract().getInterfaceClass().equals(type)) {
                 if (name != null) {
                     AmbiguousConstructorException e = new AmbiguousConstructorException(
-                        "Cannot unambiguously determine property or reference for constructor type");
+                        "Ambiguous property or reference for constructor type");
                     e.setIdentifier(type.getName());
                     throw e;
                 }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java Sun Aug  6 11:53:36 2006
@@ -108,8 +108,7 @@
         // handle inbound wires
         for (ServiceDefinition serviceDefinition : componentType.getServices().values()) {
             Class interfaze = serviceDefinition.getServiceContract().getInterfaceClass();
-            SystemInboundWire<?> wire =
-                new SystemInboundWireImpl(serviceDefinition.getName(), interfaze, component);
+            SystemInboundWire<?> wire =  new SystemInboundWireImpl(serviceDefinition.getName(), interfaze, component);
             component.addInboundWire(wire);
         }
         // handle references directly with no proxies

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/services/work/jsr237/workmanager/ThreadPoolWorkManager.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/services/work/jsr237/workmanager/ThreadPoolWorkManager.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/services/work/jsr237/workmanager/ThreadPoolWorkManager.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/services/work/jsr237/workmanager/ThreadPoolWorkManager.java Sun Aug  6 11:53:36 2006
@@ -199,7 +199,7 @@
          * Overrides the run method.
          */
         public void run() {
-			workStarted(workItem, decoratedWork);
+            workStarted(workItem, decoratedWork);
             try {
                 decoratedWork.run();
                 workCompleted(workItem, decoratedWork);
@@ -209,10 +209,10 @@
         }
 
     }
-    
+
     @Destroy
     public void destroy() {
-    	executor.shutdown();
+        executor.shutdown();
     }
 
 }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/GetServiceByNameTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/GetServiceByNameTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/GetServiceByNameTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/GetServiceByNameTestCase.java Sun Aug  6 11:53:36 2006
@@ -32,7 +32,7 @@
         configuration.setInstanceFactory(new PojoObjectFactory<TargetImpl>(TargetImpl.class.getConstructor()));
         configuration.addServiceInterface(Target.class);
         configuration.setWireService(new JDKWireService());
-        final JavaAtomicComponent<?> component = new JavaAtomicComponent("target", configuration, null, null);
+        final JavaAtomicComponent<?> component = new JavaAtomicComponent("target", configuration, null);
 
         InboundWire wire = createMock(InboundWire.class);
         expect(wire.getBusinessInterface()).andReturn(Target.class);

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderTestCase.java Sun Aug  6 11:53:36 2006
@@ -22,6 +22,7 @@
 import org.apache.tuscany.core.implementation.java.mock.components.Source;
 import org.apache.tuscany.core.implementation.java.mock.components.SourceImpl;
 import org.apache.tuscany.core.implementation.java.mock.components.Target;
+import org.apache.tuscany.core.wire.jdk.JDKWireService;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 import org.jmock.core.Invocation;
@@ -59,13 +60,14 @@
             new ComponentDefinition<JavaImplementation>(sourceImpl);
 
         JavaComponentBuilder builder = new JavaComponentBuilder();
-        JavaAtomicComponent<Source> ctx =
+        builder.setWireService(new JDKWireService());
+        JavaAtomicComponent<Source> component =
             (JavaAtomicComponent<Source>) builder.build(parent, sourceComponentDefinition, deploymentContext);
         deploymentContext.getModuleScope().start();
-        ctx.start();
-        Source source = ctx.getServiceInstance();
+        component.start();
+        Source source = component.getServiceInstance();
         assertNotNull(source);
-        ctx.stop();
+        component.stop();
     }
 
     protected void setUp() throws Exception {

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaReferenceWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaReferenceWireTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaReferenceWireTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaReferenceWireTestCase.java Sun Aug  6 11:53:36 2006
@@ -5,17 +5,17 @@
 import java.util.Map;
 
 import org.apache.tuscany.spi.component.AtomicComponent;
-import org.apache.tuscany.core.implementation.PojoConfiguration;
 import org.apache.tuscany.spi.component.ScopeContainer;
-import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.WireService;
 
+import org.apache.tuscany.core.implementation.PojoConfiguration;
 import org.apache.tuscany.core.implementation.java.mock.components.Source;
 import org.apache.tuscany.core.implementation.java.mock.components.SourceImpl;
 import org.apache.tuscany.core.implementation.java.mock.components.Target;
 import org.apache.tuscany.core.implementation.java.mock.components.TargetImpl;
+import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 import org.jmock.core.Invocation;
@@ -56,7 +56,7 @@
             }
         });
         configuration.setWireService((WireService) mockService.proxy());
-        JavaAtomicComponent sourceContext = new JavaAtomicComponent("source", configuration, null, null);
+        JavaAtomicComponent sourceContext = new JavaAtomicComponent("source", configuration, null);
         sourceContext.addOutboundWire(wire);
         sourceContext.start();
         Source source = (Source) sourceContext.getServiceInstance();

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/component/OutboundWireToJavaTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/component/OutboundWireToJavaTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/component/OutboundWireToJavaTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/component/OutboundWireToJavaTestCase.java Sun Aug  6 11:53:36 2006
@@ -157,7 +157,7 @@
         configuration.setScopeContainer(scope);
         configuration.setInstanceFactory(new PojoObjectFactory<TargetImpl>(TargetImpl.class.getConstructor()));
         configuration.addServiceInterface(Target.class);
-        JavaAtomicComponent<?> atomicComponent = new JavaAtomicComponent("target", configuration, null, null);
+        JavaAtomicComponent<?> atomicComponent = new JavaAtomicComponent("target", configuration, null);
         InboundWire targetWire = MockFactory.createTargetWire("Target", Target.class);
         atomicComponent.addInboundWire(targetWire);
         connector.connect(atomicComponent, atomicComponent, wire, atomicComponent.getInboundWire("Target"), false);

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/mock/MockFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/mock/MockFactory.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/mock/MockFactory.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/implementation/java/mock/MockFactory.java Sun Aug  6 11:53:36 2006
@@ -68,7 +68,7 @@
         }
         configuration.addServiceInterface(DummyImpl.class);
         configuration.setWireService(WIRE_SERVICE);
-        return new JavaAtomicComponent(instance.getClass().getName(), configuration, null, null);
+        return new JavaAtomicComponent(instance.getClass().getName(), configuration, null);
     }
 
     @SuppressWarnings("unchecked")
@@ -79,7 +79,7 @@
         configuration.setInstanceFactory(new PojoObjectFactory(clazz.getConstructor()));
         configuration.addServiceInterface(clazz);
         configuration.setWireService(WIRE_SERVICE);
-        return new JavaAtomicComponent(name, configuration, null, null);
+        return new JavaAtomicComponent(name, configuration, null);
 
     }
 
@@ -94,7 +94,7 @@
         configuration.setInstanceFactory(new PojoObjectFactory(clazz.getConstructor()));
         configuration.addServiceInterface(clazz);
         configuration.setWireService(WIRE_SERVICE);
-        return new JavaAtomicComponent(name, configuration, scheduler, null);
+        return new JavaAtomicComponent(name, configuration, null);
 
     }
 
@@ -171,7 +171,7 @@
         for (Map.Entry<String, Member> entry : members.entrySet()) {
             configuration.addReferenceSite(entry.getKey(), entry.getValue());
         }
-        JavaAtomicComponent sourceContext = new JavaAtomicComponent(sourceName, configuration, null, null);
+        JavaAtomicComponent sourceContext = new JavaAtomicComponent(sourceName, configuration, null);
         OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, sourceHeadInterceptor,
             sourceHeadRequestHandler, sourceHeadResponseHandler);
         sourceContext.addOutboundWire(outboundWire);
@@ -222,7 +222,7 @@
         for (Map.Entry<String, Member> entry : members.entrySet()) {
             configuration.addReferenceSite(entry.getKey(), entry.getValue());
         }
-        JavaAtomicComponent sourceContext = new JavaAtomicComponent(sourceName, configuration, null, null);
+        JavaAtomicComponent sourceContext = new JavaAtomicComponent(sourceName, configuration, null);
         OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, null, null, null);
         List<OutboundWire> factories = new ArrayList<OutboundWire>();
         factories.add(outboundWire);

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java Sun Aug  6 11:53:36 2006
@@ -146,7 +146,10 @@
 
         connector.connect(sourceComponent);
         String serviceName = service.getOutboundWire().getTargetName().getPortName();
-        connector.connect(sourceComponent, parent, service.getOutboundWire(), sourceComponent.getInboundWire(serviceName),
+        connector.connect(sourceComponent,
+            parent,
+            service.getOutboundWire(),
+            sourceComponent.getInboundWire(serviceName),
             true);
         parent.start();
         scope.onEvent(new CompositeStart(this, parent));

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java Sun Aug  6 11:53:36 2006
@@ -29,16 +29,17 @@
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
-import org.apache.tuscany.core.implementation.java.JavaImplementation;
 import org.apache.tuscany.core.implementation.PojoComponentType;
-
+import org.apache.tuscany.core.implementation.java.JavaImplementation;
+import org.easymock.EasyMock;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
-import static org.easymock.EasyMock.*;
-import org.easymock.EasyMock;
 
 /**
  * @version $Rev$ $Date$
@@ -82,7 +83,7 @@
     }
 
     public void testLoadPropertyWithSource() throws LoaderException, XMLStreamException {
-        PojoComponentType<?,?,Property<?>> type =
+        PojoComponentType<?, ?, Property<?>> type =
             new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
         Property property = new Property();
         property.setName("name");
@@ -105,6 +106,6 @@
         mockRegistry = mock(LoaderRegistry.class);
         mockPropertyFactory = mock(StAXPropertyFactory.class);
         loader = new ComponentLoader((LoaderRegistry) mockRegistry.proxy(),
-                                     (StAXPropertyFactory) mockPropertyFactory.proxy());
+            (StAXPropertyFactory) mockPropertyFactory.proxy());
     }
 }

Modified: incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java (original)
+++ incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java Sun Aug  6 11:53:36 2006
@@ -26,8 +26,14 @@
      */
     WireInvocationHandler getHandler() throws TargetException;
 
+    /**
+     * Returns the inbound wire for flowing a request through the reference
+     */
     InboundWire<T> getInboundWire();
 
+    /**
+     * Returns the outbound wire used by the reference to connect to a target
+     */
     OutboundWire<T> getOutboundWire();
 
     /**

Modified: incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java (original)
+++ incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/AtomicComponentExtension.java Sun Aug  6 11:53:36 2006
@@ -15,6 +15,7 @@
 import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.services.work.WorkScheduler;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -33,6 +34,7 @@
     protected Map<String, List<OutboundWire>> referenceWires = new HashMap<String, List<OutboundWire>>();
     protected WireService wireService;
     protected WorkContext workContext;
+    protected WorkScheduler workScheduler;
     private final int initLevel;
 
     protected AtomicComponentExtension(String name,
@@ -40,11 +42,13 @@
                                        ScopeContainer scopeContainer,
                                        WireService wireService,
                                        WorkContext workContext,
+                                       WorkScheduler workScheduler,
                                        int initLevel) {
         super(name, parent);
         this.scopeContainer = scopeContainer;
         this.wireService = wireService;
         this.workContext = workContext;
+        this.workScheduler = workScheduler;
         this.initLevel = initLevel;
     }
 

Modified: incubator/tuscany/java/sca/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java?rev=429173&r1=429172&r2=429173&view=diff
==============================================================================
--- incubator/tuscany/java/sca/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java (original)
+++ incubator/tuscany/java/sca/spi/src/test/java/org/apache/tuscany/spi/extension/AtomicComponentExtensionTestCase.java Sun Aug  6 11:53:36 2006
@@ -41,7 +41,7 @@
 
     private class TestExtension extends AtomicComponentExtension {
         public TestExtension() {
-            super(null, null, null, null, null, 0);
+            super(null, null, null, null, null, null, 0);
         }
 
         public Object getServiceInstance() throws TargetException {



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