You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/12/31 19:59:02 UTC

svn commit: r491465 [2/3] - in /incubator/tuscany/java/sca: kernel/core/src/main/java/org/apache/tuscany/core/binding/local/ kernel/core/src/main/java/org/apache/tuscany/core/builder/ kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/ ...

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ReferenceLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ReferenceLoader.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ReferenceLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ReferenceLoader.java Sun Dec 31 10:58:58 2006
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.core.loader;
 
+import java.util.ArrayList;
+import java.util.List;
 import javax.xml.namespace.QName;
 import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
 import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
@@ -33,8 +35,11 @@
 import org.apache.tuscany.spi.extension.LoaderExtension;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.loader.UnrecognizedElementException;
 import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
+import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.Multiplicity;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
@@ -65,33 +70,28 @@
         String name = reader.getAttributeValue(null, "name");
         Multiplicity multiplicity =
             StAXUtil.multiplicity(reader.getAttributeValue(null, "multiplicity"), Multiplicity.ONE_ONE);
-        BindingDefinition binding = null;
-        ServiceContract serviceContract = null;
+        List<BindingDefinition> bindings = new ArrayList<BindingDefinition>();
+        ServiceContract<?> contract = null;
         while (true) {
             switch (reader.next()) {
                 case START_ELEMENT:
                     ModelObject o = registry.load(parent, null, reader, deploymentContext);
                     if (o instanceof ServiceContract) {
-                        serviceContract = (ServiceContract) o;
+                        contract = (ServiceContract) o;
                     } else if (o instanceof BindingDefinition) {
-                        binding = (BindingDefinition) o;
+                        bindings.add((BindingDefinition) o);
+                    } else {
+                        throw new UnrecognizedElementException(reader.getName());
                     }
-                    reader.next();
                     break;
                 case END_ELEMENT:
-                    if (binding == null) {
-                        ReferenceDefinition referenceDefinition = new ReferenceDefinition(name, serviceContract);
-                        referenceDefinition.setMultiplicity(multiplicity);
-                        return referenceDefinition;
-                    } else {
-                        BoundReferenceDefinition<BindingDefinition> referenceDefinition =
-                            new BoundReferenceDefinition<BindingDefinition>();
-                        referenceDefinition.setName(name);
-                        referenceDefinition.setServiceContract(serviceContract);
+                    if (object instanceof ComponentType && !(object instanceof CompositeComponentType)) {
+                        // loading a reference in a component type side file
+                        ReferenceDefinition referenceDefinition = new ReferenceDefinition(name, contract);
                         referenceDefinition.setMultiplicity(multiplicity);
-                        referenceDefinition.setBinding(binding);
                         return referenceDefinition;
                     }
+                    return new BoundReferenceDefinition(name, contract, bindings, multiplicity);
             }
         }
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireServiceExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireServiceExtension.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireServiceExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireServiceExtension.java Sun Dec 31 10:58:58 2006
@@ -22,14 +22,11 @@
 
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.component.Component;
-import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
-import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
-import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
@@ -44,7 +41,7 @@
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.WireService;
 
-import org.apache.tuscany.core.implementation.composite.CompositeReference;
+import org.apache.tuscany.core.binding.local.LocalReferenceBinding;
 
 /**
  * Base class for wire service extensions
@@ -123,24 +120,9 @@
         Implementation<?> implementation = definition.getImplementation();
         ComponentType<?, ?, ?> componentType = implementation.getComponentType();
         for (ServiceDefinition service : componentType.getServices().values()) {
-            if (componentType instanceof CompositeComponentType<?, ?, ?>) {
-                // If this is the case, then it means that component has already been returned
-                // by CompositeBuilder and thus its children, in particular composite services,
-                // have been registered
-                CompositeComponent compositeComponent = (CompositeComponent) component;
-                Service serviceChild;
-                if (component.isSystem()) {
-                    // FIXME JFM test
-                    serviceChild = (Service) compositeComponent.getSystemChild(service.getName());
-                } else {
-                    serviceChild = (Service) compositeComponent.getChild(service.getName());
-                }
-                assert serviceChild != null;
-            } else {
-                InboundWire wire = createWire(service);
-                wire.setContainer(component);
-                component.addInboundWire(wire);
-            }
+            InboundWire wire = createWire(service);
+            wire.setContainer(component);
+            component.addInboundWire(wire);
         }
 
         for (ReferenceTarget referenceTarget : definition.getReferenceTargets().values()) {
@@ -150,53 +132,48 @@
             OutboundWire wire = createWire(referenceTarget, mappedReference);
             wire.setContainer(component);
             component.addOutboundWire(wire);
-            if (componentType instanceof CompositeComponentType<?, ?, ?>) {
-                // If this is the case, then it means that component has already been returned
-                // by CompositeBuilder and thus its children, in particular composite references,
-                // have been registered
-                CompositeComponent compositeComponent = (CompositeComponent) component;
-                Reference reference = (Reference) compositeComponent.getChild(referenceTarget.getReferenceName());
-                assert reference != null;
-                if (reference instanceof CompositeReference) {
-                    reference.setOutboundWire(wire);
-                    // Notice that now the more immediate container of the wire is the composite reference
-                    wire.setContainer(reference);
-                }
-            }
         }
     }
 
-    public void createWires(Reference reference, ServiceContract<?> contract) {
+    public void createWires(ReferenceBinding referenceBinding, ServiceContract<?> contract, QualifiedName targetName) {
         InboundWire inboundWire = new InboundWireImpl();
         inboundWire.setServiceContract(contract);
-        inboundWire.setContainer(reference);
+        inboundWire.setContainer(referenceBinding);
         for (Operation<?> operation : contract.getOperations().values()) {
             InboundInvocationChain chain = createInboundChain(operation);
             inboundWire.addInvocationChain(operation, chain);
         }
         OutboundWire outboundWire = new OutboundWireImpl();
+        outboundWire.setTargetName(targetName);
 
         // [rfeng] Check if the Reference has the binding contract
-        ServiceContract<?> bindingContract = reference.getBindingServiceContract();
+        ServiceContract<?> bindingContract = referenceBinding.getBindingServiceContract();
         if (bindingContract == null) {
             bindingContract = contract;
         }
         outboundWire.setServiceContract(bindingContract);
-        outboundWire.setContainer(reference);
+        outboundWire.setContainer(referenceBinding);
         for (Operation<?> operation : bindingContract.getOperations().values()) {
             OutboundInvocationChain chain = createOutboundChain(operation);
-            chain.addInterceptor(new InvokerInterceptor());
+            if (referenceBinding instanceof LocalReferenceBinding) {
+                // Not ideal but the local binding case is special as its inbound and outbound wires are connected
+                // before the outbound wire is connected to the reference target. This requires the binding outbound
+                // chain to have an interceptor to connect to from the binding inbound chain. This outbound
+                // interceptor will then be bridged to the head target interceptor 
+                chain.addInterceptor(new SynchronousBridgingInterceptor());
+            } else {
+                chain.addInterceptor(new InvokerInterceptor());
+            }
             outboundWire.addInvocationChain(operation, chain);
         }
 
         // Notice that we skip inboundWire.setCallbackReferenceName
         // First, an inbound wire's callbackReferenceName is only retrieved by JavaAtomicComponent
         // to create a callback injector based on the callback reference member; a composite reference
-        // should not need to do that
-        // Second, a reference definition does not have a callback reference name like a service
-        // definition does
-        reference.setInboundWire(inboundWire);
-        reference.setOutboundWire(outboundWire);
+        // should not need to do that. Second, a reference definition does not have a callback reference name
+        // like a service definition does
+        referenceBinding.setInboundWire(inboundWire);
+        referenceBinding.setOutboundWire(outboundWire);
     }
 
     public void createWires(ServiceBinding serviceBinding, String targetName, ServiceContract<?> contract) {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/composite.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/composite.scdl?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/composite.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/composite.scdl Sun Dec 31 10:58:58 2006
@@ -42,7 +42,4 @@
     <component name="composite.builder">
         <system:implementation.system class="org.apache.tuscany.core.implementation.composite.CompositeBuilder"/>
     </component>
-    <component name="composite.bindlessbuilder">
-        <system:implementation.system class="org.apache.tuscany.core.implementation.composite.CompositeBindlessBuilder"/>
-    </component>
 </composite>

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java (from r491325, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvokerTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvokerTestCase.java&r1=491325&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvokerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java Sun Dec 31 10:58:58 2006
@@ -32,10 +32,10 @@
 /**
  * @version $Rev$ $Date$
  */
-public class AbstractCompositeTargetInvokerTestCase extends TestCase {
+public class AbstractLocalTargetInvokerTestCase extends TestCase {
 
     public void testInvokerWithInterceptor() throws Throwable {
-        AbstractCompositeTargetInvoker invoker = new MockTargetInvoker();
+        AbstractLocalTargetInvoker invoker = new MockTargetInvoker();
         Interceptor interceptor = EasyMock.createMock(Interceptor.class);
         interceptor.invoke(EasyMock.isA(Message.class));
         EasyMock.expectLastCall().andStubAnswer(new IAnswer<Object>() {
@@ -57,7 +57,7 @@
     }
 
     public void testShortCircuitInvoke() throws Throwable {
-        AbstractCompositeTargetInvoker invoker = new MockTargetInvoker();
+        AbstractLocalTargetInvoker invoker = new MockTargetInvoker();
         TargetInvoker targetInvoker = EasyMock.createMock(TargetInvoker.class);
         EasyMock.expect(targetInvoker.invoke(EasyMock.isA(Message.class))).andReturn(new MessageImpl());
         EasyMock.replay(targetInvoker);
@@ -69,7 +69,7 @@
         EasyMock.verify(targetInvoker);
     }
 
-    private class MockTargetInvoker extends AbstractCompositeTargetInvoker {
+    private class MockTargetInvoker extends AbstractLocalTargetInvoker {
         public Message invoke(Message msg) throws InvocationRuntimeException {
             return null;
         }

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java Sun Dec 31 10:58:58 2006
@@ -18,18 +18,37 @@
  */
 package org.apache.tuscany.core.binding.local;
 
+import javax.xml.stream.XMLStreamReader;
+
 import org.apache.tuscany.spi.model.ModelObject;
 
 import junit.framework.TestCase;
+import org.easymock.EasyMock;
 
 /**
  * @version $Rev$ $Date$
  */
 public class LocalBindingLoaderTestCase extends TestCase {
 
-    public void testLoader() throws Exception {
+    public void testLoaderNoUri() throws Exception {
+        XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class);
+        EasyMock.expect(reader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("uri"))).andReturn(null);
+        EasyMock.replay(reader);
+        LocalBindingLoader loader = new LocalBindingLoader();
+        ModelObject o = loader.load(null, null, reader, null);
+        assertEquals(LocalBindingDefinition.class, o.getClass());
+        EasyMock.verify(reader);
+    }
+
+    public void testLoaderUri() throws Exception {
+        XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class);
+        EasyMock.expect(reader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("uri"))).andReturn("foo");
+        EasyMock.replay(reader);
         LocalBindingLoader loader = new LocalBindingLoader();
-        ModelObject o = loader.load(null, null, null, null);
+        ModelObject o = loader.load(null, null, reader, null);
         assertEquals(LocalBindingDefinition.class, o.getClass());
+        assertEquals("foo", ((LocalBindingDefinition) o).getTargetUri().toString());
+        EasyMock.verify(reader);
     }
+
 }

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java (from r491316, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerInvocationExceptionTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerInvocationExceptionTestCase.java&r1=491316&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerInvocationExceptionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java Sun Dec 31 10:58:58 2006
@@ -1,4 +1,4 @@
-package org.apache.tuscany.core.implementation.composite;
+package org.apache.tuscany.core.binding.local;
 
 import java.lang.reflect.Type;
 import java.util.HashMap;
@@ -17,11 +17,11 @@
 /**
  * @version $Rev$ $Date$
  */
-public class CompositeReferenceCallbackTargetInvokerInvocationExceptionTestCase extends TestCase {
+public class LocalCallbackTargetInvokerInvocationExceptionTestCase extends TestCase {
     private InboundWire wire;
     private Message message;
     private OutboundInvocationChain chain;
-    private CompositeReferenceCallbackTargetInvoker invoker;
+    private LocalCallbackTargetInvoker invoker;
 
     /**
      * Verfies an InvocationTargetException thrown when invoking the target is propagated to the client correctly and
@@ -55,7 +55,7 @@
         wire = EasyMock.createMock(InboundWire.class);
         EasyMock.expect(wire.getSourceCallbackInvocationChains(targetAddress)).andReturn(chains);
         EasyMock.replay(wire);
-        invoker = new CompositeReferenceCallbackTargetInvoker(operation, wire);
+        invoker = new LocalCallbackTargetInvoker(operation, wire);
     }
 
     private class SomeException extends Exception {

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java (from r491316, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerTestCase.java&r1=491316&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java Sun Dec 31 10:58:58 2006
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tuscany.core.implementation.composite;
+package org.apache.tuscany.core.binding.local;
 
 import java.lang.reflect.Type;
 import java.util.HashMap;
@@ -35,12 +35,12 @@
 /**
  * @version $Rev$ $Date$
  */
-public class CompositeReferenceCallbackTargetInvokerTestCase extends TestCase {
+public class LocalCallbackTargetInvokerTestCase extends TestCase {
     private InboundWire wire;
     private Message message;
     private OutboundInvocationChain chain;
     private Interceptor head;
-    private CompositeReferenceCallbackTargetInvoker invoker;
+    private LocalCallbackTargetInvoker invoker;
 
     /**
      * Verfies the normal execution path through a callback
@@ -75,7 +75,7 @@
         EasyMock.expect(wire.getSourceCallbackInvocationChains(targetAddress)).andReturn(chains);
         EasyMock.replay(wire);
 
-        invoker = new CompositeReferenceCallbackTargetInvoker(operation, wire);
+        invoker = new LocalCallbackTargetInvoker(operation, wire);
     }
 
 

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java (from r491316, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerThrowableTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerThrowableTestCase.java&r1=491316&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerThrowableTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java Sun Dec 31 10:58:58 2006
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tuscany.core.implementation.composite;
+package org.apache.tuscany.core.binding.local;
 
 import java.lang.reflect.Type;
 import java.lang.reflect.UndeclaredThrowableException;
@@ -37,12 +37,12 @@
 /**
  * @version $Rev$ $Date$
  */
-public class CompositeReferenceCallbackTargetInvokerThrowableTestCase extends TestCase {
+public class LocalCallbackTargetInvokerThrowableTestCase extends TestCase {
     private InboundWire wire;
     private Message message;
     private OutboundInvocationChain chain;
     private Interceptor head;
-    private CompositeReferenceCallbackTargetInvoker invoker;
+    private LocalCallbackTargetInvoker invoker;
 
     /**
      * Verfies an exception thrown in the target is propagated to the client correctly
@@ -87,7 +87,7 @@
         wire = EasyMock.createMock(InboundWire.class);
         EasyMock.expect(wire.getSourceCallbackInvocationChains(targetAddress)).andReturn(chains);
         EasyMock.replay(wire);
-        invoker = new CompositeReferenceCallbackTargetInvoker(operation, wire);
+        invoker = new LocalCallbackTargetInvoker(operation, wire);
     }
 
     private class InsidiousException extends Throwable {

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java Sun Dec 31 10:58:58 2006
@@ -30,6 +30,7 @@
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.idl.java.JavaServiceContract;
@@ -47,6 +48,7 @@
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
 import junit.framework.TestCase;
+import org.apache.tuscany.core.implementation.composite.ReferenceImpl;
 import org.apache.tuscany.core.implementation.composite.ServiceImpl;
 import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
 import org.apache.tuscany.core.wire.InboundWireImpl;
@@ -81,19 +83,22 @@
         outboundWire.setTargetName(FOO_TARGET);
         outboundWire.addInvocationChain(operation, outboundChain);
 
-        Reference reference = EasyMock.createMock(Reference.class);
-        EasyMock.expect(reference.getParent()).andReturn(null);
-        EasyMock.expect(reference.createTargetInvoker(contract, operation)).andReturn(null);
-        EasyMock.expect(reference.getInboundWire()).andReturn(inboundWire);
-        EasyMock.expect(reference.getOutboundWire()).andReturn(outboundWire);
-        EasyMock.expect(reference.isSystem()).andReturn(false);
-        EasyMock.replay(reference);
+        ReferenceBinding referenceBinding = EasyMock.createMock(ReferenceBinding.class);
+        referenceBinding.setReference(EasyMock.isA(Reference.class));
+        EasyMock.expect(referenceBinding.createTargetInvoker(contract, operation)).andReturn(null);
+        EasyMock.expect(referenceBinding.getInboundWire()).andReturn(inboundWire);
+        EasyMock.expect(referenceBinding.getOutboundWire()).andReturn(outboundWire);
+        EasyMock.expect(referenceBinding.isSystem()).andReturn(false);
+        EasyMock.replay(referenceBinding);
+        inboundWire.setContainer(referenceBinding);
+        outboundWire.setContainer(referenceBinding);
+
+        Reference reference = new ReferenceImpl("foo", null, contract);
+        reference.addReferenceBinding(referenceBinding);
 
-        inboundWire.setContainer(reference);
-        outboundWire.setContainer(reference);
         connector.connect(reference);
 
-        EasyMock.verify(reference);
+        EasyMock.verify(referenceBinding);
         Interceptor interceptor = inboundChain.getHeadInterceptor();
         assertTrue(interceptor instanceof SynchronousBridgingInterceptor);
         Message resp = interceptor.invoke(new MessageImpl());
@@ -265,7 +270,7 @@
         EasyMock.expect(component.getName()).andReturn("foo");
         EasyMock.replay(component);
 
-        Reference target = EasyMock.createMock(Reference.class);
+        ReferenceBinding target = EasyMock.createMock(ReferenceBinding.class);
         EasyMock.expect(target.createTargetInvoker(EasyMock.isA(ServiceContract.class), EasyMock.isA(Operation.class)))
             .andReturn(new MockInvoker());
         EasyMock.replay(target);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessorTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessorTestCase.java Sun Dec 31 10:58:58 2006
@@ -33,7 +33,7 @@
 
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.databinding.Mediator;
 import org.apache.tuscany.spi.idl.java.JavaServiceContract;
@@ -121,11 +121,11 @@
         InboundWire inboundWire = createMock(InboundWire.class);
         OutboundWire outboundWire = createMock(OutboundWire.class);
 
-        Reference reference = createMock(Reference.class);
+        ReferenceBinding referenceBinding = createMock(ReferenceBinding.class);
         CompositeComponent composite = createMock(CompositeComponent.class);
-        expect(reference.getParent()).andReturn(composite);
-        expect(inboundWire.getContainer()).andReturn(reference).anyTimes();
-        expect(outboundWire.getContainer()).andReturn(reference).anyTimes();
+        expect(referenceBinding.getParent()).andReturn(composite);
+        expect(inboundWire.getContainer()).andReturn(referenceBinding).anyTimes();
+        expect(outboundWire.getContainer()).andReturn(referenceBinding).anyTimes();
 
         Map<Operation<?>, OutboundInvocationChain> outboundChains =
             new HashMap<Operation<?>, OutboundInvocationChain>();
@@ -167,7 +167,7 @@
         expect(inboundWire.getServiceContract()).andReturn(contract);
         expect(inboundChain.getTailInterceptor()).andReturn(null);
 
-        EasyMock.replay(composite, reference, inboundWire, outboundWire, inboundChain, outboundChain);
+        EasyMock.replay(composite, referenceBinding, inboundWire, outboundWire, inboundChain, outboundChain);
 
         processor.process(inboundWire, outboundWire);
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AutowireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AutowireTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AutowireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AutowireTestCase.java Sun Dec 31 10:58:58 2006
@@ -23,9 +23,10 @@
 
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.wire.InboundWire;
 
 import junit.framework.TestCase;
@@ -160,18 +161,20 @@
         CompositeComponent parent = new CompositeComponentImpl("parent", null, null, true);
         parent.start();
 
-        Reference reference = EasyMock.createMock(Reference.class);
-        EasyMock.expect(reference.getName()).andReturn("service").atLeastOnce();
-        EasyMock.expect(reference.isSystem()).andReturn(true).atLeastOnce();
+        ReferenceBinding binding = EasyMock.createMock(ReferenceBinding.class);
+        binding.setReference(EasyMock.isA(Reference.class));
         InboundWire wire = TestUtils.createInboundWire(Source.class);
-        wire.setContainer(reference);
-        EasyMock.expect(reference.getInboundWire()).andReturn(wire).atLeastOnce();
-        EasyMock.replay(reference);
+        wire.setContainer(binding);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+
+        Reference reference = new ReferenceImpl("foo", null, wire.getServiceContract(), true);
+        reference.addReferenceBinding(binding);
         parent.register(reference);
 
         InboundWire source = parent.resolveSystemAutowire(Source.class);
         assertNotNull(source);
-        EasyMock.verify(reference);
+        EasyMock.verify(binding);
     }
 
     /**
@@ -181,18 +184,20 @@
         CompositeComponent parent = new CompositeComponentImpl("parent", null, null, true);
         parent.start();
 
-        Reference reference = EasyMock.createMock(Reference.class);
-        EasyMock.expect(reference.getName()).andReturn("service").atLeastOnce();
-        EasyMock.expect(reference.isSystem()).andReturn(false).atLeastOnce();
+        ReferenceBinding binding = EasyMock.createMock(ReferenceBinding.class);
+        binding.setReference(EasyMock.isA(Reference.class));
         InboundWire wire = TestUtils.createInboundWire(Source.class);
-        wire.setContainer(reference);
-        EasyMock.expect(reference.getInboundWire()).andReturn(wire).atLeastOnce();
-        EasyMock.replay(reference);
+        wire.setContainer(binding);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+
+        Reference reference = new ReferenceImpl("foo", null, wire.getServiceContract(), false);
+        reference.addReferenceBinding(binding);
         parent.register(reference);
 
         InboundWire source = parent.resolveAutowire(Source.class);
         assertNotNull(source);
-        EasyMock.verify(reference);
+        EasyMock.verify(binding);
     }
 
 

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=491465&r1=491464&r2=491465
==============================================================================
--- 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 Sun Dec 31 10:58:58 2006
@@ -41,6 +41,7 @@
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.wire.WireService;
 
 import junit.framework.TestCase;
@@ -77,9 +78,6 @@
         jBuilder.setWireService(wireService);
         builderRegistry.register(JavaImplementation.class, jBuilder);
         builderRegistry.register(CompositeImplementation.class, builder);
-        CompositeBindlessBuilder bindlessBuilder = new CompositeBindlessBuilder();
-        bindlessBuilder.setWireService(wireService);
-        builderRegistry.register(bindlessBuilder);
         builder.setBuilderRegistry(builderRegistry);
         CompositeComponent component =
             (CompositeComponent) builder.build(parent, createTopComponentDef(), deploymentContext);
@@ -112,7 +110,7 @@
         CompositeComponentType<ServiceDefinition, ReferenceDefinition, JavaMappedProperty<?>> innerType =
             new CompositeComponentType<ServiceDefinition, ReferenceDefinition, JavaMappedProperty<?>>();
         innerType.add(createInnerSourceComponentDef());
-        ReferenceDefinition reference = new ReferenceDefinition();
+        BoundReferenceDefinition reference = new BoundReferenceDefinition();
         reference.setName("TargetComponentRef");
         JavaInterfaceProcessorRegistry registry = new JavaInterfaceProcessorRegistryImpl();
         JavaServiceContract targetContract = registry.introspect(Target.class);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java Sun Dec 31 10:58:58 2006
@@ -23,6 +23,7 @@
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.event.RuntimeEventListener;
@@ -143,15 +144,18 @@
     }
 
     private Reference getReference(String name) throws InvalidServiceContractException {
-        Reference reference = EasyMock.createNiceMock(Reference.class);
-        EasyMock.expect(reference.isSystem()).andReturn(false).atLeastOnce();
+        ReferenceBinding binding = EasyMock.createNiceMock(ReferenceBinding.class);
+        EasyMock.expect(binding.isSystem()).andReturn(false).atLeastOnce();
         InboundWire wire = TestUtils.createInboundWire(Bar.class);
-        wire.setContainer(reference);
-        EasyMock.expect(reference.getInboundWire()).andReturn(wire).atLeastOnce();
+        wire.setContainer(binding);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
 
-        reference.getName();
+        binding.getName();
         expectLastCall().andReturn(name).anyTimes();
-        replay(reference);
+        replay(binding);
+
+        Reference reference = new ReferenceImpl(name, null, wire.getServiceContract());
+        reference.addReferenceBinding(binding);
         return reference;
     }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceTestCase.java Sun Dec 31 10:58:58 2006
@@ -40,7 +40,7 @@
     public void testCreateTargetInvoker() throws Exception {
 
         MyServiceContract serviceContract = new MyServiceContract();
-        CompositeReference compositeReference = new CompositeReference("testCompositeReferemce", null);
+        CompositeReferenceBinding compositeReference = new CompositeReferenceBinding("testCompositeReferemce", null);
         Operation operation = new Operation<Type>("sayHi", null, null, null, false, null, NO_CONVERSATION);
         OutboundInvocationChain chain = EasyMock.createMock(OutboundInvocationChain.class);
         EasyMock.replay(chain);
@@ -58,7 +58,7 @@
 
     public void testCreateCallbackTargetInvoker() throws Exception {
         MyServiceContract serviceContract = new MyServiceContract();
-        CompositeReference compositeReference = new CompositeReference("testCompositeReferemce", null);
+        CompositeReferenceBinding compositeReference = new CompositeReferenceBinding("testCompositeReferemce", null);
         Operation operation = new Operation<Type>("sayHi", null, null, null, false, null, NO_CONVERSATION);
         TargetInvoker targetInvoker = compositeReference.createCallbackTargetInvoker(serviceContract, operation);
         assertNotNull(targetInvoker);

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java?view=auto&rev=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java Sun Dec 31 10:58:58 2006
@@ -0,0 +1,61 @@
+/*
+ * 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.core.implementation.composite;
+
+import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ReferenceImplTestCase extends TestCase {
+
+    public void testStart() {
+        ReferenceBinding binding = EasyMock.createMock(ReferenceBinding.class);
+        binding.setReference(EasyMock.isA(Reference.class));
+        binding.start();
+        EasyMock.replay(binding);
+        Reference reference = new ReferenceImpl(null, null, null);
+        reference.addReferenceBinding(binding);
+        reference.start();
+        EasyMock.verify(binding);
+
+    }
+
+    public void testStop() {
+        ReferenceBinding binding = EasyMock.createMock(ReferenceBinding.class);
+        binding.setReference(EasyMock.isA(Reference.class));
+        binding.stop();
+        EasyMock.replay(binding);
+        Reference reference = new ReferenceImpl(null, null, null);
+        reference.addReferenceBinding(binding);
+        reference.stop();
+        EasyMock.verify(binding);
+
+    }
+
+    public void testIsSystem() {
+        Reference service = new ReferenceImpl(null, null, null, true);
+        assertTrue(service.isSystem());
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java?view=auto&rev=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java Sun Dec 31 10:58:58 2006
@@ -0,0 +1,47 @@
+package org.apache.tuscany.core.implementation.system.component;
+
+import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.model.Scope;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SystemReferenceBindingTestCase extends TestCase {
+
+    public void testScope() throws Exception {
+        SystemReferenceBinding binding = new SystemReferenceBinding(null, null);
+        assertEquals(Scope.SYSTEM, binding.getScope());
+    }
+
+    public void testPrepare() throws Exception {
+        SystemReferenceBinding binding = new SystemReferenceBinding(null, null);
+        binding.prepare();
+    }
+
+    public void testIsSystemNoParent() throws Exception {
+        SystemReferenceBinding binding = new SystemReferenceBinding(null, null);
+        assertFalse(binding.isSystem());
+    }
+
+    public void testIsSystem() throws Exception {
+        Reference reference = EasyMock.createMock(Reference.class);
+        EasyMock.expect(reference.isSystem()).andReturn(true);
+        EasyMock.replay(reference);
+        SystemReferenceBinding binding = new SystemReferenceBinding(null, null);
+        binding.setReference(reference);
+        assertTrue(binding.isSystem());
+    }
+
+    public void testIsNotSystem() throws Exception {
+        Reference reference = EasyMock.createMock(Reference.class);
+        EasyMock.expect(reference.isSystem()).andReturn(false);
+        EasyMock.replay(reference);
+        SystemReferenceBinding binding = new SystemReferenceBinding(null, null);
+        binding.setReference(reference);
+        assertFalse(binding.isSystem());
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java?view=auto&rev=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java Sun Dec 31 10:58:58 2006
@@ -0,0 +1,47 @@
+package org.apache.tuscany.core.implementation.system.component;
+
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.model.Scope;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SystemServiceBindingTestCase extends TestCase {
+
+    public void testScope() throws Exception {
+        SystemServiceBinding binding = new SystemServiceBinding(null, null, null);
+        assertEquals(Scope.SYSTEM, binding.getScope());
+    }
+
+    public void testPrepare() throws Exception {
+        SystemServiceBinding binding = new SystemServiceBinding(null, null, null);
+        binding.prepare();
+    }
+
+    public void testIsSystemNoParent() throws Exception {
+        SystemServiceBinding binding = new SystemServiceBinding(null, null, null);
+        assertFalse(binding.isSystem());
+    }
+
+    public void testIsSystem() throws Exception {
+        Service service = EasyMock.createMock(Service.class);
+        EasyMock.expect(service.isSystem()).andReturn(true);
+        EasyMock.replay(service);
+        SystemServiceBinding binding = new SystemServiceBinding(null, null, null);
+        binding.setService(service);
+        assertTrue(binding.isSystem());
+    }
+
+    public void testIsNotSystem() throws Exception {
+        Service service = EasyMock.createMock(Service.class);
+        EasyMock.expect(service.isSystem()).andReturn(false);
+        EasyMock.replay(service);
+        SystemServiceBinding binding = new SystemServiceBinding(null, null, null);
+        binding.setService(service);
+        assertFalse(binding.isSystem());
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java Sun Dec 31 10:58:58 2006
@@ -43,7 +43,7 @@
         EasyMock.replay(outboundWire);
         InboundWire wire = new InboundWireImpl();
         wire.setServiceContract(new JavaServiceContract(Target.class));
-        ServiceBinding serviceBinding = new SystemServiceBindingImpl("serviceBinding", null, new JavaServiceContract());
+        ServiceBinding serviceBinding = new SystemServiceBinding("serviceBinding", null, new JavaServiceContract());
         serviceBinding.setInboundWire(wire);
         serviceBinding.setOutboundWire(outboundWire);
         wire.setTargetWire(outboundWire);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java Sun Dec 31 10:58:58 2006
@@ -151,11 +151,10 @@
     }
 
 
-    public static BoundReferenceDefinition<SystemBindingDefinition> createBoundReference() {
+    public static BoundReferenceDefinition createBoundReference() {
         SystemBindingDefinition binding = new SystemBindingDefinition();
-        BoundReferenceDefinition<SystemBindingDefinition> referenceDefinition =
-            new BoundReferenceDefinition<SystemBindingDefinition>();
-        referenceDefinition.setBinding(binding);
+        BoundReferenceDefinition referenceDefinition = new BoundReferenceDefinition();
+        referenceDefinition.addBinding(binding);
         referenceDefinition.setName("target");
         ServiceContract<?> contract = new JavaServiceContract();
         contract.setInterfaceClass(Target.class);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/launcher/CompositeContextImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/launcher/CompositeContextImplTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/launcher/CompositeContextImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/launcher/CompositeContextImplTestCase.java Sun Dec 31 10:58:58 2006
@@ -20,7 +20,7 @@
 
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.wire.InboundWire;
@@ -96,7 +96,7 @@
     public void testReferenceLocate() throws Exception {
         InboundWire wire = EasyMock.createMock(InboundWire.class);
         EasyMock.replay(wire);
-        Reference child = EasyMock.createMock(Reference.class);
+        ReferenceBinding child = EasyMock.createMock(ReferenceBinding.class);
         EasyMock.expect(child.getInboundWire()).andReturn(wire);
         EasyMock.replay(child);
         CompositeComponent composite = EasyMock.createMock(CompositeComponent.class);

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java (from r491325, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeLoaderNoBindingTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeLoaderNoBindingTestCase.java&r1=491325&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeLoaderNoBindingTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java Sun Dec 31 10:58:58 2006
@@ -33,6 +33,7 @@
 import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
@@ -42,23 +43,31 @@
 /**
  * @version $Rev$ $Date$
  */
-public class ComponentTypeLoaderNoBindingTestCase extends TestCase {
+public class ComponentLoaderNoBindingTestCase extends TestCase {
     private static final QName COMPONENT = new QName(XML_NAMESPACE_1_0, "component");
     private ComponentLoader loader;
     private XMLStreamReader reader;
     private BoundServiceDefinition service;
+    private BoundReferenceDefinition reference;
 
     public void testNoServiceBinding() throws Exception {
         loader.load(null, null, reader, null);
         assert service.getBindings().get(0) instanceof LocalBindingDefinition;
     }
 
+    public void testNoReferenceBinding() throws Exception {
+        loader.load(null, null, reader, null);
+        assert reference.getBindings().get(0) instanceof LocalBindingDefinition;
+    }
+
     protected void setUp() throws Exception {
         super.setUp();
         service = new BoundServiceDefinition();
+        reference = new BoundReferenceDefinition();
         PojoComponentType<BoundServiceDefinition, ReferenceDefinition, Property<?>> type =
             new PojoComponentType<BoundServiceDefinition, ReferenceDefinition, Property<?>>();
         type.add(service);
+        type.add(reference);
         JavaImplementation impl = new JavaImplementation();
         impl.setComponentType(type);
         LoaderRegistry registry = EasyMock.createMock(LoaderRegistry.class);

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java?view=auto&rev=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java Sun Dec 31 10:58:58 2006
@@ -0,0 +1,130 @@
+/*
+ * 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.core.loader;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.osoa.sca.Version;
+
+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.model.BindingDefinition;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
+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.ServiceContract;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.deployer.RootDeploymentContext;
+import org.easymock.EasyMock;
+
+/**
+ * Verifies loading of a reference definition from an XML-based assembly
+ *
+ * @version $Rev$ $Date$
+ */
+public class ReferenceLoaderTestCase extends TestCase {
+    private static final QName REFERENCE = new QName(Version.XML_NAMESPACE_1_0, "reference");
+
+    private ReferenceLoader loader;
+    private DeploymentContext deploymentContext;
+    private XMLStreamReader mockReader;
+    private LoaderRegistry mockRegistry;
+
+    public void testWithNoInterface() throws LoaderException, XMLStreamException {
+        String name = "referenceDefinition";
+        EasyMock.expect(mockReader.getName()).andReturn(REFERENCE).anyTimes();
+        EasyMock.expect(mockReader.getAttributeValue(null, "name")).andReturn(name);
+        EasyMock.expect(mockReader.getAttributeValue(null, "multiplicity")).andReturn("0..1");
+        EasyMock.expect(mockReader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
+        EasyMock.expect(mockReader.getName()).andReturn(REFERENCE).anyTimes();
+        EasyMock.replay(mockReader);
+        ReferenceDefinition referenceDefinition = loader.load(null, null, mockReader, null);
+        assertNotNull(referenceDefinition);
+        assertEquals(name, referenceDefinition.getName());
+    }
+
+    public void testComponentTypeService() throws LoaderException, XMLStreamException {
+        String name = "reference";
+        EasyMock.expect(mockReader.getName()).andReturn(REFERENCE).anyTimes();
+        EasyMock.expect(mockReader.getAttributeValue(null, "name")).andReturn(name);
+        EasyMock.expect(mockReader.getAttributeValue(null, "multiplicity")).andReturn("0..1");
+        EasyMock.expect(mockReader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
+        EasyMock.expect(mockReader.getName()).andReturn(REFERENCE).anyTimes();
+        EasyMock.replay(mockReader);
+        ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        ReferenceDefinition referenceDefinition = loader.load(null, type, mockReader, null);
+        assertTrue(ReferenceDefinition.class.equals(referenceDefinition.getClass()));
+    }
+
+    public void testMultipleBindings() throws LoaderException, XMLStreamException {
+        String name = "referenceDefinition";
+        EasyMock.expect(mockReader.getName()).andReturn(REFERENCE).anyTimes();
+        EasyMock.expect(mockReader.getAttributeValue(null, "name")).andReturn(name);
+        EasyMock.expect(mockReader.getAttributeValue(null, "multiplicity")).andReturn("0..1");
+        EasyMock.expect(mockReader.next()).andReturn(XMLStreamConstants.START_ELEMENT).times(2);
+        EasyMock.expect(mockReader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
+        EasyMock.expect(mockReader.getName()).andReturn(REFERENCE).anyTimes();
+        EasyMock.replay(mockReader);
+
+        BindingDefinition binding = new BindingDefinition() {
+        };
+        EasyMock.expect(mockRegistry.load(null, null, mockReader, null)).andReturn(binding).times(2);
+        EasyMock.replay(mockRegistry);
+
+        BoundReferenceDefinition referenceDefinition =
+            (BoundReferenceDefinition) loader.load(null, null, mockReader, null);
+        assertEquals(2, referenceDefinition.getBindings().size());
+    }
+
+    public void testWithInterface() throws LoaderException, XMLStreamException {
+        String name = "referenceDefinition";
+        ServiceContract sc = new ServiceContract() {
+        };
+        EasyMock.expect(mockReader.getName()).andReturn(REFERENCE).anyTimes();
+        EasyMock.expect(mockReader.getAttributeValue(null, "name")).andReturn(name);
+        EasyMock.expect(mockReader.getAttributeValue(null, "multiplicity")).andReturn("0..1");
+        EasyMock.expect(mockReader.next()).andReturn(XMLStreamConstants.START_ELEMENT);
+        EasyMock.expect(mockRegistry.load(null, null, mockReader, deploymentContext)).andReturn(sc);
+        EasyMock.expect(mockReader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
+
+        EasyMock.replay(mockReader);
+        EasyMock.replay(mockRegistry);
+
+        ReferenceDefinition referenceDefinition = loader.load(null, null, mockReader, deploymentContext);
+        assertNotNull(referenceDefinition);
+        assertEquals(name, referenceDefinition.getName());
+        assertSame(sc, referenceDefinition.getServiceContract());
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        mockReader = EasyMock.createStrictMock(XMLStreamReader.class);
+        mockRegistry = EasyMock.createMock(LoaderRegistry.class);
+        loader = new ReferenceLoader(mockRegistry);
+        deploymentContext = new RootDeploymentContext(null, null, null, null);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java Sun Dec 31 10:58:58 2006
@@ -26,7 +26,7 @@
 import java.util.Map;
 
 import org.apache.tuscany.spi.component.Component;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.DataType;
@@ -46,6 +46,7 @@
 import org.apache.tuscany.spi.wire.WireInvocationHandler;
 import org.apache.tuscany.spi.wire.WireService;
 import org.apache.tuscany.spi.wire.OutboundChainHolder;
+import org.apache.tuscany.spi.QualifiedName;
 
 import junit.framework.TestCase;
 
@@ -393,7 +394,8 @@
             throw new UnsupportedOperationException();
         }
 
-        public void createWires(Reference reference, ServiceContract<?> contract) {
+        public void createWires(ReferenceBinding referenceBinding, ServiceContract<?> contract,
+                                QualifiedName targetName) {
             throw new UnsupportedOperationException();
         }
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java Sun Dec 31 10:58:58 2006
@@ -19,7 +19,7 @@
 package org.apache.tuscany.spi.builder;
 
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.BindingDefinition;
@@ -29,7 +29,7 @@
 /**
  * Responsible for processing a service or reference in an assembly configured with a particular binding. The builder
  * will create and return corresponding {@link org.apache.tuscany.spi.component.ServiceBinding} or {@link
- * org.apache.tuscany.spi.component.Reference}
+ * org.apache.tuscany.spi.component.ReferenceBinding}
  *
  * @version $Rev$ $Date$
  */
@@ -50,7 +50,8 @@
                          B bindingDefinition,
                          DeploymentContext deploymentContext) throws BuilderException;
 
-    Reference build(CompositeComponent parent,
-                    BoundReferenceDefinition<B> boundReferenceDefinition,
-                    DeploymentContext deploymentContext) throws BuilderException;
+    ReferenceBinding build(CompositeComponent parent,
+                           BoundReferenceDefinition boundReferenceDefinition,
+                           B bindingDefinition,
+                           DeploymentContext deploymentContext) throws BuilderException;
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java Sun Dec 31 10:58:58 2006
@@ -20,15 +20,13 @@
 
 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.component.Reference;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
 
 /**
  * Implementations build <code>SCAObject</code> types from model objects.
@@ -39,46 +37,38 @@
     /**
      * Builds a <code>Component</code> from a <code>ComponentDefinition</code>
      *
-     * @param parent              the composite that will be the parent of the newly built component
-     * @param componentDefinition the component definition as parsed from an SCA assembly
-     * @param deploymentContext   the current deployment context
+     * @param parent     the composite that will be the parent of the newly built component
+     * @param definition the component definition as parsed from an SCA assembly
+     * @param context    the current deployment context
      * @return the newly created component
      * @throws BuilderException
      */
     <I extends Implementation<?>> Component build(CompositeComponent parent,
-                                                  ComponentDefinition<I> componentDefinition,
-                                                  DeploymentContext deploymentContext) throws BuilderException;
+                                                  ComponentDefinition<I> definition,
+                                                  DeploymentContext context) throws BuilderException;
 
     /**
      * Builds a <code>Service</code> and its bindings from a <code>BoundServiceDefinition</code>
      *
-     * @param parent            the composite that will be the parent of the newly built service
-     * @param serviceDefinition the service definition as parsed from an SCA assembly
-     * @param deploymentContext the current deployment context
+     * @param parent     the composite that will be the parent of the newly built service
+     * @param definition the service definition as parsed from an SCA assembly
+     * @param context    the current deployment context
      * @return the newly created service
      * @throws BuilderException
      */
-    Service build(CompositeComponent parent,
-                  BoundServiceDefinition serviceDefinition,
-                  DeploymentContext deploymentContext) throws BuilderException;
+    Service build(CompositeComponent parent, BoundServiceDefinition definition, DeploymentContext context)
+        throws BuilderException;
 
     /**
      * Builds a <code>Reference</code> and its bindings from a <code>BoundReferenceDefinition</code>
      *
-     * @param parent              the composite that will be the parent of the newly built reference
-     * @param referenceDefinition the reference definition as parsed from an SCA assembly
-     * @param deploymentContext   the current deployment context
+     * @param parent     the composite that will be the parent of the newly built reference
+     * @param definition the reference definition as parsed from an SCA assembly
+     * @param context    the current deployment context
      * @return the newly created reference
      * @throws BuilderException
      */
-    <B extends BindingDefinition> SCAObject build(CompositeComponent parent,
-                                                  BoundReferenceDefinition<B> referenceDefinition,
-                                                  DeploymentContext deploymentContext) throws BuilderException;
+    Reference build(CompositeComponent parent, BoundReferenceDefinition definition, DeploymentContext context)
+        throws BuilderException;
 
-    /**
-     * @deprecated
-     */
-    SCAObject build(CompositeComponent parent,
-                    ReferenceDefinition referenceDefinition,
-                    DeploymentContext deploymentContext) throws BuilderException;
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java Sun Dec 31 10:58:58 2006
@@ -52,9 +52,4 @@
      */
     <B extends BindingDefinition> void register(Class<B> implClass, BindingBuilder<B> builder);
 
-    /**
-     * @deprecated
-     */
-    void register(BindlessBuilder builder);
-
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java Sun Dec 31 10:58:58 2006
@@ -74,19 +74,21 @@
      */
     TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire)
         throws TargetInvokerCreationException;
-    
+
     /**
      * Gets the component definition associated with the component.
+     *
      * @return Definition associated with the component.
      */
     ComponentDefinition getComponentDefinition();
-    
+
     /**
      * Gets the component definition associated with the component.
+     *
      * @param definition Definition associated with the component.
-     * TODO This shouldn't be mutable, rather set during construction. However,
-     * passing it in the constructor of the implementing class has implications 
-     * in the usage of various types in the inheritance tree.
+     * TODO This shouldn't be mutable, rather set during
+     *                   construction. However, passing it in the constructor of the implementing class has implications
+     *                   in the usage of various types in the inheritance tree.
      * @deprecated Remove this when immutability is enforced in the implemenation tree.
      */
     void setComponentDefinition(ComponentDefinition definition);

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java?view=auto&rev=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java Sun Dec 31 10:58:58 2006
@@ -0,0 +1,34 @@
+package org.apache.tuscany.spi.component;
+
+import java.util.List;
+
+import org.apache.tuscany.spi.model.ServiceContract;
+
+/**
+ * The runtime instantiation of an SCA reference
+ *
+ * @version $Rev$ $Date$
+ */
+public interface Reference extends SCAObject {
+
+    /**
+     * Returns the contract for the reference.
+     *
+     * @return the contract for the reference.
+     */
+    ServiceContract<?> getServiceContract();
+
+    /**
+     * Returns the collection of bindings configured for the reference.
+     *
+     * @return the collection of bindings configured for the reference.
+     */
+    List<ReferenceBinding> getReferenceBindings();
+
+    /**
+     * Adds a binding the reference is configured with.
+     *
+     * @param binding the  binding the reference is configured with.
+     */
+    void addReferenceBinding(ReferenceBinding binding);
+}

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

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

Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ReferenceBinding.java (from r491316, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ReferenceBinding.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java&r1=491316&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ReferenceBinding.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ReferenceBinding.java Sun Dec 31 10:58:58 2006
@@ -29,7 +29,14 @@
  *
  * @version $Rev$ $Date$
  */
-public interface Reference extends SCAObject {
+public interface ReferenceBinding extends SCAObject {
+
+    /**
+     * Sets the parent reference for the binding
+     *
+     * @param reference the parent reference for the binding
+     */
+    void setReference(Reference reference);
 
     /**
      * Returns the inbound wire for flowing a request through the reference

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

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

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ServiceBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ServiceBinding.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ServiceBinding.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ServiceBinding.java Sun Dec 31 10:58:58 2006
@@ -31,6 +31,11 @@
  */
 public interface ServiceBinding extends SCAObject {
 
+    /**
+     * Sets the parent service for the binding
+     *
+     * @param service the parent service for the binding
+     */
     void setService(Service service);
 
     /**

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java Sun Dec 31 10:58:58 2006
@@ -19,14 +19,13 @@
 package org.apache.tuscany.spi.extension;
 
 import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Scope;
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BindingBuilder;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.BindingDefinition;
@@ -40,7 +39,6 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-@Scope("COMPOSITE")
 public abstract class BindingBuilderExtension<B extends BindingDefinition> implements BindingBuilder<B> {
 
     protected BuilderRegistry builderRegistry;
@@ -68,9 +66,10 @@
         return null;
     }
 
-    public Reference build(CompositeComponent parent,
-                           BoundReferenceDefinition<B> boundReferenceDefinition,
-                           DeploymentContext deploymentContext) throws BuilderException {
+    public ReferenceBinding build(CompositeComponent parent,
+                                  BoundReferenceDefinition boundReferenceDefinition,
+                                  B bindingDefinition,
+                                  DeploymentContext deploymentContext) throws BuilderException {
         return null;
     }
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java Sun Dec 31 10:58:58 2006
@@ -19,7 +19,6 @@
 package org.apache.tuscany.spi.extension;
 
 import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Scope;
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
@@ -28,9 +27,9 @@
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.spi.wire.WireService;
-import org.apache.tuscany.spi.services.work.WorkScheduler;
 import org.apache.tuscany.spi.policy.PolicyBuilderRegistry;
+import org.apache.tuscany.spi.services.work.WorkScheduler;
+import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.api.annotation.Monitor;
 
@@ -40,9 +39,7 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-@Scope("COMPOSITE")
 public abstract class ComponentBuilderExtension<I extends Implementation<?>> implements ComponentBuilder<I> {
-
     protected BuilderRegistry builderRegistry;
     protected ScopeRegistry scopeRegistry;
     protected WireService wireService;



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