On 11/04/2011 12:41 PM, Caolán McNamara wrote:
i.e. com.sun.org.apache.xerces.internal.parsers.DOMParser is a
sun/oracle-only java api. Commit
http://cgit.freedesktop.org/libreoffice/core/commit/?id=04c5a36ab8d514cfbe8e40f4493787b2ab392ab5
(attached) I believe does the right thing, definitely builds anyway.
Looking at the patch,
javax.xml.parsers.DocumentBuilderFactory.newInstance() smells like it
internally uses the context class loader, even if that is not documented
at
<http://download.oracle.com/javase/7/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#newInstance()>
(and at least in some Sun JRE 6 it indeed does so), so this could fail
if the context class loader is null---as can happen in LibO, see
<https://issues.apache.org/ooo/show_bug.cgi?id=102164#c6>.
That is, the call to DocumentBuilderFactory.newInstance() within
OfficeDocumentReportTarget would need to be wrapped in something like
DocumentBuilderFactory dbFactory;
ClassLoader old = Thread.currentThread().getContextClassLoader();
ClassLoader c = OfficeDocumentReportTarget.class.getClassLoader();
if (c != null) {
// otherwise, hope context class loader already contains a non-null value
OfficeDocumentReportTarget.class.getClassLoader(c);
}
try {
dbFactory = DocumentBuilderFactory.newInstance();
} finally {
if (c != null) {
Thread.currentThread().setContextClassLoader(old);
}
}
Stepha
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice