Author: jukka
Date: Wed Jan 27 18:12:35 2010
New Revision: 903775
URL: http://svn.apache.org/viewvc?rev=903775&view=rev
Log:
TIKA-374: AutoDetectParser not thread-safe
Make XmlRootExtractor thread-safe
Modified:
lucene/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/XmlRootExtractor.java
Modified:
lucene/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/XmlRootExtractor.java
URL:
http://svn.apache.org/viewvc/lucene/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/XmlRootExtractor.java?rev=903775&r1=903774&r2=903775&view=diff
==============================================================================
---
lucene/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/XmlRootExtractor.java
(original)
+++
lucene/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/XmlRootExtractor.java
Wed Jan 27 18:12:35 2010
@@ -38,11 +38,10 @@
*/
public class XmlRootExtractor {
- private final SAXParser parser;
+ private final SAXParserFactory factory;
public XmlRootExtractor() throws SAXException,
ParserConfigurationException {
- SAXParserFactory factory = SAXParserFactory.newInstance();
-
+ factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(false);
try {
@@ -54,13 +53,12 @@
// are inherently vulnerable to XML denial-of-service attacks.
}
- this.parser = factory.newSAXParser();
}
public QName extractRootElement(byte[] data) {
ExtractorHandler handler = new ExtractorHandler();
try {
- parser.parse(
+ factory.newSAXParser().parse(
new ByteArrayInputStream(data),
new OfflineContentHandler(handler));
} catch (Exception ignore) {