[jboss-svn-commits] JBL Code SVN: r38192 - in labs/jbossesb/trunk/product/rosetta: tests/src/org/jboss/soa/esb/actions and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Sep 23 20:48:29 EDT 2012
Author: tadayosi
Date: 2012-09-23 20:48:28 -0400 (Sun, 23 Sep 2012)
New Revision: 38192
Added:
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/MessageSpyAction.java
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/SyncServiceInvoker.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/SyncServiceInvokerUnitTest.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-01.xml
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-02.xml
Log:
JBESB-3772
Set the FaultTo and ReplyTo to the response header in the 'try' block, and reset them to the request
header in the 'finally' block. Modify the existing unit tests to verify them being retained.
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/SyncServiceInvoker.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/SyncServiceInvoker.java 2012-09-22 17:02:32 UTC (rev 38191)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/SyncServiceInvoker.java 2012-09-24 00:48:28 UTC (rev 38192)
@@ -70,17 +70,18 @@
}
}
+ Message response = null;
try {
call.setFaultTo(null);
call.setReplyTo(null);
- return serviceInvoker.deliverSync(message, timeout);
+ response = serviceInvoker.deliverSync(message, timeout);
+
+ // JBESB-3772
+ response.getHeader().getCall().setFaultTo(faultTo);
+ response.getHeader().getCall().setReplyTo(replyTo);
+ return response;
} catch (Exception e) {
- // No real need to reset the EPRs because the pipeline has already captured them, but
- // lets do it anyway...
- call.setFaultTo(faultTo);
- call.setReplyTo(replyTo);
-
if (failOnException) {
throw new ActionProcessingException("Error delivering message to service '" + serviceInvoker.getService() + "'", e);
} else {
@@ -88,6 +89,12 @@
return message;
}
} finally {
+ // JBESB-3772
+ // When an exception is thrown but failOnException is false, then the request message
+ // will be the current message again in the action pipeline.
+ call.setFaultTo(faultTo);
+ call.setReplyTo(replyTo);
+
try {
if(txObject != null) {
TransactionStrategy.getTransactionStrategy(true).resume(txObject);
Added: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/MessageSpyAction.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/MessageSpyAction.java (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/MessageSpyAction.java 2012-09-24 00:48:28 UTC (rev 38192)
@@ -0,0 +1,31 @@
+package org.jboss.soa.esb.actions;
+
+import java.io.IOException;
+
+import org.jboss.soa.esb.actions.annotation.Process;
+import org.jboss.soa.esb.message.Message;
+
+/**
+ * Action which sniffs messages to verify them later in unit tests.
+ */
+public class MessageSpyAction {
+ private static Message message;
+
+ public static void cleanup() {
+ message = null;
+ }
+
+ @Process
+ public Message process(final Message message) {
+ try {
+ MessageSpyAction.message = message.copy();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return message;
+ }
+
+ public static Message getMessage() {
+ return message;
+ }
+}
Property changes on: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/MessageSpyAction.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/SyncServiceInvokerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/SyncServiceInvokerUnitTest.java 2012-09-22 17:02:32 UTC (rev 38191)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/SyncServiceInvokerUnitTest.java 2012-09-24 00:48:28 UTC (rev 38192)
@@ -19,8 +19,11 @@
*/
package org.jboss.soa.esb.actions;
+import java.net.URI;
+
import junit.framework.TestCase;
import org.jboss.soa.esb.testutils.AbstractTestRunner;
+import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
@@ -47,11 +50,19 @@
request.getBody().add("Hello");
+ EPR faultToEpr = new EPR(new URI("fault.to.epr.test"));
+ request.getHeader().getCall().setFaultTo(faultToEpr);
+
ResponseAction.responseMessage = MessageFactory.getInstance().getMessage();
ResponseAction.responseMessage.getBody().add("Goodbye");
+ MessageSpyAction.cleanup();
Message response = invoker.deliverSync(request, 10000);
+
assertEquals("Goodbye", response.getBody().get());
+ // JBESB-3772: Check if the FaultTo in the Call is retained
+ assertNotNull(MessageSpyAction.getMessage());
+ assertEquals(faultToEpr, MessageSpyAction.getMessage().getHeader().getCall().getFaultTo());
}
}.setServiceConfig("sync-invoker-config-01.xml");
@@ -67,12 +78,14 @@
request.getBody().add("Hello");
ResponseAction.exception = new ActionProcessingException("Exception!!");
+ MessageSpyAction.cleanup();
try {
invoker.deliverSync(request, 10000);
fail("Expected FaultMessageException");
} catch(FaultMessageException e) {
assertEquals("Error delivering message to service 'Services:ServiceB'", e.getCause().getMessage());
+ assertNull(MessageSpyAction.getMessage());
}
}
}.setServiceConfig("sync-invoker-config-01.xml");
@@ -88,9 +101,18 @@
request.getBody().add("Hello");
+ EPR faultToEpr = new EPR(new URI("fault.to.epr.test"));
+ request.getHeader().getCall().setFaultTo(faultToEpr);
+
ResponseAction.exception = new ActionProcessingException("Exception!!");
+ MessageSpyAction.cleanup();
- invoker.deliverSync(request, 10000);
+ Message response = invoker.deliverSync(request, 10000);
+
+ assertEquals("Hello", response.getBody().get());
+ // JBESB-3772: Check if the FaultTo in the Call is retained
+ assertNotNull(MessageSpyAction.getMessage());
+ assertEquals(faultToEpr, MessageSpyAction.getMessage().getHeader().getCall().getFaultTo());
}
}.setServiceConfig("sync-invoker-config-02.xml");
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-01.xml
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-01.xml 2012-09-22 17:02:32 UTC (rev 38191)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-01.xml 2012-09-24 00:48:28 UTC (rev 38192)
@@ -15,7 +15,8 @@
<property name="service-category" value="Services" />
<property name="service-name" value="ServiceB" />
</action>
- </actions>
+ <action name="message-spy" class="org.jboss.soa.esb.actions.MessageSpyAction" />
+ </actions>
</service>
</services>
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-02.xml
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-02.xml 2012-09-22 17:02:32 UTC (rev 38191)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/sync-invoker-config-02.xml 2012-09-24 00:48:28 UTC (rev 38192)
@@ -16,7 +16,8 @@
<property name="service-name" value="ServiceB" />
<property name="failOnException" value="false" />
</action>
- </actions>
+ <action name="message-spy" class="org.jboss.soa.esb.actions.MessageSpyAction" />
+ </actions>
</service>
</services>
More information about the jboss-svn-commits
mailing list