Re: [Xmltask-users] NullPointerException at XmlReplacement.java:65
Brought to you by:
bagnew
From: Brian A. <br...@oo...> - 2005-08-09 22:35:42
|
Ah. I've just had a sudden flashback. There is an issue wrt. classloaders/singletons and xmltask. The buffer stuff is affected by this and I need to provide a fix. If you define your target thus: <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask" classpath="xmltask.jar"/> then unfortunately this issue raises it's head, and each <xmltask> invocation appears to use a different classloader (or similar - the upshot is that the buffer registry is different - hence your buffer is emtpry). If you do this: <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"> and put xmltask.jar in your CLASSPATH or in ant/lib, then you'll have more joy. Brian Michał Tkacz wrote: > Thanks for the quick answer and for the fix. Unfortunately, although > the exception is no longer thrown, the output is still wrong. > > If I leave my target unmodified (let me know if this is supposed to > work): > > <target name="target"> > <xmltask> > <print buffer="buffer"/> > </xmltask> > </target> > > I get this: > > [xmltask] Applying CallAction(target) to /root/element > [xmltask] Calling target target for [element: null] (in buffer buffer > [xmltask] Storing [element: null] against buffer (buffer) > > and then this: > > [xmltask] Processing [no output document] > [xmltask] Applying com.oopsconsultancy.xmltask.PrintAction@13bad12 > [xmltask] Couldn't find any entries for buffer 'buffer' > [xmltask] Applied com.oopsconsultancy.xmltask.PrintAction@13bad12 > [xmltask] Exiting C:\xmltask\build.xml. > [xmltask] Applied CallAction(target) - 1 match(es) > > If I modify my target as suggested by David: > > <target name="target"> > <xmltask sourcebuffer="buffer"> > <print path="."/> > </xmltask> > </target> > > I get this: > > [xmltask] Applying CallAction(target) to /root/element > [xmltask] Calling target target for [element: null] (in buffer buffer > [xmltask] Storing [element: null] against buffer (buffer) > > and then this: > > [xmltask] Processing buffer [no output document] > [xmltask] Applying com.oopsconsultancy.xmltask.PrintAction@df8ff1 to . > [xmltask] { node output > [xmltask] } node output > [xmltask] Applied com.oopsconsultancy.xmltask.PrintAction@df8ff1 - 1 > match(es) > > [xmltask] Exiting C:\xmltask\build.xml. > [xmltask] Applied CallAction(target) - 1 match(es) > > (the buffer is empty). If I change '.' to '*' or 'text()', the print > action fails to match. > > Michal > > Brian Agnew napisał(a): > >> Yup. It's failing (and shouldn't do) since the second xmltask has no >> input and no output, but is still trying to normalise() it's >> resultant document (which of course it doesn't have). >> >> I'm just preparing a quick fix/test and I'll mail that out to you soon. >> >> Karr, David wrote: >> >>> I don't know why this is failing, but it might be worth trying to >>> change >>> the second xmltask to have a "sourcebuffer" attribute of "buffer", and >>> then change your "print" element to just specify 'path="."'. >>> >>> >>> >>>> -----Original Message----- >>>> From: xml...@li... >>>> [mailto:xml...@li...] On Behalf Of >>>> Michal Tkacz >>>> Sent: Monday, August 08, 2005 1:59 PM >>>> To: xml...@li... >>>> Subject: [Xmltask-users] NullPointerException at >>>> XmlReplacement.java:65 >>>> >>>> >>>> Hi, >>>> >>>> I'm getting a NullPointerException when using <call>. It seems that >>>> my (fairly simple) xpath does not evaluate to what I would expect. >>>> I saw two posts in this group that describe exactly the same >>>> exception, which however couldn't be reproduced. Here is my case: >>>> >>>> I'm using xmltask 1.11, Ant 1.6.5 and Java 1.5.0_02 on Windows XP. >>>> >>>> build.xml: >>>> >>>> <project default="test"> >>>> <taskdef name="xmltask" >>>> classname="com.oopsconsultancy.xmltask.ant.XmlTask" >>>> classpath="xmltask-v1.11.jar"/> >>>> >>>> <target name="test"> >>>> <xmltask source="test.xml"> >>>> <call path="/root/element" target="target" >>>> buffer="buffer"/> >>>> </xmltask> >>>> </target> >>>> <target name="target"> >>>> <xmltask> >>>> <print buffer="buffer"/> >>>> </xmltask> >>>> </target> >>>> </project> >>>> >>>> test.xml: >>>> >>>> <?xml version="1.0" encoding="UTF-8"?> >>>> <root> >>>> <element/> >>>> </root> >>>> >>>> output: >>>> >>>> C:\xmltask>ant -verbose >>>> Apache Ant version 1.6.5 compiled on June 2 2005 >>>> Buildfile: build.xml >>>> Detected Java version: 1.5 in: c:\Program >>>> Files\Java\jdk1.5.0_02\jre Detected OS: Windows XP parsing >>>> buildfile C:\xmltask\build.xml with URI = file:///C:/xmltask/build.xml >>>> Project base dir set to: C:\xmltask >>>> Build sequence for target(s) `test' is [test] >>>> Complete build sequence is [test, target, ] >>>> >>>> test: >>>> [xmltask] Reading C:\xmltask\test.xml >>>> [xmltask] Executing xmltask 1.11 >>>> [xmltask] Processing C:\xmltask\test.xml [no output document] >>>> [xmltask] Using predefined xml catalog >>>> [xmltask] Applying CallAction(target) to /root/element >>>> [xmltask] Calling target target for [element: null] (in buffer buffer >>>> [xmltask] Storing [element: null] against buffer (buffer) >>>> >>>> Project base dir set to: C:\xmltask >>>> [xmltask] calling target(s) [target] in build file >>>> C:\xmltask\build.xml parsing buildfile C:\xmltask\build.xml with >>>> URI = file:///C:/xmltask/build.xml >>>> Project base dir set to: C:\xmltask >>>> Trying to override old definition of task xmltask >>>> Build sequence for target(s) `target' is [target] >>>> Complete build sequence is [target, test, ] >>>> [xmltask] Entering C:\xmltask\build.xml... >>>> Build sequence for target(s) `target' is [target] >>>> Complete build sequence is [target, test, ] >>>> >>>> target: >>>> [xmltask] Executing xmltask 1.11 >>>> [xmltask] Processing [no output document] >>>> [xmltask] Applying com.oopsconsultancy.xmltask.PrintAction@13bad12 >>>> [xmltask] Couldn't find any entries for buffer 'buffer' >>>> [xmltask] Applied com.oopsconsultancy.xmltask.PrintAction@13bad12 >>>> [xmltask] java.lang.NullPointerException >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.XmlReplacement.apply(XmlReplacemen >>>> t.java:65) >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.ant.XmlTask.processDoc(XmlTask.java:674) >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:643) >>>> [xmltask] at >>>> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) >>>> [xmltask] at org.apache.tools.ant.Task.perform(Task.java:364) >>>> [xmltask] at org.apache.tools.ant.Target.execute(Target.java:341) >>>> [xmltask] at >>>> org.apache.tools.ant.Target.performTasks(Target.java:369) >>>> [xmltask] at >>>> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) >>>> [xmltask] at >>>> org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets >>>> (SingleCheckExecutor.java:37) >>>> [xmltask] at >>>> org.apache.tools.ant.Project.executeTargets(Project.java:1068) >>>> [xmltask] at >>>> org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382) >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.CallAction.apply(CallAction.java:129) >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.XmlReplace.apply(XmlReplace.java:73) >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.XmlReplacement.apply(XmlReplacemen >>>> t.java:60) >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.ant.XmlTask.processDoc(XmlTask.java:674) >>>> [xmltask] at >>>> com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:643) >>>> [xmltask] at >>>> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) >>>> [xmltask] at org.apache.tools.ant.Task.perform(Task.java:364) >>>> [xmltask] at org.apache.tools.ant.Target.execute(Target.java:341) >>>> [xmltask] at >>>> org.apache.tools.ant.Target.performTasks(Target.java:369) >>>> [xmltask] at >>>> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) >>>> [xmltask] at >>>> org.apache.tools.ant.Project.executeTarget(Project.java:1185) >>>> [xmltask] at >>>> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(Def >>>> >>> >>> aultExecutor.java:40) >>> >>> >>>> [xmltask] at >>>> org.apache.tools.ant.Project.executeTargets(Project.java:1068) >>>> [xmltask] at org.apache.tools.ant.Main.runBuild(Main.java:668) >>>> [xmltask] at org.apache.tools.ant.Main.startAnt(Main.java:187) >>>> [xmltask] at >>>> org.apache.tools.ant.launch.Launcher.run(Launcher.java:246) >>>> [xmltask] at >>>> org.apache.tools.ant.launch.Launcher.main(Launcher.java:67) >>>> [xmltask] Exiting C:\xmltask\build.xml. >>>> [xmltask] Applied CallAction(target) - 1 match(es) >>>> >>>> BUILD SUCCESSFUL >>>> Total time: 0 seconds >>>> >>>> >>>> >>>> ------------------------------------------------------- >>>> SF.Net email is Sponsored by the Better Software Conference & EXPO >>>> September 19-22, 2005 * San Francisco, CA * Development Lifecycle >>>> Practices Agile & Plan-Driven Development * Managing Projects & >>>> Teams * Testing & QA Security * Process Improvement & Measurement * >>>> http://www.sqe.com/bsce5sf >>>> _______________________________________________ >>>> Xmltask-users mailing list >>>> Xml...@li... >>>> https://lists.sourceforge.net/lists/listinfo/xmltask-users >>>> >>>> >>> >>> >>> >>> ------------------------------------------------------- >>> SF.Net email is Sponsored by the Better Software Conference & EXPO >>> September 19-22, 2005 * San Francisco, CA * Development Lifecycle >>> Practices >>> Agile & Plan-Driven Development * Managing Projects & Teams * >>> Testing & QA >>> Security * Process Improvement & Measurement * >>> http://www.sqe.com/bsce5sf >>> _______________________________________________ >>> Xmltask-users mailing list >>> Xml...@li... >>> https://lists.sourceforge.net/lists/listinfo/xmltask-users >>> >>> >>> >> >> -- >> Brian Agnew http://www.oopsconsultancy.com >> OOPS Consultancy Ltd brian @ oopsconsultancy.com >> Tel: +44 (0)7720 397526 >> Fax: +44 (0)20 8682 0012 >> > -- Brian Agnew http://www.oopsconsultancy.com OOPS Consultancy Ltd brian @ oopsconsultancy.com Tel: +44 (0)7720 397526 Fax: +44 (0)20 8682 0012 |