/*
* Created on Nov 12, 2004
*
*/
package org.mom4j.jms;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.naming.Context;
import org.mom4j.config.ConfigImpl;
import org.mom4j.messaging.Console;
import org.mom4j.messaging.MessagingServer;
import junit.framework.TestCase;
/**
* @author denninger
*
*/
public class JmsTestCase extends TestCase {
private static final Object mutex = new Object();
private static Console server = null;
private static int testCount = 0;
protected Properties namingProps;
private static Map testCases = Collections.synchronizedMap(new HashMap());
/** Creates new JmsTestCase */
public JmsTestCase(String name) {
super(name);
Class c = this.getClass();
java.lang.reflect.Method[] methods = c.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
int mod = methods[i].getModifiers();
if (java.lang.reflect.Modifier.isPublic(mod)
&& !java.lang.reflect.Modifier.isStatic(mod)
&& !java.lang.reflect.Modifier.isAbstract(mod)
&& methods[i].getReturnType().getName().equals("void")
&& methods[i].getName().startsWith("test")) {
JmsTestCase.testCases.put(c.getName() + "#" + methods[i].getName(),
methods[i].getName());
}
}
}
public void setUp() throws Exception {
if (JmsTestCase.server == null) {
synchronized (JmsTestCase.mutex) {
if (JmsTestCase.server == null) {
MessagingServer ms = new MessagingServer(new ConfigImpl(
"./config/mom4j-config.xml"));
JmsTestCase.server = ms.start(false);
if (!JmsTestCase.server.hasTopic("testTopic")) {
JmsTestCase.server.createTopic("testTopic");
}
}
}
}
namingProps = new Properties();
namingProps.put(Context.INITIAL_CONTEXT_FACTORY,
"org.mom4j.jndi.InitialCtxFactory");
namingProps.put(Context.PROVIDER_URL, "xcp://localhost:8001");
JmsTestCase.testCount++;
}
public void tearDown() {
if (JmsTestCase.testCount == JmsTestCase.testCases.size()) {
JmsTestCase.server.stop();
JmsTestCase.server = null;
}
}
}