You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2008/08/11 08:49:06 UTC

svn commit: r684647 - /tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java

Author: antelder
Date: Sun Aug 10 23:49:05 2008
New Revision: 684647

URL: http://svn.apache.org/viewvc?rev=684647&view=rev
Log:
Protect against NPE when InterfaceContract is null

Modified:
    tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java

Modified: tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java?rev=684647&r1=684646&r2=684647&view=diff
==============================================================================
--- tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java (original)
+++ tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/ComponentContextImpl.java Sun Aug 10 23:49:05 2008
@@ -219,7 +219,11 @@
             InterfaceContract refInterfaceContract = getInterfaceContract(interfaceContract, businessInterface);
             if (refInterfaceContract != interfaceContract) {
                 ref = (RuntimeComponentReference)reference.clone();
-                ref.setInterfaceContract(interfaceContract);
+                if (interfaceContract != null) {
+                    ref.setInterfaceContract(interfaceContract);
+                } else {
+                    ref.setInterfaceContract(refInterfaceContract);
+                }
             }
             ref.setComponent(component);
             return new ServiceReferenceImpl<B>(businessInterface, component, ref, binding, proxyFactory, compositeActivator);
@@ -342,14 +346,17 @@
      */
     private InterfaceContract getInterfaceContract(InterfaceContract interfaceContract, Class<?> businessInterface)
         throws CloneNotSupportedException, InvalidInterfaceException {
-        Interface interfaze = interfaceContract.getInterface();
         boolean compatible = false;
-        if (interfaze instanceof JavaInterface) {
-            Class<?> cls = ((JavaInterface)interfaze).getJavaClass();
-            if (businessInterface.isAssignableFrom(cls)) {
-                compatible = true;
+        if (interfaceContract != null && interfaceContract.getInterface() != null) {
+            Interface interfaze = interfaceContract.getInterface();
+            if (interfaze instanceof JavaInterface) {
+                Class<?> cls = ((JavaInterface)interfaze).getJavaClass();
+                if (businessInterface.isAssignableFrom(cls)) {
+                    compatible = true;
+                }
             }
         }
+
         if (!compatible) {
             // The interface is not assignable from the interface contract
             interfaceContract = javaInterfaceFactory.createJavaInterfaceContract();