[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