[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