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 2010/03/18 17:34:02 UTC

svn commit: r924887 - in /tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src: main/java/org/apache/tuscany/sca/binding/hazelcast/ test/java/org/apache/tuscany/sca/binding/hazelcast/

Author: antelder
Date: Thu Mar 18 16:34:01 2010
New Revision: 924887

URL: http://svn.apache.org/viewvc?rev=924887&view=rev
Log:
Update hazelcast binding to work with exceptions

Modified:
    tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java
    tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java

Modified: tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java?rev=924887&r1=924886&r2=924887&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ReferenceInvoker.java Thu Mar 18 16:34:01 2010
@@ -24,11 +24,14 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.FutureTask;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.endpoint.hazelcast.HazelcastEndpointRegistry;
 import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.util.FaultException;
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.invocation.Message;
 import org.apache.tuscany.sca.invocation.MessageFactory;
@@ -87,9 +90,19 @@ public class ReferenceInvoker implements
     }
 
     private Message getResponseNode(String responseXML) throws IOException, SAXException {
-        Document responseDOM = domHelper.load(responseXML);
         Message msg = messageFactory.createMessage();
-        msg.setBody(responseDOM);
+        if (responseXML.startsWith("DECLAREDEXCEPTION:")) {
+            Document responseDOM = domHelper.load(responseXML.substring(18));
+            FaultException e = new FaultException("remote exception", responseDOM);
+            Node node = ((Node)responseDOM).getFirstChild();
+            e.setFaultName(new QName(node.getNamespaceURI(), node.getLocalName()));
+            msg.setFaultBody(e);
+        } else if (responseXML.startsWith("EXCEPTION:")) {
+            throw new ServiceRuntimeException("Remote exception:" + responseXML.substring(10));
+        } else {
+            Document responseDOM = domHelper.load(responseXML);
+            msg.setBody(responseDOM);
+        }
         return msg;
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java?rev=924887&r1=924886&r2=924887&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/main/java/org/apache/tuscany/sca/binding/hazelcast/ServiceInvoker.java Thu Mar 18 16:34:01 2010
@@ -21,12 +21,14 @@ package org.apache.tuscany.sca.binding.h
 
 import java.io.IOException;
 import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
 import java.util.concurrent.Callable;
 
 import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
 import org.apache.tuscany.sca.interfacedef.Interface;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.util.FaultException;
 import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
 import org.oasisopen.sca.ServiceRuntimeException;
 import org.w3c.dom.Document;
@@ -52,8 +54,17 @@ public class ServiceInvoker implements C
         Operation operation = getRequestOperation(endpoint);
         DOMHelper domHelper = DOMHelper.getInstance(endpoint.getCompositeContext().getExtensionPointRegistry());
         Object[] args = getRequestArgs(domHelper);
-        Object response = endpoint.invoke(operation, args);
-        String responseXML = getResponseXML(domHelper, response);
+        String responseXML;
+        try {
+            Object response = endpoint.invoke(operation, args);
+            responseXML = getResponseXML(domHelper, response);
+        } catch (Exception e) {
+           if (e instanceof InvocationTargetException && ((InvocationTargetException)e).getTargetException() instanceof FaultException) {
+               responseXML = "DECLAREDEXCEPTION:" + getResponseXML(domHelper, ((FaultException)((InvocationTargetException)e).getTargetException()).getFaultInfo());
+           } else {
+               responseXML = "EXCEPTION: " + e.getClass() + ":" + e.getMessage();
+           }
+        }
         return responseXML;
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java?rev=924887&r1=924886&r2=924887&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/HazelcastBindingTestCase.java Thu Mar 18 16:34:01 2010
@@ -89,8 +89,7 @@ public class HazelcastBindingTestCase {
             service.testExceptions("runtime");
             fail();
         } catch (ServiceRuntimeException e) {
-            // TODO test what the exception should be
-//            assertEquals("runtime", e.getMessage());
+            assertEquals("org.oasisopen.sca.ServiceRuntimeException: Remote exception: class java.lang.RuntimeException:runtime", e.getMessage());
         }
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java?rev=924887&r1=924886&r2=924887&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-hazelcast-runtime/src/test/java/org/apache/tuscany/sca/binding/hazelcast/TestServiceImpl.java Thu Mar 18 16:34:01 2010
@@ -35,7 +35,7 @@ public class TestServiceImpl implements 
 
     public String testExceptions(String s) throws BadStringException {
         if (s.equals("runtime")) {
-            throw new RuntimeException();
+            throw new RuntimeException("runtime");
         }
         throw new BadStringException(s);
     }