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/09/05 02:41:22 UTC

svn commit: r440210 - in /incubator/tuscany/java/sca: containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/ kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/ kernel/core/src/main/java/org/apache/tuscany/core/bui...

Author: jmarino
Date: Mon Sep  4 17:41:21 2006
New Revision: 440210

URL: http://svn.apache.org/viewvc?view=rev&rev=440210
Log:
move connection down to composites from deployer

Added:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java   (with props)
Modified:
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/AutowireComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/model/SystemImplementation.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InboundtoOutboundConnectTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/OutboundToInboundConnectTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/AutowireResolutionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/CompositePropagationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionTestCase.java

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java Mon Sep  4 17:41:21 2006
@@ -25,6 +25,7 @@
 
 import org.w3c.dom.Document;
 
+import org.apache.tuscany.spi.builder.Connector;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.SCAObject;
@@ -35,7 +36,6 @@
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.builder.Connector;
 
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.BeanFactory;
@@ -79,8 +79,6 @@
         // REVIEW we need to refresh to pick up the parent but this is not optimal
         springContext.refresh();
         this.springContext = springContext;
-        // Spring wires itself
-        this.selfWiring = true;
     }
 
     public TargetInvoker createTargetInvoker(String targetName, Operation operation) {
@@ -98,6 +96,10 @@
 
     public ConfigurableApplicationContext getApplicationContext() {
         return springContext;
+    }
+
+    public void prepare() {
+        // TODO handle only references with a composite binding
     }
 
     public void start() {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Mon Sep  4 17:41:21 2006
@@ -137,8 +137,7 @@
         JavaInterfaceProcessorRegistry interfaceIntrospector = new JavaInterfaceProcessorRegistryImpl();
         Introspector introspector = createIntrospector(interfaceIntrospector);
         LoaderRegistry loader = createLoader(new StringParserPropertyFactory(), introspector);
-        Connector connector = createConnector();
-        return new DeployerImpl(xmlFactory, loader, builder, connector);
+        return new DeployerImpl(xmlFactory, loader, builder);
     }
 
     /**
@@ -241,7 +240,8 @@
      */
     private Builder createBuilder(ScopeRegistry scopeRegistry) {
         BuilderRegistry builderRegistry = new BuilderRegistryImpl(scopeRegistry);
-        builderRegistry.register(SystemCompositeImplementation.class, new SystemCompositeBuilder(builderRegistry));
+        SystemCompositeBuilder builder = new SystemCompositeBuilder(builderRegistry, createConnector());
+        builderRegistry.register(SystemCompositeImplementation.class, builder);
         builderRegistry.register(SystemImplementation.class, new SystemComponentBuilder());
         builderRegistry.register(SystemBinding.class, new SystemBindingBuilder());
         return builderRegistry;

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Mon Sep  4 17:41:21 2006
@@ -83,13 +83,6 @@
                     chain.prepare();
                 }
             }
-        } else if (source instanceof CompositeComponent) {
-            CompositeComponent<?> composite = (CompositeComponent) source;
-            if (!composite.isSelfWiring()) {
-                for (SCAObject<?> child : composite.getChildren()) {
-                    connect(child);
-                }
-            }
         } else if (source instanceof Reference) {
             Reference<?> reference = (Reference) source;
             InboundWire<?> wire = reference.getInboundWire();
@@ -110,11 +103,6 @@
             // services have inbound and outbound wires
             // NB: this connect must be done after the outbound service chain is connected to its target above
             connect(inboundWire, outboundWire, true);
-        } else {
-            BuilderConfigException e = new BuilderConfigException("Invalid source type");
-            e.setIdentifier(source.getName());
-            e.addContextName(parent.getName());
-            throw e;
         }
     }
 
@@ -274,7 +262,14 @@
     }
 
 
+    /**
+     * Connects an inbound source chain to an outbound target chain
+     *
+     * @param sourceChain
+     * @param targetChain
+     */
     public void connect(InboundInvocationChain sourceChain, OutboundInvocationChain targetChain) {
+        // the are always interceptors so the connection algorithm is simple
         sourceChain.addInterceptor(new BridgingInterceptor(targetChain.getHeadInterceptor()));
     }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/AutowireComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/AutowireComponent.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/AutowireComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/AutowireComponent.java Mon Sep  4 17:41:21 2006
@@ -51,4 +51,5 @@
      */
     <T> T resolveExternalInstance(Class<T> instanceInterface) throws AutowireResolutionException;
 
+
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java Mon Sep  4 17:41:21 2006
@@ -23,7 +23,6 @@
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.Builder;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
-import org.apache.tuscany.spi.builder.Connector;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.SCAObject;
@@ -47,43 +46,27 @@
     private XMLInputFactory xmlFactory;
     private Loader loader;
     private Builder builder;
-    private Connector connector;
 
-    public DeployerImpl(XMLInputFactory xmlFactory, Loader loader, Builder builder, Connector connector) {
+    public DeployerImpl(XMLInputFactory xmlFactory, Loader loader, Builder builder) {
         this.xmlFactory = xmlFactory;
         this.loader = loader;
         this.builder = builder;
-        this.connector = connector;
     }
 
     public DeployerImpl() {
         xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
     }
 
-/*
-    @Autowire
-    public void setXmlFactory(XMLInputFactory xmlFactory) {
-        this.xmlFactory = xmlFactory;
-    }
-*/
-
-    //FIXME allow autowire to register multiple service types
     @Autowire
     public void setLoader(LoaderRegistry loader) {
         this.loader = loader;
     }
 
-    //FIXME allow autowire to register multiple service types
     @Autowire
     public void setBuilder(BuilderRegistry builder) {
         this.builder = builder;
     }
 
-    @Autowire
-    public void setConnector(Connector connector) {
-        this.connector = connector;
-    }
-
     public <I extends Implementation<?>> Component<?> deploy(CompositeComponent<?> parent,
                                                              ComponentDefinition<I> componentDefinition)
         throws LoaderException {
@@ -100,7 +83,7 @@
             CompositeComponent composite = (CompositeComponent) component;
             composite.setScopeContainer(moduleScope);
         }
-        connect(component);
+        component.prepare();
         parent.register(component);
         return component;
     }
@@ -132,12 +115,4 @@
         return builder.build(parent, componentDefinition, deploymentContext);
     }
 
-    /**
-     * Connect the context's source wires to other target wires within the scope of the parent.
-     *
-     * @param object the SCA artifact to connect
-     */
-    protected void connect(SCAObject<?> object) {
-        connector.connect(object);
-    }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java Mon Sep  4 17:41:21 2006
@@ -28,7 +28,6 @@
 
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.DuplicateNameException;
@@ -39,6 +38,7 @@
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.extension.CompositeComponentExtension;
+import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
@@ -142,7 +142,7 @@
         lifecycleState = STOPPED;
     }
 
-    public void register(SCAObject child) {
+    public void register(SCAObject<?> child) {
         if (children.get(child.getName()) != null) {
             DuplicateNameException e = new DuplicateNameException("A context is already registered with name");
             e.setIdentifier(child.getName());
@@ -237,6 +237,12 @@
         return null;
     }
 
+    public void prepare() {
+        for (SCAObject<?> child : children.values()) {
+            connector.connect(child);
+            child.prepare();
+        }
+    }
 
     protected void registerAutowireExternal(Class<?> interfaze, SystemService context) {
         assert interfaze != null;

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java Mon Sep  4 17:41:21 2006
@@ -97,23 +97,23 @@
         }
 
         String name = componentDefinition.getName();
-        CompositeComponentImpl<?> context = new CompositeComponentImpl(name, parent, null, connector, null);
+        CompositeComponentImpl<?> component = new CompositeComponentImpl(name, parent, null, connector, null);
         for (BoundReferenceDefinition<? extends Binding> referenceDefinition : allBoundReferences) {
-            context.register(builderRegistry.build(context, referenceDefinition, deploymentContext));
+            component.register(builderRegistry.build(component, referenceDefinition, deploymentContext));
         }
         for (BindlessServiceDefinition bindlessServiceDef : allBindlessServices) {
-            context.register(builderRegistry.build(context, bindlessServiceDef, deploymentContext));
+            component.register(builderRegistry.build(component, bindlessServiceDef, deploymentContext));
         }
         for (ComponentDefinition<? extends Implementation<?>> child : allComponents) {
-            context.register(builderRegistry.build(context, child, deploymentContext));
+            component.register(builderRegistry.build(component, child, deploymentContext));
         }
         for (BoundServiceDefinition<? extends Binding> serviceDefinition : allBoundServices) {
-            context.register(builderRegistry.build(context, serviceDefinition, deploymentContext));
+            component.register(builderRegistry.build(component, serviceDefinition, deploymentContext));
         }
         for (ReferenceDefinition targetlessReferenceDef : allTargetlessReferences) {
-            context.register(builderRegistry.build(context, targetlessReferenceDef, deploymentContext));
+            component.register(builderRegistry.build(component, targetlessReferenceDef, deploymentContext));
         }
-        return context;
+        return component;
     }
 
     protected Class<CompositeImplementation> getImplementationType() {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImpl.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImpl.java Mon Sep  4 17:41:21 2006
@@ -22,9 +22,10 @@
 
 import org.w3c.dom.Document;
 
-import org.apache.tuscany.core.component.AutowireComponent;
-import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.builder.Connector;
+import org.apache.tuscany.spi.component.CompositeComponent;
+
+import org.apache.tuscany.core.component.AutowireComponent;
 
 /**
  * The standard implementation of a composite component. Autowiring is performed by delegating to the parent composite.
@@ -46,19 +47,11 @@
      * Constructor specifying name and URI.
      *
      * @param name              the name of this Component
-
-
-     @param uri               the unique identifier for this component
-
-
-      * @param parent            this component's parent
-
-     @param autowireComponent the component that should be used to resolve autowired references
-
-
-      * @param connector
+     * @param uri               the unique identifier for this component
+     * @param parent            this component's parent
+     * @param autowireComponent the component that should be used to resolve autowired references
+     * @param connector
      * @param propertyValues    this composite's Property values
-
      */
     public CompositeComponentImpl(String name,
                                   String uri,

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java Mon Sep  4 17:41:21 2006
@@ -21,6 +21,7 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
+import java.util.Collection;
 import java.util.Map;
 
 import org.apache.tuscany.spi.ObjectFactory;
@@ -111,33 +112,41 @@
         SystemAtomicComponentImpl component = new SystemAtomicComponentImpl(definition.getName(), configuration);
         // handle properties
         Map<String, PropertyValue<?>> propertyValues = definition.getPropertyValues();
-        for (JavaMappedProperty<?> property : componentType.getProperties().values()) {
-            PropertyValue value = propertyValues.get(property.getName());
-            ObjectFactory<?> factory;
-            if (value != null) {
-                factory = value.getValueFactory();
-            } else {
-                factory = property.getDefaultValueFactory();
-            }
-            if (factory != null) {
-                component.addPropertyFactory(property.getName(), factory);
-            }
-        }
+        processProperties(propertyValues, componentType.getProperties().values(), component);
         // handle inbound wires
         for (ServiceDefinition serviceDefinition : componentType.getServices().values()) {
-            Class interfaze = serviceDefinition.getServiceContract().getInterfaceClass();
-            SystemInboundWire<?> wire = new SystemInboundWireImpl(serviceDefinition.getName(), interfaze, component);
+            Class<?> interfaze = serviceDefinition.getServiceContract().getInterfaceClass();
+            String name = serviceDefinition.getName();
+            SystemInboundWire<Object> wire = new SystemInboundWireImpl(name, interfaze, component);
             component.addInboundWire(wire);
         }
-        // handle references directly with no proxies
+        // handle references
+        processReferences(definition, componentType.getReferences(), autowireContext, component);
+        // FIXME we need a way to build configuration references from autowires in the loader to eliminate this eval
+        for (ReferenceDefinition reference : componentType.getReferences().values()) {
+            if (reference.isAutowire()) {
+                Class interfaze = reference.getServiceContract().getInterfaceClass();
+                OutboundWire<?> wire =
+                    new SystemOutboundAutowire(reference.getName(), interfaze, autowireContext, reference.isRequired());
+                component.addOutboundWire(wire);
+            }
+        }
+        return component;
+    }
+
+    private void processReferences(ComponentDefinition<SystemImplementation> definition,
+                                   Map<String, JavaMappedReference> references,
+                                   AutowireComponent autowireContext,
+                                   SystemAtomicComponentImpl component) {
+        // no proxies needed for system components
         for (ReferenceTarget target : definition.getReferenceTargets().values()) {
             String referenceName = target.getReferenceName();
-            JavaMappedReference referenceDefiniton = componentType.getReferences().get(referenceName);
+            JavaMappedReference referenceDefiniton = references.get(referenceName);
             Class interfaze = referenceDefiniton.getServiceContract().getInterfaceClass();
             OutboundWire<?> wire;
             if (referenceDefiniton.isAutowire()) {
-                wire = new SystemOutboundAutowire(referenceName, interfaze, autowireContext,
-                    referenceDefiniton.isRequired());     
+                boolean required = referenceDefiniton.isRequired();
+                wire = new SystemOutboundAutowire(referenceName, interfaze, autowireContext, required);
             } else {
                 //FIXME support multiplicity!
                 assert target.getTargets().size() == 1 : "Multiplicity not yet implemented";
@@ -146,15 +155,22 @@
             }
             component.addOutboundWire(wire);
         }
-        // FIXME we need a way to build configuration references from autowires in the loader to eliminate this eval
-        for (ReferenceDefinition reference : componentType.getReferences().values()) {
-            if (reference.isAutowire()) {
-                Class interfaze = reference.getServiceContract().getInterfaceClass();
-                OutboundWire<?> wire =
-                    new SystemOutboundAutowire(reference.getName(), interfaze, autowireContext, reference.isRequired());
-                component.addOutboundWire(wire);
+    }
+
+    private void processProperties(Map<String, PropertyValue<?>> propertyValues,
+                                   Collection<JavaMappedProperty<?>> properties,
+                                   SystemAtomicComponentImpl component) {
+        for (JavaMappedProperty<?> property : properties) {
+            PropertyValue value = propertyValues.get(property.getName());
+            ObjectFactory<?> factory;
+            if (value != null) {
+                factory = value.getValueFactory();
+            } else {
+                factory = property.getDefaultValueFactory();
+            }
+            if (factory != null) {
+                component.addPropertyFactory(property.getName(), factory);
             }
         }
-        return component;
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java Mon Sep  4 17:41:21 2006
@@ -23,6 +23,7 @@
 
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
+import org.apache.tuscany.spi.builder.Connector;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
@@ -49,8 +50,9 @@
     public SystemCompositeBuilder() {
     }
 
-    public SystemCompositeBuilder(BuilderRegistry builderRegistry) {
+    public SystemCompositeBuilder(BuilderRegistry builderRegistry, Connector connector) {
         this.builderRegistry = builderRegistry;
+        this.connector = connector;
     }
 
     protected Class<SystemCompositeImplementation> getImplementationType() {
@@ -93,26 +95,26 @@
 
         // create the composite component
         String name = componentDefinition.getName();
-        AutowireComponent autowireContext = getAutowireContext(parent);
-        SystemCompositeComponent<?> context =
+        AutowireComponent autowireContext = getAutowireComponent(parent);
+        SystemCompositeComponent<?> component =
             new SystemCompositeComponentImpl(name, parent, autowireContext, connector, null);
         for (ComponentDefinition<? extends Implementation> childComponentDefinition : allComponents) {
-            context.register(builderRegistry.build(context, childComponentDefinition, deploymentContext));
+            component.register(builderRegistry.build(component, childComponentDefinition, deploymentContext));
         }
 
         for (BoundServiceDefinition<? extends Binding> serviceDefinition : allBoundServices) {
-            context.register(builderRegistry.build(context, serviceDefinition, deploymentContext));
+            component.register(builderRegistry.build(component, serviceDefinition, deploymentContext));
         }
-        return context;
+        return component;
     }
 
     /**
-     * Return the autowire context for the supplied parent
+     * Return the autowire component for the supplied parent
      *
      * @param parent the parent for a new context
      * @return the autowire context for the parent or null if it does not support autowire
      */
-    protected AutowireComponent getAutowireContext(CompositeComponent<?> parent) {
+    protected AutowireComponent getAutowireComponent(CompositeComponent<?> parent) {
         if (parent instanceof AutowireComponent) {
             return (AutowireComponent) parent;
         } else {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/model/SystemImplementation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/model/SystemImplementation.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/model/SystemImplementation.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/model/SystemImplementation.java Mon Sep  4 17:41:21 2006
@@ -18,8 +18,8 @@
  */
 package org.apache.tuscany.core.implementation.system.model;
 
-import org.apache.tuscany.spi.model.AtomicImplementation;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
+import org.apache.tuscany.spi.model.AtomicImplementation;
 
 /**
  * Represents the system composite implementation

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InboundtoOutboundConnectTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InboundtoOutboundConnectTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InboundtoOutboundConnectTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InboundtoOutboundConnectTestCase.java Mon Sep  4 17:41:21 2006
@@ -33,14 +33,18 @@
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
+import junit.framework.TestCase;
 import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
 import org.apache.tuscany.core.mock.component.SimpleTarget;
 import org.apache.tuscany.core.mock.wire.MockSyncInterceptor;
 import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
 import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
-import org.jmock.Mock;
-import org.jmock.MockObjectTestCase;
+import org.easymock.EasyMock;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
 
 /**
  * Verifies connection strategies between {@link org.apache.tuscany.spi.wire.OutboundInvocationChain}s and {@link
@@ -48,7 +52,7 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class InboundtoOutboundConnectTestCase extends MockObjectTestCase {
+public class InboundtoOutboundConnectTestCase extends TestCase {
     private Operation operation;
 
     @SuppressWarnings("unchecked")
@@ -57,13 +61,14 @@
         InboundInvocationChain inboundChain = setupInbound(null, null, null);
         OutboundInvocationChain outboundChain = setupOutbound(null, null, null);
         String[] val = new String[]{"foo"};
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invokeTarget").with(eq(val)).will(returnValue(val));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invokeTarget(EasyMock.eq(val))).andReturn(val);
+        replay(invoker);
         connector.connect(inboundChain, outboundChain);
         inboundChain.setTargetInvoker(invoker);
         inboundChain.prepare();
-        assertEquals(val, inboundChain.getTargetInvoker().invokeTarget(val));
+        inboundChain.getTargetInvoker().invokeTarget(val);
+        verify(invoker);
     }
 
 
@@ -80,9 +85,9 @@
         InboundInvocationChain inboundChain = setupInbound(interceptors, null, null);
         OutboundInvocationChain outboundChain = setupOutbound(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         connector.connect(inboundChain, outboundChain);
         inboundChain.setTargetInvoker(invoker);
@@ -90,6 +95,7 @@
         msg.setTargetInvoker(inboundChain.getTargetInvoker());
         assertEquals(msg, inboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
+        verify(invoker);
     }
 
     /**
@@ -105,9 +111,9 @@
         InboundInvocationChain inboundChain = setupInbound(interceptors, null, null);
         OutboundInvocationChain outboundChain = setupOutbound(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         connector.connect(inboundChain, outboundChain);
         inboundChain.setTargetInvoker(invoker);
@@ -115,6 +121,7 @@
         msg.setTargetInvoker(inboundChain.getTargetInvoker());
         assertEquals(msg, inboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
+        verify(invoker);
     }
 
     /**
@@ -133,9 +140,9 @@
         OutboundInvocationChain outboundChain = setupOutbound(sourceInterceptors, null, null);
         InboundInvocationChain inboundChain = setupInbound(targetInterceptors, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, sourceInterceptor.getCount());
         assertEquals(0, targetInterceptor.getCount());
         connector.connect(inboundChain, outboundChain);
@@ -145,6 +152,7 @@
         assertEquals(msg, inboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, sourceInterceptor.getCount());
         assertEquals(1, targetInterceptor.getCount());
+        verify(invoker);
     }
 
     public InboundInvocationChain setupInbound(List<Interceptor> interceptors,

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/OutboundToInboundConnectTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/OutboundToInboundConnectTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/OutboundToInboundConnectTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/OutboundToInboundConnectTestCase.java Mon Sep  4 17:41:21 2006
@@ -33,6 +33,7 @@
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
+import junit.framework.TestCase;
 import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
 import org.apache.tuscany.core.mock.component.SimpleTarget;
 import org.apache.tuscany.core.mock.wire.MockHandler;
@@ -40,8 +41,11 @@
 import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
 import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
-import org.jmock.Mock;
-import org.jmock.MockObjectTestCase;
+import org.easymock.EasyMock;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
 
 /**
  * Verifies connection strategies between {@link org.apache.tuscany.spi.wire.OutboundInvocationChain}s and {@link
@@ -49,7 +53,7 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class OutboundToInboundConnectTestCase extends MockObjectTestCase {
+public class OutboundToInboundConnectTestCase extends TestCase {
 
     @SuppressWarnings("unchecked")
     public void testNoInterceptorsNoHandlers() throws Exception {
@@ -57,12 +61,13 @@
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         OutboundInvocationChain outboundChain = setupSource(null, null, null);
         String[] val = new String[]{"foo"};
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invokeTarget").with(eq(val)).will(returnValue(val));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invokeTarget(EasyMock.eq(val))).andReturn(val);
+        replay(invoker);
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         assertEquals(val, outboundChain.getTargetInvoker().invokeTarget(val));
+        verify(invoker);
     }
 
 
@@ -79,15 +84,16 @@
         OutboundInvocationChain outboundChain = setupSource(interceptors, null, null);
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
+        verify(invoker);
     }
 
     /**
@@ -103,15 +109,16 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, null);
         InboundInvocationChain inboundChain = setupTarget(interceptors, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
+        verify(invoker);
     }
 
     /**
@@ -130,9 +137,9 @@
         OutboundInvocationChain outboundChain = setupSource(sourceInterceptors, null, null);
         InboundInvocationChain inboundChain = setupTarget(targetInterceptors, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, sourceInterceptor.getCount());
         assertEquals(0, targetInterceptor.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
@@ -141,6 +148,7 @@
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, sourceInterceptor.getCount());
         assertEquals(1, targetInterceptor.getCount());
+        verify(invoker);
     }
 
     /**
@@ -159,9 +167,9 @@
         OutboundInvocationChain outboundChain = setupSource(interceptors, handlers, null);
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
@@ -170,6 +178,7 @@
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -188,9 +197,9 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, null);
         InboundInvocationChain inboundChain = setupTarget(interceptors, handlers, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
@@ -199,6 +208,7 @@
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
 
@@ -218,9 +228,9 @@
         OutboundInvocationChain outboundChain = setupSource(interceptors, null, handlers);
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
@@ -229,6 +239,7 @@
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -247,9 +258,9 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, null);
         InboundInvocationChain inboundChain = setupTarget(interceptors, null, handlers);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
@@ -258,6 +269,7 @@
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -276,9 +288,9 @@
         OutboundInvocationChain outboundChain = setupSource(interceptors, handlers, handlers);
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
@@ -287,6 +299,7 @@
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
         assertEquals(2, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -305,9 +318,9 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, handlers);
         InboundInvocationChain inboundChain = setupTarget(interceptors, handlers, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, interceptor.getCount());
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
@@ -316,6 +329,7 @@
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, interceptor.getCount());
         assertEquals(2, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -331,15 +345,16 @@
         OutboundInvocationChain outboundChain = setupSource(null, handlers, handlers);
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(2, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -355,15 +370,16 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, null);
         InboundInvocationChain inboundChain = setupTarget(null, handlers, handlers);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(2, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -379,15 +395,16 @@
         OutboundInvocationChain outboundChain = setupSource(null, handlers, null);
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -403,15 +420,16 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, null);
         InboundInvocationChain inboundChain = setupTarget(null, handlers, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -427,15 +445,16 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, handlers);
         InboundInvocationChain inboundChain = setupTarget(null, null, null);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
     /**
@@ -451,15 +470,16 @@
         OutboundInvocationChain outboundChain = setupSource(null, null, null);
         InboundInvocationChain inboundChain = setupTarget(null, null, handlers);
         Message msg = new MessageImpl();
-        Mock mock = mock(TargetInvoker.class);
-        mock.expects(once()).method("invoke").with(eq(msg)).will(returnValue(msg));
-        TargetInvoker invoker = (TargetInvoker) mock.proxy();
+        TargetInvoker invoker = createNiceMock(TargetInvoker.class);
+        expect(invoker.invoke(EasyMock.eq(msg))).andReturn(msg);
+        replay(invoker);
         assertEquals(0, handler.getCount());
         connector.connect(outboundChain, inboundChain, invoker);
         inboundChain.prepare();
         msg.setTargetInvoker(outboundChain.getTargetInvoker());
         assertEquals(msg, outboundChain.getHeadInterceptor().invoke(msg));
         assertEquals(1, handler.getCount());
+        verify(invoker);
     }
 
 

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java Mon Sep  4 17:41:21 2006
@@ -24,6 +24,7 @@
 
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.loader.LoaderException;
@@ -33,37 +34,41 @@
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Include;
+import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.PropertyValue;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
+import junit.framework.TestCase;
 import org.apache.tuscany.core.bootstrap.Bootstrapper;
 import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
 import org.apache.tuscany.core.implementation.system.model.SystemBinding;
 import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
 import org.apache.tuscany.core.mock.component.BasicInterface;
 import org.apache.tuscany.core.monitor.NullMonitorFactory;
-import org.jmock.Mock;
-import org.jmock.MockObjectTestCase;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
 
 /**
  * Verifies the default boostrap deployer
  *
  * @version $Rev$ $Date$
  */
-public class BootstrapDeployerTestCase extends MockObjectTestCase {
+public class BootstrapDeployerTestCase extends TestCase {
     private DeployerImpl deployer;
     private DeploymentContext deploymentContext;
     private ComponentDefinition<SystemCompositeImplementation> componentDefinition;
     private SystemCompositeImplementation implementation;
-    private Mock parent;
 
     public void testBoot1Load() throws LoaderException {
-        Mock mock = mock(CompositeComponent.class);
-        CompositeComponent parent = (CompositeComponent) mock.proxy();
+        CompositeComponent parent = createNiceMock(CompositeComponent.class);
         URL scdl = BootstrapDeployerTestCase.class.getResource("boot1.scdl");
         implementation.setScdlLocation(scdl);
         deployer.load(parent, componentDefinition, deploymentContext);
-        CompositeComponentType<ServiceDefinition, ?, ?> composite = implementation.getComponentType();
+        CompositeComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> composite =
+            implementation.getComponentType();
         assertNotNull(composite);
         assertEquals("boot1", composite.getName());
 
@@ -101,25 +106,28 @@
     public void testBoot1Deployment() throws LoaderException {
         URL scdl = BootstrapDeployerTestCase.class.getResource("boot1.scdl");
         implementation.setScdlLocation(scdl);
-        parent.expects(once()).method("register").withAnyArguments();
-
+        CompositeComponent<?> parent = createNiceMock(CompositeComponent.class);
+        parent.register(isA(SCAObject.class));
+        replay(parent);
         // load the boot1 file using the bootstrap deployer
         componentDefinition.setName("simple");
-        Component<?> component = deployer.deploy((CompositeComponent<?>) parent.proxy(), componentDefinition);
+        Component<?> component = deployer.deploy(parent, componentDefinition);
         assertNotNull(component);
-        parent.verify();
+        verify(parent);
     }
 
     public void testBoot2Deployment() throws LoaderException {
         URL scdl = BootstrapDeployerTestCase.class.getResource("boot2.scdl");
         implementation.setScdlLocation(scdl);
-        parent.expects(once()).method("register").withAnyArguments();
+        CompositeComponent<?> parent = createNiceMock(CompositeComponent.class);
+        parent.register(isA(SCAObject.class));
+        replay(parent);
 
         // load the boot2 file using the bootstrap deployer
         componentDefinition.setName("newDeployer");
-        Component<?> component = deployer.deploy((CompositeComponent<?>) parent.proxy(), componentDefinition);
+        Component<?> component = deployer.deploy(parent, componentDefinition);
         assertNotNull(component);
-        parent.verify();
+        verify(parent);
         component.start();
         Deployer newDeployer = (Deployer) component.getServiceInstance("deployer");
         assertNotNull(newDeployer);
@@ -147,6 +155,5 @@
         implementation = new SystemCompositeImplementation();
         implementation.setClassLoader(getClass().getClassLoader());
         componentDefinition = new ComponentDefinition<SystemCompositeImplementation>(implementation);
-        parent = mock(CompositeComponent.class);
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java Mon Sep  4 17:41:21 2006
@@ -20,11 +20,14 @@
 
 import java.net.URI;
 
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry;
+import org.apache.tuscany.spi.idl.java.JavaServiceContract;
 import org.apache.tuscany.spi.implementation.java.ConstructorDefinition;
+import org.apache.tuscany.spi.implementation.java.JavaMappedProperty;
 import org.apache.tuscany.spi.implementation.java.JavaMappedReference;
 import org.apache.tuscany.spi.implementation.java.JavaMappedService;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
@@ -39,6 +42,7 @@
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.wire.WireService;
 
+import junit.framework.TestCase;
 import org.apache.tuscany.core.builder.BuilderRegistryImpl;
 import org.apache.tuscany.core.deployer.RootDeploymentContext;
 import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
@@ -49,13 +53,15 @@
 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.wire.jdk.JDKWireService;
-import org.jmock.Mock;
-import org.jmock.MockObjectTestCase;
+import org.easymock.EasyMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.isA;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
-public class CompositeBuilderTestCase extends MockObjectTestCase {
+public class CompositeBuilderTestCase extends TestCase {
     private DeploymentContext deploymentContext;
 
     protected void setUp() throws Exception {
@@ -91,32 +97,31 @@
 
     private ComponentDefinition createTopComponentDef() throws Exception {
 
-        CompositeComponentType outerType = new CompositeComponentType();
+        CompositeComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> outerType =
+            new CompositeComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>>();
         outerType.add(createSourceComponentDef());
         outerType.add(createTargetComponentDef());
 
         CompositeImplementation outerImpl = new CompositeImplementation();
         outerImpl.setComponentType(outerType);
 
-        ComponentDefinition<CompositeImplementation> topComponentDefinition =
-            new ComponentDefinition<CompositeImplementation>(outerImpl);
-
-        return topComponentDefinition;
+        return new ComponentDefinition<CompositeImplementation>(outerImpl);
     }
 
-    private ComponentDefinition createSourceComponentDef() throws Exception {
+    private ComponentDefinition<CompositeImplementation> createSourceComponentDef() throws Exception {
 
-        CompositeComponentType innerType = new CompositeComponentType();
+        CompositeComponentType<ServiceDefinition, ReferenceDefinition, JavaMappedProperty<?>> innerType =
+            new CompositeComponentType<ServiceDefinition, ReferenceDefinition, JavaMappedProperty<?>>();
         innerType.add(createInnerSourceComponentDef());
         ReferenceDefinition reference = new ReferenceDefinition();
         reference.setName("targetComponentRef");
         JavaInterfaceProcessorRegistry registry = new JavaInterfaceProcessorRegistryImpl();
-        ServiceContract<?> targetContract = registry.introspect(Target.class);
+        JavaServiceContract targetContract = registry.introspect(Target.class);
         reference.setServiceContract(targetContract);
         innerType.add(reference);
         BindlessServiceDefinition service = new BindlessServiceDefinition();
         service.setName("InnerSourceService");
-        ServiceContract<?> sourceContract = registry.introspect(Source.class);
+        JavaServiceContract sourceContract = registry.introspect(Source.class);
         service.setServiceContract(sourceContract);
         service.setTarget(new URI("InnerSourceComponent"));
         innerType.add(service);
@@ -134,9 +139,10 @@
         return sourceComponentDefinition;
     }
 
-    private ComponentDefinition createInnerSourceComponentDef() throws Exception {
+    private ComponentDefinition<JavaImplementation> createInnerSourceComponentDef() throws Exception {
 
-        PojoComponentType sourceType = new PojoComponentType();
+        PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> sourceType =
+            new PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>>();
         sourceType.setImplementationScope(Scope.MODULE);
         JavaMappedReference reference = new JavaMappedReference();
         reference.setName("targetReference");
@@ -148,12 +154,12 @@
 
         ServiceContract<?> sourceContract = registry.introspect(Source.class);
 
-        ServiceDefinition sourceServiceDefinition = new JavaMappedService();
+        JavaMappedService sourceServiceDefinition = new JavaMappedService();
         sourceServiceDefinition.setName("Source");
         sourceServiceDefinition.setServiceContract(sourceContract);
 
         sourceType.add(sourceServiceDefinition);
-        sourceType.setConstructorDefinition(new ConstructorDefinition(SourceImpl.class.getConstructor((Class[]) null)));
+        sourceType.setConstructorDefinition(new ConstructorDefinition<SourceImpl>(SourceImpl.class.getConstructor()));
         JavaImplementation sourceImpl = new JavaImplementation();
         sourceImpl.setComponentType(sourceType);
         sourceImpl.setImplementationClass(SourceImpl.class);
@@ -167,34 +173,34 @@
         return innerSourceComponentDefinition;
     }
 
-    private ComponentDefinition createTargetComponentDef() throws Exception {
+    private ComponentDefinition<JavaImplementation> createTargetComponentDef() throws Exception {
 
-        PojoComponentType targetType = new PojoComponentType();
+        PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> targetType =
+            new PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>>();
         targetType.setImplementationScope(Scope.MODULE);
 
         JavaInterfaceProcessorRegistry registry = new JavaInterfaceProcessorRegistryImpl();
         ServiceContract<?> targetContract = registry.introspect(Target.class);
 
-        ServiceDefinition targetServiceDefinition = new JavaMappedService();
-        targetServiceDefinition.setName("Target");
-        targetServiceDefinition.setServiceContract(targetContract);
+        JavaMappedService serviceDefinition = new JavaMappedService();
+        serviceDefinition.setName("Target");
+        serviceDefinition.setServiceContract(targetContract);
 
-        targetType.add(targetServiceDefinition);
-        targetType.setConstructorDefinition(new ConstructorDefinition(TargetImpl.class.getConstructor((Class[]) null)));
+        targetType.add(serviceDefinition);
+        targetType.setConstructorDefinition(new ConstructorDefinition<TargetImpl>(TargetImpl.class.getConstructor()));
         JavaImplementation targetImpl = new JavaImplementation();
         targetImpl.setComponentType(targetType);
         targetImpl.setImplementationClass(TargetImpl.class);
-        ComponentDefinition<JavaImplementation> targetComponentDefinition =
-            new ComponentDefinition<JavaImplementation>("TargetComponent", targetImpl);
-
-        return targetComponentDefinition;
+        return new ComponentDefinition<JavaImplementation>("TargetComponent", targetImpl);
     }
 
     private ScopeContainer createMock() {
-        Mock mock = mock(ScopeContainer.class);
-        mock.expects(once()).method("start");
-        mock.expects(atLeastOnce()).method("register");
-        mock.expects(atLeastOnce()).method("getScope").will(returnValue(Scope.MODULE));
-        return (ScopeContainer) mock.proxy();
+        ScopeContainer container = EasyMock.createMock(ScopeContainer.class);
+        container.start();
+        container.register(isA(AtomicComponent.class));
+        expectLastCall().atLeastOnce();
+        expect(container.getScope()).andReturn(Scope.MODULE).atLeastOnce();
+        EasyMock.replay(container);
+        return container;
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/AutowireResolutionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/AutowireResolutionTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/AutowireResolutionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/AutowireResolutionTestCase.java Mon Sep  4 17:41:21 2006
@@ -20,44 +20,61 @@
 
 import org.apache.tuscany.spi.component.CompositeComponent;
 
+import junit.framework.TestCase;
 import org.apache.tuscany.core.component.AutowireComponent;
-import org.jmock.Mock;
-import org.jmock.MockObjectTestCase;
+import org.easymock.EasyMock;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
 
 /**
  * Verfies specific autowire resolution scenarios
  *
  * @version $Rev$ $Date$
  */
-public class AutowireResolutionTestCase extends MockObjectTestCase {
-    private SystemCompositeComponentImpl<?> context;
-    private Mock parent;
-    private Mock autowire;
+public class AutowireResolutionTestCase extends TestCase {
 
     public void testConstruction() {
-        assertEquals("test", context.getName());
-        assertSame(parent.proxy(), context.getParent());
+        CompositeComponent<?> parent = createMock(CompositeComponent.class);
+        AutowireComponent<?> autowire = createMock(AutowireComponent.class);
+        replay(parent);
+        replay(autowire);
+        SystemCompositeComponent<?> component = new SystemCompositeComponentImpl("test", parent, autowire, null, null);
+        assertEquals("test", component.getName());
+        assertSame(parent, component.getParent());
+        verify(parent);
+        verify(autowire);
     }
 
     public void testResolveToSelf() {
-        assertSame(context, context.resolveInstance(CompositeComponent.class));
-        assertSame(context, context.resolveInstance(SystemCompositeComponent.class));
+        CompositeComponent<?> parent = createMock(CompositeComponent.class);
+        AutowireComponent<?> autowire = createMock(AutowireComponent.class);
+        replay(parent);
+        replay(autowire);
+        SystemCompositeComponent<?> component = new SystemCompositeComponentImpl("test", parent, autowire, null, null);
+        assertSame(component, component.resolveInstance(CompositeComponent.class));
+        assertSame(component, component.resolveInstance(SystemCompositeComponent.class));
+        verify(parent);
+        verify(autowire);
     }
 
     public void testResolvedByAutowire() {
         Foo foo = new Foo() {
         };
-        autowire.expects(once()).method("resolveInstance").with(eq(Foo.class)).will(returnValue(foo));
-        assertSame(foo, context.resolveInstance(Foo.class));
+        CompositeComponent<?> parent = createMock(CompositeComponent.class);
+        AutowireComponent<?> autowire = createMock(AutowireComponent.class);
+        EasyMock.expect(autowire.resolveInstance(eq(Foo.class))).andReturn(foo);
+        replay(parent);
+        replay(autowire);
+        SystemCompositeComponent<?> component = new SystemCompositeComponentImpl("test", parent, autowire, null, null);
+        assertSame(foo, component.resolveInstance(Foo.class));
+        verify(parent);
+        verify(autowire);
     }
 
     protected void setUp() throws Exception {
         super.setUp();
-        parent = mock(CompositeComponent.class);
-        autowire = mock(AutowireComponent.class);
-        context = new SystemCompositeComponentImpl("test",
-            (CompositeComponent) parent.proxy(),
-            (AutowireComponent) autowire.proxy(), null, null);
     }
 
     public static interface Foo {

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/CompositePropagationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/CompositePropagationTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/CompositePropagationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/CompositePropagationTestCase.java Mon Sep  4 17:41:21 2006
@@ -21,39 +21,42 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import junit.framework.TestCase;
 import org.apache.tuscany.core.mock.component.Source;
-import org.jmock.Mock;
-import org.jmock.MockObjectTestCase;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
 
 /**
- * Tests registering arbirarily deep child composite contexts
+ * Tests registering arbitrarily deep child composite contexts
  *
  * @version $Rev$ $Date$
  */
-public class CompositePropagationTestCase extends MockObjectTestCase {
+public class CompositePropagationTestCase extends TestCase {
 
     private SystemCompositeComponent parent;
-    private SystemCompositeComponent child1;
     private SystemCompositeComponent child2;
 
     public void testLifecyclePropagation() throws NoSuchMethodException {
         parent.start();
         List<Class<?>> interfaces = new ArrayList<Class<?>>();
         interfaces.add(Source.class);
-        Mock mock = mock(SystemAtomicComponent.class);
-        mock.stubs().method("getName").will(returnValue("source"));
-        mock.expects(once()).method("stop");
-        mock.stubs().method("getServiceInterfaces").will(returnValue(interfaces));
-        SystemAtomicComponent context = (SystemAtomicComponent) mock.proxy();
-        child2.register(context);
+        SystemAtomicComponent component = createMock(SystemAtomicComponent.class);
+        expect(component.getName()).andReturn("source").anyTimes();
+        component.stop();
+        expect(component.getServiceInterfaces()).andReturn(interfaces);
+        replay(component);
+        child2.register(component);
         parent.stop();
+        verify(component);
     }
 
 
     protected void setUp() throws Exception {
         super.setUp();
         parent = new SystemCompositeComponentImpl("parent", null, null, null, null);
-        child1 = new SystemCompositeComponentImpl("child1", parent, null, null, null);
+        SystemCompositeComponent child1 = new SystemCompositeComponentImpl("child1", parent, null, null, null);
         child2 = new SystemCompositeComponentImpl("child2", child1, null, null, null);
         child1.register(child2);
         parent.register(child1);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java Mon Sep  4 17:41:21 2006
@@ -65,7 +65,7 @@
         Connector connector = new ConnectorImpl();
         SystemComponentBuilder builder = new SystemComponentBuilder();
 
-        SystemCompositeComponent parent = new SystemCompositeComponentImpl(null, null, null, null, null);
+        SystemCompositeComponent parent = new SystemCompositeComponentImpl(null, null, null, connector, null);
 
         ComponentDefinition<SystemImplementation> targetComponentDefinition = MockComponentFactory.createTarget();
         ComponentDefinition<SystemImplementation> sourceComponentDefinition =
@@ -76,9 +76,7 @@
 
         parent.register(sourceComponent);
         parent.register(targetComponent);
-
-        connector.connect(sourceComponent);
-        connector.connect(targetComponent);
+        parent.prepare();
         parent.start();
         scope.onEvent(new CompositeStart(this, parent));
         Source source = (Source) parent.getChild("source").getServiceInstance();

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java?view=auto&rev=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java Mon Sep  4 17:41:21 2006
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.spi.builder;
+
+/**
+ * Acts as a delegating <code>WirePostProcessor</code>, delegating post-processing of wires after policies have been
+ * applied and source an targets have been matched but before they are connected.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface WirePostProcessorRegistry extends WirePostProcessor {
+
+
+    /**
+     * Registers a post-processor in the runtime
+     *
+     * @param processor the processor to register
+     */
+    void register(WirePostProcessor processor);
+
+    /**
+     * De-registers a post-processor in the runtime
+     *
+     * @param processor the processor to de-register
+     */
+    void unregister(WirePostProcessor processor);
+
+}

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WirePostProcessorRegistry.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java Mon Sep  4 17:41:21 2006
@@ -37,12 +37,7 @@
      * @param context the context to add as a child
      * @throws InvalidComponentTypeException
      */
-    void register(SCAObject context) throws InvalidComponentTypeException;
-
-    /**
-     * Returns true if the composite wires its own children
-     */
-    boolean isSelfWiring();
+    void register(SCAObject<?> context) throws InvalidComponentTypeException;
 
     /**
      * Returns the child associated with a given name

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java Mon Sep  4 17:41:21 2006
@@ -52,8 +52,8 @@
     T getServiceInstance() throws TargetException;
 
     /**
-     * Called to signal that the parent composite has been activated and that the artifact should perform any required
-     * initialization steps
+     * Called to signal that the composite should perform and required steps prior to registration with its parent such
+     * as wiring of its children
      */
     void prepare();
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java Mon Sep  4 17:41:21 2006
@@ -53,12 +53,11 @@
  */
 public abstract class CompositeComponentExtension<T> extends AbstractSCAObject<T> implements CompositeComponent<T> {
 
-    protected final Map<String, SCAObject> children = new ConcurrentHashMap<String, SCAObject>();
+    protected final Map<String, SCAObject<?>> children = new ConcurrentHashMap<String, SCAObject<?>>();
     protected final List<Service> services = new ArrayList<Service>();
     protected final List<Reference> references = new ArrayList<Reference>();
     protected final Map<String, Document> propertyValues;
     protected final Connector connector;
-    protected boolean selfWiring;
 
     protected CompositeComponentExtension(String name,
                                           CompositeComponent<?> parent,
@@ -69,10 +68,6 @@
         this.connector = connector;
     }
 
-    public boolean isSelfWiring() {
-        return selfWiring;
-    }
-
     public Scope getScope() {
         return Scope.COMPOSITE;
     }
@@ -81,7 +76,7 @@
         publish(event);
     }
 
-    public void register(SCAObject child) {
+    public void register(SCAObject<?> child) {
         assert child != null : "child was null";
         if (children.get(child.getName()) != null) {
             DuplicateNameException e = new DuplicateNameException("A context is already registered with name");
@@ -213,7 +208,6 @@
             return map;
         }
     }
-
 
     public void prepare() {
         for (SCAObject object : children.values()) {

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java Mon Sep  4 17:41:21 2006
@@ -35,7 +35,7 @@
     extends ComponentType<S, R, P> {
 
     private Scope implementationScope = Scope.UNDEFINED;
-    private ConstructorDefinition constructorDefinition;
+    private ConstructorDefinition<?> constructorDefinition;
     private Method initMethod;
     private Method destroyMethod;
 
@@ -63,7 +63,7 @@
     /**
      * Sets the constructor used to instantiate implementation instances
      */
-    public void setConstructorDefinition(ConstructorDefinition definition) {
+    public void setConstructorDefinition(ConstructorDefinition<?> definition) {
         this.constructorDefinition = definition;
     }
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionTestCase.java?view=diff&rev=440210&r1=440209&r2=440210
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionTestCase.java Mon Sep  4 17:41:21 2006
@@ -20,6 +20,7 @@
 
 import java.util.List;
 
+import org.apache.tuscany.spi.builder.Connector;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.ComponentNotFoundException;
 import org.apache.tuscany.spi.component.DuplicateNameException;
@@ -37,6 +38,7 @@
 
 import junit.framework.TestCase;
 import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createNiceMock;
 import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.replay;
@@ -211,7 +213,7 @@
 
     private class Composite<T> extends CompositeComponentExtension<T> {
         public Composite() {
-            super(null, null, null, null);
+            super(null, null, createNiceMock(Connector.class), null);
         }
 
         public void setScopeContainer(ScopeContainer scopeContainer) {



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