You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Raymond Feng <en...@gmail.com> on 2007/04/13 19:59:11 UTC
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
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