From 4c6f7de0905e280220dc4467b0bafff7e3635b85 Mon Sep 17 00:00:00 2001 From: rfeng Date: Mon, 23 Nov 2009 18:10:49 +0000 Subject: Get the interface from the endpoint when it is null git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@883440 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/core/context/impl/ComponentContextImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'sca-java-2.x/trunk/modules/core') diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java index 3a4ff89357..6839bc241b 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java +++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java @@ -32,7 +32,6 @@ import org.apache.tuscany.sca.assembly.CompositeService; import org.apache.tuscany.sca.assembly.Endpoint; import org.apache.tuscany.sca.assembly.EndpointReference; import org.apache.tuscany.sca.assembly.Multiplicity; -import org.apache.tuscany.sca.assembly.Reference; import org.apache.tuscany.sca.assembly.SCABinding; import org.apache.tuscany.sca.assembly.Service; import org.apache.tuscany.sca.context.CompositeContext; @@ -301,12 +300,11 @@ public class ComponentContextImpl implements RuntimeComponentContext { public ServiceReference getServiceReference(Class businessInterface, RuntimeEndpointReference endpointReference) { try { - RuntimeComponentReference ref = (RuntimeComponentReference)endpointReference.getReference(); - InterfaceContract interfaceContract = ref.getInterfaceContract(); - Reference componentTypeReference = ref.getReference(); - if (componentTypeReference != null && componentTypeReference.getInterfaceContract() != null) { - interfaceContract = componentTypeReference.getInterfaceContract(); + InterfaceContract interfaceContract = endpointReference.getComponentTypeReferenceInterfaceContract(); + if (businessInterface == null) { + businessInterface = (Class)((JavaInterface)interfaceContract.getInterface()).getJavaClass(); } + RuntimeComponentReference ref = (RuntimeComponentReference)endpointReference.getReference(); InterfaceContract refInterfaceContract = getInterfaceContract(interfaceContract, businessInterface); if (refInterfaceContract != interfaceContract) { ref = (RuntimeComponentReference)ref.clone(); @@ -405,6 +403,9 @@ public class ComponentContextImpl implements RuntimeComponentContext { */ private InterfaceContract getInterfaceContract(InterfaceContract interfaceContract, Class businessInterface) throws CloneNotSupportedException, InvalidInterfaceException { + if (businessInterface == null) { + return interfaceContract; + } boolean compatible = false; if (interfaceContract != null && interfaceContract.getInterface() != null) { Interface interfaze = interfaceContract.getInterface(); -- cgit v1.2.3