DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6156>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6156 NullPointerException in org.apache.xpath.objects.XRTreeFrag.xstr Summary: NullPointerException in org.apache.xpath.objects.XRTreeFrag.xstr Product: XalanJ2 Version: 2.2.x Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Critical Priority: Other Component: org.apache.xpath AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] ENVIRONMENT: * Windows NT 4.0 SP6a * JDK 1.3.1 * Xalan 2.2.? (downloaded as "xalan-j_2_2-bin.zip/16-Jan-2002 07:10/7.3M/Latest stable build" from "http://xml.apache.org/dist/xalan-j/") WORKAROUND: This problem does NOT exist in Xalan 2.2.D10. DETAILS: I have a Java app that parses a configuration document and for certain nodes, writes out relevant info to two different output files. To do this, it uses the same Transformer object, but calls transform() with slightly different parameters/properties each time i.e. transformer.setParameter("FILENAME", fileName); transformer.setOutputProperty("method", "text"); transformer.transform(new DOMSource(node), new StreamResult(packageFile)); transformer.setParameter("FILENAME", fileName); transformer.setOutputProperty("method", "text"); transformer.transform(new DOMSource(node), new StreamResult(suiteFile)); transformer.setParameter("FILENAME", ""); With current releases of Xalan, I get the following NullPointerException stack dump: SystemID: file:///Z:/QA/XMLConfig/XMLConfig.xsl; Line#: 106; Column#: 71 javax.xml.transform.TransformerException: Unknown error in XPath at org.apache.xpath.XPath.execute(XPath.java:341) at org.apache.xalan.templates.ElemWithParam.getValue(ElemWithParam.java:240) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:259) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java :1729) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:327) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:430) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:4 38) at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:299) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java :1729) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:327) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:430) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:200) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:164) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl .java:2012) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java: 1175) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:642) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1092 ) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1070 ) at XMLConfig.traverse(Unknown Source) at XMLConfig.traverse(Unknown Source) at XMLConfig.traverse(Unknown Source) at XMLConfig.main(Unknown Source) --------- java.lang.NullPointerException at org.apache.xpath.objects.XRTreeFrag.xstr(XRTreeFrag.java:255) at org.apache.xpath.functions.FunctionDef1Arg.getArg0AsString(FunctionDef1Arg.java: 138) at org.apache.xpath.functions.FuncString.execute(FuncString.java:88) at org.apache.xpath.XPath.execute(XPath.java:318) at org.apache.xalan.templates.ElemWithParam.getValue(ElemWithParam.java:240) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:259) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java :1729) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:327) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:430) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:4 38) at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:299) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java :1729) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:327) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:430) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:200) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:164) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerIm pl.java:2186) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl .java:2012) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java: 1175) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:642) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1092 ) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1070 ) at XMLConfig.traverse(Unknown Source) at XMLConfig.traverse(Unknown Source) at XMLConfig.traverse(Unknown Source) at XMLConfig.main(Unknown Source) ================================================================= The problem seems to be related to either trying to re-use the the same transformer object and/or my use of <xsl:variable> in my stylesheet. The XSL that has the problem is below. Line 106 referenced in the stack trace is the line "<xsl:with-param name="inString" select="string($clean1)"/>". (It appears that $clean2 is trying to call encode() with inString equal to string($clean1), but $clean1 is still NULL?) <xsl:template name="param"> <xsl:variable name="clean2"> <xsl:variable name="clean1"> <xsl:call-template name="encode"> <!-- turn '%' into %25 --> <xsl:with-param name="inString" select="string(.)"/> <xsl:with-param name="oldChars" select="'%'"/> <xsl:with-param name="newChars" select="'%25'"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="encode"> <!-- turn ' ' into %20 --> <xsl:with-param name="inString" select="string($clean1)"/> <xsl:with-param name="oldChars" select="' '"/> <xsl:with-param name="newChars" select="'%20'"/> </xsl:call-template> </xsl:variable> <xsl:text>&</xsl:text><xsl:value-of select="@name"/><xsl:text>="</xsl:text><xsl:value-of select="string($clean2)"/><xsl:text>"</xsl:text> </xsl:template> Finally, doing some basic debugging, I found that the source of the error is that m_dtm is null in the following function of XRTreeFrag.java. public XMLString xstr() { if(null == m_xmlStr) m_xmlStr = m_dtm.getStringValue(m_dtmRoot); return m_xmlStr; }
