diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-04-30 15:26:38 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-04-30 15:26:38 +0000 |
commit | 4bd58916e3e72d14787ba292d8f970cd5ac89fc5 (patch) | |
tree | 72232a3d4f37697a912e522f799fcc6867146833 /branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider | |
parent | 4ee7e0562a4b1cb0a6d91d0bb5fd8d153cb482c7 (diff) |
TUSCANY-2965 - add fault handling code for wireFormat.bytesXML
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@770283 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider')
-rw-r--r-- | branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLBytesMessageProcessor.java | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLBytesMessageProcessor.java b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLBytesMessageProcessor.java index bde54a6487..5a9e82b7da 100644 --- a/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLBytesMessageProcessor.java +++ b/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLBytesMessageProcessor.java @@ -32,13 +32,15 @@ import javax.xml.stream.XMLStreamReader; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.impl.builder.StAXOMBuilder; 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.interfacedef.util.FaultException; /** * MessageProcessor for sending/receiving XML javax.jms.BytesMessage with the JMSBinding. */ public class XMLBytesMessageProcessor extends AbstractMessageProcessor { - private static final Logger logger = Logger.getLogger(AbstractMessageProcessor.class.getName()); + private static final Logger logger = Logger.getLogger(XMLBytesMessageProcessor.class.getName()); public XMLBytesMessageProcessor(JMSBinding jmsBinding) { super(jmsBinding); @@ -55,6 +57,7 @@ public class XMLBytesMessageProcessor extends AbstractMessageProcessor { long noOfBytes = ((BytesMessage)msg).getBodyLength(); byte [] bytes = new byte[(int)noOfBytes]; ((BytesMessage)msg).readBytes(bytes); + ((BytesMessage)msg).reset(); Object os; if (noOfBytes > 0) { @@ -73,6 +76,15 @@ public class XMLBytesMessageProcessor extends AbstractMessageProcessor { } @Override + public Object extractPayloadFromJMSMessage(Message msg) { + if (msg instanceof BytesMessage) { + 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)); @@ -95,5 +107,28 @@ public class XMLBytesMessageProcessor extends AbstractMessageProcessor { throw new JMSBindingException(e); } } + + @Override + public Message createFaultMessage(Session session, Throwable o) { + + if (session == null) { + logger.fine("no response session to create fault message: " + String.valueOf(o)); + return null; + } + if (o instanceof FaultException) { + try { + + BytesMessage message = session.createBytesMessage(); + message.writeBytes(String.valueOf(((FaultException) o).getFaultInfo()).getBytes()); + message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, true); + return message; + + } catch (JMSException e) { + throw new JMSBindingException(e); + } + } else { + return super.createFaultMessage(session, o); + } + } } |