[jboss-svn-commits] JBL Code SVN: r14441 - in labs/jbossesb/trunk/product/rosetta: tests/src/org/jboss/soa/esb/listeners and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 22 03:53:02 EDT 2007


Author: beve
Date: 2007-08-22 03:53:02 -0400 (Wed, 22 Aug 2007)
New Revision: 14441

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduleListener.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduledEventMessageComposer.java
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ScheduledListenerUnitTest.java
Log:
Minor modification to ScheduleListeners onSchedule method. If the ScheduledEventMessageComposers composeMessage() method returns null the action processing pipeline should not be invoked. This gives implementations a chance decide whether abort if needed.


Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduleListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduleListener.java	2007-08-22 07:12:39 UTC (rev 14440)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduleListener.java	2007-08-22 07:53:02 UTC (rev 14441)
@@ -101,9 +101,13 @@
         Message message;
 
         if(eventProcessor instanceof ScheduledEventMessageComposer) {
-            message = ((ScheduledEventMessageComposer)eventProcessor).composeMessage();
-            pipeline.process(message);
-            ((ScheduledEventMessageComposer)eventProcessor).onProcessingComplete(message);
+            ScheduledEventMessageComposer composer = (ScheduledEventMessageComposer)eventProcessor;
+            message = composer.composeMessage();
+            if(message != null)
+            {
+	            pipeline.process(message);
+	            composer.onProcessingComplete(message);
+            }
         } else {
             ((ScheduledEventListener)eventProcessor).onSchedule();
         }

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduledEventMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduledEventMessageComposer.java	2007-08-22 07:12:39 UTC (rev 14440)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/ScheduledEventMessageComposer.java	2007-08-22 07:53:02 UTC (rev 14441)
@@ -39,7 +39,7 @@
      * <p/>
      * Called by the {@link org.jboss.soa.esb.schedule.ScheduledEventListener#onSchedule()} method.
      *
-     * @return ESB aware message instance.
+     * @return ESB aware message instance. If this method returns null the action pipeline will not be processed.
      * @throws SchedulingException Failed to compose message on scheduled event.
      */
     public Message composeMessage() throws SchedulingException;

Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ScheduledListenerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ScheduledListenerUnitTest.java	2007-08-22 07:12:39 UTC (rev 14440)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ScheduledListenerUnitTest.java	2007-08-22 07:53:02 UTC (rev 14441)
@@ -19,22 +19,81 @@
  */
 package org.jboss.soa.esb.listeners;
 
-import junit.framework.TestCase;
-import org.jboss.soa.esb.testutils.ESBConfigUtil;
-import org.jboss.internal.soa.esb.util.StreamUtils;
+import static org.junit.Assert.assertEquals;
 
 import java.io.UnsupportedEncodingException;
 
+import junit.framework.JUnit4TestAdapter;
+
+import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.util.StreamUtils;
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.listeners.gateway.ReadOnlyRemoteGatewayListenerIntegrationTest;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.schedule.MockScheduledEventMessageComposer;
+import org.jboss.soa.esb.schedule.SchedulingException;
+import org.jboss.soa.esb.testutils.ESBConfigUtil;
+import org.junit.Test;
+import org.xml.sax.SAXException;
+
 /**
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ * @author <a href="mailto:daniel.bevenius at gmail.com">daniel.bevenius at gmail.com</a>
  */
-public class ScheduledListenerUnitTest extends TestCase {
-
+public class ScheduledListenerUnitTest {
+	
+	@Test
     public void test() throws UnsupportedEncodingException {
-        ESBConfigUtil configUtil = new ESBConfigUtil(getClass().getResourceAsStream("scheduled-listener-config.xml"));
+	    ESBConfigUtil configUtil = new ESBConfigUtil(ScheduledListenerUnitTest.class.getResourceAsStream("scheduled-listener-config.xml"));
         String actualListenerConfig = configUtil.getListenerConfig("simple-schedule-listener").toXml();
         String expectedListenerConfig = StreamUtils.readStreamString(getClass().getResourceAsStream("scheduled-listener-config-configtree.xml"), "UTF-8");
 
         assertEquals(expectedListenerConfig, actualListenerConfig);
     }
+    
+    @Test
+    public void onSchedule() throws SAXException, ConfigurationException, SchedulingException 
+    {
+    	final String composerClass = "org.jboss.soa.esb.listeners.ScheduledListenerUnitTest$MockMessageComposer";
+    	final String listenerClass = "org.jboss.soa.esb.listeners.ScheduleListener";
+    	final ConfigTree config = createConfigTree( composerClass, listenerClass );
+    	
+    	final ScheduleListener listener = new ScheduleListener( config );
+    	listener.onSchedule();
+    	assertEquals( "No message should have been composed", 0, MockMessageComposer.composedMessages.size() );
+    	assertEquals( "ActionPipeline should not have been processed", 0, MockMessageComposer.completedMessage.size() );
+    	MockMessageComposer.reset();
+    }
+    
+    private ConfigTree createConfigTree( final String composerClass, final String listenerClass )
+    {
+    	final ConfigTree tree = new ConfigTree("simple-schedule-listener"); 
+    	tree.setAttribute("event-processor",  composerClass );
+    	tree.setAttribute("listenerClass", listenerClass );
+    	tree.setAttribute("my-prop", "1");
+    	tree.setAttribute("scheduleidref", "1-sec-trigger");
+    
+    	final ConfigTree action = new ConfigTree("action", tree);
+    	action.setAttribute("action", "action");
+    	action.setAttribute("class", "org.jboss.soa.esb.mock.MockAction");
+    	return tree;
+    }
+    
+	/*
+	 * Composer that returns null from the composeMessage() method.
+	 * This should cause the ScheduleListener instance to not invoke
+	 * the action processing pipeline 
+	 *
+	 */
+	public static class MockMessageComposer extends MockScheduledEventMessageComposer {
+	    public Message composeMessage() throws SchedulingException {
+	    	return null;
+	    }
+	}
+	
+	public static junit.framework.Test suite()
+	{
+		return new JUnit4TestAdapter(ScheduledListenerUnitTest.class);
+	}
 }




More information about the jboss-svn-commits mailing list