It may be easier to copy all of junittask and modify it rather than extending it.
JUnitTask is complicated and tricky - it needs to handle classloading to allow junit.jar to be placed in a nested <classpath> Details on the implementation will change from ant release to ant release - the task (and most others!) should have been made final when first written.. Peter On 10/30/07, Petar Tahchiev <[EMAIL PROTECTED]> wrote: > So actually you have to look here: > http://svn.apache.org/repos/asf/jakarta/cactus/trunk/integration/ant/src/java/org/apache/cactus/integration/ant/CactusTask.java > and this is the peace of code that actually executes the test: > =========================================== > > private void executeInContainer(ContainerWrapper theWrapper, > DeployableFile theFile) > { > log("Starting up container", Project.MSG_VERBOSE); > ContainerRunner runner = new ContainerRunner(theWrapper); > runner.setLogger(new AntLogger(getProject())); > try > { > URL url = new URL(theWrapper.getBaseURL() + "/" > + theFile.getTestContext() > + theFile.getServletRedirectorMapping() > + "?Cactus_Service=RUN_TEST"); > runner.setURL(url); > > runner.startUpContainer(); > log("Server name retrieved from 'Server' HTTP header: [" > + runner.getServerName() + "]", Project.MSG_VERBOSE); > try > { > Enumeration tests = getIndividualTests(); > while (tests.hasMoreElements()) > { > JUnitTest test = (JUnitTest) tests.nextElement(); > if (test.shouldRun(getProject()) > && !theWrapper.isExcluded(test.getName())) > { > if (theWrapper.getToDir() != null) > { > test.setTodir(theWrapper.getToDir()); > } > execute(test); > } > } > } > finally > { > log("Shutting down container", Project.MSG_VERBOSE); > runner.shutDownContainer(); > log("Container shut down", Project.MSG_VERBOSE); > } > } > =========================================== > > and the test-case in "execute(test)" is NOT null - I explicitly checked it. > In my opinion the only reason for the NLP is because the delegate > object is null :-(. > > Any suggestions? > > 2007/10/28, Petar Tahchiev <[EMAIL PROTECTED]>: > > > > Hi guys, > > > > my name is Petar Tahchiev and I am one of the developers of Jakarta > > Cactus. > > I have a really strange problem, when using Ant > 1.6.5. > > When trying to execute my cactus tasks, I invoke actually the JunitTask, I > > get the > > following exception: > > > > ----------------------------------------------------------------------------- > > /home/peter/bin/workspace/TestCactus/build.xml:93: > > java.lang.NullPointerException > > at org.apache.tools.ant.dispatch.DispatchUtils.execute ( > > DispatchUtils.java:115) > > at org.apache.tools.ant.Task.perform(Task.java:348) > > at org.apache.tools.ant.Target.execute(Target.java:357) > > at org.apache.tools.ant.Target.performTasks(Target.java :385) > > at org.apache.tools.ant.Project.executeSortedTargets(Project.java > > :1329) > > at org.apache.tools.ant.Project.executeTarget(Project.java:1298) > > at org.apache.tools.ant.helper.DefaultExecutor.executeTargets ( > > DefaultExecutor.java:41) > > at org.apache.tools.ant.Project.executeTargets(Project.java:1181) > > at org.apache.tools.ant.Main.runBuild(Main.java:758) > > at org.apache.tools.ant.Main.startAnt(Main.java :217) > > at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) > > at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) > > Caused by: java.lang.NullPointerException > > at > > org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeInVM ( > > JUnitTask.java:1272) > > at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute( > > JUnitTask.java:823) > > at org.apache.cactus.integration.ant.CactusTask.executeInContainer > > (CactusTask.java:453) > > at org.apache.cactus.integration.ant.CactusTask.execute( > > CactusTask.java:204) > > at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java > > :288) > > at sun.reflect.GeneratedMethodAccessor2.invoke (Unknown Source) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > > DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at org.apache.tools.ant.dispatch.DispatchUtils.execute ( > > DispatchUtils.java:105) > > ... 11 more > > --- Nested Exception --- > > java.lang.NullPointerException > > at > > org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeInVM( > > JUnitTask.java:1272) > > at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute( > > JUnitTask.java:823) > > at org.apache.cactus.integration.ant.CactusTask.executeInContainer > > (CactusTask.java:453) > > at org.apache.cactus.integration.ant.CactusTask.execute ( > > CactusTask.java:204) > > at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java > > :288) > > at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke ( > > DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at org.apache.tools.ant.dispatch.DispatchUtils.execute( > > DispatchUtils.java:105) > > at org.apache.tools.ant.Task.perform (Task.java:348) > > at org.apache.tools.ant.Target.execute(Target.java:357) > > at org.apache.tools.ant.Target.performTasks(Target.java:385) > > at > > org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329) > > at org.apache.tools.ant.Project.executeTarget(Project.java:1298) > > at org.apache.tools.ant.helper.DefaultExecutor.executeTargets( > > DefaultExecutor.java:41) > > at org.apache.tools.ant.Project.executeTargets (Project.java:1181) > > at org.apache.tools.ant.Main.runBuild(Main.java:758) > > at org.apache.tools.ant.Main.startAnt(Main.java:217) > > at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) > > at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) > > > > Total time: 8 seconds > > > > ------------------------------------------------------------------------------------------------ > > > > However, if I downgrade to Ant 1.6.5 I don't get this exception and > > everything passes > > smoothly. Looking at the source code of the task, on line 1272 here is > > what we see: > > > > runner = delegate.newJUnitTestRunner (test, test.getHaltonerror(), > > test.getFiltertrace(), > > test.getHaltonfailure(), false, > > true, classLoader); > > so it turns out that delegate is null !!! > > In Ant 1.6.5. there seems that this "delegate" object is missing. Also > > when we look on line 799 > > we see that delegate is explicitly nullified: > > ------------------------------------------------ > > > > delegate = null; > > > > ------------------------------------------------ > > > > ???? > > > > Does these thoughts make any sense, and if yes, how can I resolve my > > problems. > > > > Thank you. > > > > -- > > Regards, Petar! > > Karlovo, Bulgaria. > > > > EOOXML Objections > > http://www.grokdoc.net/index.php/EOOXML_objections > > > > Public PGP Key at: > > https://keyserver1.pgp.com/vkd/DownloadKey.event?keyid=0x19658550C3110611 > > > > Key Fingerprint: A369 A7EE 61BC 93A3 CDFF 55A5 1965 8550 C311 0611 > > > > > -- > Regards, Petar! > Karlovo, Bulgaria. > > EOOXML Objections > http://www.grokdoc.net/index.php/EOOXML_objections > > Public PGP Key at: > https://keyserver1.pgp.com/vkd/DownloadKey.event?keyid=0x19658550C3110611 > Key Fingerprint: A369 A7EE 61BC 93A3 CDFF 55A5 1965 8550 C311 0611 > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]