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=23591>. 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=23591 NPE in setOutputProperties with null arg Summary: NPE in setOutputProperties with null arg Product: XalanJ2 Version: 2.5 Platform: PC OS/Version: Windows XP Status: NEW Severity: Normal Priority: Other Component: org.apache.xalan.transformer AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Version 2.5.1 If the properties argument to setOutputProperties is null, it should reset the values to the system defaults, but it gives an NPE at org.apache.xalan.transformer.TransformerImpl:941 Existing code: public void setOutputProperties(Properties oformat) throws IllegalArgumentException { synchronized (m_reentryGuard) { if (null != oformat) { // See if an *explicit* method was set. String method = (String) oformat.get(OutputKeys.METHOD); if (null != method) m_outputFormat = new OutputProperties(method); else if(m_outputFormat==null) m_outputFormat = new OutputProperties(); } if (null != oformat) { m_outputFormat.copyFrom(oformat); } // copyFrom does not set properties that have been already set, so // this must be called after, which is a bit in the reverse from // what one might think. NPE m_outputFormat.copyFrom(m_stylesheetRoot.getOutputProperties()); } } In the case where oformat arg is null and m_outputFormat is initially null then m_outputFormat does not get initialized. As a quick fix I moved the m_outputFormat initialization outside the null test. I haven't verified whether this produces correct behavior, but it doesn't NPE any more :) public void setOutputProperties(Properties oformat) throws IllegalArgumentException { synchronized (m_reentryGuard) { if (null != oformat) { // See if an *explicit* method was set. String method = (String) oformat.get(OutputKeys.METHOD); if (null != method) m_outputFormat = new OutputProperties(method); >> } >> >> if(m_outputFormat==null) >> m_outputFormat = new OutputProperties(); if (null != oformat) { m_outputFormat.copyFrom(oformat); } // copyFrom does not set properties that have been already set, so // this must be called after, which is a bit in the reverse from // what one might think. m_outputFormat.copyFrom(m_stylesheetRoot.getOutputProperties()); } } Mike
