[jboss-svn-commits] JBL Code SVN: r6668 - in labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb: actions listeners

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 6 18:34:07 EDT 2006


Author: estebanschifman
Date: 2006-10-06 18:34:05 -0400 (Fri, 06 Oct 2006)
New Revision: 6668

Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java
Log:
Keep 'before action' current object temporarily in Message to make both values 
available to methods that might need either or both Objects (before/after action)

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java	2006-10-06 18:34:05 UTC (rev 6667)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java	2006-10-06 22:34:05 UTC (rev 6668)
@@ -21,7 +21,8 @@
  */
 
 package org.jboss.soa.esb.actions;
-import org.jboss.soa.esb.message.Message;;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.Body;
 
 /**
  * Contains utility methods for actions 
@@ -30,7 +31,8 @@
  */
 public class ActionUtils 
 {
-	public static final String CURRENT_OBJECT="org.jboss.soa.esb.actions.current.object";
+	public static final String BEFORE_ACTION="org.jboss.soa.esb.actions.current.before";
+	public static final String CURRENT_OBJECT="org.jboss.soa.esb.actions.current.after";
 
     /**
      * Obtain current object from standard spot within message 
@@ -42,6 +44,25 @@
     	return (null==message)? null : message.getBody().get(CURRENT_OBJECT);
     }
     /**
+     * Obtain previous 'current object' from standard spot within message 
+     * @param message - from where to obtain the value
+     * @return Object stored in Body with key ActionProcessor.BEFORE_ACTION
+     */
+    public static Object currentBeforeAction(Message message)
+    {
+    	return (null==message)? null : message.getBody().get(BEFORE_ACTION);
+    }
+    /**
+     * Copy 'current object' to a temporary holder within message 
+     * @param message 
+     */
+    public static void copyCurrentToPrevious(Message message)
+    {
+    	Body body = message.getBody();
+    	body.remove(BEFORE_ACTION);
+    	body.add(BEFORE_ACTION,body.get(CURRENT_OBJECT));
+    }
+    /**
      * Put current object in standard spot within message
      * <br/>NULL values are not stored 
      * @param message - to operate on
@@ -55,5 +76,4 @@
     		message.getBody().add(CURRENT_OBJECT,obj);
     	return oRet;
     }	
-
 }

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java	2006-10-06 18:34:05 UTC (rev 6667)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/AbstractListener.java	2006-10-06 22:34:05 UTC (rev 6668)
@@ -201,9 +201,11 @@
                     // The processing result of each action feeds into the processing of the next action...
                     currentProcessor = actionDefinition.getProcessor();
                     try {
+                    	ActionUtils.copyCurrentToPrevious(message);
                         message = currentProcessor.process(message);
                     } catch (Exception e) {
                         GpListener.notifyError(listenerConfig, e, currentProcessor.getErrorNotification(message));
+                        message.getBody().remove(ActionUtils.BEFORE_ACTION);
                         throw e;
                     }
                     
@@ -213,6 +215,7 @@
                     }
                     // Notify on all processors.  May want to do this differently in the future i.e. more selectively ...
                     GpListener.notifyOK(listenerConfig, currentProcessor.getOkNotification(message));
+                    message.getBody().remove(ActionUtils.BEFORE_ACTION);
                     
                     // Setup the message for processing by the next processor...
                 }




More information about the jboss-svn-commits mailing list