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 2009/11/23 19:10:51 UTC

svn commit: r883440 - /tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java

Author: rfeng
Date: Mon Nov 23 18:10:49 2009
New Revision: 883440

URL: http://svn.apache.org/viewvc?rev=883440&view=rev
Log:
Get the interface from the endpoint when it is null

Modified:
    tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java

Modified: tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java?rev=883440&r1=883439&r2=883440&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/ComponentContextImpl.java Mon Nov 23 18:10:49 2009
@@ -32,7 +32,6 @@
 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 <B> ServiceReference<B> getServiceReference(Class<B> 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<B>)((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 @@
      */
     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();