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 2007/01/12 14:49:09 UTC

svn commit: r495573 - in /incubator/tuscany/java/sca/kernel/spi/src: main/java/org/apache/tuscany/spi/component/ main/java/org/apache/tuscany/spi/extension/ test/java/org/apache/tuscany/spi/extension/

Author: jmarino
Date: Fri Jan 12 05:49:08 2007
New Revision: 495573

URL: http://svn.apache.org/viewvc?view=rev&rev=495573
Log:
fix autowire registration bug for composite services

Added:
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionAutowireTestCase.java   (with props)
Modified:
    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/extension/CompositeComponentExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionTestCase.java

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=495573&r1=495572&r2=495573
==============================================================================
--- 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 Fri Jan 12 05:49:08 2007
@@ -19,6 +19,7 @@
 package org.apache.tuscany.spi.component;
 
 import java.util.List;
+import java.util.Collection;
 
 import org.w3c.dom.Document;
 
@@ -65,7 +66,15 @@
      * @return the system wire or null if not found
      */
     InboundWire getInboundSystemWire(String serviceName);
-    
+
+    /**
+     * Returns a map of inbound system wires.
+     *
+     * @return a map of inbound system wires.
+     */
+    Collection<InboundWire> getInboundSystemWires();
+
+
     /**
      * Register a simple Java Object as a system component. This is primarily intended for use by bootstrap code to
      * create the initial configuration components.

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=495573&r1=495572&r2=495573
==============================================================================
--- 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 Fri Jan 12 05:49:08 2007
@@ -35,7 +35,6 @@
 import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.DuplicateNameException;
-import org.apache.tuscany.spi.component.IllegalTargetException;
 import org.apache.tuscany.spi.component.InvalidAutowireInterface;
 import org.apache.tuscany.spi.component.PrepareException;
 import org.apache.tuscany.spi.component.Reference;
@@ -257,20 +256,26 @@
         }
     }
 
+    public Collection<InboundWire> getInboundSystemWires() {
+        synchronized (systemServices) {
+            List<InboundWire> map = new ArrayList<InboundWire>();
+            for (Service service : systemServices) {
+                for (ServiceBinding binding : service.getServiceBindings()) {
+                    InboundWire wire = binding.getInboundWire();
+                    if (Wire.LOCAL_BINDING.equals(wire.getBindingType())) {
+                        map.add(wire);
+                    }
+                }
+            }
+            return map;
+        }
+    }
+
     public InboundWire resolveAutowire(Class<?> instanceInterface) throws TargetResolutionException {
         // FIXME JNB make this faster and thread safe
         for (Map.Entry<Class, InboundWire> service : autowireInternal.entrySet()) {
             if (instanceInterface.isAssignableFrom(service.getKey())) {
-                InboundWire wire = service.getValue();
-                SCAObject parent = wire.getContainer();
-
-                if (parent instanceof AtomicComponent
-                    || parent instanceof ReferenceBinding
-                    || parent instanceof ServiceBinding) {
-                    return wire;
-                } else {
-                    throw new IllegalTargetException("Autowire target must be a system type", parent.getName());
-                }
+                return service.getValue();
             }
         }
         if (getParent() != null) {
@@ -406,13 +411,13 @@
         }
     }
 
-    protected void registerAutowireInternal(Class<?> interfaze, InboundWire wire, boolean isSystem)
+    protected void registerAutowireInternal(Class<?> interfaze, InboundWire wire, boolean system)
         throws InvalidAutowireInterface {
         if (interfaze == null) {
             // The ServiceContract is not from Java
             return;
         }
-        if (isSystem()) {
+        if (system) {
             if (systemAutowireInternal.containsKey(interfaze)) {
                 return;
             }
@@ -500,15 +505,21 @@
     }
 
     protected void registerAutowire(CompositeComponent component) throws InvalidAutowireInterface {
-        Collection<InboundWire> wires = component.getInboundWires();
-        for (InboundWire wire : wires) {
-            Class<?> clazz = wire.getServiceContract().getInterfaceClass();
-            registerAutowireInternal(clazz, wire, false);
-        }
-        wires = component.getInboundWires();
-        for (InboundWire wire : wires) {
-            Class<?> clazz = wire.getServiceContract().getInterfaceClass();
-            registerAutowireInternal(clazz, wire, true);
+        if (component.isSystem()) {
+            // the composite is under the system hierarchy so only register its system services
+            Collection<InboundWire> wires = component.getInboundSystemWires();
+            for (InboundWire wire : wires) {
+                Class<?> clazz = wire.getServiceContract().getInterfaceClass();
+                registerAutowireInternal(clazz, wire, true);
+            }
+
+        } else {
+            // the composite is under the application hierarchy so only register its non-system services
+            Collection<InboundWire> wires = component.getInboundWires();
+            for (InboundWire wire : wires) {
+                Class<?> clazz = wire.getServiceContract().getInterfaceClass();
+                registerAutowireInternal(clazz, wire, false);
+            }
         }
     }
 

Added: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionAutowireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionAutowireTestCase.java?view=auto&rev=495573
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionAutowireTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionAutowireTestCase.java Fri Jan 12 05:49:08 2007
@@ -0,0 +1,302 @@
+/*
+ * 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.extension;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.ScopeContainer;
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.Wire;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class CompositeComponentExtensionAutowireTestCase extends TestCase {
+    private CompositeComponent composite;
+    private ServiceContract<?> contract;
+    private ServiceContract<?> contract2;
+
+    public void testAutowireAtomicComponent() throws Exception {
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ServiceBinding binding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        List<InboundWire> wires = new ArrayList<InboundWire>();
+        wires.add(wire);
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        EasyMock.expect(component.getInboundWires()).andReturn(wires).atLeastOnce();
+        EasyMock.expect(component.isSystem()).andReturn(false).atLeastOnce();
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.replay(component);
+        composite.register(component);
+        assertEquals(wire, composite.resolveAutowire(Foo.class));
+    }
+
+    public void testAutowireSystemAtomicComponent() throws Exception {
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ServiceBinding binding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        List<InboundWire> wires = new ArrayList<InboundWire>();
+        wires.add(wire);
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        EasyMock.expect(component.getInboundWires()).andReturn(wires).atLeastOnce();
+        EasyMock.expect(component.isSystem()).andReturn(true).atLeastOnce();
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.replay(component);
+        composite.register(component);
+        assertEquals(wire, composite.resolveSystemAutowire(Foo.class));
+    }
+
+    public void testAutowireSystemCompositeComponent() throws Exception {
+        // configure service
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ServiceBinding binding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        Service service = EasyMock.createMock(Service.class);
+        EasyMock.expect(service.getName()).andReturn("service").atLeastOnce();
+        EasyMock.expect(service.isSystem()).andReturn(false).atLeastOnce();
+        service.getServiceBindings();
+        List<ServiceBinding> bindings = new ArrayList<ServiceBinding>();
+        bindings.add(binding);
+        EasyMock.expectLastCall().andReturn(bindings).atLeastOnce();
+        EasyMock.replay(service);
+
+        // configure system service
+        InboundWire systemWire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(systemWire.getServiceContract()).andReturn(contract2).atLeastOnce();
+        EasyMock.expect(systemWire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(systemWire);
+        ServiceBinding systemBinding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(systemBinding.getInboundWire()).andReturn(systemWire).atLeastOnce();
+        EasyMock.replay(systemBinding);
+        Service systemService = EasyMock.createMock(Service.class);
+        EasyMock.expect(systemService.getName()).andReturn("systemService").atLeastOnce();
+        EasyMock.expect(systemService.isSystem()).andReturn(true).atLeastOnce();
+        systemService.getServiceBindings();
+        List<ServiceBinding> systemBindings = new ArrayList<ServiceBinding>();
+        systemBindings.add(systemBinding);
+        EasyMock.expectLastCall().andReturn(systemBindings).atLeastOnce();
+        EasyMock.replay(systemService);
+
+        CompositeComponent child = new MockComposite(true);
+        child.register(service);
+        child.register(systemService);
+        composite.register(child);
+        // since the child is registered under the system hierarchy, its services should not be visible from the
+        // applicaiton hierarchy
+        assertNull(composite.resolveAutowire(Foo.class));
+        assertEquals(systemWire, composite.resolveSystemAutowire(Bar.class));
+    }
+
+    public void testAutowireCompositeComponent() throws Exception {
+        // configure service
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ServiceBinding binding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        Service service = EasyMock.createMock(Service.class);
+        EasyMock.expect(service.getName()).andReturn("service").atLeastOnce();
+        EasyMock.expect(service.isSystem()).andReturn(false).atLeastOnce();
+        service.getServiceBindings();
+        List<ServiceBinding> bindings = new ArrayList<ServiceBinding>();
+        bindings.add(binding);
+        EasyMock.expectLastCall().andReturn(bindings).atLeastOnce();
+        EasyMock.replay(service);
+
+        // configure system service
+        InboundWire systemWire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(systemWire.getServiceContract()).andReturn(contract2).atLeastOnce();
+        EasyMock.expect(systemWire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(systemWire);
+        ServiceBinding systemBinding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(systemBinding.getInboundWire()).andReturn(systemWire).atLeastOnce();
+        EasyMock.replay(systemBinding);
+        Service systemService = EasyMock.createMock(Service.class);
+        EasyMock.expect(systemService.getName()).andReturn("systemService").atLeastOnce();
+        EasyMock.expect(systemService.isSystem()).andReturn(true).atLeastOnce();
+        systemService.getServiceBindings();
+        List<ServiceBinding> systemBindings = new ArrayList<ServiceBinding>();
+        systemBindings.add(systemBinding);
+        EasyMock.expectLastCall().andReturn(systemBindings).atLeastOnce();
+        EasyMock.replay(systemService);
+
+        CompositeComponent child = new MockComposite();
+        child.register(service);
+        child.register(systemService);
+        composite.register(child);
+        // since the child is registered under the application hierarchy, its services should not be visible from the
+        // system hierarchy
+        assertEquals(wire, composite.resolveAutowire(Foo.class));
+        assertNull(composite.resolveSystemAutowire(Bar.class));
+    }
+
+    public void testAutowireSystemService() throws Exception {
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ServiceBinding binding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        Service service = EasyMock.createMock(Service.class);
+        EasyMock.expect(service.getName()).andReturn("service").atLeastOnce();
+        EasyMock.expect(service.isSystem()).andReturn(true).atLeastOnce();
+        service.getServiceBindings();
+        List<ServiceBinding> bindings = new ArrayList<ServiceBinding>();
+        bindings.add(binding);
+        EasyMock.expectLastCall().andReturn(bindings).atLeastOnce();
+        EasyMock.replay(service);
+        composite.register(service);
+        assertEquals(wire, composite.resolveSystemExternalAutowire(Foo.class));
+    }
+
+    public void testAutowireService() throws Exception {
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ServiceBinding binding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        Service service = EasyMock.createMock(Service.class);
+        EasyMock.expect(service.getName()).andReturn("service").atLeastOnce();
+        EasyMock.expect(service.isSystem()).andReturn(false).atLeastOnce();
+        service.getServiceBindings();
+        List<ServiceBinding> bindings = new ArrayList<ServiceBinding>();
+        bindings.add(binding);
+        EasyMock.expectLastCall().andReturn(bindings).atLeastOnce();
+        EasyMock.replay(service);
+        composite.register(service);
+        assertEquals(wire, composite.resolveExternalAutowire(Foo.class));
+    }
+
+    public void testAutowireReference() throws Exception {
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ReferenceBinding binding = EasyMock.createMock(ReferenceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        Reference reference = EasyMock.createMock(Reference.class);
+        EasyMock.expect(reference.getName()).andReturn("service").atLeastOnce();
+        EasyMock.expect(reference.isSystem()).andReturn(false).atLeastOnce();
+        reference.getReferenceBindings();
+        List<ReferenceBinding> bindings = new ArrayList<ReferenceBinding>();
+        bindings.add(binding);
+        EasyMock.expectLastCall().andReturn(bindings).atLeastOnce();
+        EasyMock.replay(reference);
+        composite.register(reference);
+        assertEquals(wire, composite.resolveAutowire(Foo.class));
+    }
+
+    public void testAutowireSystemReference() throws Exception {
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING).atLeastOnce();
+        EasyMock.replay(wire);
+        ReferenceBinding binding = EasyMock.createMock(ReferenceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+        Reference reference = EasyMock.createMock(Reference.class);
+        EasyMock.expect(reference.getName()).andReturn("service").atLeastOnce();
+        EasyMock.expect(reference.isSystem()).andReturn(true).atLeastOnce();
+        reference.getReferenceBindings();
+        List<ReferenceBinding> bindings = new ArrayList<ReferenceBinding>();
+        bindings.add(binding);
+        EasyMock.expectLastCall().andReturn(bindings).atLeastOnce();
+        EasyMock.replay(reference);
+        composite.register(reference);
+        assertEquals(wire, composite.resolveSystemAutowire(Foo.class));
+    }
+
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        contract = new ServiceContract<Object>(Foo.class) {
+
+        };
+        contract2 = new ServiceContract<Object>(Bar.class) {
+
+        };
+        composite = new MockComposite();
+    }
+
+    private interface Foo {
+
+    }
+
+    private interface Bar {
+
+    }
+
+    private static class MockComposite extends CompositeComponentExtension {
+        private boolean system;
+
+        public MockComposite() {
+            super("foo", null, null, null);
+        }
+
+        public MockComposite(boolean system) {
+            super("foo", null, null, null);
+            this.system = system;
+        }
+
+        public boolean isSystem() {
+            return system;
+        }
+
+        public TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire)
+            throws TargetInvokerCreationException {
+            throw new UnsupportedOperationException();
+        }
+
+        public void setScopeContainer(ScopeContainer scopeContainer) {
+            throw new UnsupportedOperationException();
+        }
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionAutowireTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/CompositeComponentExtensionAutowireTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

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=495573&r1=495572&r2=495573
==============================================================================
--- 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 Fri Jan 12 05:49:08 2007
@@ -288,6 +288,30 @@
         assertNotNull(composite.getInboundSystemWire("service"));
     }
 
+    public void testInboundSystemWires() throws Exception {
+        ServiceContract<Object> contract = new ServiceContract<Object>(Object.class) {
+        };
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING);
+        wire.getServiceContract();
+        EasyMock.expectLastCall().andReturn(contract).atLeastOnce();
+        EasyMock.replay(wire);
+        ServiceBinding binding = EasyMock.createMock(ServiceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        EasyMock.replay(binding);
+
+        Service service = EasyMock.createMock(Service.class);
+        EasyMock.expect(service.getName()).andReturn("service").atLeastOnce();
+        EasyMock.expect(service.isSystem()).andReturn(true).atLeastOnce();
+        List<ServiceBinding> bindings = new ArrayList<ServiceBinding>();
+        bindings.add(binding);
+        service.getServiceBindings();
+        EasyMock.expectLastCall().andReturn(bindings).atLeastOnce();
+        EasyMock.replay(service);
+        composite.register(service);
+        assertEquals(wire, composite.getInboundSystemWires().iterator().next());
+    }
+
     protected void setUp() throws Exception {
         super.setUp();
         contract = new ServiceContract<Object>(Object.class) {



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