package org.oddjob.jobs; import java.io.IOException; import junit.framework.TestCase; import org.apache.log4j.Logger; import org.oddjob.Oddjob; import org.oddjob.arooa.xml.XMLConfiguration; import org.oddjob.launch.Launcher; import org.oddjob.state.ParentState; import org.oddjob.tools.ConsoleCapture; import org.oddjob.tools.OurDirs; public class LaunchJobTest extends TestCase { private static final Logger logger = Logger.getLogger(LaunchJobTest.class); public void testLaunchAsjobInOddjob() throws IOException { ClassLoader existingContext = Thread.currentThread( ).getContextClassLoader(); if (existingContext == null) { logger.warn("ContextClassLoader is null"); } try { // Why do I set this to null? Thread.currentThread().setContextClassLoader(null); OurDirs dirs = new OurDirs(); Oddjob oddjob = new Oddjob(); oddjob.setConfiguration(new XMLConfiguration( "org/oddjob/jobs/LaunchExample.xml", getClass().getClassLoader())); oddjob.setArgs(new String[] { dirs.base().toString(), Launcher.ODDJOB_MAIN_CLASS } ); ConsoleCapture console = new ConsoleCapture(); try (ConsoleCapture.Close close = console.captureConsole()) { oddjob.run(); } assertEquals(ParentState.COMPLETE, oddjob.lastStateEvent().getState()); console.dump(logger); String[] lines = console.getLines(); assertEquals(1, lines.length); assertTrue(lines[0].startsWith("URLClassLoader:")); oddjob.destroy(); } finally { Thread.currentThread().setContextClassLoader(existingContext); } } }