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: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to