[jboss-svn-commits] JBL Code SVN: r14302 - in labs/jbossesb/trunk/product/rosetta: src/org/jboss/internal/soa/esb/message/format/serialized and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Aug 16 07:51:39 EDT 2007
Author: mark.little at jboss.com
Date: 2007-08-16 07:51:39 -0400 (Thu, 16 Aug 2007)
New Revision: 14302
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/errors/Factory.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/Fault.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java
Log:
http://jira.jboss.com/jira/browse/JBESB-829
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -45,7 +45,7 @@
import org.jboss.soa.esb.couriers.CourierException;
import org.jboss.soa.esb.couriers.CourierTimeoutException;
import org.jboss.soa.esb.couriers.CourierUtil;
-import org.jboss.soa.esb.couriers.FaultMessageException;
+import org.jboss.soa.esb.listeners.message.errors.Factory;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.util.Type;
import org.jboss.soa.esb.util.FileUtil;
@@ -300,7 +300,7 @@
*/
if (Type.isFaultMessage(result))
- throw new FaultMessageException(result.getFault().getReason(), result.getFault().getCode(), result);
+ Factory.createExceptionFromFault(result);
return result;
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/JmsCourier.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -53,6 +53,7 @@
import org.jboss.soa.esb.couriers.FaultMessageException;
import org.jboss.soa.esb.helpers.KeyValuePair;
import org.jboss.soa.esb.helpers.NamingContext;
+import org.jboss.soa.esb.listeners.message.errors.Factory;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.util.Type;
import org.jboss.soa.esb.util.Util;
@@ -364,8 +365,8 @@
* exception of user-defined exceptions, faults will have nothing in the body, properties etc.
*/
- if (Type.isFaultMessage(msg))
- throw new FaultMessageException(msg.getFault().getReason(), msg.getFault().getCode(), msg);
+ if (Type.isFaultMessage(msg))
+ Factory.createExceptionFromFault(msg);
return msg;
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -39,6 +39,7 @@
import org.jboss.soa.esb.couriers.FaultMessageException;
import org.jboss.soa.esb.helpers.persist.JdbcCleanConn;
import org.jboss.soa.esb.helpers.persist.SimpleDataSource;
+import org.jboss.soa.esb.listeners.message.errors.Factory;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.util.Type;
import org.jboss.soa.esb.util.Util;
@@ -212,7 +213,7 @@
*/
if (Type.isFaultMessage(result))
- throw new FaultMessageException(result.getFault().getReason(), result.getFault().getCode(), result);
+ Factory.createExceptionFromFault(result);
return result;
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -72,12 +72,26 @@
_body.add(FAULT_REASON, reason);
}
+ public Throwable getCause ()
+ {
+ return (Throwable) _body.get(THROWABLE_CONTENT);
+ }
+
+ public void setCause (Throwable ex)
+ {
+ if (ex == null)
+ _body.remove(THROWABLE_CONTENT);
+ else
+ _body.add(THROWABLE_CONTENT, ex);
+ }
+
public String toString ()
{
URI code = getCode();
String reason = getReason();
+ Throwable cause = getCause();
- return "fault: [ "+((code != null) ? code : "null")+", "+((reason != null) ? reason : "null")+" ]";
+ return "fault: [ "+((code != null) ? code : "null")+", "+((reason != null) ? reason : "null")+", "+((cause != null) ? cause : "null")+" ]";
}
public void writeExternal (ObjectOutput out) throws IOException
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -64,93 +64,35 @@
_body.add(FAULT_REASON, reason);
}
+ public Throwable getCause ()
+ {
+ return (Throwable) _body.get(THROWABLE_CONTENT);
+ }
+
+ public void setCause (Throwable ex)
+ {
+ if (ex == null)
+ _body.remove(THROWABLE_CONTENT);
+ else
+ _body.add(THROWABLE_CONTENT, ex);
+ }
+
public String toString ()
{
URI code = getCode();
String reason = getReason();
+ Throwable cause = getCause();
- return "fault: [ "+((code != null) ? code : "null")+", "+((reason != null) ? reason : "null")+" ]";
+ return "fault: [ "+((code != null) ? code : "null")+", "+((reason != null) ? reason : "null")+", "+((cause != null) ? cause : "null")+" ]";
}
public Element toXML(Element envelope) throws MarshalException
{
return envelope;
-
- /*
- Document doc = envelope.getOwnerDocument();
- Element faultElement = doc.createElement(FAULT_TAG);
-
- if (_code != null)
- {
- Element codeElement = doc.createElement(CODE_TAG);
- Text content = doc.createTextNode(_code.toString());
-
- codeElement.appendChild(content);
-
- faultElement.appendChild(codeElement);
- }
-
- if (_reason != null)
- {
- Element reasonElement = doc.createElement(REASON_TAG);
- Text content = doc.createTextNode(_reason);
-
- reasonElement.appendChild(content);
-
- faultElement.appendChild(reasonElement);
- }
-
- if ((_code != null) || (_reason != null))
- {
- envelope.appendChild(faultElement);
-
- return faultElement;
- }
- else
- return envelope;
- */
}
public void fromXML (Element envelope) throws UnmarshalException
{
- /*
- NodeList nl = envelope.getChildNodes();
-
- _code = null;
- _reason = null;
-
- for (int i = 0; i < nl.getLength(); i++)
- {
- if (nl.item(i).getNodeName().equals(FAULT_TAG))
- {
- NodeList children = nl.item(i).getChildNodes();
-
- for (int j = 0; j < children.getLength(); j++)
- {
- final Node node = children.item(j) ;
- if (node instanceof Element)
- {
- Element child = (Element)node;
-
- if (child.getNodeName().equals(CODE_TAG))
- {
- try
- {
- _code = new URI(child.getFirstChild().getNodeValue());
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- if (child.getNodeName().equals(REASON_TAG))
- _reason = child.getFirstChild().getNodeValue();
- }
- }
- }
- }
- */
}
FaultImpl (BodyImpl body)
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -52,7 +52,15 @@
_code = code;
_msg = msg;
}
+
+ public FaultMessageException(String message, URI code, Message msg, Throwable cause)
+ {
+ super(message, cause);
+ _code = code;
+ _msg = msg;
+ }
+
public final URI getCode()
{
return _code;
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/errors/Factory.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/errors/Factory.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/errors/Factory.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -24,6 +24,8 @@
import org.apache.log4j.Logger;
import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.couriers.FaultMessageException;
+import org.jboss.soa.esb.message.Fault;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
@@ -35,6 +37,18 @@
public static final String UNEXPECTED_ERROR = "urn:action/error/unexpectederror";
public static final String NOT_ENABLED = "urn:action/error/disabled";
+ public static void createExceptionFromFault (Message msg) throws FaultMessageException
+ {
+ String reason = msg.getFault().getReason();
+ URI code = msg.getFault().getCode();
+ Throwable cause = msg.getFault().getCause();
+
+ if (cause == null)
+ throw new FaultMessageException(reason, code, msg);
+ else
+ throw new FaultMessageException(reason, code, msg, cause);
+ }
+
public static Message createErrorMessage (String type, Message input, Throwable problem)
{
if (input == null)
@@ -46,7 +60,9 @@
throw new IllegalArgumentException("Could not create error message from "+input.getType());
if (modifyMessage(input, errorMessage))
- {
+ {
+ errorMessage.getBody().add(Fault.THROWABLE_CONTENT, problem);
+
try
{
errorMessage.getFault().setCode(new URI(type));
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/Fault.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/Fault.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/Fault.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -25,14 +25,14 @@
/**
* Faults may be returned from a service in response to receiving and acting upon messages.
- * A fault consists of a unique code (MANDATORY) and a reason string (OPTIONAL).
- *
- * TODO this should really just be a type of Message, with well defined entry points in
- * the message body for fault code and reason.
+ * A fault consists of a unique code (MANDATORY) and a reason string (OPTIONAL). An OPTIONAL
+ * throwable may also be returned.
*/
public interface Fault
{
+ public static final String THROWABLE_CONTENT = "org.jboss.soa.esb.message.fault.throwable";
+
/**
* @return the unique code representing this fault.
*/
@@ -61,4 +61,21 @@
*/
public void setReason (String reason);
+
+ /**
+ * Get the original Throwable. May be null, e.g., if the problem resulted
+ * from a non-Java environment.
+ *
+ * @return the throwable.
+ */
+
+ public Throwable getCause ();
+
+ /**
+ * Set the original Throwable.
+ *
+ * @param ex the throwable.
+ */
+
+ public void setCause (Throwable ex);
}
\ No newline at end of file
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java 2007-08-16 10:35:19 UTC (rev 14301)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java 2007-08-16 11:51:39 UTC (rev 14302)
@@ -24,6 +24,7 @@
import java.io.File;
import java.io.FileFilter;
+import java.io.IOException;
import java.io.PrintStream;
import java.net.URI;
import java.util.UUID;
@@ -169,6 +170,7 @@
msg.getFault().setReason(errorMessage);
msg.getFault().setCode(code);
+ msg.getFault().setCause(new IOException());
Call call = new Call(toEpr);
String uid = UUID.randomUUID().toString();
@@ -197,6 +199,10 @@
{
Assert.assertEquals(ex.getMessage(), errorMessage);
Assert.assertEquals(ex.getCode(), code);
+
+ System.err.println("**got "+ex.getCause());
+
+ Assert.assertEquals(ex.getCause() instanceof IOException, true);
}
catch (CourierException ex)
{
More information about the jboss-svn-commits
mailing list