You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2003/07/30 17:14:20 UTC
DO NOT REPLY [Bug 21998] New: -
java.lang.NullPointerException at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents
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=21998>.
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=21998
java.lang.NullPointerException at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents
Summary: java.lang.NullPointerException at
org.apache.xpath.objects.XNodeSet.dispatchCharactersEven
ts
Product: XalanJ2
Version: 2.5
Platform: PC
OS/Version: Other
Status: NEW
Severity: Normal
Priority: Other
Component: org.apache.xpath
AssignedTo: xalan-dev@xml.apache.org
ReportedBy: franck.schmidlin@aniteps.com
I have found a combination of xml and xsl that creates a null pointer exception
when the same transform is run twice in a row. Calling
transformer.clerParameters() between the 2 calls solves the problem, even tho
no parameter is used by the xsl.
I have failed to narrow down the problem to a specific part of my xml/xsl, but
I have 2 test files that I'll be happy to send to you.
The stack trace looks like:
javax.xml.transform.TransformerException: java.lang.NullPointerException
at org.apache.xalan.transformer.TransformerImpl.transformNode
(TransformerImpl.java:1226)
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:638)
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:1088)
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:1066)
at test.main(test.java:99)
Caused by: java.lang.NullPointerException
at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents
(XNodeSet.java:262)
at org.apache.xpath.Expression.executeCharsToContentHandler
(Expression.java:303)
at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.templates.ElemLiteralResult.execute
(ElemLiteralResult.java:678)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.templates.ElemLiteralResult.execute
(ElemLiteralResult.java:678)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.templates.ElemLiteralResult.execute
(ElemLiteralResult.java:678)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode
(TransformerImpl.java:2008)
at org.apache.xalan.transformer.TransformerImpl.transformNode
(TransformerImpl.java:1171)
... 4 more
---------
java.lang.NullPointerException
at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents
(XNodeSet.java:262)
at org.apache.xpath.Expression.executeCharsToContentHandler
(Expression.java:303)
at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.templates.ElemLiteralResult.execute
(ElemLiteralResult.java:678)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.templates.ElemLiteralResult.execute
(ElemLiteralResult.java:678)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.templates.ElemLiteralResult.execute
(ElemLiteralResult.java:678)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
(TransformerImpl.java:2182)
at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode
(TransformerImpl.java:2008)
at org.apache.xalan.transformer.TransformerImpl.transformNode
(TransformerImpl.java:1171)
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:638)
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:1088)
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:1066)
at test.main(test.java:99)
The test program is the bog standard:
try
{
javax.xml.parsers.DocumentBuilderFactory dbf=
javax.xml.parsers.DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
// See http://xml.apache.org/xerces-j/features.html
// NB: The fact that you can set these throught the
// DocumentBuilderFactory is not well documented...
// Disable validation, to stop us from trying to access
// the WML DTD everytime we test WAP.
dbf.setAttribute(
"http://xml.org/sax/features/validation",
Boolean.FALSE);
dbf.setAttribute(
"http://apache.org/xml/features/nonvalidating/load-external-
dtd",
Boolean.FALSE);
javax.xml.parsers.DocumentBuilder db= dbf.newDocumentBuilder();
// load xml
java.io.InputStream is = new java.io.FileInputStream
("F:/XalanTest/test.xml");
org.w3c.dom.Document xml = db.parse(is);
//load xsl
is = new java.io.FileInputStream("F:/XalanTest/test.xsl");
org.w3c.dom.Document xsl = db.parse(is);
//Create Transformer
javax.xml.transform.TransformerFactory tf=
javax.xml.transform.TransformerFactory.newInstance();
javax.xml.transform.Transformer xslt =
tf.newTransformer(
new javax.xml.transform.dom.DOMSource(xsl));
java.util.Properties oprops= new java.util.Properties();
oprops.put(javax.xml.transform.OutputKeys.METHOD, "xml");
xslt.setOutputProperties(oprops);
//Apply transform once
org.w3c.dom.Document xmlOne = db.newDocument();
try
{
xslt.transform(
new javax.xml.transform.dom.DOMSource(xml),
new javax.xml.transform.dom.DOMResult(xmlOne));
}
catch (TransformerException e)
{
System.out.print("ONE Failed");
e.printStackTrace();
}
// This call solves the problem
//xslt.clearParameters();
//Apply transform twice
org.w3c.dom.Document xmlTwo = db.newDocument();
try
{
xslt.transform(
new javax.xml.transform.dom.DOMSource(xml),
new javax.xml.transform.dom.DOMResult(xmlTwo));
System.out.print("No problem reported...");
}
catch (TransformerException e1)
{
System.out.print("TWO Failed");
e1.printStackTrace();
}
}
catch (Exception e)
{
e.printStackTrace();
}