Author: antelder
Date: Fri Feb 13 16:00:24 2009
New Revision: 744151

URL: http://svn.apache.org/viewvc?rev=744151&view=rev
Log:
Partial fix for exceptions for sca clients using text xml wireformat

Modified:
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLReferenceInterceptor.java

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java?rev=744151&r1=744150&r2=744151&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
 Fri Feb 13 16:00:24 2009
@@ -71,6 +71,15 @@
     }
 
     @Override
+    public Object extractPayloadFromJMSMessage(Message msg) {
+        if (msg instanceof TextMessage) {
+            return extractPayload(msg);
+        } else {
+            return super.extractPayloadFromJMSMessage(msg);
+        }
+    }
+
+    @Override
     protected Message createJMSMessage(Session session, Object o) {
         if (session == null) {
             logger.fine("no response session to create message: " + 
String.valueOf(o));
@@ -116,4 +125,5 @@
             return super.createFaultMessage(session, o);
         }
     }
+
 }

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLReferenceInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLReferenceInterceptor.java?rev=744151&r1=744150&r2=744151&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLReferenceInterceptor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/wireformat/jmstextxml/runtime/WireFormatJMSTextXMLReferenceInterceptor.java
 Fri Feb 13 16:00:24 2009
@@ -21,31 +21,23 @@
 
 
 
-import java.util.Map;
-
-import javax.jms.DeliveryMode;
 import javax.jms.JMSException;
 import javax.jms.Session;
+import javax.xml.namespace.QName;
 
-import org.apache.tuscany.sca.assembly.Reference;
-import org.apache.tuscany.sca.assembly.WireFormat;
+import org.apache.axiom.om.OMElement;
 import org.apache.tuscany.sca.binding.jms.context.JMSBindingContext;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
 import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
-import 
org.apache.tuscany.sca.binding.jms.provider.JMSBindingServiceBindingProvider;
 import org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessor;
 import org.apache.tuscany.sca.binding.jms.provider.JMSMessageProcessorUtil;
 import org.apache.tuscany.sca.binding.jms.provider.JMSResourceFactory;
 import 
org.apache.tuscany.sca.binding.jms.wireformat.jmstextxml.WireFormatJMSTextXML;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
+import org.apache.tuscany.sca.interfacedef.util.FaultException;
 import org.apache.tuscany.sca.invocation.Interceptor;
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.invocation.Message;
-import org.apache.tuscany.sca.runtime.ReferenceParameters;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
 import org.apache.tuscany.sca.runtime.RuntimeWire;
 
 /**
@@ -104,9 +96,20 @@
     
     public Message invokeResponse(Message msg) {
         if (msg.getBody() != null){
-            Object response = 
responseMessageProcessor.extractPayloadFromJMSMessage((javax.jms.Message)msg.getBody());
+            javax.jms.Message jmsMsg = (javax.jms.Message)msg.getBody();
+            Object response = 
responseMessageProcessor.extractPayloadFromJMSMessage(jmsMsg);
             if (response != null ){
                 msg.setBody(response);
+                try {
+                    if 
(jmsMsg.getBooleanProperty(JMSBindingConstants.FAULT_PROPERTY)) {
+                        FaultException e = new FaultException("remote 
exception", response);
+                        OMElement om = (OMElement) response;
+                        e.setFaultName(new 
QName(om.getNamespace().getNamespaceURI(), om.getLocalName()));
+                        msg.setFaultBody(e);
+                    }
+                } catch (JMSException e) {
+                    throw new JMSBindingException(e);
+                }
             } else {
                 msg.setBody(null);
             }


Reply via email to