You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2007/03/27 14:18:58 UTC

svn commit: r522885 [3/4] - in /incubator/tuscany/branches/sca-java-integration: samples/sca/calculator/src/main/resources/ samples/sca/composite-impl/src/main/resources/ samples/sca/echo-binding/src/main/java/echo/ samples/sca/echo-binding/src/test/re...

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java Tue Mar 27 05:18:53 2007
@@ -1,22 +1,22 @@
 package org.apache.tuscany.core.implementation.system.builder;
 
+import junit.framework.TestCase;
+
+import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
-import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.implementation.java.ConstructorDefinition;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.implementation.java.Resource;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.wire.InboundWire;
-
-import junit.framework.TestCase;
-import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
 import org.easymock.EasyMock;
 
 /**
@@ -24,7 +24,7 @@
  */
 public class SystemComponentBuilderResourceTestCase extends TestCase {
 
-    @SuppressWarnings("uncjecked")
+    @SuppressWarnings("unchecked")
     public void testResourceInjection() throws Exception {
         ScopeContainer container = EasyMock.createNiceMock(ScopeContainer.class);
         DeploymentContext ctx = EasyMock.createNiceMock(DeploymentContext.class);
@@ -35,8 +35,8 @@
         builder.setScopeRegistry(registry);
         ConstructorDefinition<Foo> ctorDef = new ConstructorDefinition<SystemComponentBuilderResourceTestCase.Foo>(
             SystemComponentBuilderResourceTestCase.Foo.class.getConstructor());
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         Resource resource = new Resource();
         resource.setType(String.class);
         resource.setName("resource");

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/loader/SystemComponentTypeLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/loader/SystemComponentTypeLoaderTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/loader/SystemComponentTypeLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/loader/SystemComponentTypeLoaderTestCase.java Tue Mar 27 05:18:53 2007
@@ -22,7 +22,7 @@
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.implementation.java.ProcessingException;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import junit.framework.TestCase;
@@ -58,7 +58,7 @@
         assertEquals(BasicInterface.class, service.getServiceContract().getInterfaceClass());
         Property<?> property = componentType.getProperties().get("publicProperty");
         assertEquals(String.class, property.getJavaType());
-        ReferenceDefinition referenceDefinition = componentType.getReferences().get("protectedReference");
+        AbstractReferenceDefinition referenceDefinition = componentType.getReferences().get("protectedReference");
         assertEquals(BasicInterface.class, referenceDefinition.getServiceContract().getInterfaceClass());
     }
 

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderPropertyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderPropertyTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderPropertyTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderPropertyTestCase.java Tue Mar 27 05:18:53 2007
@@ -25,7 +25,8 @@
 import org.apache.tuscany.spi.implementation.java.JavaMappedProperty;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.model.ComponentDefinition;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import junit.framework.TestCase;
@@ -48,8 +49,8 @@
     @SuppressWarnings("unchecked")
     public void testPropertyHandling() throws Exception {
         SystemComponentBuilder builder = new SystemComponentBuilder();
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, JavaMappedProperty<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, JavaMappedProperty<?>>();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, JavaMappedProperty<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, JavaMappedProperty<?>>();
         type.setConstructorDefinition(new ConstructorDefinition<Foo>(Foo.class.getConstructor((Class[]) null)));
         JavaMappedProperty<String> property = new JavaMappedProperty<String>();
         property.setName("test");

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java Tue Mar 27 05:18:53 2007
@@ -28,10 +28,11 @@
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 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.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import junit.framework.TestCase;
@@ -46,7 +47,7 @@
     private ComponentLoader loader;
     private XMLStreamReader reader;
     private ServiceDefinition service;
-    private ReferenceDefinition reference;
+    private ComponentTypeReferenceDefinition reference;
 
     public void testNoServiceBinding() throws Exception {
         loader.load(null, null, reader, null);
@@ -61,9 +62,9 @@
     protected void setUp() throws Exception {
         super.setUp();
         service = new ServiceDefinition();
-        reference = new ReferenceDefinition();
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        reference = new ComponentTypeReferenceDefinition();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         type.add(service);
         type.add(reference);
         JavaImplementation impl = new JavaImplementation(null, type);
@@ -81,6 +82,7 @@
         EasyMock.expect(reader.getName()).andReturn(COMPONENT).atLeastOnce();
         EasyMock.expect(reader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
         EasyMock.expect(reader.getAttributeValue(null, "name")).andReturn("foo");
+        EasyMock.expect(reader.getAttributeValue(null, "autowire")).andReturn("false");
         EasyMock.expect(reader.getAttributeValue(null, "initLevel")).andReturn("0");
         EasyMock.expect(reader.nextTag()).andReturn(1);
         EasyMock.replay(reader);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderPropertyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderPropertyTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderPropertyTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderPropertyTestCase.java Tue Mar 27 05:18:53 2007
@@ -29,9 +29,10 @@
 import org.apache.tuscany.spi.loader.MissingPropertyValueException;
 import org.apache.tuscany.spi.loader.PropertyObjectFactory;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.easymock.EasyMock;
 
@@ -48,7 +49,7 @@
      */
     public void testMissingPropertyValueException() throws LoaderException, XMLStreamException {
         PojoComponentType<?, ?, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         Property property = new Property();
         property.setName("name");
         property.setMustSupply(true);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderReferenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderReferenceTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderReferenceTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderReferenceTestCase.java Tue Mar 27 05:18:53 2007
@@ -13,10 +13,11 @@
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.loader.UndefinedReferenceException;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 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.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import junit.framework.TestCase;
@@ -48,8 +49,8 @@
 
     protected void setUp() throws Exception {
         super.setUp();
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         JavaImplementation impl = new JavaImplementation(null, type);
         reader = EasyMock.createMock(XMLStreamReader.class);
         EasyMock.expect(reader.getName()).andReturn(COMPONENT);
@@ -57,6 +58,8 @@
             .andReturn(NAME);
         EasyMock.expect(reader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("initLevel")))
             .andReturn(null);
+        EasyMock.expect(reader.getAttributeValue((String) isNull(), EasyMock.eq("autowire")))
+        .andReturn("false");
         EasyMock.expect(reader.getAttributeValue(EasyMock.isA(String.class), EasyMock.isA(String.class)))
             .andReturn(null);
         EasyMock.expect(reader.nextTag()).andReturn(0);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderTestCase.java Tue Mar 27 05:18:53 2007
@@ -33,10 +33,11 @@
 import org.apache.tuscany.spi.loader.PropertyObjectFactory;
 import org.apache.tuscany.spi.loader.UnrecognizedElementException;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 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.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import junit.framework.TestCase;
@@ -67,6 +68,8 @@
             .andReturn(NAME);
         EasyMock.expect(mockReader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("initLevel")))
             .andReturn(null);
+        EasyMock.expect(mockReader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("autowire")))
+        .andReturn("false");
         EasyMock.expect(mockReader.getAttributeValue(EasyMock.isA(String.class), EasyMock.isA(String.class)))
             .andReturn(null);
         EasyMock.expect(mockReader.nextTag()).andReturn(0);
@@ -102,6 +105,8 @@
             .andReturn(NAME);
         EasyMock.expect(mockReader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("initLevel")))
             .andReturn("20");
+        EasyMock.expect(mockReader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("autowire")))
+        .andReturn("false");
         EasyMock.expect(mockReader.nextTag()).andReturn(0);
         EasyMock.expect(mockReader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
         EasyMock.replay(mockReader);
@@ -132,7 +137,7 @@
 
     public void testLoadPropertyWithSource() throws LoaderException, XMLStreamException {
         PojoComponentType<?, ?, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         Property property = new Property();
         property.setName("name");
         type.add(property);
@@ -158,6 +163,8 @@
             .andReturn(NAME);
         EasyMock.expect(mockReader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("initLevel")))
             .andReturn(null);
+        EasyMock.expect(mockReader.getAttributeValue((String) EasyMock.isNull(), EasyMock.eq("autowire")))
+        .andReturn("false");
         EasyMock.expect(mockReader.getAttributeValue(EasyMock.isA(String.class), EasyMock.isA(String.class)))
             .andReturn(null);
         EasyMock.expect(mockReader.nextTag()).andReturn(0);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderValidationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderValidationTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderValidationTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderValidationTestCase.java Tue Mar 27 05:18:53 2007
@@ -11,10 +11,12 @@
 import org.apache.tuscany.spi.loader.MissingReferenceException;
 import org.apache.tuscany.spi.loader.PropertyObjectFactory;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentReferenceDefinition;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Multiplicity;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.model.ReferenceTarget;
 
@@ -30,25 +32,27 @@
     private ComponentLoaderValidationTestCase.TestLoader loader;
 
     public void testValidation() throws LoaderException, XMLStreamException {
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
-        ReferenceDefinition refDefinition = new ReferenceDefinition();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition refDefinition = new ComponentTypeReferenceDefinition();
         refDefinition.setName("name");
         type.add(refDefinition);
         JavaImplementation impl = new JavaImplementation(null, type);
         ComponentDefinition<Implementation<?>> defn = new ComponentDefinition<Implementation<?>>(impl);
-        ReferenceTarget target = new ReferenceTarget();
+        ComponentReferenceDefinition compRef = new ComponentReferenceDefinition(refDefinition);
+        compRef.addTarget(URI.create("uri"));
+        defn.add(compRef);
+        /*ReferenceTarget target = new ReferenceTarget();
         target.setReferenceName("name");
-        defn.add(target);
+        defn.add(target);*/
         loader.validate(defn);
     }
 
-    public void testReferenceNotSet() throws LoaderException, XMLStreamException {
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
-        ReferenceDefinition refDefinition = new ReferenceDefinition();
+    /*public void testReferenceNotSet() throws LoaderException, XMLStreamException {
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition refDefinition = new ComponentTypeReferenceDefinition();
         refDefinition.setName("name");
-        refDefinition.setRequired(true);
         type.add(refDefinition);
         JavaImplementation impl = new JavaImplementation(null, type);
         ComponentDefinition<Implementation<?>> defn = new ComponentDefinition<Implementation<?>>(impl);
@@ -58,14 +62,13 @@
         } catch (MissingReferenceException e) {
             // expected
         }
-    }
+    }*/
 
     public void testNotRequiredReference() throws LoaderException, XMLStreamException {
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
-        ReferenceDefinition refDefinition = new ReferenceDefinition();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition refDefinition = new ComponentTypeReferenceDefinition();
         refDefinition.setName("name");
-        refDefinition.setRequired(false);
         type.add(refDefinition);
         JavaImplementation impl = new JavaImplementation(null, type);
         ComponentDefinition<Implementation<?>> defn = new ComponentDefinition<Implementation<?>>(impl);
@@ -73,20 +76,23 @@
     }
 
     public void testReferenceMultiplicity() throws LoaderException, XMLStreamException {
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
-        ReferenceDefinition refDefinition = new ReferenceDefinition();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition refDefinition = new ComponentTypeReferenceDefinition();
         refDefinition.setName("r1");
-        refDefinition.setRequired(true);
         refDefinition.setMultiplicity(Multiplicity.ONE_N);
         type.add(refDefinition);
         JavaImplementation impl = new JavaImplementation(null, type);
         ComponentDefinition<Implementation<?>> defn = new ComponentDefinition<Implementation<?>>(impl);
-        ReferenceTarget target = new ReferenceTarget();
+        ComponentReferenceDefinition compRef = new ComponentReferenceDefinition(type.getReferences().get("r1"));
+        compRef.addTarget(URI.create("c1"));
+        compRef.addTarget(URI.create("c2"));
+        defn.add(compRef);
+        /*ReferenceTarget target = new ReferenceTarget();
         target.setReferenceName("r1");
         target.addTarget(URI.create("c1"));
         target.addTarget(URI.create("c2"));
-        defn.add(target);
+        defn.add(target);*/
         loader.validate(defn);
 
         refDefinition.setMultiplicity(Multiplicity.ZERO_ONE);
@@ -108,7 +114,9 @@
             // Expected
         }
 
-        target.getTargets().clear();
+        defn = new ComponentDefinition<Implementation<?>>(impl);
+        compRef = new ComponentReferenceDefinition(type.getReferences().get("r1"));
+        defn.add(compRef);
         refDefinition.setMultiplicity(Multiplicity.ONE_ONE);
         try {
             loader.validate(defn);
@@ -130,9 +138,9 @@
 
     }    
     public void testAutowire() throws LoaderException, XMLStreamException {
-        PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new PojoComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
-        ReferenceDefinition refDefinition = new ReferenceDefinition();
+        PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition refDefinition = new ComponentTypeReferenceDefinition();
         refDefinition.setName("name");
         refDefinition.setAutowire(true);
         type.add(refDefinition);

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentReferenceOverridingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentReferenceOverridingTestCase.java?view=auto&rev=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentReferenceOverridingTestCase.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentReferenceOverridingTestCase.java Tue Mar 27 05:18:53 2007
@@ -0,0 +1,178 @@
+/*
+ * 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 java.io.StringReader;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
+import org.apache.tuscany.core.implementation.java.JavaImplementation;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.idl.java.JavaServiceContract;
+import org.apache.tuscany.spi.implementation.java.PojoComponentType;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.loader.ReferenceMultiplicityOverridingException;
+import org.apache.tuscany.spi.model.BindingDefinition;
+import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
+import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.Multiplicity;
+import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.easymock.EasyMock;
+import org.junit.Test;
+
+/**
+ * Tests to verify overriding of aspects of componenttype reference defintions
+ * by component definitions
+ */
+public class ComponentReferenceOverridingTestCase {
+    private static XMLInputFactory xmlFactory = XMLInputFactory.newInstance();;
+    private static LoaderRegistryImpl loaderRegistry;
+
+    public XMLStreamReader getReader(String xml) throws XMLStreamException {
+        XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(xml));
+        reader.next();
+        return reader;
+    }
+
+ 
+    @Test
+    public void testRefDefNoOverriding() throws LoaderException,
+                                      XMLStreamException,
+                                      URISyntaxException {
+        String compDefXml =
+            "<tus:component name='TestComponent' xmlns:tus='http://www.osoa.org/xmlns/sca/1.0'>" 
+            + "<tus:implementation.java class='mockedup'/>"
+            + "</tus:component>";
+
+        TestComponentLoader compLoader = new TestComponentLoader(EasyMock.createMock(LoaderRegistry.class));
+        ComponentDefinition<?> compDef = compLoader.load(null, null, getReader(compDefXml), null);
+        
+        //verify if component inherits referece definitions from componentType
+        Assert.assertNotNull(compDef.getReferences().get("CTRefDef1"));
+        Assert.assertEquals(Multiplicity.ZERO_N.name(), compDef.getReferences().get("CTRefDef1").getMultiplicity().name());
+        Assert.assertEquals("TestComponent1/testService1", 
+                            compDef.getReferences().get("CTRefDef1").getTargets().get(1).toString());
+        Assert.assertTrue(
+          TestIfc1.class.isAssignableFrom(compDef.getReferences().get("CTRefDef1").getServiceContract().getInterfaceClass()));
+        Assert.assertTrue(compDef.getReferences().get("CTRefDef1").getBindings().get(0) instanceof LocalBindingDefinition);
+    }
+    
+    @Test
+    public void testRefDefValidOverriding() throws LoaderException,
+                                      XMLStreamException,
+                                      URISyntaxException {
+        String overridenRef =
+            "<tus:component name='TestComponent' xmlns:tus='http://www.osoa.org/xmlns/sca/1.0'>" 
+            + "<tus:implementation.java class='mockedup'/>"
+            + "<tus:reference name='CTRefDef1' target='OverridingTarget' multiplicity='0..1'>"
+            + "</tus:reference>"
+            + "</tus:component>";
+
+        TestComponentLoader compLoader = new TestComponentLoader(EasyMock.createMock(LoaderRegistry.class));
+        
+        ComponentDefinition<?> compDef = compLoader.load(null, null, getReader(overridenRef), null);
+    
+        //verify if component inherits referece definitions from componentType
+        Assert.assertNotNull(compDef.getReferences().get("CTRefDef1"));
+        Assert.assertEquals(Multiplicity.ZERO_ONE.name(), 
+                            compDef.getReferences().get("CTRefDef1").getMultiplicity().name());
+        Assert.assertEquals("OverridingTarget", 
+                            compDef.getReferences().get("CTRefDef1").getTargets().get(0).toString());
+        Assert.assertTrue(
+          TestIfc1.class.isAssignableFrom(compDef.getReferences().get("CTRefDef1").getServiceContract().getInterfaceClass()));
+        Assert.assertTrue(compDef.getReferences().get("CTRefDef1").getBindings().get(0) instanceof LocalBindingDefinition);
+    }
+    
+    @Test
+    public void testRefDefInValidOverriding() throws LoaderException,
+                                      XMLStreamException,
+                                      URISyntaxException {
+        String overridenRef =
+            "<tus:component name='TestComponent' xmlns:tus='http://www.osoa.org/xmlns/sca/1.0'>" 
+            + "<tus:implementation.java class='mockedup'/>"
+            + "<tus:reference name='CTRefDef1' target='OverridingTarget' multiplicity='1..1'/>"
+            + "</tus:component>";
+
+        TestComponentLoader compLoader = new TestComponentLoader(EasyMock.createMock(LoaderRegistry.class));
+        
+        try {
+            ComponentDefinition<?> compDef = compLoader.load(null, null, getReader(overridenRef), null);
+            Assert.fail();
+        } catch ( ReferenceMultiplicityOverridingException e) {
+            //expected behaviour
+        }
+    }
+
+    
+    public static interface TestIfc1 {
+        public String testMethod1();
+    }
+
+    public class TestComponentLoader extends ComponentLoader {
+
+        public TestComponentLoader(LoaderRegistry registry) {
+            super(registry, null);
+        }
+
+        @Override
+        protected Implementation<?> loadImplementation(CompositeComponent parent,
+                                                       XMLStreamReader reader,
+                                                       DeploymentContext deploymentContext) throws XMLStreamException,
+                                                                                           LoaderException {
+            ComponentTypeReferenceDefinition ctRefDef = new ComponentTypeReferenceDefinition();
+
+            ctRefDef.setName("CTRefDef1");
+            try {
+                ctRefDef.addTarget(new URI("TestComponent1"));
+                ctRefDef.addTarget(new URI("TestComponent1/testService1"));
+            
+                ctRefDef.setMultiplicity(Multiplicity.ZERO_N);
+    
+                JavaServiceContract svcContract = new JavaServiceContract(TestIfc1.class);
+                ctRefDef.setServiceContract(svcContract);
+    
+                BindingDefinition binding1 = new LocalBindingDefinition(new URI("localBindingUri"));
+                ctRefDef.addBinding(binding1);
+            } catch (URISyntaxException e) {
+                //do nothing... unlikely to happen
+            }
+
+            PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> ct =
+                new PojoComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+            ct.add(ctRefDef);
+
+            JavaImplementation javaImpl = new JavaImplementation();
+            javaImpl.setComponentType(ct);
+            reader.next();
+            reader.next();
+            return javaImpl;
+        }
+    }
+}

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeElementLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeElementLoaderTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeElementLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeElementLoaderTestCase.java Tue Mar 27 05:18:53 2007
@@ -26,9 +26,10 @@
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 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.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import junit.framework.TestCase;
@@ -40,8 +41,8 @@
 public class ComponentTypeElementLoaderTestCase extends TestCase {
 
     public void testSpecializedComponentTypePassedIn() throws Exception {
-        ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         ComponentTypeElementLoader loader = new ComponentTypeElementLoader(null);
         XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class);
         EasyMock.expect(reader.getName()).andReturn(ComponentTypeElementLoader.COMPONENT_TYPE);
@@ -55,8 +56,8 @@
     }
 
     public void testComponentTypePassedAsContext() throws Exception {
-        ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         LoaderRegistry registry = EasyMock.createMock(LoaderRegistry.class);
         EasyMock.expect(registry.load((CompositeComponent) EasyMock.isNull(),
             EasyMock.isA(ComponentType.class),

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java Tue Mar 27 05:18:53 2007
@@ -23,21 +23,20 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
-import org.osoa.sca.Constants;
+import junit.framework.TestCase;
 
+import org.apache.tuscany.core.deployer.RootDeploymentContext;
 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.ComponentType;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 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;
+import org.osoa.sca.Constants;
 
 /**
  * Verifies loading of a reference definition from an XML-based assembly
@@ -57,10 +56,13 @@
         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.getAttributeValue(null, "wiredByImpl")).andReturn("false");
+        EasyMock.expect(mockReader.getAttributeValue(null, "target")).andReturn(null);
         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);
+        ComponentTypeReferenceDefinition referenceDefinition = 
+            loader.load(null, new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>(), mockReader, null);
         assertNotNull(referenceDefinition);
         assertEquals(name, referenceDefinition.getName());
     }
@@ -70,13 +72,15 @@
         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.getAttributeValue(null, "wiredByImpl")).andReturn("false");
+        EasyMock.expect(mockReader.getAttributeValue(null, "target")).andReturn(null);
         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()));
+        ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition referenceDefinition = loader.load(null, type, mockReader, null);
+        assertTrue(ComponentTypeReferenceDefinition.class.equals(referenceDefinition.getClass()));
     }
 
     public void testMultipleBindings() throws LoaderException, XMLStreamException {
@@ -84,17 +88,24 @@
         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.getAttributeValue(null, "wiredByImpl")).andReturn("false");
+        EasyMock.expect(mockReader.getAttributeValue(null, "target")).andReturn(null);
         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() {
+            public Object clone() {
+               return null;
+            }
         };
         EasyMock.expect(mockRegistry.load(null, null, mockReader, null)).andReturn(binding).times(2);
         EasyMock.replay(mockRegistry);
 
-        ReferenceDefinition referenceDefinition = loader.load(null, null, mockReader, null);
+        ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition referenceDefinition = loader.load(null, type, mockReader, null);
         assertEquals(2, referenceDefinition.getBindings().size());
     }
 
@@ -105,14 +116,18 @@
         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.getAttributeValue(null, "wiredByImpl")).andReturn("false");
+        EasyMock.expect(mockReader.getAttributeValue(null, "target")).andReturn(null);
         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);
+        
+        ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition referenceDefinition = loader.load(null, type, mockReader, deploymentContext);
         assertNotNull(referenceDefinition);
         assertEquals(name, referenceDefinition.getName());
         assertSame(sc, referenceDefinition.getServiceContract());

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ServiceLoaderTestCase.java Tue Mar 27 05:18:53 2007
@@ -31,8 +31,9 @@
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
@@ -77,8 +78,8 @@
         expect(mockReader.next()).andReturn(END_ELEMENT);
         expect(mockReader.getName()).andReturn(SERVICE).anyTimes();
         replay(mockReader);
-        ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
         ServiceDefinition serviceDefinition = loader.load(null, type, mockReader, null);
         assertTrue(ServiceDefinition.class.equals(serviceDefinition.getClass()));
     }
@@ -96,6 +97,9 @@
         replay(mockReader);
 
         BindingDefinition binding = new BindingDefinition() {
+            public Object clone() {
+                return null;
+            }
         };
         expect(mockRegistry.load(null, null, mockReader, null)).andReturn(binding).times(2);
         replay(mockRegistry);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireServiceExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireServiceExtensionTestCase.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireServiceExtensionTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireServiceExtensionTestCase.java Tue Mar 27 05:18:53 2007
@@ -21,6 +21,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.net.URI;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,12 +37,14 @@
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentReferenceDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.Multiplicity;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
@@ -101,8 +104,8 @@
         EasyMock.verify(invoker);
     }
 
-    public void testCreateReferenceWire() throws Exception {
-        ReferenceDefinition definition = new ReferenceDefinition("foo", contract);
+    /*public void testCreateReferenceWire() throws Exception {
+        AbstractReferenceDefinition definition = new AbstractReferenceDefinition("foo", contract);
         ReferenceTarget target = new ReferenceTarget();
         target.addTarget(new URI("bar"));
         target.setReferenceName("refName");
@@ -130,36 +133,40 @@
         msg.setTargetInvoker(invoker);
         assertNotNull(callbackChain.getHeadInterceptor().invoke(msg));
         EasyMock.verify(invoker);
-    }
+    }*/
 
     public void testCreateAutowireReferenceWire() throws Exception {
-        ReferenceDefinition definition = new ReferenceDefinition("foo", contract);
+        ComponentTypeReferenceDefinition definition = new ComponentTypeReferenceDefinition("foo", contract);
         definition.setAutowire(true);
-        ReferenceTarget target = new ReferenceTarget();
-        target.setReferenceName("refName");
-        OutboundWire wire = wireService.createWire(target, definition).get(0);
+        ComponentReferenceDefinition compRef = new ComponentReferenceDefinition(definition);
+        //ReferenceTarget target = new ReferenceTarget();
+        //target.setReferenceName("refName");
+        OutboundWire wire = wireService.createWire(new ArrayList<URI>(), compRef).get(0);
         assertTrue(wire.isAutowire());
-        assertEquals("refName", wire.getReferenceName());
+        assertEquals("foo", wire.getReferenceName());
         assertEquals(contract, wire.getServiceContract());
         assertEquals(Callback.class, wire.getCallbackInterface());
     }
     
     public void testCreateReferenceMultipleWire() throws Exception {
-        ReferenceDefinition definition = new ReferenceDefinition("foo", contract);
+        ComponentTypeReferenceDefinition ctRefDef = new ComponentTypeReferenceDefinition("foo", contract);
+        ComponentReferenceDefinition definition = new ComponentReferenceDefinition(ctRefDef);
         definition.setMultiplicity(Multiplicity.ONE_N);
-        ReferenceTarget target = new ReferenceTarget();
-        target.addTarget(new URI("bar"));
-        target.addTarget(new URI("bar2"));
-        target.setReferenceName("refName");
+        
+        //ReferenceTarget target = new ReferenceTarget();
+        List<URI> target = new ArrayList<URI>();
+        target.add(new URI("bar"));
+        target.add(new URI("bar2"));
+        //target.setReferenceName("refName");
 
         List<OutboundWire> wires = wireService.createWire(target, definition);
         assertEquals(2, wires.size());
     }    
 
     public void testCreateComponentWires() throws Exception {
-        ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-            new ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
-        ReferenceDefinition referenceDefinition = new ReferenceDefinition("refName", contract);
+        ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>> type =
+            new ComponentType<ServiceDefinition, ComponentTypeReferenceDefinition, Property<?>>();
+        ComponentTypeReferenceDefinition referenceDefinition = new ComponentTypeReferenceDefinition("refName", contract);
         type.add(referenceDefinition);
         ServiceDefinition serviceDefinition = new ServiceDefinition("foo", contract, false);
         type.add(serviceDefinition);
@@ -170,11 +177,16 @@
 
         ComponentDefinition<Implementation<ComponentType>> definition =
             new ComponentDefinition<Implementation<ComponentType>>("Foo", impl);
-        ReferenceTarget target = new ReferenceTarget();
+        ComponentReferenceDefinition compRef = 
+            new ComponentReferenceDefinition(type.getReferences().get("refName"));
+        compRef.addTarget(new URI("bar"));
+        definition.add(compRef);
+        
+        /*ReferenceTarget target = new ReferenceTarget();
         target.addTarget(new URI("bar"));
         target.setReferenceName("refName");
         definition.add(target);
-
+        */
         AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
         component.addInboundWire(EasyMock.isA(InboundWire.class));
         component.addOutboundWire(EasyMock.isA(OutboundWire.class));
@@ -265,8 +277,8 @@
         }
 
 
-        public List<OutboundWire> createWire(ReferenceTarget reference, ReferenceDefinition def) {
-            return super.createWire(reference, def);
+        public List<OutboundWire> createWire(List<URI> refTargetURIs, ComponentReferenceDefinition def) {
+            return super.createWire(refTargetURIs, def);
         }
     }
 

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java Tue Mar 27 05:18:53 2007
@@ -23,7 +23,7 @@
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.BindingDefinition;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
@@ -51,7 +51,7 @@
                          DeploymentContext deploymentContext) throws BuilderException;
 
     ReferenceBinding build(CompositeComponent parent,
-                           ReferenceDefinition boundReferenceDefinition,
+                           AbstractReferenceDefinition boundReferenceDefinition,
                            B bindingDefinition,
                            DeploymentContext deploymentContext) throws BuilderException;
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java Tue Mar 27 05:18:53 2007
@@ -27,7 +27,7 @@
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.ModelObject;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
@@ -70,7 +70,7 @@
      * @return the newly created reference
      * @throws BuilderException
      */
-    Reference build(CompositeComponent parent, ReferenceDefinition definition, DeploymentContext context)
+    Reference build(CompositeComponent parent, AbstractReferenceDefinition definition, DeploymentContext context)
         throws BuilderException;
 
     /**

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java Tue Mar 27 05:18:53 2007
@@ -30,7 +30,7 @@
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.BindingDefinition;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.AbstractReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.wire.WireService;
 
@@ -69,7 +69,7 @@
     }
 
     public ReferenceBinding build(CompositeComponent parent,
-                                  ReferenceDefinition boundReferenceDefinition,
+                                  AbstractReferenceDefinition boundReferenceDefinition,
                                   B bindingDefinition,
                                   DeploymentContext deploymentContext) throws BuilderException {
         return null;

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java Tue Mar 27 05:18:53 2007
@@ -364,7 +364,7 @@
             }
         }
         for (SCAObject child : childList) {
-            // connect all children
+           // connect all children
             // TODO for composite wires, should delegate down
             try {
                 connector.connect(child);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/JavaMappedReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/JavaMappedReference.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/JavaMappedReference.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/JavaMappedReference.java Tue Mar 27 05:18:53 2007
@@ -20,7 +20,7 @@
 
 import java.lang.reflect.Member;
 
-import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceContract;
 
 /**
@@ -29,7 +29,7 @@
  *
  * @version $Rev$ $Date$
  */
-public class JavaMappedReference extends ReferenceDefinition {
+public class JavaMappedReference extends ComponentTypeReferenceDefinition {
     private Member member;
 
     public JavaMappedReference() {

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/implementation/java/PojoComponentType.java Tue Mar 27 05:18:53 2007
@@ -26,8 +26,8 @@
 import java.util.Map;
 
 import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.ComponentTypeReferenceDefinition;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
@@ -35,7 +35,7 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class PojoComponentType<S extends ServiceDefinition, R extends ReferenceDefinition, P extends Property<?>>
+public class PojoComponentType<S extends ServiceDefinition, R extends ComponentTypeReferenceDefinition, P extends Property<?>>
     extends ComponentType<S, R, P> {
     private boolean allowsPassByReference;
     private ConstructorDefinition<?> constructorDefinition;

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/DuplicateReferenceNameException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/DuplicateReferenceNameException.java?view=auto&rev=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/DuplicateReferenceNameException.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/DuplicateReferenceNameException.java Tue Mar 27 05:18:53 2007
@@ -0,0 +1,81 @@
+/*
+ * 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.loader;
+
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+
+import org.apache.tuscany.api.TuscanyException;
+
+/**
+ * Denotes a duplicate reference name
+ *
+ * @version $Rev: 487877 $ $Date: 2006-12-17 02:02:16 +0530 (Sun, 17 Dec 2006) $
+ */
+public class DuplicateReferenceNameException extends LoaderException {
+    public static final String COMPOSITE = "Composite";
+    public static final String COMPONENT_TYPE = "ComponentType";
+    public static final String MESSAGE = "Duplicat reference name ";
+        
+    private static final long serialVersionUID = -9127740669182714792L;
+    private String duplicateName;
+    private String container;
+    private String containerName;
+    
+    public DuplicateReferenceNameException(String dupName, String container, String containerName) {
+        super(MESSAGE, (String) null);
+        this.duplicateName = dupName;
+        this.container = container;
+        this.containerName = containerName;
+    }
+
+    public String getMessage() {
+        return  MESSAGE + duplicateName + " in " + containerName + " " + container;
+    }
+       
+    public String getContainer() {
+        return container;
+    }
+
+
+    public void setContainer(String container) {
+        this.container = container;
+    }
+
+
+    public String getContainerName() {
+        return containerName;
+    }
+
+
+    public void setContainerName(String containerName) {
+        this.containerName = containerName;
+    }
+
+
+    public String getDuplicateName() {
+        return duplicateName;
+    }
+
+
+    public void setDuplicateName(String duplicateName) {
+        this.duplicateName = duplicateName;
+    }
+}

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/IncompatibleOverridingServiceContractException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/IncompatibleOverridingServiceContractException.java?view=auto&rev=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/IncompatibleOverridingServiceContractException.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/IncompatibleOverridingServiceContractException.java Tue Mar 27 05:18:53 2007
@@ -0,0 +1,74 @@
+/*
+ * 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.loader;
+
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+
+import org.apache.tuscany.api.TuscanyException;
+
+/**
+ * Denotes imcompatible service contracts for a wire
+ *
+ * @version $Rev: 487877 $ $Date: 2006-12-17 02:02:16 +0530 (Sun, 17 Dec 2006) $
+ */
+public class IncompatibleOverridingServiceContractException extends LoaderException {
+    private static final long serialVersionUID = 5127478601823295587L;
+    private final ServiceContract<?> source;
+    private final ServiceContract<?> target;
+    private final Operation<?> sourceOperation;
+    private final Operation<?> targetOperation;
+
+    public IncompatibleOverridingServiceContractException(String message, ServiceContract<?> source, ServiceContract<?> target) {
+        super(message, (String) null);
+        this.source = source;
+        this.target = target;
+        this.sourceOperation = null;
+        this.targetOperation = null;
+    }
+
+
+    public IncompatibleOverridingServiceContractException(String message,
+                                                ServiceContract<?> source,
+                                                ServiceContract<?> target,
+                                                Operation<?> sourceOperation, Operation<?> targetOperation) {
+        super(message, (String) null);
+        this.source = source;
+        this.target = target;
+        this.sourceOperation = sourceOperation;
+        this.targetOperation = targetOperation;
+    }
+
+    public ServiceContract<?> getTarget() {
+        return target;
+    }
+
+    public ServiceContract<?> getSource() {
+        return source;
+    }
+
+    public Operation<?> getSourceOperation() {
+        return sourceOperation;
+    }
+
+    public Operation<?> getTargetOperation() {
+        return targetOperation;
+    }
+}

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidPromotedReferenceException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidPromotedReferenceException.java?view=auto&rev=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidPromotedReferenceException.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/InvalidPromotedReferenceException.java Tue Mar 27 05:18:53 2007
@@ -0,0 +1,39 @@
+/*
+ * 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.loader;
+
+/**
+ * Used when a reference promoted by a composite is not found in any of the components defined within
+ * the composite
+ */
+public class InvalidPromotedReferenceException extends LoaderException {
+    private static final long serialVersionUID = -2056138384524620064L;
+
+    public InvalidPromotedReferenceException(String message) {
+        super(message);
+    }
+
+    public InvalidPromotedReferenceException(String message, String identifier) {
+        super(message, identifier);
+    }
+
+    public InvalidPromotedReferenceException(Throwable cause) {
+        super(cause);
+    }
+}

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/ReferenceMultiplicityOverridingException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/ReferenceMultiplicityOverridingException.java?view=auto&rev=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/ReferenceMultiplicityOverridingException.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/ReferenceMultiplicityOverridingException.java Tue Mar 27 05:18:53 2007
@@ -0,0 +1,78 @@
+/*
+ * 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.loader;
+
+import org.apache.tuscany.spi.model.Multiplicity;
+
+/**
+ * Denote the violation in overriding of multiplicity declaration for a reference either when a 
+ * Component is overriding what is original in the underlying ComponentType or when a Composite is 
+ * overriding while promoting a Component reference definition. 
+ * 
+ * @version $Rev $Date
+ */
+public class ReferenceMultiplicityOverridingException extends LoaderException {
+	private static final long serialVersionUID = -5827228144446207988L;
+	private final Multiplicity originalMultiplicity;
+	private final Multiplicity overridenMultiplicity;
+    
+    /**
+     * @param message
+     * @param identifier
+     * @param multiplicity
+     * @param numberOfTargets
+     */
+    public ReferenceMultiplicityOverridingException(String message,
+                                          String identifier,
+                                          Multiplicity original,
+                                          Multiplicity overriden) {
+        super(message, identifier);
+        this.originalMultiplicity = original;
+        this.overridenMultiplicity = overriden;
+    }
+
+    /**
+     * @param identifier
+     * @param multiplicity
+     * @param numberOfTargets
+     */
+    public ReferenceMultiplicityOverridingException(String identifier, Multiplicity original, Multiplicity overriden) {
+        this("Multiplicity Overriding is violated", identifier, original, overriden);
+    }
+    
+    
+    /**
+     * Get the original multiplicity for the reference definition
+     * 
+     * @return multiplicity of the reference definition
+     */
+    public Multiplicity getoriginalMultiplicity() {
+		return originalMultiplicity;
+	}
+
+    /**
+     * Get the overriden multiplicity for the reference definition
+     * 
+     * @return multiplicity of the reference definition
+     */
+	public Multiplicity getOverridenMultiplicity() {
+		return overridenMultiplicity;
+	}
+}

Copied: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/AbstractReferenceDefinition.java (from r518530, incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ReferenceDefinition.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/AbstractReferenceDefinition.java?view=diff&rev=522885&p1=incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ReferenceDefinition.java&r1=518530&p2=incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/AbstractReferenceDefinition.java&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ReferenceDefinition.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/AbstractReferenceDefinition.java Tue Mar 27 05:18:53 2007
@@ -18,40 +18,49 @@
  */
 package org.apache.tuscany.spi.model;
 
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import javax.xml.namespace.QName;
+
 /**
  * Represents a component reference
  *
  * @version $Rev$ $Date$
  */
-public class ReferenceDefinition extends ModelObject {
+public abstract class AbstractReferenceDefinition extends ModelObject {
     private String name;
     private ServiceContract serviceContract;
     private Multiplicity multiplicity;
     private boolean autowire;
-    private boolean required;
     private List<BindingDefinition> bindings;
+    private List<URI> targets = new ArrayList<URI>();
+    private boolean wiredByImpl;
+    private List requiredIntents = new ArrayList<QName>();
+    private List policySets = new ArrayList<QName>();
 
-    public ReferenceDefinition() {
+    public AbstractReferenceDefinition() {
+        autowire = false;
         multiplicity = Multiplicity.ONE_ONE;
         bindings = new ArrayList<BindingDefinition>();
     }
 
-    public ReferenceDefinition(String name, ServiceContract serviceContract) {
+    public AbstractReferenceDefinition(String name, ServiceContract serviceContract) {
         this.name = name;
         this.serviceContract = serviceContract;
         bindings = new ArrayList<BindingDefinition>();
+        autowire = false;
         multiplicity = Multiplicity.ONE_ONE;
     }
 
-    public ReferenceDefinition(String name, ServiceContract serviceContract, Multiplicity multiplicity) {
+    public AbstractReferenceDefinition(String name, ServiceContract serviceContract, Multiplicity multiplicity) {
         this.name = name;
         this.serviceContract = serviceContract;
         this.multiplicity = multiplicity;
         bindings = new ArrayList<BindingDefinition>();
+        autowire = false;
     }
 
     public String getName() {
@@ -86,19 +95,43 @@
         this.autowire = autowire;
     }
 
-    public boolean isRequired() {
-        return required;
-    }
-
-    public void setRequired(boolean required) {
-        this.required = required;
-    }
-
     public List<BindingDefinition> getBindings() {
         return Collections.unmodifiableList(bindings);
     }
 
     public void addBinding(BindingDefinition binding) {
         this.bindings.add(binding);
+    }
+    
+    public List<URI> getTargets() {
+        return Collections.unmodifiableList(targets);
+    }
+
+    public void addTarget(URI targetURI) {
+        this.targets.add(targetURI);
+    }
+    
+    public boolean isWiredByImpl() {
+        return wiredByImpl;
+    }
+
+    public void setWiredByImpl(boolean wiredByImpl) {
+        this.wiredByImpl = wiredByImpl;
+    }
+
+    public List getPolicySets() {
+        return policySets;
+    }
+
+    public void setPolicySets(List policySets) {
+        this.policySets = policySets;
+    }
+
+    public List getRequiredIntents() {
+        return requiredIntents;
+    }
+
+    public void setRequiredIntents(List requiredIntents) {
+        this.requiredIntents = requiredIntents;
     }
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BindingDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BindingDefinition.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BindingDefinition.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BindingDefinition.java Tue Mar 27 05:18:53 2007
@@ -25,7 +25,7 @@
  *
  * @version $Rev$ $Date$
  */
-public abstract class BindingDefinition extends ModelObject {
+public abstract class BindingDefinition extends ModelObject implements Cloneable {
     private URI targetUri;
 
     protected BindingDefinition() {
@@ -42,4 +42,6 @@
     public void setTargetUri(URI targetUri) {
         this.targetUri = targetUri;
     }
+    
+    abstract public Object clone();
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java?view=diff&rev=522885&r1=522884&r2=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java Tue Mar 27 05:18:53 2007
@@ -31,7 +31,7 @@
  * immediately contained in the composite (directly or through an &lt;include&gt; element).</p>
  * <p>A component may define a {@link PropertyValue} that overrides the default value of a {@link Property}
  * defined in the componentType.</p>
- * <p>It may also define a {@link ReferenceTarget} for a {@link ReferenceDefinition} defined in the componentType.
+ * <p>It may also define a {@link ReferenceTarget} for a {@link AbstractReferenceDefinition} defined in the componentType.
  * The ReferenceTarget must resolve to another component or a reference in the enclosing composite.</p>
  * <p>Components may specify an initialization level that will determine the order in which it will be eagerly
  * initialized relative to other components from the enclosing composite that are in the same scope. This can be
@@ -44,9 +44,10 @@
     private String name;
     private Integer initLevel;
     private final I implementation;
-    private final Map<String, ReferenceTarget> referenceTargets = new HashMap<String, ReferenceTarget>();
+    private final Map<String, ComponentReferenceDefinition> references = new HashMap<String, ComponentReferenceDefinition>();
     private final Map<String, PropertyValue<?>> propertyValues = new HashMap<String, PropertyValue<?>>();
-
+    private boolean autowire;
+    
     /**
      * Constructor specifying the component's name and implementation.
      *
@@ -115,25 +116,6 @@
     }
 
     /**
-     * Returns a live Map of the {@link ReferenceTarget targets} configured by this component definition.
-     *
-     * @return the reference targets configured by this component
-     */
-    public Map<String, ReferenceTarget> getReferenceTargets() {
-        return referenceTargets;
-    }
-
-    /**
-     * Add a reference target configuration to this component.
-     * Any existing configuration for the reference named in the target is replaced.
-     *
-     * @param target the target to add
-     */
-    public void add(ReferenceTarget target) {
-        referenceTargets.put(target.getReferenceName(), target);
-    }
-
-    /**
      * Returns a live Map of {@link PropertyValue property values} configured by this component definition.
      *
      * @return the property values configured by this component
@@ -150,5 +132,21 @@
      */
     public void add(PropertyValue<?> value) {
         propertyValues.put(value.getName(), value);
+    }
+    
+    public boolean isAutowire() {
+        return autowire;
+    }
+
+    public void setAutowire(boolean autowire) {
+        this.autowire = autowire;
+    }
+    
+    public Map<String, ComponentReferenceDefinition> getReferences() {
+        return references;
+    }
+    
+    public void add(ComponentReferenceDefinition ref) {
+    	references.put(ref.getName(), ref);
     }
 }

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentReferenceDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentReferenceDefinition.java?view=auto&rev=522885
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentReferenceDefinition.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentReferenceDefinition.java Tue Mar 27 05:18:53 2007
@@ -0,0 +1,95 @@
+/*
+ * 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.model;
+
+import java.net.URI;
+import java.util.List;
+
+/**
+ * Represents reference defintion that is part of a Component definition
+ * 
+ */
+public class ComponentReferenceDefinition extends AbstractReferenceDefinition  {
+    private ComponentTypeReferenceDefinition associatedCompTypeRefDefn;
+    
+    public ComponentReferenceDefinition(ComponentTypeReferenceDefinition ctRefDefn) {
+        super();
+        setMultiplicity(null);
+        this.associatedCompTypeRefDefn = ctRefDefn;
+    }
+
+    public ComponentReferenceDefinition(String name, ServiceContract serviceContract, ComponentTypeReferenceDefinition ctRefDefn) {
+        super(name, serviceContract, null);
+        this.associatedCompTypeRefDefn = ctRefDefn;
+    }
+
+    public ComponentReferenceDefinition(String name, ServiceContract serviceContract, Multiplicity multiplicity, ComponentTypeReferenceDefinition ctRefDefn) {
+        super(name, serviceContract, multiplicity);
+        this.associatedCompTypeRefDefn = ctRefDefn;
+    }
+
+    @Override
+    public String getName() {
+        return associatedCompTypeRefDefn.getName();
+    }
+
+    public ComponentTypeReferenceDefinition getAssociatedCompTypeRefDefn() {
+        return associatedCompTypeRefDefn;
+    }
+
+    public void setAssociatedCompTypeRefDefn(ComponentTypeReferenceDefinition associatedCompTypeRefDefn) {
+        this.associatedCompTypeRefDefn = associatedCompTypeRefDefn;
+    }
+
+    @Override
+    public Multiplicity getMultiplicity() {
+        if (super.getMultiplicity() != null) {
+            return super.getMultiplicity();
+        } else {
+            return associatedCompTypeRefDefn.getMultiplicity();
+        }
+    }
+
+    @Override
+    public List<URI> getTargets() {
+        if (super.getTargets() == null || super.getTargets().isEmpty()) {
+            return associatedCompTypeRefDefn.getTargets();
+        } else {
+            return super.getTargets();
+        }
+    }
+
+    @Override
+    public ServiceContract<?> getServiceContract() {
+        if (super.getServiceContract() == null) {
+            return associatedCompTypeRefDefn.getServiceContract();
+        } else {
+            return super.getServiceContract();
+        }
+    }
+
+    @Override
+    public List<BindingDefinition> getBindings() {
+        if (super.getBindings() == null || super.getBindings().size() == 0) {
+            return associatedCompTypeRefDefn.getBindings();
+        } else {
+            return super.getBindings();
+        }
+    }
+}



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