This is an automated email from the ASF dual-hosted git repository.
tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new 10d9254 TIKA-3164, revert back to poi 4.x in main
10d9254 is described below
commit 10d925439cd862f74679ec5fa9a9b5863f50ce2c
Author: tallison <[email protected]>
AuthorDate: Sat Dec 11 10:23:19 2021 -0500
TIKA-3164, revert back to poi 4.x in main
---
CHANGES.txt | 4 -
tika-bundles/tika-bundle-standard/pom.xml | 42 +--
tika-parent/pom.xml | 2 +-
.../detect/microsoft/ooxml/OPCPackageDetector.java | 3 +-
.../tika/parser/microsoft/OutlookExtractor.java | 8 +-
.../microsoft/ooxml/OOXMLExtractorFactory.java | 25 +-
.../parser/microsoft/ooxml/OPCPackageWrapper.java | 39 --
.../ooxml/SXSLFPowerPointExtractorDecorator.java | 3 +-
.../microsoft/ooxml/TikaXSSFSheetXMLHandler.java | 411 ---------------------
.../ooxml/XSLFPowerPointExtractorDecorator.java | 6 +-
.../ooxml/XSSFExcelExtractorDecorator.java | 3 +-
.../microsoft/ooxml/xps/XPSTextExtractor.java | 23 +-
.../xslf/XSLFEventBasedPowerPointExtractor.java | 29 +-
.../ooxml/xwpf/XWPFEventBasedWordExtractor.java | 26 +-
14 files changed, 34 insertions(+), 590 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index a5d5b77..21f09c3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,9 +1,5 @@
Release 2.2.0 - ???
- * Upgrade to Apache POI 5.1.0. NOTE: This results in an increase
- of several orders of magnitude in logging. See https://s.apache.org/3gk46
- for an example of how to turn off logging for POI. (TIKA-3164).
-
* Fix logic bug in PipesServer that prevented concatenation of
content from attachments (TIKA-3609).
diff --git a/tika-bundles/tika-bundle-standard/pom.xml
b/tika-bundles/tika-bundle-standard/pom.xml
index 933fe65..2783d74 100644
--- a/tika-bundles/tika-bundle-standard/pom.xml
+++ b/tika-bundles/tika-bundle-standard/pom.xml
@@ -221,27 +221,21 @@
!org.junit.*,
!junit.*,
org.apache.tika.fork,
- org.apache.logging.log4j,
android.util;resolution:=optional,
com.apple.eawt;resolution:=optional,
com.github.luben.zstd;resolution:=optional,
- com.github.jaiimageio.*;resolution:=optional,
- com.github.javaparser.*;resolution:=optional,
com.google.common.util.concurrent.internal;resolution:=optional,
com.google.errorprone.annotations;resolution:=optional,
com.google.errorprone.annotations.concurrent;resolution:=optional,
com.google.protobuf;resolution:=optional,
com.ibm.icu.text;resolution:=optional,
- com.microsoft.schemas.*;resolution:=optional,
com.sleepycat.je;resolution:=optional,
com.sun.javadoc;resolution:=optional,
- com.sun.org.apache.xml.internal.resolver.*;resolution:=optional,
com.sun.xml.bind.marshaller;resolution:=optional,
com.sun.xml.internal.bind.marshaller;resolution:=optional,
com.sun.msv.datatype;resolution:=optional,
com.sun.msv.datatype.xsd;resolution:=optional,
com.sun.tools.javadoc;resolution:=optional,
- de.rototor.pdfbox.graphics2d;resolution:=optional,
javax.annotation;resolution:=optional,
javax.mail;resolution:=optional,
javax.mail.internet;resolution:=optional,
@@ -259,30 +253,17 @@
javax.xml.bind.util;resolution:=optional,
net.sf.saxon;resolution:=optional,
net.sf.saxon.dom;resolution:=optional,
- net.sf.saxon.lib;resolution:=optional,
- net.sf.saxon.ma.map;resolution:=optional,
net.sf.saxon.om;resolution:=optional,
net.sf.saxon.query;resolution:=optional,
net.sf.saxon.sxpath;resolution:=optional,
- net.sf.saxon.tree.wrapper;resolution:=optional,
- net.sf.saxon.trans;resolution:=optional,
- net.sf.saxon.type;resolution:=optional,
net.sf.saxon.value;resolution:=optional,
org.apache.batik.anim.dom;resolution:=optional,
org.apache.batik.bridge;resolution:=optional,
- org.apache.batik.dom;resolution:=optional,
org.apache.batik.ext.awt;resolution:=optional,
org.apache.batik.ext.awt.image.renderable;resolution:=optional,
org.apache.batik.gvt;resolution:=optional,
- org.apache.batik.parser;resolution:=optional,
- org.apache.batik.svggen;resolution:=optional,
org.apache.batik.util;resolution:=optional,
org.apache.jcp.xml.dsig.internal.dom;resolution:=optional,
- org.apache.maven.model;resolution:=optional,
- org.apache.maven.plugin;resolution:=optional,
- org.apache.maven.plugin.logging;resolution:=optional,
- org.apache.maven.project;resolution:=optional,
- org.apache.poi.schemas.vmldrawing;resolution:=optional,
org.apache.tools.ant;resolution:=optional,
org.apache.tools.ant.taskdefs;resolution:=optional,
org.apache.tools.ant.types;resolution:=optional,
@@ -292,9 +273,6 @@
org.apache.xerces.xni.parser;resolution:=optional,
org.apache.xml.resolver;resolution:=optional,
org.apache.xml.resolver.readers;resolution:=optional,
- org.w3c.dom.ranges;resolution:=optional,
- org.w3c.dom.traversal;resolution:=optional,
- sun.io;resolution:=optional,
org.apache.xml.resolver.tools;resolution:=optional,
org.apache.xml.security;resolution:=optional,
org.apache.xml.security.c14n;resolution:=optional,
@@ -302,10 +280,12 @@
org.apache.xml.security.utils;resolution:=optional,
org.apache.xmlbeans.impl.xpath.saxon;resolution:=optional,
org.apache.xmlbeans.impl.xquery.saxon;resolution:=optional,
+ org.w3c.dom.ranges;resolution:=optional,
+ org.w3c.dom.traversal;resolution:=optional,
+ sun.io;resolution:=optional,
org.brotli.dec;resolution:=optional,
org.cyberneko.html.xercesbridge;resolution:=optional,
org.etsi.uri.x01903.v14;resolution:=optional,
- org.etsi.uri.x01903.v13;resolution:=optional,
org.jaxen;resolution:=optional,
org.jaxen.dom4j;resolution:=optional,
org.jaxen.pattern;resolution:=optional,
@@ -313,25 +293,9 @@
org.jaxen.util;resolution:=optional,
org.openxmlformats.schemas.officeDocument.x2006.math;resolution:=optional,
org.openxmlformats.schemas.schemaLibrary.x2006.main;resolution:=optional,
-
org.openxmlformats.schemas.drawingml.x2006.chart;resolution:=optional,
-
org.openxmlformats.schemas.drawingml.x2006.main;resolution:=optional,
-
org.openxmlformats.schemas.drawingml.x2006.picture;resolution:=optional,
-
org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing;resolution:=optional,
-
org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing;resolution:=optional,
-
org.openxmlformats.schemas.officeDocument.x2006.customProperties;resolution:=optional,
-
org.openxmlformats.schemas.officeDocument.x2006.extendedProperties;resolution:=optional,
-
org.openxmlformats.schemas.officeDocument.x2006.relationships;resolution:=optional,
-
org.openxmlformats.schemas.officeDocument.x2006.sharedTypes;resolution:=optional,
-
org.openxmlformats.schemas.presentationml.x2006.main;resolution:=optional,
-
org.openxmlformats.schemas.spreadsheetml.x2006.main;resolution:=optional,
-
org.openxmlformats.schemas.wordprocessingml.x2006.main;resolution:=optional,
-
org.openxmlformats.schemas.xpackage.x2006.digitalSignature;resolution:=optional,
- org.osgi.framework;resolution:=optional,
org.slf4j;resolution:=optional,
org.slf4j.helpers;resolution:=optional,
org.w3c.dom;resolution:=optional,
- org.w3.x2000.x09.xmldsig;resolution:=optional,
- org.w3c.dom.svg;resolution:=optional,
org.xml.sax;resolution:=optional,
org.xml.sax.ext;resolution:=optional,
org.xml.sax.helpers;resolution:=optional,
diff --git a/tika-parent/pom.xml b/tika-parent/pom.xml
index 963e659..6f8e399 100644
--- a/tika-parent/pom.xml
+++ b/tika-parent/pom.xml
@@ -353,7 +353,7 @@
<pax.exam.version>4.11.0</pax.exam.version>
<pdfbox.version>2.0.24</pdfbox.version>
<!-- NOTE: sync tukaani version with commons-compress in tika-parsers -->
- <poi.version>5.1.0</poi.version>
+ <poi.version>4.1.2</poi.version>
<quartz.version>2.3.2</quartz.version>
<rome.version>1.16.0</rome.version>
<scm.version>1.12.0</scm.version>
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/ooxml/OPCPackageDetector.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/ooxml/OPCPackageDetector.java
index 4e05078..dd58d10 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/ooxml/OPCPackageDetector.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/ooxml/OPCPackageDetector.java
@@ -51,7 +51,6 @@ import org.apache.tika.detect.zip.ZipContainerDetector;
import org.apache.tika.io.TikaInputStream;
import org.apache.tika.mime.MediaType;
import org.apache.tika.parser.ParseContext;
-import org.apache.tika.parser.microsoft.ooxml.OPCPackageWrapper;
import org.apache.tika.sax.OfflineContentHandler;
import org.apache.tika.sax.StoppingEarlyException;
import org.apache.tika.utils.XMLReaderUtils;
@@ -260,7 +259,7 @@ public class OPCPackageDetector implements
ZipContainerDetector {
}
((CloseShieldZipFileZipEntrySource)zipEntrySource).allowClose();
//only set the open container if we made it here
- stream.setOpenContainer(new OPCPackageWrapper(pkg));
+ stream.setOpenContainer(pkg);
return type;
}
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OutlookExtractor.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OutlookExtractor.java
index fd884de..a90f693 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OutlookExtractor.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OutlookExtractor.java
@@ -662,10 +662,10 @@ public class OutlookExtractor extends
AbstractPOIFSExtractor {
for (RecipientChunks chunks : recipientChunks) {
Recipient r = new Recipient();
- r.displayName = (chunks.getRecipientDisplayNameChunk() != null) ?
- chunks.getRecipientDisplayNameChunk().toString() : null;
- r.name = (chunks.getRecipientNameChunk() != null) ?
- chunks.getRecipientNameChunk().toString() :
+ r.displayName = (chunks.recipientDisplayNameChunk != null) ?
+ chunks.recipientDisplayNameChunk.toString() : null;
+ r.name = (chunks.recipientNameChunk != null) ?
+ chunks.recipientNameChunk.toString() :
null;
r.emailAddress = chunks.getRecipientEmailAddress();
List<PropertyValue> vals =
chunks.getProperties().get(MAPIProperty.RECIPIENT_TYPE);
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java
index ec15fed..0340926 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OOXMLExtractorFactory.java
@@ -25,7 +25,7 @@ import java.util.Locale;
import
org.apache.commons.compress.archivers.zip.UnsupportedZipFeatureException;
import org.apache.commons.io.input.CloseShieldInputStream;
import org.apache.poi.ooxml.POIXMLDocument;
-import org.apache.poi.ooxml.extractor.POIXMLExtractorFactory;
+import org.apache.poi.ooxml.extractor.ExtractorFactory;
import org.apache.poi.ooxml.extractor.POIXMLTextExtractor;
import org.apache.poi.openxml4j.exceptions.InvalidOperationException;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
@@ -34,9 +34,10 @@ import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
import org.apache.poi.util.LocaleUtil;
-import org.apache.poi.xslf.extractor.XSLFExtractor;
+import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFRelation;
+import org.apache.poi.xslf.usermodel.XSLFSlideShow;
import org.apache.poi.xssf.extractor.XSSFBEventBasedExcelExtractor;
import org.apache.poi.xssf.extractor.XSSFEventBasedExcelExtractor;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
@@ -73,7 +74,6 @@ public class OOXMLExtractorFactory {
private static final Logger LOG =
LoggerFactory.getLogger(OOXMLExtractorFactory.class);
private static final int MAX_BUFFER_LENGTH = 1000000;
- private static POIXMLExtractorFactory EXTRACTOR_FACTORY = new
POIXMLExtractorFactory();
//TODO find what happened to SUPPORTED_TYPES
private static XSLFRelation[] XSLF_RELATIONS = new XSLFRelation[] {
@@ -81,8 +81,9 @@ public class OOXMLExtractorFactory {
XSLFRelation.PRESENTATIONML,
XSLFRelation.PRESENTATIONML_TEMPLATE,
XSLFRelation.PRESENTATION_MACRO
};
+
static {
- POIXMLExtractorFactory.setAllThreadsPreferEventExtractors(true);
+ ExtractorFactory.setThreadPrefersEventExtractors(true);
}
public static void parse(InputStream stream, ContentHandler baseHandler,
Metadata metadata,
@@ -99,8 +100,8 @@ public class OOXMLExtractorFactory {
// Locate or Open the OPCPackage for the file
TikaInputStream tis = TikaInputStream.cast(stream);
- if (tis != null && tis.getOpenContainer() instanceof
OPCPackageWrapper) {
- pkg = ((OPCPackageWrapper)
tis.getOpenContainer()).getOPCPackage();
+ if (tis != null && tis.getOpenContainer() instanceof OPCPackage) {
+ pkg = (OPCPackage) tis.getOpenContainer();
} else if (tis != null && tis.hasFile()) {
try {
pkg = OPCPackage.open(tis.getFile().getPath(),
PackageAccess.READ);
@@ -109,7 +110,7 @@ public class OOXMLExtractorFactory {
ZipSalvager.salvageCopy(tis.getFile(), tmpRepairedCopy);
pkg = OPCPackage.open(tmpRepairedCopy, PackageAccess.READ);
}
- tis.setOpenContainer(new OPCPackageWrapper(pkg));
+ tis.setOpenContainer(pkg);
} else {
//OPCPackage slurps rris into memory so we can close rris
//without apparent problems
@@ -195,7 +196,7 @@ public class OOXMLExtractorFactory {
}
if (poiExtractor == null) {
- poiExtractor = EXTRACTOR_FACTORY.create(pkg);
+ poiExtractor = (POIXMLTextExtractor)
ExtractorFactory.createExtractor(pkg);
}
POIXMLDocument document = poiExtractor.getDocument();
@@ -222,7 +223,7 @@ public class OOXMLExtractorFactory {
"The extractor returned was a " +
poiExtractor);
} else if (document instanceof XMLSlideShow) {
extractor = new XSLFPowerPointExtractorDecorator(metadata,
context,
- (org.apache.poi.xslf.extractor.XSLFExtractor)
poiExtractor);
+
(org.apache.poi.xslf.extractor.XSLFPowerPointExtractor) poiExtractor);
} else if (document instanceof XWPFDocument) {
extractor = new XWPFWordExtractorDecorator(metadata, context,
(XWPFWordExtractor) poiExtractor);
@@ -252,7 +253,7 @@ public class OOXMLExtractorFactory {
} finally {
if (tmpRepairedCopy != null) {
if (pkg != null) {
- pkg.revert();
+ pkg.close();
}
boolean deleted = tmpRepairedCopy.delete();
if (!deleted) {
@@ -313,7 +314,7 @@ public class OOXMLExtractorFactory {
if (eventBased) {
return new XSLFEventBasedPowerPointExtractor(pkg);
} else {
- return new XSLFExtractor(new XMLSlideShow(pkg));
+ return new XSLFPowerPointExtractor(new XSLFSlideShow(pkg));
}
}
}
@@ -322,7 +323,7 @@ public class OOXMLExtractorFactory {
if (eventBased) {
return new XSLFEventBasedPowerPointExtractor(pkg);
} else {
- return new XSLFExtractor(new XMLSlideShow(pkg));
+ return new XSLFPowerPointExtractor(new XMLSlideShow(pkg));
}
}
return null;
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OPCPackageWrapper.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OPCPackageWrapper.java
deleted file mode 100644
index e58afa2..0000000
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/OPCPackageWrapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.tika.parser.microsoft.ooxml;
-
-import java.io.Closeable;
-import java.io.IOException;
-
-import org.apache.poi.openxml4j.opc.OPCPackage;
-
-public class OPCPackageWrapper implements Closeable {
- private final OPCPackage opcPackage;
-
- public OPCPackageWrapper(OPCPackage opcPackage) {
- this.opcPackage = opcPackage;
- }
-
- @Override
- public void close() throws IOException {
- opcPackage.revert();
- }
-
- public OPCPackage getOPCPackage() {
- return opcPackage;
- }
-}
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/SXSLFPowerPointExtractorDecorator.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/SXSLFPowerPointExtractorDecorator.java
index b24284a..295138b 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/SXSLFPowerPointExtractorDecorator.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/SXSLFPowerPointExtractorDecorator.java
@@ -33,7 +33,6 @@ import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
import org.apache.poi.openxml4j.opc.TargetMode;
-import org.apache.poi.xslf.extractor.XSLFExtractor;
import org.apache.poi.xslf.usermodel.XSLFRelation;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
@@ -96,7 +95,7 @@ public class SXSLFPowerPointExtractorDecorator extends
AbstractOOXMLExtractor {
}
/**
- * @see XSLFExtractor#getText()
+ * @see org.apache.poi.xslf.extractor.XSLFPowerPointExtractor#getText()
*/
protected void buildXHTML(XHTMLContentHandler xhtml) throws SAXException,
IOException {
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/TikaXSSFSheetXMLHandler.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/TikaXSSFSheetXMLHandler.java
deleted file mode 100644
index ad2ac8e..0000000
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/TikaXSSFSheetXMLHandler.java
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.tika.parser.microsoft.ooxml;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Queue;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.poi.ss.usermodel.BuiltinFormats;
-import org.apache.poi.ss.usermodel.DataFormatter;
-import org.apache.poi.ss.usermodel.RichTextString;
-import org.apache.poi.ss.util.CellAddress;
-import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler;
-import org.apache.poi.xssf.model.Comments;
-import org.apache.poi.xssf.model.SharedStrings;
-import org.apache.poi.xssf.model.Styles;
-import org.apache.poi.xssf.usermodel.XSSFCellStyle;
-import org.apache.poi.xssf.usermodel.XSSFComment;
-import org.apache.poi.xssf.usermodel.XSSFRichTextString;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * This is a temporary work around for POI 5.1.0:
https://bz.apache.org/bugzilla/show_bug.cgi?id=65676
- */
-public class TikaXSSFSheetXMLHandler extends DefaultHandler {
- private static final Logger LOG =
LogManager.getLogger(TikaXSSFSheetXMLHandler.class);
- private Styles stylesTable;
- private Comments comments;
- private SharedStrings sharedStringsTable;
- private final XSSFSheetXMLHandler.SheetContentsHandler
sheetContentsHandler;
- private boolean vIsOpen;
- private boolean fIsOpen;
- private boolean isIsOpen;
- private boolean hfIsOpen;
- private xssfDataType nextDataType;
- private short formatIndex;
- private String formatString;
- private final DataFormatter formatter;
- private int rowNum;
- private int nextRowNum;
- private String cellRef;
- private boolean formulasNotResults;
- private StringBuilder value;
- private StringBuilder formula;
- private StringBuilder headerFooter;
- private Queue<CellAddress> commentCellRefs;
-
- public TikaXSSFSheetXMLHandler(Styles styles, Comments comments,
SharedStrings strings,
- XSSFSheetXMLHandler.SheetContentsHandler
sheetContentsHandler,
- DataFormatter dataFormatter, boolean
formulasNotResults) {
- this.value = new StringBuilder(64);
- this.formula = new StringBuilder(64);
- this.headerFooter = new StringBuilder(64);
- this.stylesTable = styles;
- this.comments = comments;
- this.sharedStringsTable = strings;
- this.sheetContentsHandler = sheetContentsHandler;
- this.formulasNotResults = formulasNotResults;
- this.nextDataType = xssfDataType.NUMBER;
- this.formatter = dataFormatter;
- this.init(comments);
- }
-
- public TikaXSSFSheetXMLHandler(Styles styles, SharedStrings strings,
- XSSFSheetXMLHandler.SheetContentsHandler
sheetContentsHandler,
- DataFormatter dataFormatter, boolean
formulasNotResults) {
- this(styles, (Comments) null, strings, sheetContentsHandler,
dataFormatter,
- formulasNotResults);
- }
-
- public TikaXSSFSheetXMLHandler(Styles styles, SharedStrings strings,
- XSSFSheetXMLHandler.SheetContentsHandler
sheetContentsHandler,
- boolean formulasNotResults) {
- this(styles, strings, sheetContentsHandler, new DataFormatter(),
formulasNotResults);
- }
-
- private void init(Comments commentsTable) {
- if (commentsTable != null) {
- this.commentCellRefs = new LinkedList();
- Iterator<CellAddress> iter = commentsTable.getCellAddresses();
-
- while (iter.hasNext()) {
- this.commentCellRefs.add(iter.next());
- }
- }
- }
-
- private boolean isTextTag(String name) {
- if ("v".equals(name)) {
- return true;
- } else if ("inlineStr".equals(name)) {
- return true;
- } else {
- return "t".equals(name) && this.isIsOpen;
- }
- }
-
- public void startElement(String uri, String localName, String qName,
Attributes attributes)
- throws SAXException {
- if (uri == null ||
-
uri.equals("http://schemas.openxmlformats.org/spreadsheetml/2006/main")) {
- if (this.isTextTag(localName)) {
- this.vIsOpen = true;
- if (!this.isIsOpen) {
- this.value.setLength(0);
- }
- } else if ("is".equals(localName)) {
- this.isIsOpen = true;
- } else {
- String cellType;
- String cellStyleStr;
- if ("f".equals(localName)) {
- this.formula.setLength(0);
- if (this.nextDataType == xssfDataType.NUMBER) {
- this.nextDataType = xssfDataType.FORMULA;
- }
-
- cellType = attributes.getValue("t");
- if (cellType != null && cellType.equals("shared")) {
- cellStyleStr = attributes.getValue("ref");
- String si = attributes.getValue("si");
- if (cellStyleStr != null) {
- this.fIsOpen = true;
- } else if (this.formulasNotResults) {
- LOG.atWarn().log("shared formulas not yet
supported!");
- }
- } else {
- this.fIsOpen = true;
- }
- } else if (!"oddHeader".equals(localName) &&
!"evenHeader".equals(localName) &&
- !"firstHeader".equals(localName) &&
!"firstFooter".equals(localName) &&
- !"oddFooter".equals(localName) &&
!"evenFooter".equals(localName)) {
- if ("row".equals(localName)) {
- cellType = attributes.getValue("r");
- if (cellType != null) {
- this.rowNum = Integer.parseInt(cellType) - 1;
- } else {
- this.rowNum = this.nextRowNum;
- }
-
- this.sheetContentsHandler.startRow(this.rowNum);
- } else if ("c".equals(localName)) {
- this.nextDataType = xssfDataType.NUMBER;
- this.formatIndex = -1;
- this.formatString = null;
- this.cellRef = attributes.getValue("r");
- cellType = attributes.getValue("t");
- cellStyleStr = attributes.getValue("s");
- if ("b".equals(cellType)) {
- this.nextDataType = xssfDataType.BOOLEAN;
- } else if ("e".equals(cellType)) {
- this.nextDataType = xssfDataType.ERROR;
- } else if ("inlineStr".equals(cellType)) {
- this.nextDataType = xssfDataType.INLINE_STRING;
- } else if ("s".equals(cellType)) {
- this.nextDataType = xssfDataType.SST_STRING;
- } else if ("str".equals(cellType)) {
- this.nextDataType = xssfDataType.FORMULA;
- } else {
- XSSFCellStyle style = null;
- if (this.stylesTable != null) {
- if (cellStyleStr != null) {
- int styleIndex =
Integer.parseInt(cellStyleStr);
- style =
this.stylesTable.getStyleAt(styleIndex);
- } else if (this.stylesTable.getNumCellStyles()
> 0) {
- style = this.stylesTable.getStyleAt(0);
- }
- }
-
- if (style != null) {
- this.formatIndex = style.getDataFormat();
- this.formatString =
style.getDataFormatString();
- if (this.formatString == null) {
- this.formatString =
-
BuiltinFormats.getBuiltinFormat(this.formatIndex);
- }
- }
- }
- }
- } else {
- this.hfIsOpen = true;
- this.headerFooter.setLength(0);
- }
- }
-
- }
- }
-
- public void endElement(String uri, String localName, String qName) throws
SAXException {
- if (uri == null ||
-
uri.equals("http://schemas.openxmlformats.org/spreadsheetml/2006/main")) {
- if (this.isTextTag(localName)) {
- this.vIsOpen = false;
- if (!this.isIsOpen) {
- this.outputCell();
- }
- } else if ("f".equals(localName)) {
- this.fIsOpen = false;
- } else if ("is".equals(localName)) {
- this.isIsOpen = false;
- this.outputCell();
- this.value.setLength(0);
- } else if ("row".equals(localName)) {
-
this.checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_ROW);
- this.sheetContentsHandler.endRow(this.rowNum);
- this.nextRowNum = this.rowNum + 1;
- } else if ("sheetData".equals(localName)) {
-
this.checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_SHEET_DATA);
- this.sheetContentsHandler.endSheet();
- } else if (!"oddHeader".equals(localName) &&
!"evenHeader".equals(localName) &&
- !"firstHeader".equals(localName)) {
- if ("oddFooter".equals(localName) ||
"evenFooter".equals(localName) ||
- "firstFooter".equals(localName)) {
- this.hfIsOpen = false;
-
this.sheetContentsHandler.headerFooter(this.headerFooter.toString(), false,
- localName);
- }
- } else {
- this.hfIsOpen = false;
-
this.sheetContentsHandler.headerFooter(this.headerFooter.toString(), true,
- localName);
- }
-
- }
- }
-
- public void characters(char[] ch, int start, int length) throws
SAXException {
- if (this.vIsOpen) {
- this.value.append(ch, start, length);
- }
-
- if (this.fIsOpen) {
- this.formula.append(ch, start, length);
- }
-
- if (this.hfIsOpen) {
- this.headerFooter.append(ch, start, length);
- }
-
- }
-
- private void outputCell() {
- String thisStr = null;
- switch (this.nextDataType) {
- case BOOLEAN:
- char first = this.value.charAt(0);
- thisStr = first == '0' ? "FALSE" : "TRUE";
- break;
- case ERROR:
- thisStr = "ERROR:" + this.value;
- break;
- case FORMULA:
- if (this.formulasNotResults) {
- thisStr = this.formula.toString();
- } else {
- String fv = this.value.toString();
- if (this.formatString != null) {
- try {
- double d = Double.parseDouble(fv);
- thisStr = this.formatter.formatRawCellContents(d,
this.formatIndex,
- this.formatString);
- } catch (NumberFormatException var8) {
- thisStr = fv;
- }
- } else {
- thisStr = fv;
- }
- }
- break;
- case INLINE_STRING:
- XSSFRichTextString rtsi = new
XSSFRichTextString(this.value.toString());
- thisStr = rtsi.toString();
- break;
- case SST_STRING:
- String sstIndex = this.value.toString();
-
- try {
- int idx = Integer.parseInt(sstIndex);
- RichTextString rtss =
this.sharedStringsTable.getItemAt(idx);
- thisStr = rtss.toString();
- } catch (NumberFormatException var7) {
- LOG.atError().withThrowable(var7)
- .log("Failed to parse SST index '{}'", sstIndex);
- }
- break;
- case NUMBER:
- String n = this.value.toString();
- if (this.formatString != null && n.length() > 0) {
- thisStr =
this.formatter.formatRawCellContents(Double.parseDouble(n),
- this.formatIndex, this.formatString);
- } else {
- thisStr = n;
- }
- break;
- default:
- thisStr = "(TODO: Unexpected type: " + this.nextDataType + ")";
- }
-
- this.checkForEmptyCellComments(EmptyCellCommentsCheckType.CELL);
- XSSFComment comment = this.comments != null ?
- this.comments.findCellComment(new CellAddress(this.cellRef)) :
null;
- this.sheetContentsHandler.cell(this.cellRef, thisStr, comment);
- this.value.setLength(0);
- }
-
- private void checkForEmptyCellComments(EmptyCellCommentsCheckType type) {
- if (this.commentCellRefs != null && !this.commentCellRefs.isEmpty()) {
- if (type == EmptyCellCommentsCheckType.END_OF_SHEET_DATA) {
- while (!this.commentCellRefs.isEmpty()) {
- this.outputEmptyCellComment((CellAddress)
this.commentCellRefs.remove());
- }
-
- return;
- }
-
- if (this.cellRef == null) {
- if (type == EmptyCellCommentsCheckType.END_OF_ROW) {
- while (!this.commentCellRefs.isEmpty()) {
- if (((CellAddress)
this.commentCellRefs.peek()).getRow() != this.rowNum) {
- return;
- }
-
- this.outputEmptyCellComment((CellAddress)
this.commentCellRefs.remove());
- }
-
- return;
- }
-
- throw new IllegalStateException(
- "Cell ref should be null only if there are only empty
cells in the row; rowNum: " +
- this.rowNum);
- }
-
- CellAddress nextCommentCellRef;
- do {
- CellAddress cellRef = new CellAddress(this.cellRef);
- CellAddress peekCellRef = (CellAddress)
this.commentCellRefs.peek();
- if (type == EmptyCellCommentsCheckType.CELL &&
cellRef.equals(peekCellRef)) {
- this.commentCellRefs.remove();
- return;
- }
-
- int comparison = peekCellRef.compareTo(cellRef);
- if (comparison > 0 && type ==
EmptyCellCommentsCheckType.END_OF_ROW &&
- peekCellRef.getRow() <= this.rowNum) {
- nextCommentCellRef = (CellAddress)
this.commentCellRefs.remove();
- this.outputEmptyCellComment(nextCommentCellRef);
- } else if (comparison < 0 && type ==
EmptyCellCommentsCheckType.CELL &&
- peekCellRef.getRow() <= this.rowNum) {
- nextCommentCellRef = (CellAddress)
this.commentCellRefs.remove();
- this.outputEmptyCellComment(nextCommentCellRef);
- } else {
- nextCommentCellRef = null;
- }
- } while (nextCommentCellRef != null &&
!this.commentCellRefs.isEmpty());
- }
-
- }
-
- private void outputEmptyCellComment(CellAddress cellRef) {
- XSSFComment comment = this.comments.findCellComment(cellRef);
- this.sheetContentsHandler.cell(cellRef.formatAsString(), (String)
null, comment);
- }
-
- public interface SheetContentsHandler {
- void startRow(int var1);
-
- void endRow(int var1);
-
- void cell(String var1, String var2, XSSFComment var3);
-
- default void headerFooter(String text, boolean isHeader, String
tagName) {
- }
-
- default void endSheet() {
- }
- }
-
- private static enum EmptyCellCommentsCheckType {
- CELL, END_OF_ROW, END_OF_SHEET_DATA;
-
- private EmptyCellCommentsCheckType() {
- }
- }
-
- static enum xssfDataType {
- BOOLEAN, ERROR, FORMULA, INLINE_STRING, SST_STRING, NUMBER;
-
- private xssfDataType() {
- }
- }
-}
-
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
index 8501307..3fd96f7 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSLFPowerPointExtractorDecorator.java
@@ -31,7 +31,7 @@ import
org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
import org.apache.poi.openxml4j.opc.TargetMode;
import org.apache.poi.sl.usermodel.Placeholder;
-import org.apache.poi.xslf.extractor.XSLFExtractor;
+import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFComment;
import org.apache.poi.xslf.usermodel.XSLFCommentAuthors;
@@ -74,14 +74,14 @@ public class XSLFPowerPointExtractorDecorator extends
AbstractOOXMLExtractor {
private Metadata metadata;
public XSLFPowerPointExtractorDecorator(Metadata metadata, ParseContext
context,
- XSLFExtractor extractor) {
+ XSLFPowerPointExtractor extractor)
{
super(context, extractor);
this.metadata = metadata;
}
/**
- * @see org.apache.poi.xslf.extractor.XSLFExtractor#getText()
+ * @see org.apache.poi.xslf.extractor.XSLFPowerPointExtractor#getText()
*/
protected void buildXHTML(XHTMLContentHandler xhtml) throws SAXException,
IOException {
XMLSlideShow slideShow = (XMLSlideShow) extractor.getDocument();
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
index d06c6fe..c2fd0ab 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/XSSFExcelExtractorDecorator.java
@@ -43,6 +43,7 @@ import org.apache.poi.ss.usermodel.HeaderFooter;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.eventusermodel.ReadOnlySharedStringsTable;
import org.apache.poi.xssf.eventusermodel.XSSFReader;
+import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler;
import
org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler.SheetContentsHandler;
import org.apache.poi.xssf.extractor.XSSFEventBasedExcelExtractor;
import org.apache.poi.xssf.model.Comments;
@@ -349,7 +350,7 @@ public class XSSFExcelExtractorDecorator extends
AbstractOOXMLExtractor {
try {
XSSFSheetInterestingPartsCapturer handler = new
XSSFSheetInterestingPartsCapturer(
- new TikaXSSFSheetXMLHandler(styles, comments, strings,
sheetContentsHandler,
+ new XSSFSheetXMLHandler(styles, comments, strings,
sheetContentsHandler,
formatter, false));
XMLReaderUtils.parseSAX(sheetInputStream, handler, parseContext);
sheetInputStream.close();
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSTextExtractor.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSTextExtractor.java
index 297290b..737f8fb 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSTextExtractor.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xps/XPSTextExtractor.java
@@ -18,7 +18,6 @@
package org.apache.tika.parser.microsoft.ooxml.xps;
-import java.io.Closeable;
import java.io.IOException;
import org.apache.poi.ooxml.POIXMLDocument;
@@ -33,15 +32,15 @@ import org.apache.xmlbeans.XmlException;
* and keep the general framework similar to our other POI-integrated
* extractors.
*/
-public class XPSTextExtractor implements POIXMLTextExtractor {
+public class XPSTextExtractor extends POIXMLTextExtractor {
private final OPCPackage pkg;
private final POIXMLProperties properties;
public XPSTextExtractor(OPCPackage pkg) throws OpenXML4JException,
XmlException, IOException {
+ super((POIXMLDocument)null);
this.pkg = pkg;
this.properties = new POIXMLProperties(pkg);
-
}
@Override
@@ -54,20 +53,6 @@ public class XPSTextExtractor implements POIXMLTextExtractor
{
return null;
}
- @Override
- public void setCloseFilesystem(boolean b) {
-
- }
-
- @Override
- public boolean isCloseFilesystem() {
- return false;
- }
-
- @Override
- public Closeable getFilesystem() {
- return null;
- }
public POIXMLProperties.CoreProperties getCoreProperties() {
return this.properties.getCoreProperties();
@@ -81,8 +66,4 @@ public class XPSTextExtractor implements POIXMLTextExtractor {
return this.properties.getCustomProperties();
}
- @Override
- public POIXMLDocument getDocument() {
- return null;
- }
}
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xslf/XSLFEventBasedPowerPointExtractor.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xslf/XSLFEventBasedPowerPointExtractor.java
index 46ada51..ba413cc 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xslf/XSLFEventBasedPowerPointExtractor.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xslf/XSLFEventBasedPowerPointExtractor.java
@@ -17,7 +17,6 @@
package org.apache.tika.parser.microsoft.ooxml.xslf;
-import java.io.Closeable;
import java.io.IOException;
import java.util.Date;
@@ -32,7 +31,7 @@ import
org.apache.tika.parser.microsoft.ooxml.OOXMLWordAndPowerPointTextHandler;
import org.apache.tika.parser.microsoft.ooxml.ParagraphProperties;
import org.apache.tika.parser.microsoft.ooxml.RunProperties;
-public class XSLFEventBasedPowerPointExtractor implements POIXMLTextExtractor {
+public class XSLFEventBasedPowerPointExtractor extends POIXMLTextExtractor {
private OPCPackage container;
@@ -40,6 +39,7 @@ public class XSLFEventBasedPowerPointExtractor implements
POIXMLTextExtractor {
public XSLFEventBasedPowerPointExtractor(OPCPackage container)
throws XmlException, OpenXML4JException, IOException {
+ super((POIXMLDocument) null);
this.container = container;
this.properties = new POIXMLProperties(container);
}
@@ -60,11 +60,6 @@ public class XSLFEventBasedPowerPointExtractor implements
POIXMLTextExtractor {
return this.properties.getCustomProperties();
}
- @Override
- public POIXMLDocument getDocument() {
- return null;
- }
-
@Override
public String getText() {
@@ -72,26 +67,6 @@ public class XSLFEventBasedPowerPointExtractor implements
POIXMLTextExtractor {
return "";
}
- @Override
- public void setCloseFilesystem(boolean b) {
-
- }
-
- @Override
- public boolean isCloseFilesystem() {
- return false;
- }
-
- @Override
- public Closeable getFilesystem() {
- return null;
- }
-
- @Override
- public void close() throws IOException {
- getPackage().revert();
- }
-
private static class XSLFToTextContentHandler
implements
OOXMLWordAndPowerPointTextHandler.XWPFBodyContentsHandler {
private final StringBuilder buffer;
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xwpf/XWPFEventBasedWordExtractor.java
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xwpf/XWPFEventBasedWordExtractor.java
index ffc583c..74c94f5 100644
---
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xwpf/XWPFEventBasedWordExtractor.java
+++
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/xwpf/XWPFEventBasedWordExtractor.java
@@ -17,7 +17,6 @@
package org.apache.tika.parser.microsoft.ooxml.xwpf;
-import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
@@ -58,7 +57,7 @@ import org.apache.tika.parser.microsoft.ooxml.XWPFListManager;
/**
* Experimental class that is based on POI's XSSFEventBasedExcelExtractor
*/
-public class XWPFEventBasedWordExtractor implements POIXMLTextExtractor {
+public class XWPFEventBasedWordExtractor extends POIXMLTextExtractor {
private static final Logger LOG =
LoggerFactory.getLogger(XWPFEventBasedWordExtractor.class);
@@ -67,6 +66,7 @@ public class XWPFEventBasedWordExtractor implements
POIXMLTextExtractor {
public XWPFEventBasedWordExtractor(OPCPackage container)
throws XmlException, OpenXML4JException, IOException {
+ super((POIXMLDocument) null);
this.container = container;
this.properties = new POIXMLProperties(container);
}
@@ -88,12 +88,6 @@ public class XWPFEventBasedWordExtractor implements
POIXMLTextExtractor {
}
@Override
- public POIXMLDocument getDocument() {
- return null;
- }
-
-
- @Override
public String getText() {
StringBuilder sb = new StringBuilder();
//handle main document
@@ -138,22 +132,6 @@ public class XWPFEventBasedWordExtractor implements
POIXMLTextExtractor {
return sb.toString();
}
- @Override
- public void setCloseFilesystem(boolean b) {
-
- }
-
- @Override
- public boolean isCloseFilesystem() {
- return false;
- }
-
- @Override
- public Closeable getFilesystem() {
- return null;
- }
-
-
private void handleDocumentPart(PackagePart documentPart, StringBuilder sb)
throws IOException, SAXException {
//load the numbering/list manager and styles from the main document
part