[jboss-svn-commits] JBL Code SVN: r8084 - in labs/jbossesb/trunk/product/core/listeners: src/org/jboss/soa/esb/listeners/message tests/src/org/jboss/soa/esb/listeners/message
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Dec 6 05:18:07 EST 2006
Author: tfennelly
Date: 2006-12-06 05:18:00 -0500 (Wed, 06 Dec 2006)
New Revision: 8084
Added:
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerUnitTest.java
Removed:
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerTest.java
Modified:
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractListener.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractPassiveListener.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/CbrJmsQueueListener.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerFactory.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/HttpListener.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/JmsQueueListener.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/ListenerConfig_01.xml
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MockListener.java
Log:
Added a few simple unit tests for the EsbListenerController
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractListener.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractListener.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -26,6 +26,7 @@
import org.apache.log4j.Logger;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.listeners.Lifecycle;
+import org.jboss.soa.esb.listeners.State;
/**
* Base class for listener implementations which will be responsible for implementing some sort of
@@ -45,6 +46,11 @@
/* The listener controller*/
protected EsbListenerController _controller = null;
+ /**
+ * Listener lifecycle state.
+ */
+ private State state = State.Uninitialised;
+
/* The default number of thread in the action pipeline execution thread pool */
protected int m_iMaxThr = 1;
@@ -82,4 +88,49 @@
}
// this.pipelineExecutorPool = Executors.newFixedThreadPool(m_iMaxThr);
}
+
+ /**
+ * Get the listener lifecycle state.
+ * @return The state of the listener.
+ */
+ public final State getState() {
+ return state;
+ }
+
+ /**
+ * Set the listener lifecycle state.
+ * @param state The new state of the listener.
+ */
+ protected final void setState(State state) {
+ this.state = state;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Runnable#run()
+ */
+ public final void run() {
+ Throwable thrown = null;
+
+ try {
+ listen();
+ } catch(Throwable t) {
+ thrown = t;
+ } finally {
+ if(thrown != null) {
+ state = State.Exception_thrown;
+ state.setThrowable(thrown);
+ logger.error("Listener [" + getClass().getName() + "] terminated abnormally. Configuration:\n" + _config.toXml(), thrown);
+ } else {
+ state = State.Done_OK;
+ logger.error("Listener [" + getClass().getName() + "] has shutdown.");
+ }
+ }
+ }
+
+ /**
+ * Listen for messages.
+ * <p/>
+ * This method is effectively the "run" method for the listener.
+ */
+ public abstract void listen();
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractPassiveListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractPassiveListener.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/AbstractPassiveListener.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -36,7 +36,7 @@
super(controller, configTree);
}
- public void run() {
+ public void listen() {
//nothing to be done here because channel implementation is taking care of
// blocking receive stuff
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/CbrJmsQueueListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/CbrJmsQueueListener.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/CbrJmsQueueListener.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -68,9 +68,10 @@
* <br/>When one is received, instantiates an action processing pipeline to process it
* <br/>Pipeline is started in new Thread
*/
- public void run()
+ public void listen()
{
try {
+ setState(State.Loading_parameters);
ContentBasedRouter cbr =ContentBasedRouterFactory.getRouter();
String ruleSet=null;
String ruleLanguage=null;
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerFactory.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerFactory.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerFactory.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -351,7 +351,7 @@
// Wait for the listener it to transition to a state of "Ready".
State.waitUntilReady(listener);
}
- catch (Exception e)
+ catch (Throwable e)
{
_logger.error("Cannot launch <" + p_sClassName + ">\n", e);
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/HttpListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/HttpListener.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/HttpListener.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -59,11 +59,6 @@
*/
public class HttpListener extends AbstractPassiveListener implements ServerInvocationHandler {
- /**
- * Listener lifecycle state.
- */
- private State state = State.Uninitialised;
-
/* The logger for this class */
protected Logger logger = Logger.getLogger(HttpListener.class);
@@ -103,14 +98,6 @@
}
- /**
- * Get the listener lifecycle state.
- * @return The state of the listener.
- */
- public State getState() {
- return state;
- }
-
/*
* Method being invoked when a request comes in.
*
@@ -202,7 +189,7 @@
* Check for mandatory and optional attributes in parameter tree
*/
private void checkParams() throws ConfigurationException {
- state = State.Loading_parameters;
+ setState(State.Loading_parameters);
// listener url
this.listenHttpUrl = this._config.getAttribute(LISTEN_HTTP_URL);
@@ -235,7 +222,7 @@
* when something goes wrong during remoting deamon startup
*/
private void initServer() throws ListenerInitializationException {
- state = State.Running;
+ setState(State.Running);
try {
InvokerLocator locator = new InvokerLocator(this.listenHttpUrl);
if (this.logger.isInfoEnabled()) {
@@ -255,12 +242,13 @@
this.logger.info("HttpListener deamon started successfully!");
}
} catch (Throwable thrown) {
- state = State.Exception_thrown;
- state.setThrowable(thrown);
+ State newState = State.Exception_thrown;
+ newState.setThrowable(thrown);
+ setState(newState);
throw new ListenerInitializationException(thrown.getMessage(), thrown);
}
- state = State.Ready;
+ setState(State.Ready);
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/JmsQueueListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/JmsQueueListener.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/JmsQueueListener.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -61,10 +61,6 @@
public class JmsQueueListener extends AbstractListener
{
- /**
- * Listener lifecycle state.
- */
- private State state = State.Uninitialised;
/**
* public constructor
@@ -79,22 +75,6 @@
_iSleepForRetry = 3;
checkMyParms();
} // _______________________________
-
- /**
- * Get the listener lifecycle state.
- * @return The state of the listener.
- */
- public State getState() {
- return state;
- }
-
- /**
- * Set the listener lifecycle state.
- * @param state The new state of the listener.
- */
- protected void setState(State state) {
- this.state = state;
- }
/**
* Loops until controlling process determines
@@ -102,9 +82,9 @@
* <br/>When one is received, instantiates an action processing pipeline to process it
* <br/>Pipeline is started in new Thread
*/
- public void run()
+ public void listen()
{
- state = State.Running;
+ setState(State.Running);
_logger.debug("run() method of "+this.getClass().getSimpleName()
+" started on thread "+Thread.currentThread().getName());
@@ -114,7 +94,7 @@
_logger.fatal("Could not register service " + re.getLocalizedMessage(),re);
}
- state = State.Ready;
+ setState(State.Ready);
while (_controller.continueLooping())
{
long lwait = _controller.millisToWait();
@@ -153,7 +133,7 @@
*/
protected void checkMyParms() throws ConfigurationException
{
- state = State.Loading_parameters;
+ setState(State.Loading_parameters);
// Default value of obtainAttribute is null - Exception will be thrown
_queueName = obtainAttribute(JMSEpr.DESTINATION_NAME_TAG, null);
Deleted: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerTest.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerTest.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -1,32 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and others contributors as indicated
- * by the @authors tag. All rights reserved.
- * See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- *
- * (C) 2005-2006,
- * @author JBoss Inc.
- */
-
-package org.jboss.soa.esb.listeners.message;
-
-import junit.framework.TestCase;
-
-/**
- *
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- */
-public class EsbListenerControllerTest extends TestCase {
-
-}
Copied: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerUnitTest.java (from rev 8071, labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerTest.java)
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerTest.java 2006-12-05 17:29:41 UTC (rev 8071)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/EsbListenerControllerUnitTest.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+
+package org.jboss.soa.esb.listeners.message;
+
+import org.jboss.internal.soa.esb.services.registry.MockRegistry;
+import org.jboss.soa.esb.helpers.ConfigTree;
+
+import junit.framework.TestCase;
+
+/**
+ * EsbListenerController unit tests.
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class EsbListenerControllerUnitTest extends TestCase {
+
+ /* (non-Javadoc)
+ * @see junit.framework.TestCase#setUp()
+ */
+ @Override
+ protected void setUp() throws Exception {
+ MockRegistry.install();
+ }
+
+ /* (non-Javadoc)
+ * @see junit.framework.TestCase#tearDown()
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ MockRegistry.uninstall();
+ }
+
+ public void test() throws Exception {
+ ConfigTree listenerConfig = ConfigTree.fromInputStream(getClass().getResourceAsStream("ListenerConfig_01.xml"));
+
+ // Get the controller instance - the 4 listeners should be started.
+ EsbListenerControllerFactory.getInstance(listenerConfig);
+ assertEquals(3, MockListener.startedListeners.size());
+
+ }
+}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/ListenerConfig_01.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/ListenerConfig_01.xml 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/ListenerConfig_01.xml 2006-12-06 10:18:00 UTC (rev 8084)
@@ -1,7 +1,7 @@
<ListenerConfig>
<MockListener
- service-category="Category"
+ service-category="Category1"
service-name="Service1"
service-description="Blah"
listenerClass="org.jboss.soa.esb.listeners.message.MockListener"
@@ -9,20 +9,29 @@
>
</MockListener>
<MockListener
- service-category="Category"
- service-name="Service1"
+ service-category="Category1"
+ service-name="Service2"
service-description="Blah"
listenerClass="org.jboss.soa.esb.listeners.message.MockListener"
- wait="3000"
+ wait="2000"
>
</MockListener>
<MockListener
- service-category="Category"
+ service-category="Category2"
service-name="Service1"
service-description="Blah"
listenerClass="org.jboss.soa.esb.listeners.message.MockListener"
- wait="5000"
+ throw-exception="true"
>
</MockListener>
+ <MockListener
+ service-category="Category2"
+ service-name="Service2"
+ service-description="Blah"
+ listenerClass="org.jboss.soa.esb.listeners.message.MockListener"
+ wait="1000"
+ lock="true"
+ >
+ </MockListener>
-</ContentBasedRouterTest>
+</ListenerConfig>
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MockListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MockListener.java 2006-12-06 09:40:27 UTC (rev 8083)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/message/MockListener.java 2006-12-06 10:18:00 UTC (rev 8084)
@@ -36,39 +36,32 @@
*/
public class MockListener extends AbstractListener {
- private State state = State.Uninitialised;
- private long wait;
- public static List<MockListener> readListeners = new ArrayList<MockListener>();
+ public static List<MockListener> startedListeners = new ArrayList<MockListener>();
+ private List<KeyValuePair> properties;
/**
* @param controller
* @param configTree
*/
- protected MockListener(EsbListenerController controller, ConfigTree configTree) {
+ public MockListener(EsbListenerController controller, ConfigTree configTree) {
super(controller, configTree);
- List<KeyValuePair> properties = configTree.attributesAsList();
- wait = (long)KeyValuePair.getDoubleValue("wait", properties, 1000);
+ properties = configTree.attributesAsList();
}
- /* (non-Javadoc)
- * @see java.lang.Runnable#run()
- */
- public void run() {
+ public void listen() {
+ if(KeyValuePair.getBooleanValue("throw-exception", properties, false)) {
+ throw new RuntimeException("Exception from MockListener.");
+ }
+
+ long wait = (long)KeyValuePair.getDoubleValue("wait", properties, 1000);
try {
Thread.sleep(wait);
} catch (InterruptedException e) {
TestCase.fail(e.getMessage());
}
- readListeners.add(this);
- state = State.Ready;
+ startedListeners.add(this);
+ setState(State.Ready);
}
- /* (non-Javadoc)
- * @see org.jboss.soa.esb.listeners.Lifecycle#getState()
- */
- public State getState() {
- return state;
- }
-
}
More information about the jboss-svn-commits
mailing list