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();


Reply via email to