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

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

Author: jmarino
Date: Sun Dec 31 10:58:58 2006
New Revision: 491465

URL: http://svn.apache.org/viewvc?view=rev&rev=491465
Log:
first cut at support for multipe bindings per reference

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java   (contents, props changed)
      - copied, changed from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java   (contents, props changed)
      - copied, changed from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java   (contents, props changed)
      - copied, changed from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceBinding.java   (contents, props changed)
      - copied, changed from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ReferenceImpl.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBinding.java   (contents, props changed)
      - copied, changed from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingImpl.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvokerTestCase.java   (contents, props changed)
      - copied, changed from r491325, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvokerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerInvocationExceptionTestCase.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerInvocationExceptionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerTestCase.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvokerThrowableTestCase.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerThrowableTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ReferenceImplTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java   (contents, props changed)
      - copied, changed from r491325, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeLoaderNoBindingTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ReferenceLoaderTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Reference.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceBindingExtension.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ReferenceBindingExtensionTestCase.java   (with props)
    incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiReference.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Reference.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReference.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketReferenceBinding.java   (contents, props changed)
      - copied, changed from r491316, incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketBindingReference.java
Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBindlessBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingImpl.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvokerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerInvocationExceptionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvokerThrowableTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentTypeLoaderNoBindingTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindlessBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ReferenceExtension.java
    incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiReference.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Reference.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReference.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketBindingReference.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ServiceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ReferenceLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireServiceExtension.java
    incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/composite.scdl
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AutowireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/launcher/CompositeContextImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/ContractCompatibilityTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ServiceBinding.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BindingDefinition.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/BoundReferenceDefinition.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ServiceDefinition.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/ReferenceTestCase.java
    incubator/tuscany/java/sca/runtime/osgi/src/main/java/org/apache/tuscany/osgi/binding/OSGiBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ReferenceTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/RMIBindingBuilderTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/RMIReferenceTestCase.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/integration/BootstrapTestCase.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingBuilder.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestSocketBindingBuilder.java

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java (from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java&r1=491325&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractCompositeTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/AbstractLocalTargetInvoker.java Sun Dec 31 10:58:58 2006
@@ -31,7 +31,7 @@
  *
  * @version $Rev$ $Date$
  */
-public abstract class AbstractCompositeTargetInvoker implements TargetInvoker {
+public abstract class AbstractLocalTargetInvoker implements TargetInvoker {
     protected boolean cacheable;
 
     public boolean isCacheable() {
@@ -71,7 +71,7 @@
     }
 
     @Override
-    public AbstractCompositeTargetInvoker clone() throws CloneNotSupportedException {
-        return (AbstractCompositeTargetInvoker) super.clone();
+    public AbstractLocalTargetInvoker clone() throws CloneNotSupportedException {
+        return (AbstractLocalTargetInvoker) super.clone();
     }
 }

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingBuilder.java Sun Dec 31 10:58:58 2006
@@ -20,7 +20,7 @@
 
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.BindingBuilderExtension;
@@ -47,9 +47,10 @@
     }
 
 
-    public Reference build(CompositeComponent parent,
-                           BoundReferenceDefinition<LocalBindingDefinition> boundReferenceDefinition,
-                           DeploymentContext deploymentContext) throws BuilderException {
-        throw new UnsupportedOperationException();
+    public ReferenceBinding build(CompositeComponent parent,
+                                  BoundReferenceDefinition boundReferenceDefinition,
+                                  LocalBindingDefinition bindingDefinition,
+                                  DeploymentContext deploymentContext) throws BuilderException {
+        return new LocalReferenceBinding(boundReferenceDefinition.getName(), parent);
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingDefinition.java Sun Dec 31 10:58:58 2006
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.core.binding.local;
 
+import java.net.URI;
+
 import org.apache.tuscany.spi.model.BindingDefinition;
 
 
@@ -28,4 +30,10 @@
  */
 public class LocalBindingDefinition extends BindingDefinition {
 
+    public LocalBindingDefinition() {
+    }
+
+    public LocalBindingDefinition(URI targetUri) {
+        super(targetUri);
+    }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java Sun Dec 31 10:58:58 2006
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.core.binding.local;
 
+import java.net.URI;
+import java.net.URISyntaxException;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
@@ -45,6 +47,14 @@
                             ModelObject object,
                             XMLStreamReader reader,
                             DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+        String uri = reader.getAttributeValue(null, "uri");
+        if (uri != null) {
+            try {
+                return new LocalBindingDefinition(new URI(uri));
+            } catch (URISyntaxException e) {
+                throw new LoaderException(e);
+            }
+        }
         return new LocalBindingDefinition();
     }
 }

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java (from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java&r1=491325&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceCallbackTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalCallbackTargetInvoker.java Sun Dec 31 10:58:58 2006
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.implementation.composite;
+package org.apache.tuscany.core.binding.local;
 
 import java.util.Map;
 
@@ -27,28 +27,22 @@
 import org.apache.tuscany.spi.wire.MessageImpl;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.core.binding.local.AbstractCompositeTargetInvoker;
 
 /**
  * Dispatches a callback invocation to the callback instance
  *
  * @version $Rev$ $Date$
  */
-public class CompositeReferenceCallbackTargetInvoker extends AbstractCompositeTargetInvoker {
+public class LocalCallbackTargetInvoker extends AbstractLocalTargetInvoker {
     private Operation operation;
     private InboundWire inboundWire;
 
-    public CompositeReferenceCallbackTargetInvoker(Operation operation, InboundWire inboundWire) {
+    public LocalCallbackTargetInvoker(Operation operation, InboundWire inboundWire) {
         assert operation != null : "Operation method cannot be null";
         this.operation = operation;
         this.inboundWire = inboundWire;
     }
 
-    @Override
-    public CompositeReferenceCallbackTargetInvoker clone() throws CloneNotSupportedException {
-        return (CompositeReferenceCallbackTargetInvoker) super.clone();
-    }
-
     public Message invoke(Message msg) throws InvocationRuntimeException {
         try {
             return invoke(operation, msg);
@@ -71,4 +65,10 @@
         TargetInvoker invoker = chain.getTargetInvoker();
         return invoke(chain, invoker, msg);
     }
+
+    @Override
+    public LocalCallbackTargetInvoker clone() throws CloneNotSupportedException {
+        return (LocalCallbackTargetInvoker) super.clone();
+    }
+
 }

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java?view=auto&rev=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalReferenceBinding.java Sun Dec 31 10:58:58 2006
@@ -0,0 +1,32 @@
+package org.apache.tuscany.core.binding.local;
+
+import org.apache.tuscany.spi.CoreRuntimeException;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
+import org.apache.tuscany.spi.extension.ReferenceBindingExtension;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * The runtime representaion of the local reference binding
+ *
+ * @version $Rev$ $Date$
+ */
+public class LocalReferenceBinding extends ReferenceBindingExtension {
+
+    public LocalReferenceBinding(String name, CompositeComponent parent) throws CoreRuntimeException {
+        super(name, parent);
+    }
+
+    public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation)
+        throws TargetInvokerCreationException {
+        return new LocalTargetInvoker(operation, outboundWire);
+    }
+
+    public TargetInvoker createCallbackTargetInvoker(ServiceContract contract, Operation operation)
+        throws TargetInvokerCreationException {
+        return new LocalCallbackTargetInvoker(operation, inboundWire);
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalServiceBinding.java Sun Dec 31 10:58:58 2006
@@ -27,7 +27,7 @@
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
- * The runtime representaion of the local binding
+ * The runtime representaion of the local service binding
  *
  * @version $Rev$ $Date$
  */
@@ -39,7 +39,7 @@
 
     public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation)
         throws TargetInvokerCreationException {
-        return new CompositeTargetInvoker(operation, outboundWire);
+        return new LocalTargetInvoker(operation, outboundWire);
     }
 
 }

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java (from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java&r1=491325&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/CompositeTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalTargetInvoker.java Sun Dec 31 10:58:58 2006
@@ -31,12 +31,12 @@
  *
  * @version $Rev$ $Date$
  */
-public class CompositeTargetInvoker extends AbstractCompositeTargetInvoker {
+public class LocalTargetInvoker extends AbstractLocalTargetInvoker {
     private OutboundInvocationChain chain;
     private Object fromAddress;
     private boolean contractHasCallback;
 
-    public CompositeTargetInvoker(Operation operation, OutboundWire outboundWire) {
+    public LocalTargetInvoker(Operation operation, OutboundWire outboundWire) {
         assert operation != null;
         chain = outboundWire.getInvocationChains().get(operation);
         fromAddress = (outboundWire.getContainer() == null) ? null : outboundWire.getContainer().getName();
@@ -44,8 +44,8 @@
     }
 
     @Override
-    public CompositeTargetInvoker clone() throws CloneNotSupportedException {
-        return (CompositeTargetInvoker) super.clone();
+    public LocalTargetInvoker clone() throws CloneNotSupportedException {
+        return (LocalTargetInvoker) super.clone();
     }
 
     public Message invoke(Message msg) throws InvocationRuntimeException {

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Sun Dec 31 10:58:58 2006
@@ -22,10 +22,11 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.tuscany.core.implementation.composite.ServiceImpl;
+import org.osoa.sca.annotations.Init;
+
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BindingBuilder;
-import org.apache.tuscany.spi.builder.BindlessBuilder;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.builder.ComponentBuilder;
@@ -33,7 +34,7 @@
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
-import org.apache.tuscany.spi.component.SCAObject;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.component.ServiceBinding;
@@ -44,10 +45,11 @@
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
 import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.WireService;
-import org.osoa.sca.annotations.Init;
+
+import org.apache.tuscany.core.implementation.composite.ReferenceImpl;
+import org.apache.tuscany.core.implementation.composite.ServiceImpl;
 
 /**
  * The default builder registry in the runtime
@@ -55,124 +57,66 @@
  * @version $Rev$ $Date$
  */
 public class BuilderRegistryImpl implements BuilderRegistry {
-    
-    /**
-     * Wire service used by the builder.
-     */
     protected WireService wireService;
-    
-    /**
-     * Scope registry used by the builder.
-     */
     protected ScopeRegistry scopeRegistry;
 
-    /**
-     * Map of component builders.
-     */
-    private final Map<Class<? extends Implementation<?>>, ComponentBuilder<? extends Implementation<?>>> componentBuilders =
+    private final Map<Class<? extends Implementation<?>>,
+        ComponentBuilder<? extends Implementation<?>>> componentBuilders =
         new HashMap<Class<? extends Implementation<?>>, ComponentBuilder<? extends Implementation<?>>>();
-    
-    /**
-     * Map of binding builders.
-     */
-    private final Map<Class<? extends BindingDefinition>, BindingBuilder<? extends BindingDefinition>> bindingBuilders =
+    private final Map<Class<? extends BindingDefinition>,
+        BindingBuilder<? extends BindingDefinition>> bindingBuilders =
         new HashMap<Class<? extends BindingDefinition>, BindingBuilder<? extends BindingDefinition>>();
-    
-    /**
-     * Bindless builder.
-     */
-    private BindlessBuilder bindlessBuilder;
-
-    /**
-     * Default constructor.
-     *
-     */
+
     public BuilderRegistryImpl() {
     }
 
-    /**
-     * Initializes the scope registry.
-     * 
-     * @param scopeRegistry Scope registry to use.
-     */
     public BuilderRegistryImpl(ScopeRegistry scopeRegistry) {
         this.scopeRegistry = scopeRegistry;
     }
 
-    /**
-     * Initiakization method.
-     *
-     */
     @Init(eager = true)
     public void init() {
     }
 
-    /**
-     * Method for auto-wiring scope registry.
-     * @param scopeRegistry Scope registry to use.
-     */
     @Autowire
     public void setScopeRegistry(ScopeRegistry scopeRegistry) {
         this.scopeRegistry = scopeRegistry;
     }
 
-    /**
-     * Method for auto-wiring wire service.
-     * @param scopeRegistry Wire service to use.
-     */
     @Autowire
     public void setWireService(WireService wireService) {
         this.wireService = wireService;
     }
 
-    /**
-     * @see org.apache.tuscany.spi.builder.BuilderRegistry#register(java.lang.Class, org.apache.tuscany.spi.builder.ComponentBuilder)
-     */
     public <I extends Implementation<?>> void register(Class<I> implClass, ComponentBuilder<I> builder) {
         componentBuilders.put(implClass, builder);
     }
 
-    /**
-     * @see org.apache.tuscany.spi.builder.BuilderRegistry#unregister(java.lang.Class)
-     */
     public <I extends Implementation<?>> void unregister(Class<I> implClass) {
         componentBuilders.remove(implClass);
     }
 
-    /**
-     * @see org.apache.tuscany.spi.builder.BuilderRegistry#register(java.lang.Class, org.apache.tuscany.spi.builder.BindingBuilder)
-     */
     public <B extends BindingDefinition> void register(Class<B> implClass, BindingBuilder<B> builder) {
         bindingBuilders.put(implClass, builder);
     }
 
-    /**
-     * @see org.apache.tuscany.spi.builder.BuilderRegistry#register(org.apache.tuscany.spi.builder.BindlessBuilder)
-     */
-    public void register(BindlessBuilder builder) {
-        bindlessBuilder = builder;
-    }
-
-    /**
-     * @see org.apache.tuscany.spi.builder.Builder#build(org.apache.tuscany.spi.component.CompositeComponent, org.apache.tuscany.spi.model.ComponentDefinition, org.apache.tuscany.spi.deployer.DeploymentContext)
-     */
     @SuppressWarnings("unchecked")
     public <I extends Implementation<?>> Component build(CompositeComponent parent,
                                                          ComponentDefinition<I> componentDefinition,
-                                                         DeploymentContext deploymentContext) throws BuilderException {
+                                                         DeploymentContext context) throws BuilderException {
         Class<?> implClass = componentDefinition.getImplementation().getClass();
-        ComponentBuilder<I> componentBuilder = (ComponentBuilder<I>)componentBuilders.get(implClass);
+        //noinspection SuspiciousMethodCalls
+        ComponentBuilder<I> componentBuilder = (ComponentBuilder<I>) componentBuilders.get(implClass);
         try {
             if (componentBuilder == null) {
                 String name = implClass.getName();
                 throw new NoRegisteredBuilderException("No builder registered for implementation", name);
             }
 
-            Component component = componentBuilder.build(parent, componentDefinition, deploymentContext);
+            Component component = componentBuilder.build(parent, componentDefinition, context);
             if (component != null) {
                 component.setComponentDefinition(componentDefinition);
             }
-
             ComponentType<?, ?, ?> componentType = componentDefinition.getImplementation().getComponentType();
             assert componentType != null : "Component type must be set";
             // create wires for the component
@@ -186,10 +130,7 @@
         }
     }
 
-    /**
-     * @see org.apache.tuscany.spi.builder.Builder#build(org.apache.tuscany.spi.component.CompositeComponent, org.apache.tuscany.spi.model.BoundServiceDefinition, org.apache.tuscany.spi.deployer.DeploymentContext)
-     */
-    @SuppressWarnings( {"unchecked"})
+    @SuppressWarnings({"unchecked"})
     public Service build(CompositeComponent parent,
                          BoundServiceDefinition boundServiceDefinition,
                          DeploymentContext deploymentContext) throws BuilderException {
@@ -200,6 +141,7 @@
         Service service = new ServiceImpl(name, parent, serviceContract, targetUri, system);
         for (BindingDefinition definition : boundServiceDefinition.getBindings()) {
             Class<?> bindingClass = definition.getClass();
+            //noinspection SuspiciousMethodCalls
             BindingBuilder bindingBuilder = bindingBuilders.get(bindingClass);
             if (bindingBuilder == null) {
                 throw new NoRegisteredBuilderException("No builder registered for type", bindingClass.getName());
@@ -220,35 +162,34 @@
         return service;
     }
 
-    /**
-     * @see org.apache.tuscany.spi.builder.Builder#build(org.apache.tuscany.spi.component.CompositeComponent, org.apache.tuscany.spi.model.BoundReferenceDefinition, org.apache.tuscany.spi.deployer.DeploymentContext)
-     */
     @SuppressWarnings("unchecked")
-    public <B extends BindingDefinition> SCAObject build(CompositeComponent parent,
-                                                         BoundReferenceDefinition<B> boundReferenceDefinition,
-                                                         DeploymentContext deploymentContext) throws BuilderException {
-        Class<B> bindingClass = (Class<B>)boundReferenceDefinition.getBinding().getClass();
-        BindingBuilder<B> bindingBuilder = (BindingBuilder<B>)bindingBuilders.get(bindingClass);
-        SCAObject object;
-        object = bindingBuilder.build(parent, boundReferenceDefinition, deploymentContext);
-        // create wires for the component
-        if (wireService != null) {
-            wireService.createWires((Reference)object, boundReferenceDefinition.getServiceContract());
-        }
-        return object;
-    }
+    public Reference build(CompositeComponent parent,
+                           BoundReferenceDefinition referenceDefinition,
+                           DeploymentContext context) throws BuilderException {
+
+        String name = referenceDefinition.getName();
+        ServiceContract<?> contract = referenceDefinition.getServiceContract();
+        Reference reference = new ReferenceImpl(name, parent, contract);
+        for (BindingDefinition bindingDefinition : referenceDefinition.getBindings()) {
+            Class<?> bindingClass = bindingDefinition.getClass();
+            //noinspection SuspiciousMethodCalls
+            BindingBuilder bindingBuilder = bindingBuilders.get(bindingClass);
+            ReferenceBinding binding = bindingBuilder.build(parent, referenceDefinition, bindingDefinition, context);
+            // create wires for the component
+            if (wireService != null) {
+                URI targetUri = bindingDefinition.getTargetUri();
+                // it is possible for a binding to not have a URI
+                QualifiedName targetName = null;
+                if (targetUri != null) {
+                    targetName = new QualifiedName(targetUri.getPath());
+                }
+                wireService.createWires(binding, contract, targetName);
+
+            }
+            reference.addReferenceBinding(binding);
 
-    /**
-     * @see org.apache.tuscany.spi.builder.Builder#build(org.apache.tuscany.spi.component.CompositeComponent, org.apache.tuscany.spi.model.ReferenceDefinition, org.apache.tuscany.spi.deployer.DeploymentContext)
-     */
-    public SCAObject build(CompositeComponent parent,
-                           ReferenceDefinition referenceDefinition,
-                           DeploymentContext deploymentContext) {
-        SCAObject object = bindlessBuilder.build(parent, referenceDefinition, deploymentContext);
-        if (wireService != null) {
-            wireService.createWires((Reference)object, referenceDefinition.getServiceContract());
         }
-        return object;
+        return reference;
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Sun Dec 31 10:58:58 2006
@@ -31,6 +31,7 @@
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.component.ServiceBinding;
@@ -52,7 +53,7 @@
 import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
 import org.apache.tuscany.spi.wire.WireService;
 
-import org.apache.tuscany.core.implementation.composite.CompositeReference;
+import org.apache.tuscany.core.binding.local.LocalReferenceBinding;
 import org.apache.tuscany.core.wire.LoopBackWire;
 import org.apache.tuscany.core.wire.NonBlockingBridgingInterceptor;
 import org.apache.tuscany.core.wire.SynchronousBridgingInterceptor;
@@ -183,10 +184,10 @@
                 } catch (TargetInvokerCreationException e) {
                     throw new WireConnectException("Error connecting source and target", sourceWire, targetWire, e);
                 }
-            } else if (target instanceof Reference) {
-                Reference reference = (Reference) target;
+            } else if (target instanceof ReferenceBinding) {
+                ReferenceBinding referenceBinding = (ReferenceBinding) target;
                 try {
-                    invoker = reference.createTargetInvoker(targetWire.getServiceContract(), inboundOperation);
+                    invoker = referenceBinding.createTargetInvoker(targetWire.getServiceContract(), inboundOperation);
                 } catch (TargetInvokerCreationException e) {
                     String targetName = targetWire.getContainer().getName();
                     throw new WireConnectException("Error processing inbound wire", null, null, targetName, null, e);
@@ -253,11 +254,24 @@
                         e);
                 }
                 connect(outboundChain, inboundChain, invoker, false);
-            } else if (source instanceof CompositeReference) {
-                CompositeReference compRef = (CompositeReference) source;
+            } else if (source instanceof Reference) {
+                Reference reference = (Reference) source;
                 ServiceContract sourceContract = sourceWire.getServiceContract();
-                TargetInvoker invoker = compRef.createCallbackTargetInvoker(sourceContract, operation);
-                connect(outboundChain, inboundChain, invoker, false);
+                for (ReferenceBinding binding : reference.getReferenceBindings()) {
+                    // FIXME JFM why is this only specific to local bindings and not generalized to all bindings?
+                    if (binding instanceof LocalReferenceBinding) {
+                        TargetInvoker invoker;
+                        try {
+                            invoker = binding.createCallbackTargetInvoker(sourceContract, operation);
+                        } catch (TargetInvokerCreationException e) {
+                            throw new WireConnectException("Error connecting source and target",
+                                sourceWire,
+                                targetWire,
+                                e);
+                        }
+                        connect(outboundChain, inboundChain, invoker, false);
+                    }
+                }
             } else if (source instanceof Service) {
                 Service service = (Service) source;
                 ServiceContract sourceContract = sourceWire.getServiceContract();
@@ -347,41 +361,50 @@
 
     private void handleReference(Reference reference) throws WiringException {
         CompositeComponent parent = reference.getParent();
-        InboundWire inboundWire = reference.getInboundWire();
-        Map<Operation<?>, InboundInvocationChain> inboundChains = inboundWire.getInvocationChains();
-        for (InboundInvocationChain chain : inboundChains.values()) {
-            //TODO handle async
-            // add target invoker on inbound side
-            ServiceContract contract = inboundWire.getServiceContract();
-            Operation operation = chain.getOperation();
-            TargetInvoker invoker;
-            try {
-                invoker = reference.createTargetInvoker(contract, operation);
-            } catch (TargetInvokerCreationException e) {
-                String targetName = inboundWire.getContainer().getName();
-                throw new WireConnectException("Error processing inbound wire",
-                    null,
-                    null,
-                    targetName,
-                    null,
-                    e);
-            }
-            chain.setTargetInvoker(invoker);
-            chain.prepare();
-        }
-        OutboundWire outboundWire = reference.getOutboundWire();
-        // connect the reference's inbound and outbound wires
-        connect(inboundWire, outboundWire, true);
-
-        if (reference instanceof CompositeReference) {
-            // For a composite reference only, since its outbound wire comes
-            // from its parent composite,
-            // the corresponding target would not lie in its parent but
-            // rather in its parent's parent
-            parent = parent.getParent();
-            assert parent != null : "Parent of parent was null";
-            SCAObject target = parent.getChild(outboundWire.getTargetName().getPartName());
-            connect(parent, outboundWire, target);
+        for (ReferenceBinding binding : reference.getReferenceBindings()) {
+            InboundWire inboundWire = binding.getInboundWire();
+            Map<Operation<?>, InboundInvocationChain> inboundChains = inboundWire.getInvocationChains();
+            for (InboundInvocationChain chain : inboundChains.values()) {
+                //TODO handle async
+                // add target invoker on inbound side
+                ServiceContract contract = inboundWire.getServiceContract();
+                Operation operation = chain.getOperation();
+                TargetInvoker invoker;
+                try {
+                    invoker = binding.createTargetInvoker(contract, operation);
+                } catch (TargetInvokerCreationException e) {
+                    String targetName = inboundWire.getContainer().getName();
+                    throw new WireConnectException("Error processing inbound wire",
+                        null,
+                        null,
+                        targetName,
+                        null,
+                        e);
+                }
+                chain.setTargetInvoker(invoker);
+                chain.prepare();
+            }
+            OutboundWire outboundWire = binding.getOutboundWire();
+            // connect the reference's inbound and outbound wires
+            connect(inboundWire, outboundWire, true);
+
+            if (binding instanceof LocalReferenceBinding) {
+                String targetName = outboundWire.getTargetName().getPartName();
+                String serviceName = outboundWire.getTargetName().getPortName();
+                // A reference configured with the local binding is alwaysconnected to a target that is a sibling
+                // of the reference's parent composite.
+                parent = parent.getParent();
+                if (parent == null) {
+                    throw new TargetServiceNotFoundException("Reference target not found",
+                        reference.getName(),
+                        null,
+                        targetName,
+                        serviceName);
+                }
+                SCAObject target = parent.getChild(targetName);
+                connect(parent, outboundWire, target);
+            }
+
         }
     }
 
@@ -463,8 +486,20 @@
             boolean optimizable = isOptimizable(source.getScope(), target.getScope());
             connect(sourceWire, targetWire, optimizable);
         } else if (target instanceof Reference) {
-            InboundWire targetWire = ((Reference) target).getInboundWire();
-            assert targetWire != null;
+            InboundWire targetWire = null;
+            Reference reference = (Reference) target;
+            for (ReferenceBinding binding : reference.getReferenceBindings()) {
+                InboundWire candidate = binding.getInboundWire();
+                if (sourceWire.getBindingType().equals(candidate.getBindingType())) {
+                    targetWire = candidate;
+                    break;
+                }
+            }
+            if (targetWire == null) {
+                throw new NoCompatibleBindingsException(source.getName(),
+                    targetName.getPartName(),
+                    targetName.getPortName());
+            }
             checkIfWireable(sourceWire, targetWire);
             boolean optimizable = isOptimizable(source.getScope(), target.getScope());
             connect(sourceWire, targetWire, optimizable);

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingWirePostProcessor.java Sun Dec 31 10:58:58 2006
@@ -25,7 +25,7 @@
 import org.osoa.sca.annotations.Constructor;
 
 import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.databinding.Mediator;
 import org.apache.tuscany.spi.model.Operation;
@@ -80,6 +80,10 @@
         Object targetAddress = source.getContainer().getName();
         Map<Operation<?>, OutboundInvocationChain> callbackChains =
             target.getSourceCallbackInvocationChains(targetAddress);
+        if (callbackChains == null) {
+            // callback chains could be null
+            return;
+        }
         for (Map.Entry<Operation<?>, OutboundInvocationChain> entry : callbackChains.entrySet()) {
             Operation<?> sourceOperation = entry.getKey();
             Operation<?> targetOperation =
@@ -103,7 +107,7 @@
     public void process(InboundWire source, OutboundWire target) {
         SCAObject container = source.getContainer();
         // Either Service or Reference
-        boolean isReference = container instanceof Reference;
+        boolean isReference = container instanceof ReferenceBinding;
 
         Map<Operation<?>, InboundInvocationChain> chains = source.getInvocationChains();
         for (Map.Entry<Operation<?>, InboundInvocationChain> entry : chains.entrySet()) {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java Sun Dec 31 10:58:58 2006
@@ -18,19 +18,15 @@
  */
 package org.apache.tuscany.core.implementation.composite;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.Service;
-import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
-import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
@@ -47,7 +43,6 @@
  */
 public class CompositeBuilder extends ComponentBuilderExtension<CompositeImplementation> {
 
-    @SuppressWarnings("unchecked")
     public Component build(CompositeComponent parent,
                            ComponentDefinition<CompositeImplementation> componentDefinition,
                            DeploymentContext deploymentContext) throws BuilderException {
@@ -56,18 +51,6 @@
         String name = componentDefinition.getName();
         CompositeComponentImpl component = new CompositeComponentImpl(name, parent, connector, null);
 
-        List<BoundReferenceDefinition<? extends BindingDefinition>> boundReferences =
-            new ArrayList<BoundReferenceDefinition<? extends BindingDefinition>>();
-        List<ReferenceDefinition> allTargetlessReferences = new ArrayList<ReferenceDefinition>();
-
-        for (Object referenceTarget : componentType.getReferences().values()) {
-            if (referenceTarget instanceof BoundReferenceDefinition<?>) {
-                boundReferences.add((BoundReferenceDefinition<? extends BindingDefinition>) referenceTarget);
-            } else if (referenceTarget instanceof ReferenceDefinition) {
-                allTargetlessReferences.add((ReferenceDefinition) referenceTarget);
-            }
-        }
-
         for (ComponentDefinition<? extends Implementation<?>> definition : componentType.getComponents().values()) {
             try {
                 Component child = builderRegistry.build(component, definition, deploymentContext);
@@ -89,19 +72,15 @@
                 throw new BuilderInstantiationException("Error registering service", e);
             }
         }
-        for (BoundReferenceDefinition<? extends BindingDefinition> definition : boundReferences) {
-            try {
-                SCAObject child = builderRegistry.build(component, definition, deploymentContext);
-                component.register(child);
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering reference", e);
-            }
-        }
-        // TODO JFM remove need for targetless references
-        for (ReferenceDefinition definition : allTargetlessReferences) {
+        for (ReferenceDefinition definition : componentType.getReferences().values()) {
             try {
-                SCAObject child = builderRegistry.build(component, definition, deploymentContext);
-                component.register(child);
+                if (definition instanceof BoundReferenceDefinition) {
+                    BoundReferenceDefinition brd = (BoundReferenceDefinition) definition;
+                    Reference child = builderRegistry.build(component, brd, deploymentContext);
+                    component.register(child);
+                } else {
+                    throw new UnsupportedOperationException();
+                }
             } catch (ComponentRegistrationException e) {
                 throw new BuilderInstantiationException("Error registering reference", e);
             }

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceBinding.java (from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceBinding.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java&r1=491325&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceBinding.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReference.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeReferenceBinding.java Sun Dec 31 10:58:58 2006
@@ -19,8 +19,10 @@
 package org.apache.tuscany.core.implementation.composite;
 
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.extension.ReferenceExtension;
-import org.apache.tuscany.core.binding.local.CompositeTargetInvoker;
+import org.apache.tuscany.spi.extension.ReferenceBindingExtension;
+import org.apache.tuscany.core.binding.local.LocalTargetInvoker;
+import org.apache.tuscany.core.binding.local.LocalCallbackTargetInvoker;
+
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -28,19 +30,20 @@
 /**
  * A bindless reference to a target service in the parent composite
  *
+ * @deprecated
  * @version $Rev$ $Date$
  */
-public class CompositeReference extends ReferenceExtension {
+public class CompositeReferenceBinding extends ReferenceBindingExtension {
 
-    public CompositeReference(String name, CompositeComponent parent) {
+    public CompositeReferenceBinding(String name, CompositeComponent parent) {
         super(name, parent);
     }
 
     public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation) {
-        return new CompositeTargetInvoker(operation, outboundWire);
+        return new LocalTargetInvoker(operation, outboundWire);
     }
 
     public TargetInvoker createCallbackTargetInvoker(ServiceContract contract, Operation operation) {
-        return new CompositeReferenceCallbackTargetInvoker(operation, inboundWire);
+        return new LocalCallbackTargetInvoker(operation, inboundWire);
     }
 }

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ReferenceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ReferenceImpl.java?view=auto&rev=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ReferenceImpl.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ReferenceImpl.java Sun Dec 31 10:58:58 2006
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.core.implementation.composite;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.tuscany.spi.component.AbstractSCAObject;
+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.model.Scope;
+import org.apache.tuscany.spi.model.ServiceContract;
+
+/**
+ * The default implementation of a {@link org.apache.tuscany.spi.component.Reference}
+ *
+ * @version $Rev$ $Date$
+ */
+public class ReferenceImpl extends AbstractSCAObject implements Reference {
+    private ServiceContract<?> serviceContract;
+    private List<ReferenceBinding> bindings = new ArrayList<ReferenceBinding>();
+    private boolean system;
+
+    public ReferenceImpl(String name, CompositeComponent parent, ServiceContract<?> contract) {
+        this(name, parent, contract, false);
+    }
+
+    public ReferenceImpl(String name,
+                         CompositeComponent parent,
+                         ServiceContract<?> contract,
+                         boolean system) {
+        super(name, parent);
+        this.serviceContract = contract;
+        this.system = system;
+    }
+
+    public Scope getScope() {
+        return Scope.SYSTEM;
+    }
+
+    public ServiceContract<?> getServiceContract() {
+        return serviceContract;
+    }
+
+    public List<ReferenceBinding> getReferenceBindings() {
+        return Collections.unmodifiableList(bindings);
+    }
+
+    public void addReferenceBinding(ReferenceBinding binding) {
+        binding.setReference(this);
+        bindings.add(binding);
+    }
+
+    public void start() {
+        super.start();
+        for (ReferenceBinding binding : bindings) {
+            binding.start();
+        }
+    }
+
+    public void stop() {
+        super.stop();
+        for (ReferenceBinding binding : bindings) {
+            binding.stop();
+        }
+    }
+
+    @Override
+    public boolean isSystem() {
+        return system;
+    }
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ServiceImpl.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ServiceImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ServiceImpl.java Sun Dec 31 10:58:58 2006
@@ -18,10 +18,10 @@
  */
 package org.apache.tuscany.core.implementation.composite;
 
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.net.URI;
 
 import org.apache.tuscany.spi.component.AbstractSCAObject;
 import org.apache.tuscany.spi.component.CompositeComponent;
@@ -49,8 +49,7 @@
                        CompositeComponent parent,
                        ServiceContract<?> contract,
                        URI targetUri,
-                       boolean system
-    ) {
+                       boolean system) {
         super(name, parent);
         this.serviceContract = contract;
         this.system = system;

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java Sun Dec 31 10:58:58 2006
@@ -24,7 +24,7 @@
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.MissingWireTargetException;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.ServiceBinding;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.BindingBuilderExtension;
@@ -32,8 +32,8 @@
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ServiceContract;
 
-import org.apache.tuscany.core.implementation.system.component.SystemReferenceImpl;
-import org.apache.tuscany.core.implementation.system.component.SystemServiceBindingImpl;
+import org.apache.tuscany.core.implementation.system.component.SystemReferenceBinding;
+import org.apache.tuscany.core.implementation.system.component.SystemServiceBinding;
 import org.apache.tuscany.core.implementation.system.model.SystemBindingDefinition;
 
 /**
@@ -54,14 +54,15 @@
             throw new MissingWireTargetException("Target URI not specified", definition.getName());
         }
         ServiceContract<?> contract = definition.getServiceContract();
-        return new SystemServiceBindingImpl(definition.getName(), parent, contract);
+        return new SystemServiceBinding(definition.getName(), parent, contract);
     }
 
-    public Reference build(CompositeComponent parent,
-                           BoundReferenceDefinition<SystemBindingDefinition> definition,
-                           DeploymentContext deploymentContext) {
+    public ReferenceBinding build(CompositeComponent parent,
+                                  BoundReferenceDefinition definition,
+                                  SystemBindingDefinition bindingDefinition,
+                                  DeploymentContext deploymentContext) {
         String name = definition.getName();
-        return new SystemReferenceImpl(name, parent);
+        return new SystemReferenceBinding(name, parent);
     }
 
     @Override

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBinding.java (from r491316, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBinding.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceImpl.java&r1=491316&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBinding.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBinding.java Sun Dec 31 10:58:58 2006
@@ -21,6 +21,7 @@
 import org.apache.tuscany.spi.component.AbstractSCAObject;
 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.model.Operation;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
@@ -33,11 +34,12 @@
  *
  * @version $Rev$ $Date$
  */
-public class SystemReferenceImpl extends AbstractSCAObject implements Reference {
+public class SystemReferenceBinding extends AbstractSCAObject implements ReferenceBinding {
+    protected Reference reference;
     protected InboundWire inboundWire;
     protected OutboundWire outboundWire;
 
-    public SystemReferenceImpl(String name, CompositeComponent parent) {
+    public SystemReferenceBinding(String name, CompositeComponent parent) {
         super(name, parent);
     }
 
@@ -49,6 +51,10 @@
         this.inboundWire = wire;
     }
 
+    public void setReference(Reference reference) {
+        this.reference = reference;
+    }
+
     public InboundWire getInboundWire() {
         return inboundWire;
     }
@@ -81,7 +87,9 @@
         throw new UnsupportedOperationException();
     }
 
+    @Override
     public boolean isSystem() {
-        return true;
+        return reference != null && reference.isSystem();
     }
+
 }

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

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

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBinding.java (from r491325, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBinding.java?view=diff&rev=491465&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingImpl.java&r1=491325&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBinding.java&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBinding.java Sun Dec 31 10:58:58 2006
@@ -36,13 +36,13 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class SystemServiceBindingImpl extends AbstractSCAObject implements ServiceBinding {
+public class SystemServiceBinding extends AbstractSCAObject implements ServiceBinding {
     protected Service service;
     protected InboundWire inboundWire;
     protected OutboundWire outboundWire;
     protected ServiceContract<?> serviceContract;
 
-    public SystemServiceBindingImpl(String name, CompositeComponent parent, ServiceContract<?> serviceContract)
+    public SystemServiceBinding(String name, CompositeComponent parent, ServiceContract<?> serviceContract)
         throws CoreRuntimeException {
         super(name, parent);
         this.serviceContract = serviceContract;

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/CompositeContextImpl.java Sun Dec 31 10:58:58 2006
@@ -27,7 +27,7 @@
 import org.apache.tuscany.spi.QualifiedName;
 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.SCAObject;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.component.ServiceBinding;
@@ -123,8 +123,8 @@
             if (wire == null) {
                 throw new ServiceRuntimeException("Local binding for service not found [" + name + "]");
             }
-        } else if (child instanceof Reference) {
-            wire = ((Reference) child).getInboundWire();
+        } else if (child instanceof ReferenceBinding) {
+            wire = ((ReferenceBinding) child).getInboundWire();
         } else if (child == null) {
             throw new ServiceRuntimeException("Service not found [" + serviceName + "]");
         } else {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=491465&r1=491464&r2=491465
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Sun Dec 31 10:58:58 2006
@@ -53,11 +53,13 @@
 import org.apache.tuscany.spi.loader.UndefinedPropertyException;
 import org.apache.tuscany.spi.loader.UndefinedReferenceException;
 import org.apache.tuscany.spi.loader.UnrecognizedElementException;
+import org.apache.tuscany.spi.model.BindingDefinition;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
 import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.OverrideOptions;
 import org.apache.tuscany.spi.model.Property;
@@ -66,6 +68,7 @@
 import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
 import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
 import org.apache.tuscany.core.property.SimplePropertyObjectFactory;
 
@@ -159,8 +162,18 @@
                                     BoundServiceDefinition bsd = (BoundServiceDefinition) serviceDefinition;
                                     if (bsd.getBindings().isEmpty()) {
                                         if (bsd.getBindings().isEmpty()) {
-                                            // TODO implement a more advanced option that allows the runtime to
-                                            // choose a binding
+                                            // TODO JFM implement capability for the runtime to choose a binding
+                                            bsd.addBinding(new LocalBindingDefinition());
+                                        }
+                                    }
+                                }
+                            }
+                            for (ReferenceDefinition referenceDefinition : type.getReferences().values()) {
+                                if (referenceDefinition instanceof BoundReferenceDefinition) {
+                                    BoundReferenceDefinition bsd = (BoundReferenceDefinition) referenceDefinition;
+                                    if (bsd.getBindings().isEmpty()) {
+                                        if (bsd.getBindings().isEmpty()) {
+                                            // TODO JFM implement capability for the runtime to choose a binding
                                             bsd.addBinding(new LocalBindingDefinition());
                                         }
                                     }
@@ -244,14 +257,38 @@
         if (!componentType.getReferences().containsKey(name)) {
             throw new UndefinedReferenceException(name);
         }
-        ReferenceTarget referenceTarget = new ReferenceTarget();
-        referenceTarget.setReferenceName(name);
-        try {
-            referenceTarget.addTarget(new URI(target));
-        } catch (URISyntaxException e) {
-            throw new InvalidReferenceException(e);
+        if (componentType instanceof CompositeComponentType) {
+            ReferenceDefinition definition = componentType.getReferences().get(name);
+            assert definition instanceof BoundReferenceDefinition;
+            BoundReferenceDefinition brd = (BoundReferenceDefinition) definition;
+            if (brd.getBindings().isEmpty()) {
+                // TODO JFM allow selection of a default binding
+                try {
+                    LocalBindingDefinition binding = new LocalBindingDefinition(new URI(target));
+                    brd.addBinding(binding);
+                } catch (URISyntaxException e) {
+                    throw new InvalidReferenceException(e);
+                }
+            } else {
+                for (BindingDefinition binding : brd.getBindings()) {
+                    try {
+                        // FIXME this is bad - clarify in the spec how URIs are overriden
+                        binding.setTargetUri(new URI(target));
+                    } catch (URISyntaxException e) {
+                        throw new LoaderException(e);
+                    }
+                }
+            }
+        } else {
+            ReferenceTarget referenceTarget = new ReferenceTarget();
+            referenceTarget.setReferenceName(name);
+            try {
+                referenceTarget.addTarget(new URI(target));
+            } catch (URISyntaxException e) {
+                throw new InvalidReferenceException(e);
+            }
+            componentDefinition.add(referenceTarget);
         }
-        componentDefinition.add(referenceTarget);
     }
 
     @SuppressWarnings("unchecked")



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