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/02/22 11:32:18 UTC
svn commit: r630145 - in
/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms:
impl/ provider/
Author: antelder
Date: Fri Feb 22 02:32:16 2008
New Revision: 630145
URL: http://svn.apache.org/viewvc?rev=630145&view=rev
Log:
Add simple exception handling till we know the spec thing to do
Modified:
incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java
incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java
incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java
Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingConstants.java Fri Feb 22 02:32:16 2008
@@ -55,4 +55,6 @@
public final static String DEFAULT_MP_CLASSNAME = JMSMessageProcessorImpl.class.getName();
public final static String DEFAULT_OPERATION_PROP_NAME = "scaOperationName";
+ public static final String FAULT_PROPERTY = "org.apache.tuscany.sca.fault";
+
}
Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java Fri Feb 22 02:32:16 2008
@@ -59,9 +59,9 @@
public void onMessage(Message requestJMSMsg) {
try {
Object responsePayload = invokeService(requestJMSMsg);
- sendReply(requestJMSMsg, responsePayload);
- } catch (Exception e) {
- sendFaultReply(requestJMSMsg, e);
+ sendReply(requestJMSMsg, responsePayload, false);
+ } catch (Throwable e) {
+ sendReply(requestJMSMsg, e, true);
}
}
@@ -112,7 +112,7 @@
}
- protected void sendReply(Message requestJMSMsg, Object responsePayload) {
+ protected void sendReply(Message requestJMSMsg, Object responsePayload, boolean isFault) {
try {
if (requestJMSMsg.getJMSReplyTo() == null) {
@@ -121,7 +121,12 @@
}
Session session = jmsResourceFactory.createSession();
- Message replyJMSMsg = responseMessageProcessor.insertPayloadIntoJMSMessage(session, responsePayload);
+ Message replyJMSMsg;
+ if (isFault) {
+ replyJMSMsg = responseMessageProcessor.createFaultMessage(session, (Throwable)responsePayload);
+ } else {
+ replyJMSMsg = responseMessageProcessor.insertPayloadIntoJMSMessage(session, responsePayload);
+ }
replyJMSMsg.setJMSDeliveryMode(requestJMSMsg.getJMSDeliveryMode());
replyJMSMsg.setJMSPriority(requestJMSMsg.getJMSPriority());
@@ -145,10 +150,6 @@
} catch (NamingException e) {
throw new JMSBindingException(e);
}
- }
-
- protected void sendFaultReply(Message requestJMSMsg, Exception e) {
- sendReply(requestJMSMsg, new JMSBindingException("exception invoking JMS service", e));
}
}
Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessor.java Fri Feb 22 02:32:16 2008
@@ -45,4 +45,9 @@
* Create a JMS Message containing the payload
*/
public abstract Message insertPayloadIntoJMSMessage(Session session, Object payload);
+
+ /**
+ * Create a JMS Message for reporting an exception
+ */
+ public abstract Message createFaultMessage(Session session, Throwable responsePayload);
}
Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java?rev=630145&r1=630144&r2=630145&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSMessageProcessorImpl.java Fri Feb 22 02:32:16 2008
@@ -20,6 +20,7 @@
import java.io.Serializable;
import java.io.StringReader;
+import java.lang.reflect.InvocationTargetException;
import javax.jms.JMSException;
import javax.jms.Message;
@@ -33,7 +34,9 @@
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.osoa.sca.ServiceRuntimeException;
public class JMSMessageProcessorImpl implements JMSMessageProcessor {
@@ -94,6 +97,13 @@
* @see org.apache.tuscany.binding.jms.OperationAndDataBinding#extractPayload(javax.jms.Message)
*/
public Object extractPayloadFromJMSMessage(Message msg) {
+ try {
+ if (msg.getBooleanProperty(JMSBindingConstants.FAULT_PROPERTY)) {
+ throw new ServiceRuntimeException("remote service exception, see nested exception",(Throwable)((ObjectMessage)msg).getObject());
+ }
+ } catch (JMSException e) {
+ throw new JMSBindingException(e);
+ }
if (xmlFormat) {
return extractXMLPayload(msg);
} else {
@@ -156,6 +166,23 @@
ObjectMessage message = session.createObjectMessage(); // default
message.setObject((Serializable)o);
+ return message;
+
+ } catch (JMSException e) {
+ throw new JMSBindingException(e);
+ }
+ }
+
+ public Message createFaultMessage(Session session, Throwable o) {
+ try {
+
+ ObjectMessage message = session.createObjectMessage();
+ if (o instanceof InvocationTargetException) {
+ message.setObject(((InvocationTargetException)o).getTargetException());
+ } else {
+ message.setObject(o);
+ }
+ message.setBooleanProperty(JMSBindingConstants.FAULT_PROPERTY, true);
return message;
} catch (JMSException e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org