You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/04/13 19:49:16 UTC

svn commit: r528566 - in /incubator/tuscany/java/sca: modules/core/src/main/java/org/apache/tuscany/core/deployer/ modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/ modules/interface/src/main/java/org/apa...

Author: rfeng
Date: Fri Apr 13 10:49:14 2007
New Revision: 528566

URL: http://svn.apache.org/viewvc?view=rev&rev=528566
Log:
Add the logic to deal with promoted component reference and bring up the echo-binding sample

Modified:
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java
    incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java
    incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java
    incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java
    incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java
    incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java Fri Apr 13 10:49:14 2007
@@ -191,44 +191,74 @@
         for (ComponentReference ref : definition.getReferences()) {
             List<Wire> wires = new ArrayList<Wire>();
             String refName = ref.getName();
-            org.apache.tuscany.assembly.Reference refDefinition = getReference(definition.getImplementation(), refName);
+            org.apache.tuscany.assembly.Reference refDefinition = ref.getReference();
             assert refDefinition != null;
-            List<ComponentService> services = ref.getTargets();
-            for (ComponentService service : services) {
-                org.apache.tuscany.assembly.Component targetCompoent = service.getBinding(SCABinding.class)
-                    .getComponent();
-                Component target = (Component)getSCAObject(models, targetCompoent);
-                URI targetUri = URI.create(target.getUri() + "#" + service.getName());
-                if (target == null && (refDefinition.getMultiplicity() == Multiplicity.ZERO_ONE || refDefinition
-                        .getMultiplicity() == Multiplicity.ZERO_N)) {
-                    // a non-required reference, just skip
-                    continue;
+            List<CompositeReference> promoted = ref.promotedAs();
+            if (!promoted.isEmpty()) {
+                // TODO: Assume a component reference can only be promoted by at
+                // most one composite reference
+                CompositeReference compositeReference = promoted.get(0);
+                Reference target = (Reference)getSCAObject(models, compositeReference);
+                // FIXME: Assume we only have one binding
+                ReferenceBinding binding = target.getReferenceBindings().get(0);
+                URI targetUri = binding.getTargetUri();
+                InterfaceContract contract = binding.getBindingInterfaceContract();
+                if (contract == null) {
+                    contract = refDefinition.getInterfaceContract();
                 }
-                if (target == null) {
-                    throw new ComponentNotFoundException("Target not found", targetUri);
-                }
-                URI sourceURI = URI.create(source.getUri() + "#" + refName);
+                QName type = binding.getBindingType();
+                URI sourceUri = URI.create(source.getUri() + "#" + refName);
                 Wire wire;
                 try {
-                    wire = createWire(sourceURI, targetUri, refDefinition.getInterfaceContract(), service.getService()
-                        .getInterfaceContract(), Wire.LOCAL_BINDING);
+                    wire = createWire(sourceUri, targetUri, refDefinition.getInterfaceContract(), contract, type);
                 } catch (IncompatibleInterfaceContractException e1) {
-                    throw new IncompatibleInterfacesException(sourceURI, targetUri, e1);
+                    throw new IllegalStateException(e1);
                 }
+                binding.setWire(wire);
                 try {
-                    attachInvokers(refName, wire, source, target);
+                    attachInvokers(targetUri.getFragment(), wire, binding, binding);
                 } catch (TargetInvokerCreationException e) {
-                    throw new WireCreationException("Error creating invoker", sourceURI, targetUri, e);
+                    throw new WireCreationException("Error creating invoker", sourceUri, targetUri, e);
                 }
+                wires.add(wire);
+            } else {
+                List<ComponentService> services = ref.getTargets();
+                for (ComponentService service : services) {
+                    org.apache.tuscany.assembly.Component targetCompoent = service.getBinding(SCABinding.class)
+                        .getComponent();
+                    Component target = (Component)getSCAObject(models, targetCompoent);
+                    URI targetUri = URI.create(target.getUri() + "#" + service.getName());
+                    if (target == null && (refDefinition.getMultiplicity() == Multiplicity.ZERO_ONE || refDefinition
+                            .getMultiplicity() == Multiplicity.ZERO_N)) {
+                        // a non-required reference, just skip
+                        continue;
+                    }
+                    if (target == null) {
+                        throw new ComponentNotFoundException("Target not found", targetUri);
+                    }
+                    URI sourceURI = URI.create(source.getUri() + "#" + refName);
+                    Wire wire;
+                    try {
+                        wire = createWire(sourceURI, targetUri, refDefinition.getInterfaceContract(), service
+                            .getService().getInterfaceContract(), Wire.LOCAL_BINDING);
+                    } catch (IncompatibleInterfaceContractException e1) {
+                        throw new IncompatibleInterfacesException(sourceURI, targetUri, e1);
+                    }
+                    try {
+                        attachInvokers(refName, wire, source, target);
+                    } catch (TargetInvokerCreationException e) {
+                        throw new WireCreationException("Error creating invoker", sourceURI, targetUri, e);
+                    }
 
-                if (postProcessorRegistry != null) {
-                    postProcessorRegistry.process(wire);
-                }
+                    if (postProcessorRegistry != null) {
+                        postProcessorRegistry.process(wire);
+                    }
 
-                optimize(source, target, wire);
-                wires.add(wire);
-                if (!wire.getCallbackInvocationChains().isEmpty()) {
-                    target.attachCallbackWire(wire);
+                    optimize(source, target, wire);
+                    wires.add(wire);
+                    if (!wire.getCallbackInvocationChains().isEmpty()) {
+                        target.attachCallbackWire(wire);
+                    }
                 }
             }
             if (wires.size() > 1) {

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java Fri Apr 13 10:49:14 2007
@@ -198,14 +198,18 @@
                 }
                 JavaElement element = entry.getValue();
                 ObjectFactory<?> factory = new CallbackWireObjectFactory(element.getType(), proxyService, wires);
-                configuration.getInjectionSites().add(element);
+                if (!(element.getAnchor() instanceof Constructor)) {
+                    configuration.getInjectionSites().add(element);
+                }
                 configuration.setObjectFactory(element, factory);
             }
         }
         for (Reference ref : configuration.getDefinition().getReferences()) {
             JavaElement element = configuration.getDefinition().getReferenceMembers().get(ref.getName());
             if (element != null) {
-                configuration.getInjectionSites().add(element);
+                if (!(element.getAnchor() instanceof Constructor)) {
+                    configuration.getInjectionSites().add(element);
+                }
                 List<Wire> wireList = wires.get(ref.getName());
                 if (ref.getMultiplicity() == Multiplicity.ONE_N || ref.getMultiplicity() == Multiplicity.ZERO_N) {
                     List<ObjectFactory<?>> factories = new ArrayList<ObjectFactory<?>>();
@@ -380,7 +384,6 @@
         return null;
     }
 
-    
     protected abstract <B> ObjectFactory<B> createWireFactory(Class<B> interfaze, Wire wire);
 
     /**

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java Fri Apr 13 10:49:14 2007
@@ -21,6 +21,7 @@
 import java.lang.annotation.ElementType;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
+import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.net.URI;
 import java.util.ArrayList;
@@ -161,10 +162,13 @@
             Object obj = factories.get(element);
             if (obj instanceof ObjectFactory) {
                 ObjectFactory<?> factory = (ObjectFactory<?>)obj;
+                Member member = (Member)element.getAnchor();
                 if (element.getElementType() == ElementType.FIELD) {
-                    injectors[i++] = new FieldInjector<T>((Field)element.getAnchor(), factory);
-                } else if (element.getElementType() == ElementType.PARAMETER && element.getAnchor() instanceof Method) {
-                    injectors[i++] = new MethodInjector<T>((Method)element.getAnchor(), factory);
+                    injectors[i++] = new FieldInjector<T>((Field)member, factory);
+                } else if (element.getElementType() == ElementType.PARAMETER && member instanceof Method) {
+                    injectors[i++] = new MethodInjector<T>((Method)member, factory);
+                } else if (member instanceof Constructor) {
+                    // Ignore
                 } else {
                     throw new AssertionError(String.valueOf(element));
                 }

Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java (original)
+++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java Fri Apr 13 10:49:14 2007
@@ -149,4 +149,16 @@
      * @param wrapperStyle the wrapperStyle to set
      */
     void setWrapperStyle(boolean wrapperStyle);
+    
+    /**
+     * Get the databinding for the operation
+     * @return
+     */
+    String getDataBinding();
+    
+    /**
+     * Set the databinding for the operation
+     * @param dataBinding
+     */
+    void setDataBinding(String dataBinding);
 }

Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java Fri Apr 13 10:49:14 2007
@@ -43,6 +43,7 @@
     private boolean nonBlocking;
     private boolean wrapperStyle;
     private WrapperInfo wrapper;
+    private String dataBinding;
 
     /**
      * @param name
@@ -270,6 +271,14 @@
      */
     public void setWrapperStyle(boolean wrapperStyle) {
         this.wrapperStyle = wrapperStyle;
+    }
+
+    public String getDataBinding() {
+        return dataBinding;
+    }
+
+    public void setDataBinding(String dataBinding) {
+        this.dataBinding = dataBinding;
     }
 
 }

Modified: incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java (original)
+++ incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java Fri Apr 13 10:49:14 2007
@@ -36,15 +36,15 @@
     public ServiceBinding build(CompositeService serviceDefinition,
                                 EchoBinding bindingDefinition,
                                 DeploymentContext context) throws BuilderException {
-        return new EchoService(URI.create("#" + serviceDefinition.getName()));
+        return new EchoService(URI.create(context.getComponentId() + "#" + serviceDefinition.getName()));
     }
 
     @Override
     public ReferenceBinding build(CompositeReference referenceDefinition,
                                   EchoBinding bindingDefinition,
                                   DeploymentContext context) throws BuilderException {
-        URI targetURI = bindingDefinition.getURI() != null? URI.create(bindingDefinition.getURI()) : null;
-        return new EchoReference(URI.create("#" + referenceDefinition.getName()), targetURI);
+        URI targetURI = bindingDefinition.getURI() != null ? URI.create(bindingDefinition.getURI()) : null;
+        return new EchoReference(URI.create(context.getComponentId() + "#" + referenceDefinition.getName()), targetURI);
     }
 
     @Override

Modified: incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java (original)
+++ incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java Fri Apr 13 10:49:14 2007
@@ -22,8 +22,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.tuscany.core.binding.local.LocalCallbackTargetInvoker;
-import org.apache.tuscany.core.binding.local.LocalTargetInvoker;
 import org.apache.tuscany.interfacedef.Operation;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.extension.ReferenceBindingExtension;

Modified: incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java (original)
+++ incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java Fri Apr 13 10:49:14 2007
@@ -33,7 +33,7 @@
 
     protected void setUp() throws Exception {
         SCARuntime.start("EchoBinding.composite");
-        ComponentContext context = SCARuntime.getComponentContext("ClientComponent");
+        ComponentContext context = SCARuntime.getComponentContext("Client");
         ServiceReference<Client> service = context.createSelfReference(Client.class);
         client = service.getService();
     }

Modified: incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite?view=diff&rev=528566&r1=528565&r2=528566
==============================================================================
--- incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite (original)
+++ incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite Fri Apr 13 10:49:14 2007
@@ -24,7 +24,7 @@
 
     <service name="ClientService" promote="Client">
         <interface.java interface="org.apache.tuscany.binding.echo.Client"/>
-        <binding.echo/>
+        <binding.echo uri="echo://tmp" />
     </service>
 
     <component name="Client">
@@ -33,7 +33,7 @@
     
     <reference name="EchoReference" promote="Client/echoReference">
         <interface.java interface="org.apache.tuscany.binding.echo.Echo"/>
-        <binding.echo/>
+        <binding.echo uri="echo://tmp" />
     </reference>
     
 </composite>



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


Re: svn commit: r528566 - in /incubator/tuscany/java/sca: modules/core/src/main/java/org/apache/tuscany/core/deployer/ modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/ modules/interface/src/main/java/org/apa

Posted by Raymond Feng <en...@gmail.com>.
Hi,

With this check-in, the echo binding reference sample is working again. You 
can start to try other samples.

Thanks,
Raymond

----- Original Message ----- 
From: <rf...@apache.org>
To: <tu...@ws.apache.org>
Sent: Friday, April 13, 2007 10:49 AM
Subject: svn commit: r528566 - in /incubator/tuscany/java/sca: 
modules/core/src/main/java/org/apache/tuscany/core/deployer/ 
modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/ 
modules/interface/src/main/java/org/apa...


> Author: rfeng
> Date: Fri Apr 13 10:49:14 2007
> New Revision: 528566
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=528566
> Log:
> Add the logic to deal with promoted component reference and bring up the 
> echo-binding sample
>
> Modified:
> 
> incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
> 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java
> 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java
> 
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java
> 
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java
> 
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java
> 
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java
> 
> incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java
> 
> incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite
>
> Modified: 
> incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java 
> Fri Apr 13 10:49:14 2007
> @@ -191,44 +191,74 @@
>         for (ComponentReference ref : definition.getReferences()) {
>             List<Wire> wires = new ArrayList<Wire>();
>             String refName = ref.getName();
> -            org.apache.tuscany.assembly.Reference refDefinition = 
> getReference(definition.getImplementation(), refName);
> +            org.apache.tuscany.assembly.Reference refDefinition = 
> ref.getReference();
>             assert refDefinition != null;
> -            List<ComponentService> services = ref.getTargets();
> -            for (ComponentService service : services) {
> -                org.apache.tuscany.assembly.Component targetCompoent = 
> service.getBinding(SCABinding.class)
> -                    .getComponent();
> -                Component target = (Component)getSCAObject(models, 
> targetCompoent);
> -                URI targetUri = URI.create(target.getUri() + "#" + 
> service.getName());
> -                if (target == null && (refDefinition.getMultiplicity() == 
> Multiplicity.ZERO_ONE || refDefinition
> -                        .getMultiplicity() == Multiplicity.ZERO_N)) {
> -                    // a non-required reference, just skip
> -                    continue;
> +            List<CompositeReference> promoted = ref.promotedAs();
> +            if (!promoted.isEmpty()) {
> +                // TODO: Assume a component reference can only be 
> promoted by at
> +                // most one composite reference
> +                CompositeReference compositeReference = promoted.get(0);
> +                Reference target = (Reference)getSCAObject(models, 
> compositeReference);
> +                // FIXME: Assume we only have one binding
> +                ReferenceBinding binding = 
> target.getReferenceBindings().get(0);
> +                URI targetUri = binding.getTargetUri();
> +                InterfaceContract contract = 
> binding.getBindingInterfaceContract();
> +                if (contract == null) {
> +                    contract = refDefinition.getInterfaceContract();
>                 }
> -                if (target == null) {
> -                    throw new ComponentNotFoundException("Target not 
> found", targetUri);
> -                }
> -                URI sourceURI = URI.create(source.getUri() + "#" + 
> refName);
> +                QName type = binding.getBindingType();
> +                URI sourceUri = URI.create(source.getUri() + "#" + 
> refName);
>                 Wire wire;
>                 try {
> -                    wire = createWire(sourceURI, targetUri, 
> refDefinition.getInterfaceContract(), service.getService()
> -                        .getInterfaceContract(), Wire.LOCAL_BINDING);
> +                    wire = createWire(sourceUri, targetUri, 
> refDefinition.getInterfaceContract(), contract, type);
>                 } catch (IncompatibleInterfaceContractException e1) {
> -                    throw new IncompatibleInterfacesException(sourceURI, 
> targetUri, e1);
> +                    throw new IllegalStateException(e1);
>                 }
> +                binding.setWire(wire);
>                 try {
> -                    attachInvokers(refName, wire, source, target);
> +                    attachInvokers(targetUri.getFragment(), wire, 
> binding, binding);
>                 } catch (TargetInvokerCreationException e) {
> -                    throw new WireCreationException("Error creating 
> invoker", sourceURI, targetUri, e);
> +                    throw new WireCreationException("Error creating 
> invoker", sourceUri, targetUri, e);
>                 }
> +                wires.add(wire);
> +            } else {
> +                List<ComponentService> services = ref.getTargets();
> +                for (ComponentService service : services) {
> +                    org.apache.tuscany.assembly.Component targetCompoent 
> = service.getBinding(SCABinding.class)
> +                        .getComponent();
> +                    Component target = (Component)getSCAObject(models, 
> targetCompoent);
> +                    URI targetUri = URI.create(target.getUri() + "#" + 
> service.getName());
> +                    if (target == null && 
> (refDefinition.getMultiplicity() == Multiplicity.ZERO_ONE || refDefinition
> +                            .getMultiplicity() == Multiplicity.ZERO_N)) {
> +                        // a non-required reference, just skip
> +                        continue;
> +                    }
> +                    if (target == null) {
> +                        throw new ComponentNotFoundException("Target not 
> found", targetUri);
> +                    }
> +                    URI sourceURI = URI.create(source.getUri() + "#" + 
> refName);
> +                    Wire wire;
> +                    try {
> +                        wire = createWire(sourceURI, targetUri, 
> refDefinition.getInterfaceContract(), service
> +                            .getService().getInterfaceContract(), 
> Wire.LOCAL_BINDING);
> +                    } catch (IncompatibleInterfaceContractException e1) {
> +                        throw new 
> IncompatibleInterfacesException(sourceURI, targetUri, e1);
> +                    }
> +                    try {
> +                        attachInvokers(refName, wire, source, target);
> +                    } catch (TargetInvokerCreationException e) {
> +                        throw new WireCreationException("Error creating 
> invoker", sourceURI, targetUri, e);
> +                    }
>
> -                if (postProcessorRegistry != null) {
> -                    postProcessorRegistry.process(wire);
> -                }
> +                    if (postProcessorRegistry != null) {
> +                        postProcessorRegistry.process(wire);
> +                    }
>
> -                optimize(source, target, wire);
> -                wires.add(wire);
> -                if (!wire.getCallbackInvocationChains().isEmpty()) {
> -                    target.attachCallbackWire(wire);
> +                    optimize(source, target, wire);
> +                    wires.add(wire);
> +                    if (!wire.getCallbackInvocationChains().isEmpty()) {
> +                        target.attachCallbackWire(wire);
> +                    }
>                 }
>             }
>             if (wires.size() > 1) {
>
> Modified: 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoAtomicComponent.java 
> Fri Apr 13 10:49:14 2007
> @@ -198,14 +198,18 @@
>                 }
>                 JavaElement element = entry.getValue();
>                 ObjectFactory<?> factory = new 
> CallbackWireObjectFactory(element.getType(), proxyService, wires);
> -                configuration.getInjectionSites().add(element);
> +                if (!(element.getAnchor() instanceof Constructor)) {
> +                    configuration.getInjectionSites().add(element);
> +                }
>                 configuration.setObjectFactory(element, factory);
>             }
>         }
>         for (Reference ref : 
> configuration.getDefinition().getReferences()) {
>             JavaElement element = 
> configuration.getDefinition().getReferenceMembers().get(ref.getName());
>             if (element != null) {
> -                configuration.getInjectionSites().add(element);
> +                if (!(element.getAnchor() instanceof Constructor)) {
> +                    configuration.getInjectionSites().add(element);
> +                }
>                 List<Wire> wireList = wires.get(ref.getName());
>                 if (ref.getMultiplicity() == Multiplicity.ONE_N || 
> ref.getMultiplicity() == Multiplicity.ZERO_N) {
>                     List<ObjectFactory<?>> factories = new 
> ArrayList<ObjectFactory<?>>();
> @@ -380,7 +384,6 @@
>         return null;
>     }
>
> -
>     protected abstract <B> ObjectFactory<B> createWireFactory(Class<B> 
> interfaze, Wire wire);
>
>     /**
>
> Modified: 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/implementation/java/context/PojoConfiguration.java 
> Fri Apr 13 10:49:14 2007
> @@ -21,6 +21,7 @@
> import java.lang.annotation.ElementType;
> import java.lang.reflect.Constructor;
> import java.lang.reflect.Field;
> +import java.lang.reflect.Member;
> import java.lang.reflect.Method;
> import java.net.URI;
> import java.util.ArrayList;
> @@ -161,10 +162,13 @@
>             Object obj = factories.get(element);
>             if (obj instanceof ObjectFactory) {
>                 ObjectFactory<?> factory = (ObjectFactory<?>)obj;
> +                Member member = (Member)element.getAnchor();
>                 if (element.getElementType() == ElementType.FIELD) {
> -                    injectors[i++] = new 
> FieldInjector<T>((Field)element.getAnchor(), factory);
> -                } else if (element.getElementType() == 
> ElementType.PARAMETER && element.getAnchor() instanceof Method) {
> -                    injectors[i++] = new 
> MethodInjector<T>((Method)element.getAnchor(), factory);
> +                    injectors[i++] = new FieldInjector<T>((Field)member, 
> factory);
> +                } else if (element.getElementType() == 
> ElementType.PARAMETER && member instanceof Method) {
> +                    injectors[i++] = new 
> MethodInjector<T>((Method)member, factory);
> +                } else if (member instanceof Constructor) {
> +                    // Ignore
>                 } else {
>                     throw new AssertionError(String.valueOf(element));
>                 }
>
> Modified: 
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/Operation.java 
> Fri Apr 13 10:49:14 2007
> @@ -149,4 +149,16 @@
>      * @param wrapperStyle the wrapperStyle to set
>      */
>     void setWrapperStyle(boolean wrapperStyle);
> +
> +    /**
> +     * Get the databinding for the operation
> +     * @return
> +     */
> +    String getDataBinding();
> +
> +    /**
> +     * Set the databinding for the operation
> +     * @param dataBinding
> +     */
> +    void setDataBinding(String dataBinding);
> }
>
> Modified: 
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/interfacedef/impl/OperationImpl.java 
> Fri Apr 13 10:49:14 2007
> @@ -43,6 +43,7 @@
>     private boolean nonBlocking;
>     private boolean wrapperStyle;
>     private WrapperInfo wrapper;
> +    private String dataBinding;
>
>     /**
>      * @param name
> @@ -270,6 +271,14 @@
>      */
>     public void setWrapperStyle(boolean wrapperStyle) {
>         this.wrapperStyle = wrapperStyle;
> +    }
> +
> +    public String getDataBinding() {
> +        return dataBinding;
> +    }
> +
> +    public void setDataBinding(String dataBinding) {
> +        this.dataBinding = dataBinding;
>     }
>
> }
>
> Modified: 
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoBuilder.java 
> Fri Apr 13 10:49:14 2007
> @@ -36,15 +36,15 @@
>     public ServiceBinding build(CompositeService serviceDefinition,
>                                 EchoBinding bindingDefinition,
>                                 DeploymentContext context) throws 
> BuilderException {
> -        return new EchoService(URI.create("#" + 
> serviceDefinition.getName()));
> +        return new EchoService(URI.create(context.getComponentId() + "#" 
> + serviceDefinition.getName()));
>     }
>
>     @Override
>     public ReferenceBinding build(CompositeReference referenceDefinition,
>                                   EchoBinding bindingDefinition,
>                                   DeploymentContext context) throws 
> BuilderException {
> -        URI targetURI = bindingDefinition.getURI() != null? 
> URI.create(bindingDefinition.getURI()) : null;
> -        return new EchoReference(URI.create("#" + 
> referenceDefinition.getName()), targetURI);
> +        URI targetURI = bindingDefinition.getURI() != null ? 
> URI.create(bindingDefinition.getURI()) : null;
> +        return new EchoReference(URI.create(context.getComponentId() + 
> "#" + referenceDefinition.getName()), targetURI);
>     }
>
>     @Override
>
> Modified: 
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/samples/echo-binding/src/main/java/org/apache/tuscany/binding/echo/EchoReference.java 
> Fri Apr 13 10:49:14 2007
> @@ -22,8 +22,6 @@
>
> import javax.xml.namespace.QName;
>
> -import org.apache.tuscany.core.binding.local.LocalCallbackTargetInvoker;
> -import org.apache.tuscany.core.binding.local.LocalTargetInvoker;
> import org.apache.tuscany.interfacedef.Operation;
> import org.apache.tuscany.spi.component.TargetInvokerCreationException;
> import org.apache.tuscany.spi.extension.ReferenceBindingExtension;
>
> Modified: 
> incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/samples/echo-binding/src/test/java/org/apache/tuscany/binding/echo/EchoBindingTestCase.java 
> Fri Apr 13 10:49:14 2007
> @@ -33,7 +33,7 @@
>
>     protected void setUp() throws Exception {
>         SCARuntime.start("EchoBinding.composite");
> -        ComponentContext context = 
> SCARuntime.getComponentContext("ClientComponent");
> +        ComponentContext context = 
> SCARuntime.getComponentContext("Client");
>         ServiceReference<Client> service = 
> context.createSelfReference(Client.class);
>         client = service.getService();
>     }
>
> Modified: 
> incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite?view=diff&rev=528566&r1=528565&r2=528566
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite 
> (original)
> +++ 
> incubator/tuscany/java/sca/samples/echo-binding/src/test/resources/EchoBinding.composite 
> Fri Apr 13 10:49:14 2007
> @@ -24,7 +24,7 @@
>
>     <service name="ClientService" promote="Client">
>         <interface.java 
> interface="org.apache.tuscany.binding.echo.Client"/>
> -        <binding.echo/>
> +        <binding.echo uri="echo://tmp" />
>     </service>
>
>     <component name="Client">
> @@ -33,7 +33,7 @@
>
>     <reference name="EchoReference" promote="Client/echoReference">
>         <interface.java interface="org.apache.tuscany.binding.echo.Echo"/>
> -        <binding.echo/>
> +        <binding.echo uri="echo://tmp" />
>     </reference>
>
> </composite>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-commits-help@ws.apache.org
> 


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