This is an automated email from the ASF dual-hosted git repository. tballison pushed a commit to branch TIKA-4848-parsers in repository https://gitbox.apache.org/repos/asf/tika.git
commit 369060bf399426a8f4fbb532bdb9d7e8981e5fac Author: tallison <[email protected]> AuthorDate: Thu Aug 27 17:13:53 2026 -0400 TIKA-4848 - parsers --- .../org/apache/tika/parser/dwg/DWGReadParser.java | 5 +-- .../org/apache/tika/parser/crypto/TSDParser.java | 4 +- .../org/apache/tika/parser/html/HtmlHandler.java | 4 +- .../java/org/apache/tika/parser/image/HeifXmp.java | 2 +- .../org/apache/tika/parser/image/ImageXmp.java | 8 ++-- .../apache/tika/parser/image/RawTiffParser.java | 2 +- .../parser/microsoft/AbstractPOIFSExtractor.java | 8 ++-- .../tika/parser/microsoft/HSLFExtractor.java | 18 ++++---- .../tika/parser/microsoft/JackcessExtractor.java | 8 ++-- .../apache/tika/parser/microsoft/OfficeParser.java | 2 +- .../microsoft/onenote/OneNoteTreeWalker.java | 2 +- .../onenote/fsshttpb/MSOneStorePackage.java | 2 +- .../microsoft/ooxml/AbstractOOXMLExtractor.java | 22 ++++------ .../ooxml/SXSLFPowerPointExtractorDecorator.java | 48 ++++++++-------------- .../ooxml/SXWPFWordExtractorDecorator.java | 27 ++++-------- .../ooxml/XSSFExcelExtractorDecorator.java | 26 ++++-------- .../microsoft/ooxml/xps/XPSExtractorDecorator.java | 2 +- .../parser/microsoft/pst/PSTMailItemParser.java | 4 +- .../parser/microsoft/rtf/RTFEmbObjHandler.java | 8 ++-- .../parser/microsoft/rtf/RTFObjDataParser.java | 9 ++-- .../tika/parser/microsoft/rtf/RTFParser.java | 2 +- .../tika/parser/microsoft/rtf/TextExtractor.java | 11 +++-- .../microsoft/rtf/jflex/RTFEmbeddedHandler.java | 6 +-- .../tika/parser/microsoft/xml/WordMLParser.java | 2 +- .../org/apache/tika/parser/epub/EpubParser.java | 2 +- .../tika/parser/geogebra/GeoGebraParser.java | 10 ++--- .../apache/tika/parser/indesign/IDMLParser.java | 2 +- .../apache/tika/parser/pdf/AbstractPDF2XHTML.java | 16 ++++---- .../java/org/apache/tika/parser/pdf/PDFParser.java | 4 +- .../tika/parser/pdf/PDMetadataExtractor.java | 4 +- .../tika/parser/pdf/image/ImageGraphicsEngine.java | 4 +- .../tika/renderer/pdf/pdfbox/PDFBoxRenderer.java | 2 +- .../org/apache/tika/parser/pkg/PackageParser.java | 2 +- .../java/org/apache/tika/parser/pkg/ZipParser.java | 16 ++++---- .../tika/parser/markdown/MarkdownParser.java | 2 +- .../org/apache/tika/parser/warc/WARCParser.java | 4 +- 36 files changed, 133 insertions(+), 167 deletions(-) diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/dwg/DWGReadParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/dwg/DWGReadParser.java index 1c98d6ee7b..ec048699a1 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/dwg/DWGReadParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-cad-module/src/main/java/org/apache/tika/parser/dwg/DWGReadParser.java @@ -60,7 +60,6 @@ import org.apache.tika.mime.MediaType; import org.apache.tika.parser.ParseContext; import org.apache.tika.sax.EmbeddedContentHandler; import org.apache.tika.sax.XHTMLContentHandler; -import org.apache.tika.utils.ExceptionUtils; import org.apache.tika.utils.FileProcessResult; import org.apache.tika.utils.ProcessUtils; @@ -189,9 +188,9 @@ public class DWGReadParser extends AbstractDWGParser { try { jParser = jfactory.createParser(tmpFileOut); } catch (JsonParseException e1) { - throw new TikaException("Failed to parse Json: " + ExceptionUtils.getStackTrace(e1)); + throw new TikaException("Failed to parse Json", e1); } catch (IOException e1) { - throw new TikaException("Failed to read json file: " + ExceptionUtils.getStackTrace(e1)); + throw new TikaException("Failed to read json file", e1); } // read json token in a stream using jackson, iterate over each token. We only // support OBJECTS, FILEHEADER and SummaryInfo diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java index 7074248947..5cd59c7176 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/main/java/org/apache/tika/parser/crypto/TSDParser.java @@ -67,6 +67,7 @@ import org.apache.tika.mime.MediaType; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.XHTMLContentHandler; +import org.apache.tika.utils.ExceptionUtils; /** * Tika parser for Time Stamped Data Envelope (application/timestamped-data) @@ -189,8 +190,7 @@ public class TSDParser implements Parser { } } catch (IOException e) { // Truncated file - record exception and work with what we got - metadata.set(TikaCoreProperties.EMBEDDED_EXCEPTION, - e.getClass().getName() + ": " + e.getMessage()); + metadata.set(TikaCoreProperties.EMBEDDED_EXCEPTION, ExceptionUtils.format(e, context)); LOG.debug("Error reading TSD content (possibly truncated)", e); } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-html-module/src/main/java/org/apache/tika/parser/html/HtmlHandler.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-html-module/src/main/java/org/apache/tika/parser/html/HtmlHandler.java index 5fa33a5d59..759ea69984 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-html-module/src/main/java/org/apache/tika/parser/html/HtmlHandler.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-html-module/src/main/java/org/apache/tika/parser/html/HtmlHandler.java @@ -349,7 +349,7 @@ class HtmlHandler extends TextContentHandler { try (TikaInputStream tis = TikaInputStream.get(string.getBytes(StandardCharsets.UTF_8))) { embeddedDocumentExtractor.parseEmbedded(tis, xhtml, m, context, true); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } } } @@ -376,7 +376,7 @@ class HtmlHandler extends TextContentHandler { try (TikaInputStream tis = TikaInputStream.get(dataURIScheme.getInputStream())) { embeddedDocumentExtractor.parseEmbedded(tis, xhtml, m, context, true); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/HeifXmp.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/HeifXmp.java index 3461b41265..a2bf1b2f86 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/HeifXmp.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/HeifXmp.java @@ -68,7 +68,7 @@ final class HeifXmp { } catch (SecurityException e) { throw e; } catch (IOException | SAXException | TikaException | RuntimeException e) { - EmbeddedDocumentUtil.recordException(e, metadata); // bad XMP must not fail the parse + EmbeddedDocumentUtil.recordException(e, metadata, context); // bad XMP must not fail the parse } return true; } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageXmp.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageXmp.java index 8f540148de..c624f89a94 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageXmp.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/ImageXmp.java @@ -64,7 +64,7 @@ final class ImageXmp { } catch (SecurityException e) { throw e; } catch (IOException | SAXException | TikaException | RuntimeException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } return false; } @@ -76,7 +76,7 @@ final class ImageXmp { } catch (SecurityException e) { throw e; } catch (IOException | SAXException | TikaException | RuntimeException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } @@ -100,7 +100,7 @@ final class ImageXmp { } catch (SecurityException e) { throw e; } catch (IOException | SAXException | TikaException | RuntimeException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } @@ -114,7 +114,7 @@ final class ImageXmp { } catch (SecurityException e) { throw e; } catch (IOException | SAXException | TikaException | RuntimeException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/RawTiffParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/RawTiffParser.java index a2176519a8..d4a3cb8d07 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/RawTiffParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-image-module/src/main/java/org/apache/tika/parser/image/RawTiffParser.java @@ -166,7 +166,7 @@ public class RawTiffParser extends TiffParser { } catch (TiffStructureException | IOException e) { //a file we cannot walk for previews should not fail the parse; //the TIFF metadata has already been extracted at this point - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); return; } if (previews.isEmpty()) { diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java index 3f6496e08d..28dbffa236 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java @@ -182,7 +182,7 @@ abstract class AbstractPOIFSExtractor { throw e; } catch (Exception e) { //if there's a stream error while detecting, give up - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); return; } handleEmbeddedResource(tis, metadata,null, dir.getName(), dir.getStorageClsid(), @@ -295,7 +295,7 @@ abstract class AbstractPOIFSExtractor { try { contentsEntry = (DocumentEntry) parentDir.getEntry(contentsEntryName); } catch (FileNotFoundException fnfe) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(fnfe, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(fnfe, parentMetadata, context); return; } @@ -306,7 +306,7 @@ abstract class AbstractPOIFSExtractor { } catch (SecurityException e) { throw e; } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); return; } try (TikaInputStream tis = TikaInputStream.get(inp)) { @@ -378,7 +378,7 @@ abstract class AbstractPOIFSExtractor { } catch (SecurityException e) { throw e; } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); return; } if (data == 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/HSLFExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java index dca24644dd..af7bf9cd14 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java @@ -268,7 +268,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { } } } catch (IOException | TikaException e) { - EmbeddedDocumentUtil.recordException(e, parentMetadata); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); } i++; } @@ -428,10 +428,10 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { OfficeParser.extractMacros(poifsFileSystem, xhtml, EmbeddedDocumentUtil.getEmbeddedDocumentExtractor(context), context); } catch (IOException | SAXException | TikaException inner) { - EmbeddedDocumentUtil.recordException(inner, parentMetadata); + EmbeddedDocumentUtil.recordException(inner, parentMetadata, context); } } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata);//swallow + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context);//swallow } } } @@ -586,7 +586,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { } catch (SecurityException e) { throw e; } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); continue; } try (TikaInputStream picIs = TikaInputStream.get(data)) { @@ -619,7 +619,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { pd = ((HSLFPictureShape) shape).getPictureData(); } catch (IndexOutOfBoundsException e) { // corrupt Escher BSE record -- skip page anchoring for this shape - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); continue; } if (pd != null) { @@ -648,7 +648,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { data = oleShape.getObjectData(); } catch (NullPointerException e) { /* getObjectData throws NPE some times. */ - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); continue; } @@ -668,7 +668,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { try { dataStream = data.getInputStream(); } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); continue; } handleDataStream(dataStream, objID, oleShape.getProgId(), xhtml); @@ -703,7 +703,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { } catch (SecurityException e) { throw e; } catch (Exception e) { - EmbeddedDocumentUtil.recordException(e, parentMetadata); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); } } @@ -714,7 +714,7 @@ public class HSLFExtractor extends AbstractPOIFSExtractor { } catch (NullPointerException e) { // Sometimes HSLF hits problems // Please open POI bugs for any you come across! - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); 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/JackcessExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/JackcessExtractor.java index ef284debe1..6063ec1450 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/JackcessExtractor.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/JackcessExtractor.java @@ -327,7 +327,7 @@ class JackcessExtractor extends AbstractPOIFSExtractor { try { tis = TikaInputStream.get(spc.getStream()); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, parseContext); break; } if (tis != null) { @@ -347,7 +347,7 @@ class JackcessExtractor extends AbstractPOIFSExtractor { try { ocStream = TikaInputStream.get(oc.getStream()); } catch (IOException e) { - EmbeddedDocumentUtil.recordException(e, parentMetadata); + EmbeddedDocumentUtil.recordException(e, parentMetadata, parseContext); } try { handleEmbeddedResource(ocStream, null,//filename @@ -373,14 +373,14 @@ class JackcessExtractor extends AbstractPOIFSExtractor { try { is = cc.getStream(); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, parseContext); return; } try { fileSystem = new POIFSFileSystem(is); } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, parseContext); return; } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java index efa9c61ffb..a88bf609a4 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/OfficeParser.java @@ -128,7 +128,7 @@ public class OfficeParser extends AbstractOfficeParser { m.set(TikaCoreProperties.EMBEDDED_RESOURCE_TYPE, TikaCoreProperties.EmbeddedResourceType.MACRO.toString()); m.set(HttpHeaders.CONTENT_TYPE, "text/x-vbasic"); - EmbeddedDocumentUtil.recordException(e, m); + EmbeddedDocumentUtil.recordException(e, m, context); if (embeddedDocumentExtractor.shouldParseEmbedded(m, context)) { embeddedDocumentExtractor.parseEmbedded( //pass in space character so that we don't trigger a zero-byte exception diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteTreeWalker.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteTreeWalker.java index 943520e37f..a4c3902c0c 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteTreeWalker.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteTreeWalker.java @@ -429,7 +429,7 @@ class OneNoteTreeWalker { dif.read(buf); } catch (IOException e) { //store this exception in the parent's metadata - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, parseContext); return; } Metadata embeddedMetadata = Metadata.newInstance(this.parseContext); diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/fsshttpb/MSOneStorePackage.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/fsshttpb/MSOneStorePackage.java index 0ad1d277dd..ca1a724ee1 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/fsshttpb/MSOneStorePackage.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/fsshttpb/MSOneStorePackage.java @@ -1007,7 +1007,7 @@ public class MSOneStorePackage { embeddedMetadata, this.parseContext, false); } } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, parseContext); } } 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/AbstractOOXMLExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java index fd3202bb07..6c16bca535 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/AbstractOOXMLExtractor.java @@ -240,7 +240,7 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor { WriteLimitReachedException.throwIfWriteLimitReached(ex); //swallow otherwise metadata.add(TikaCoreProperties.EMBEDDED_EXCEPTION, - ExceptionUtils.getStackTrace(ex)); + ExceptionUtils.format(ex, context)); } } @@ -265,7 +265,7 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor { } catch (SAXException | SecurityException e) { throw e; } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } } } @@ -378,7 +378,7 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor { try { fs = new POIFSFileSystem(part.getInputStream()); } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); return; } TikaInputStream tis = null; @@ -438,7 +438,7 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor { } catch (Ole10NativeException e) { // Could not process an OLE 1.0 entry, so skip this part } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); } finally { fs.close(); if (tis != null) { @@ -641,7 +641,7 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor { } } catch (InvalidFormatException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } return linkedRelationships; } @@ -685,8 +685,7 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor { try { relatedPartPRC = parentPart.getRelationshipsByType(contentType); } catch (InvalidFormatException e) { - parentMetadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); } if (relatedPartPRC != null && relatedPartPRC.size() > 0) { AttributesImpl attributes = new AttributesImpl(); @@ -715,17 +714,14 @@ public abstract class AbstractOOXMLExtractor implements OOXMLExtractor { } catch (IOException | TikaException e) { balancer.drainOpenElements(); - parentMetadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); } catch (SAXException e) { balancer.drainOpenElements(); WriteLimitReachedException.throwIfWriteLimitReached(e); - parentMetadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); } } catch (InvalidFormatException e) { - parentMetadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); } } contentHandler.endElement("", "div", "div"); 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 9ffda5fd03..6eed018678 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 @@ -39,15 +39,14 @@ import org.xml.sax.SAXException; import org.apache.tika.exception.TikaException; import org.apache.tika.exception.WriteLimitReachedException; +import org.apache.tika.extractor.EmbeddedDocumentUtil; import org.apache.tika.metadata.Metadata; import org.apache.tika.metadata.Office; import org.apache.tika.metadata.PageAnchoring; -import org.apache.tika.metadata.TikaCoreProperties; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.microsoft.ooxml.xslf.XSLFEventBasedPowerPointExtractor; import org.apache.tika.sax.EmbeddedContentHandler; import org.apache.tika.sax.XHTMLContentHandler; -import org.apache.tika.utils.ExceptionUtils; import org.apache.tika.utils.XMLReaderUtils; /** @@ -112,8 +111,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { slidesPRC = mainDocument.getRelationshipsByType(XSLFRelation.SLIDE.getRelation()); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } int hiddenSlideCount = 0; @@ -127,8 +125,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { } hiddenSlideCount += handleSlidePart(slidePart, xhtml); } catch (InvalidFormatException | ZipException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } } @@ -155,8 +152,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { prc = mainDocument.getRelationshipsByType(XSLFRelation.COMMENT_AUTHORS.getRelation()); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (prc == null || prc.size() == 0) { return; @@ -167,8 +163,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { commentAuthorsPart = safeGetRelatedPart(mainDocument, prc.getRelationship(i)); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (commentAuthorsPart == null) { continue; @@ -178,8 +173,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { new XSLFCommentAuthorHandler(commentAuthors), context); } catch (TikaException | SAXException | IOException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } @@ -222,12 +216,10 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { // </div> below so subsequent slides -- and the outer </body> -- // land in a balanced spot. WriteLimitReachedException.throwIfWriteLimitReached(e); - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); bodyHandler.closeAnyPending(); } catch (TikaException | IOException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); bodyHandler.closeAnyPending(); } @@ -279,8 +271,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { slidePRC = mainDocument.getRelationshipsByType(XSLFRelation.SLIDE.getRelation()); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (slidePRC != null) { @@ -289,8 +280,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { slidePart = safeGetRelatedPart(mainDocument, slidePRC.getRelationship(i)); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } recordPicturePageRefs(slidePart, i + 1); addSlideParts(slidePart, parts); @@ -304,8 +294,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { prc = mainDocument.getRelationshipsByType(rel); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (prc != null) { for (int i = 0; i < prc.size(); i++) { @@ -313,8 +302,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { pp = safeGetRelatedPart(mainDocument, prc.getRelationship(i)); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (pp != null) { parts.add(pp); @@ -346,8 +334,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { prc = slidePart.getRelationshipsByType(PackageRelationshipTypes.IMAGE_PART); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); return; } if (prc == null) { @@ -361,8 +348,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { imagePart = slidePart.getRelatedPart(rel); } catch (InvalidFormatException | IllegalArgumentException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); continue; } if (imagePart == null) { @@ -394,8 +380,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { try { prc = slidePart.getRelationshipsByType(relation); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (prc != null) { for (PackageRelationship packageRelationship : prc) { @@ -405,8 +390,7 @@ public class SXSLFPowerPointExtractorDecorator extends AbstractOOXMLExtractor { relName = PackagingURIHelper .createPartName(packageRelationship.getTargetURI()); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (relName != null) { parts.add(packageRelationship.getPackage().getPart(relName)); 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/SXWPFWordExtractorDecorator.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/SXWPFWordExtractorDecorator.java index 9da2352c19..5d1c7f122b 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/SXWPFWordExtractorDecorator.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/ooxml/SXWPFWordExtractorDecorator.java @@ -39,10 +39,10 @@ import org.xml.sax.helpers.DefaultHandler; import org.apache.tika.exception.TikaException; import org.apache.tika.exception.WriteLimitReachedException; +import org.apache.tika.extractor.EmbeddedDocumentUtil; import org.apache.tika.io.TikaInputStream; import org.apache.tika.metadata.Metadata; import org.apache.tika.metadata.Office; -import org.apache.tika.metadata.TikaCoreProperties; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.microsoft.EMFParser; import org.apache.tika.parser.microsoft.OfficeParserConfig; @@ -52,7 +52,6 @@ import org.apache.tika.parser.microsoft.ooxml.xwpf.XWPFNumberingShim; import org.apache.tika.parser.microsoft.ooxml.xwpf.XWPFStylesShim; import org.apache.tika.sax.EmbeddedContentHandler; import org.apache.tika.sax.XHTMLContentHandler; -import org.apache.tika.utils.ExceptionUtils; import org.apache.tika.utils.XMLReaderUtils; /** @@ -254,8 +253,7 @@ public class SXWPFWordExtractorDecorator extends AbstractOOXMLExtractor { } catch (SecurityException e) { throw e; } catch (Exception e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } if (config.isIncludeHeadersAndFooters()) { @@ -278,8 +276,7 @@ public class SXWPFWordExtractorDecorator extends AbstractOOXMLExtractor { } } } catch (InvalidFormatException | ZipException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } @@ -294,8 +291,7 @@ public class SXWPFWordExtractorDecorator extends AbstractOOXMLExtractor { handlePart(documentPart, styles, listManager, xhtml, inlinePartMap); emittedCommentIds = mainBodyHandler.getEmittedCommentIds(); } catch (ZipException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } //dump remaining components at end (diagrams, charts, footers) for (String rel : new String[]{AbstractOOXMLExtractor.RELATION_DIAGRAM_DATA, @@ -320,8 +316,7 @@ public class SXWPFWordExtractorDecorator extends AbstractOOXMLExtractor { } } } catch (InvalidFormatException | ZipException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } //dump any comments that were NOT inlined via commentReference @@ -353,8 +348,7 @@ public class SXWPFWordExtractorDecorator extends AbstractOOXMLExtractor { context); xhtml.endElement("div"); } catch (TikaException | IOException | SAXException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } } @@ -379,16 +373,14 @@ public class SXWPFWordExtractorDecorator extends AbstractOOXMLExtractor { config.isPreferAlternateContentChoice())), context); } catch (SAXException e) { WriteLimitReachedException.throwIfWriteLimitReached(e); - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); // The partial parse may have left <p>, <td>, <tr>, <table>, or // formatting tags open on the XHTML stream. Close them now so // subsequent parts -- and the outer </body></html> -- land in a // balanced spot. bodyHandler.closeAnyPending(); } catch (TikaException | IOException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); bodyHandler.closeAnyPending(); } Map<String, EmbeddedPartMetadata> partMetadata = bodyHandler.getEmbeddedPartMetadataMap(); @@ -480,8 +472,7 @@ public class SXWPFWordExtractorDecorator extends AbstractOOXMLExtractor { } return collector.getContentMap(); } catch (InvalidFormatException | IOException | TikaException | SAXException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, context); return Collections.emptyMap(); } } 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 111b94b578..14647d566e 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 @@ -54,6 +54,7 @@ import org.xml.sax.helpers.DefaultHandler; import org.apache.tika.exception.RuntimeSAXException; import org.apache.tika.exception.TikaException; import org.apache.tika.exception.WriteLimitReachedException; +import org.apache.tika.extractor.EmbeddedDocumentUtil; import org.apache.tika.metadata.Metadata; import org.apache.tika.metadata.Office; import org.apache.tika.metadata.PageAnchoring; @@ -62,7 +63,6 @@ import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.microsoft.OfficeParserConfig; import org.apache.tika.parser.microsoft.TikaExcelDataFormatter; import org.apache.tika.sax.XHTMLContentHandler; -import org.apache.tika.utils.ExceptionUtils; import org.apache.tika.utils.StringUtils; import org.apache.tika.utils.XMLReaderUtils; @@ -174,15 +174,13 @@ public class XSSFExcelExtractorDecorator extends AbstractOOXMLExtractor { try { stylesShim = new XSSFStylesShim(xssfReader.getStylesData(), parseContext); } catch (Exception e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); } try { stringsShim = new XSSFSharedStringsShim(xssfReader.getSharedStringsData(), config.isConcatenatePhoneticRuns(), parseContext); } catch (Exception e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); } while (true) { try { @@ -190,8 +188,7 @@ public class XSSFExcelExtractorDecorator extends AbstractOOXMLExtractor { break; } } catch (RuntimeException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); break; } SheetTextAsHTML sheetExtractor = new SheetTextAsHTML(config, xhtml); @@ -204,8 +201,7 @@ public class XSSFExcelExtractorDecorator extends AbstractOOXMLExtractor { // truncated workbook references a sheet that isn't in the zip). // Break rather than continue — POI's iterator state may not have // advanced, which would cause an infinite loop. - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); break; } try (InputStream stream = nextStream) { @@ -233,8 +229,7 @@ public class XSSFExcelExtractorDecorator extends AbstractOOXMLExtractor { // Truncated/malformed sheet XML — keep prior sheets and // record the failure as a warning. WriteLimitReachedException.throwIfWriteLimitReached(e); - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); // Balance any <tr>/<td> left open by the partial parse so // the </tbody></table></div> emitted below land in the // right place. @@ -243,8 +238,7 @@ public class XSSFExcelExtractorDecorator extends AbstractOOXMLExtractor { // Truncated stream — same risk: partial <tr>/<td> still // open. Close them so the surrounding </tbody></table> // stays balanced, record the failure, and keep going. - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); sheetExtractor.closeAnyPending(); } try { @@ -1339,8 +1333,7 @@ public class XSSFExcelExtractorDecorator extends AbstractOOXMLExtractor { try { prc = drawingPart.getRelationshipsByType(PackageRelationshipTypes.IMAGE_PART); } catch (InvalidFormatException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); return; } if (prc == null) { @@ -1354,8 +1347,7 @@ public class XSSFExcelExtractorDecorator extends AbstractOOXMLExtractor { try { imagePart = drawingPart.getRelatedPart(rel); } catch (InvalidFormatException | IllegalArgumentException e) { - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_WARNING, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordException(e, metadata, parseContext); continue; } if (imagePart == 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/xps/XPSExtractorDecorator.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/XPSExtractorDecorator.java index 0dbf6f9322..308aa0cdd4 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/XPSExtractorDecorator.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/XPSExtractorDecorator.java @@ -130,7 +130,7 @@ public class XPSExtractorDecorator extends AbstractOOXMLExtractor { tis = getZipStream(zipPath, pkg); } catch (IOException | TikaException e) { //store this exception in the parent's metadata - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); return; } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/pst/PSTMailItemParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/pst/PSTMailItemParser.java index 816d25c82e..509000babb 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/pst/PSTMailItemParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/pst/PSTMailItemParser.java @@ -222,7 +222,7 @@ public class PSTMailItemParser implements Parser { PSTAttachment attachment = email.getAttachment(i); parseMailAttachment(xhtml, attachment, metadata, embeddedExtractor, context); } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } } } @@ -268,7 +268,7 @@ public class PSTMailItemParser implements Parser { try { tis = TikaInputStream.get(attachment.getFileInputStream()); } catch (NullPointerException e) { //TIKA-2488 - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); return; } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFEmbObjHandler.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFEmbObjHandler.java index 8e38f13aca..6ef392ec69 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFEmbObjHandler.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFEmbObjHandler.java @@ -186,12 +186,12 @@ class RTFEmbObjHandler { byte[] bytes = os.toByteArray(); if (state == EMB_STATE.OBJDATA) { - RTFObjDataParser objParser = new RTFObjDataParser(memoryLimitInKb); + RTFObjDataParser objParser = new RTFObjDataParser(memoryLimitInKb, context); try { byte[] objBytes = objParser.parse(bytes, metadata, unknownFilenameCount); extractObj(objBytes, handler, metadata); } catch (IOException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } else if (state == EMB_STATE.PICT) { String filePath = metadata.get(RTFMetadata.RTF_PICT_META_PREFIX + "wzDescription"); @@ -253,10 +253,10 @@ class RTFEmbObjHandler { context, true); } catch (IOException e) { balancer.drainOpenElements(); - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } catch (SAXException e) { balancer.drainOpenElements(); - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFObjDataParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFObjDataParser.java index 695ecfd3ba..737829be1d 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFObjDataParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFObjDataParser.java @@ -45,6 +45,7 @@ import org.apache.tika.metadata.HttpHeaders; import org.apache.tika.metadata.Metadata; import org.apache.tika.metadata.RTFMetadata; import org.apache.tika.metadata.TikaCoreProperties; +import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.microsoft.OfficeParser.POIFSDocumentType; /** @@ -56,9 +57,11 @@ class RTFObjDataParser { private final static String WIN_ASCII = "WINDOWS-1252"; private final int memoryLimitInKb; + private final ParseContext context; - RTFObjDataParser(int memoryLimitInKb) { + RTFObjDataParser(int memoryLimitInKb, ParseContext context) { this.memoryLimitInKb = memoryLimitInKb; + this.context = context; } /** @@ -123,14 +126,14 @@ class RTFObjDataParser { try { hasPoifs = hasPOIFSHeader(embIs); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); return embObjBytes; } if (hasPoifs) { try { return handleEmbeddedPOIFS(embIs, metadata, unknownFilenameCount); } catch (Exception e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFParser.java index 3d0274b998..bc52cc74e0 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/RTFParser.java @@ -132,7 +132,7 @@ public class RTFParser implements Parser { throws TikaException, IOException, SAXException { RTFEmbObjHandler embObjHandler = new RTFEmbObjHandler(handler, metadata, context, getMemoryLimitInKb()); - final TextExtractor ert = new TextExtractor(handler, metadata, embObjHandler); + final TextExtractor ert = new TextExtractor(handler, metadata, embObjHandler, context); ert.setIgnoreListMarkup(ignoreListMarkup); ert.extract(is); } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/TextExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/TextExtractor.java index 0e7252423e..9d8ac8c6d1 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/TextExtractor.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/TextExtractor.java @@ -51,6 +51,7 @@ import org.apache.tika.metadata.OfficeOpenXMLExtended; import org.apache.tika.metadata.Property; import org.apache.tika.metadata.RTFMetadata; import org.apache.tika.metadata.TikaCoreProperties; +import org.apache.tika.parser.ParseContext; import org.apache.tika.utils.CharsetUtils; /* Tokenizes and performs a "shallow" parse of the RTF @@ -338,10 +339,12 @@ final class TextExtractor { //this is an arbitrary limit on the size of the stack //to defend against DoS with memory consumption private int maxStackSize = 1000; + private final ParseContext context; public TextExtractor(ContentHandler out, Metadata metadata, - RTFEmbObjHandler embObjHandler) { + RTFEmbObjHandler embObjHandler, ParseContext context) { this.metadata = metadata; + this.context = context; this.out = out; this.embObjHandler = embObjHandler; } @@ -1033,7 +1036,7 @@ final class TextExtractor { try { embObjHandler.writeBytes(in, param); } catch (IOException | TikaException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); embObjHandler.reset(); } } else { @@ -1500,7 +1503,7 @@ final class TextExtractor { try { embObjHandler.handleCompletedObject(); } catch (TikaException | IOException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } catch (SecurityException e) { // Security-relevant exceptions must always propagate // immediately -- never swallow them as a warning. @@ -1510,7 +1513,7 @@ final class TextExtractor { // EmptyFileException; other malformed embedded payloads // can surface as a variety of runtime exceptions. Record // and continue rather than aborting the outer RTF parse. - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } groupState.objdata = false; } else if (groupState.pictDepth > 0) { diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/jflex/RTFEmbeddedHandler.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/jflex/RTFEmbeddedHandler.java index 6fee08d1d7..9889a4d245 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/jflex/RTFEmbeddedHandler.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/rtf/jflex/RTFEmbeddedHandler.java @@ -151,7 +151,7 @@ public class RTFEmbeddedHandler { extractObj(tis, metadata); } } catch (IOException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } finally { objParser.close(); objParser = null; @@ -180,7 +180,7 @@ public class RTFEmbeddedHandler { } } } catch (IOException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } finally { pictParser = null; reset(); @@ -227,7 +227,7 @@ public class RTFEmbeddedHandler { embeddedDocumentExtractor.parseEmbedded( tis, new EmbeddedContentHandler(handler), meta, context, true); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, meta); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, meta, context); } } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/xml/WordMLParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/xml/WordMLParser.java index c9da05b430..3aa274ebb7 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/xml/WordMLParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/xml/WordMLParser.java @@ -282,7 +282,7 @@ public class WordMLParser extends AbstractXML2003Parser { rawBytes = base64.decode(buffer.toString()); success = true; } catch (IllegalArgumentException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, parseContext); } finally { //reset buffer.setLength(0); diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/epub/EpubParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/epub/EpubParser.java index bc525b6aff..00c3e79c8b 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/epub/EpubParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/epub/EpubParser.java @@ -451,7 +451,7 @@ public class EpubParser implements Parser { tis = TikaInputStream.get(zipFile.getInputStream(ze)); } catch (IOException e) { //store this exception in the parent's metadata - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); return; } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/geogebra/GeoGebraParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/geogebra/GeoGebraParser.java index 087ef04cd8..7db66ec776 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/geogebra/GeoGebraParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/geogebra/GeoGebraParser.java @@ -310,7 +310,7 @@ public class GeoGebraParser implements Parser { } if (!zipFile.canReadEntryData(entry)) { EmbeddedDocumentUtil.recordEmbeddedStreamException( - new IOException("Unsupported zip entry: " + entry.getName()), metadata); + new IOException("Unsupported zip entry: " + entry.getName()), metadata, context); return; } try (InputStream is = zipFile.getInputStream(entry)) { @@ -320,9 +320,9 @@ public class GeoGebraParser implements Parser { if (WriteLimitReachedException.isWriteLimitReached(e)) { throw e; } - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } catch (IOException | TikaException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } } @@ -398,7 +398,7 @@ public class GeoGebraParser implements Parser { throws IOException, SAXException { if (!zipFile.canReadEntryData(entry)) { EmbeddedDocumentUtil.recordEmbeddedStreamException( - new IOException("Unsupported zip entry: " + entry.getName()), parentMetadata); + new IOException("Unsupported zip entry: " + entry.getName()), parentMetadata, context); return; } Metadata embeddedMetadata = Metadata.newInstance(context); @@ -427,7 +427,7 @@ public class GeoGebraParser implements Parser { embeddedMetadata, context, false); } } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); } } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/indesign/IDMLParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/indesign/IDMLParser.java index bd04f007a8..cbd9cdffbb 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/indesign/IDMLParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-miscoffice-module/src/main/java/org/apache/tika/parser/indesign/IDMLParser.java @@ -174,7 +174,7 @@ public class IDMLParser implements Parser { } catch (SecurityException e) { throw e; } catch (IOException | SAXException | TikaException | RuntimeException e) { - EmbeddedDocumentUtil.recordException(e, metadata); // malformed XMP must not fail the IDML + EmbeddedDocumentUtil.recordException(e, metadata, context); // malformed XMP must not fail the IDML } } else if (entry.getName().contains("MasterSpreads")) { Metadata embeddedMeta = Metadata.newInstance(context); diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java index 4e8a40972a..3dfcc56870 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/AbstractPDF2XHTML.java @@ -133,7 +133,6 @@ import org.apache.tika.renderer.pdf.pdfbox.VectorGraphicsOnlyPDFRenderer; import org.apache.tika.sax.BodyContentHandler; import org.apache.tika.sax.EmbeddedContentHandler; import org.apache.tika.sax.XHTMLContentHandler; -import org.apache.tika.utils.ExceptionUtils; import org.apache.tika.utils.StringUtils; class AbstractPDF2XHTML extends PDFTextStripper { @@ -288,7 +287,7 @@ class AbstractPDF2XHTML extends PDFTextStripper { pdfDocument.getDocumentCatalog().getMetadata().exportXMPMetadata())) { extractXMPAsEmbeddedFile(tis, XMP_DOCUMENT_CATALOG_LOCATION); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); } } //now iterate through the pages @@ -298,7 +297,7 @@ class AbstractPDF2XHTML extends PDFTextStripper { try (TikaInputStream tis = TikaInputStream.get(page.getMetadata().exportXMPMetadata())) { extractXMPAsEmbeddedFile(tis, XMP_PAGE_LOCATION_PREFIX + pageNumber); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); } } pageNumber++; @@ -319,7 +318,7 @@ class AbstractPDF2XHTML extends PDFTextStripper { try { bytes = pdfDocument.getDocumentCatalog().getAcroForm(null).getXFA().getBytes(); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); } if (bytes != null) { try (TikaInputStream tis = TikaInputStream.get(bytes)) { @@ -508,7 +507,7 @@ class AbstractPDF2XHTML extends PDFTextStripper { tis = TikaInputStream.get(pdEmbeddedFile.createInputStream()); } catch (IOException e) { //store this exception in the parent's metadata - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); return; } @@ -768,8 +767,7 @@ class AbstractPDF2XHTML extends PDFTextStripper { //image rendering can throw a variety of runtime exceptions, not just // IOExceptions... //need to have a wide catch - metadata.add(TikaCoreProperties.TIKA_META_EXCEPTION_EMBEDDED_STREAM, - ExceptionUtils.getStackTrace(e)); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); return new RenderResult(RenderResult.STATUS.EXCEPTION, id, null, pageMetadata); } @@ -1356,7 +1354,7 @@ class AbstractPDF2XHTML extends PDFTextStripper { is = new BufferedInputStream( UnsynchronizedByteArrayInputStream.builder().setByteArray(pdxfa.getBytes()).get()); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } if (is != null) { try { @@ -1364,7 +1362,7 @@ class AbstractPDF2XHTML extends PDFTextStripper { return; } catch (XMLStreamException e) { //if there was an xml parse exception in xfa, try the AcroForm - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } finally { IOUtils.closeQuietly(is); } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java index 9267506822..4ad0e95401 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFParser.java @@ -457,7 +457,7 @@ public class PDFParser implements Parser, RenderingParser { } catch (SecurityException e) { throw e; } catch (Exception e) { - EmbeddedDocumentUtil.recordException(e, parentMetadata); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); return; } context.get(PDFRenderingState.class).setRenderResults(renderResults); @@ -472,7 +472,7 @@ public class PDFParser implements Parser, RenderingParser { } catch (SecurityException e) { throw e; } catch (Exception e) { - EmbeddedDocumentUtil.recordException(e, parentMetadata); + EmbeddedDocumentUtil.recordException(e, parentMetadata, context); } } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDMetadataExtractor.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDMetadataExtractor.java index bf6b5d6e27..8b066452a9 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDMetadataExtractor.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDMetadataExtractor.java @@ -52,7 +52,7 @@ public class PDMetadataExtractor { try { is = pdMetadata.exportXMPMetadata(); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); return; } try { @@ -70,7 +70,7 @@ public class PDMetadataExtractor { } catch (SecurityException e) { throw e; } catch (IOException | SAXException | TikaException | RuntimeException e) { - EmbeddedDocumentUtil.recordException(e, metadata); // malformed XMP must not fail the PDF + EmbeddedDocumentUtil.recordException(e, metadata, context); // malformed XMP must not fail the PDF } derivePDFAVersion(metadata); } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/image/ImageGraphicsEngine.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/image/ImageGraphicsEngine.java index ec29ce72f4..0f6a7d26fc 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/image/ImageGraphicsEngine.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/image/ImageGraphicsEngine.java @@ -424,10 +424,10 @@ public class ImageGraphicsEngine extends PDFGraphicsStreamEngine { try { bufferedImage = writeToBuffer(pdImage, suffix, useDirectJPEG, buffer); } catch (MissingImageReaderException e) { - EmbeddedDocumentUtil.recordException(e, parentMetadata); + EmbeddedDocumentUtil.recordException(e, parentMetadata, parseContext); return; } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, parseContext); return; } try (TikaInputStream tis = TikaInputStream.get(buffer.toByteArray())) { diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java index 7a421d47d2..4307342458 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/renderer/pdf/pdfbox/PDFBoxRenderer.java @@ -162,7 +162,7 @@ public class PDFBoxRenderer implements PDDocumentRenderer { m.set(TikaPagedText.PAGE_ROTATION, (double)pdDocument.getPage(i - 1).getRotation()); results.add(renderPage(renderer, id, i, m, parseContext)); } catch (IOException e) { - EmbeddedDocumentUtil.recordException(e, m); + EmbeddedDocumentUtil.recordException(e, m, parseContext); results.add(new RenderResult(RenderResult.STATUS.EXCEPTION, id, null, m)); } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/PackageParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/PackageParser.java index be9b12f503..cba7fc9d22 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/PackageParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/PackageParser.java @@ -186,7 +186,7 @@ public class PackageParser extends AbstractArchiveParser { } else { EmbeddedDocumentUtil.recordEmbeddedStreamException( new TikaException("Can't read archive stream (" + name + ")"), - parentMetadata); + parentMetadata, context); if (name != null && !name.isEmpty()) { xhtml.element("p", name); } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/ZipParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/ZipParser.java index a9905abad6..5b369292ea 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/ZipParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pkg-module/src/main/java/org/apache/tika/parser/pkg/ZipParser.java @@ -471,7 +471,7 @@ public class ZipParser extends AbstractArchiveParser { String name = detectEntryName(entry, context, config); if (entry.getGeneralPurposeBit().usesEncryption()) { - handleEncryptedEntry(name, parentMetadata, xhtml); + handleEncryptedEntry(name, parentMetadata, xhtml, context); return; } @@ -483,7 +483,7 @@ public class ZipParser extends AbstractArchiveParser { if (!zipFile.canReadEntryData(entry)) { EmbeddedDocumentUtil.recordEmbeddedStreamException( new TikaException("Can't read archive stream (" + name + ")"), - parentMetadata); + parentMetadata, context); if (name != null && !name.isEmpty()) { xhtml.element("p", name); } @@ -502,7 +502,7 @@ public class ZipParser extends AbstractArchiveParser { () -> zipFile.getInputStream(entry), tmp, entryMetadata)) { extractor.parseEmbedded(tis, xhtml, entryMetadata, context, true); } catch (UnsupportedZipFeatureException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); } finally { tmp.dispose(); } @@ -519,14 +519,14 @@ public class ZipParser extends AbstractArchiveParser { if (!zis.canReadEntryData(entry)) { if (entry.getGeneralPurposeBit().usesEncryption()) { - handleEncryptedEntry(name, parentMetadata, xhtml); + handleEncryptedEntry(name, parentMetadata, xhtml, context); } else if (entry.getGeneralPurposeBit().usesDataDescriptor() && entry.getMethod() == java.util.zip.ZipEntry.STORED) { throw new UnsupportedZipFeatureException(Feature.DATA_DESCRIPTOR, entry); } else { EmbeddedDocumentUtil.recordEmbeddedStreamException( new TikaException("Can't read archive stream (" + name + ")"), - parentMetadata); + parentMetadata, context); if (name != null && !name.isEmpty()) { xhtml.element("p", name); } @@ -544,7 +544,7 @@ public class ZipParser extends AbstractArchiveParser { TikaInputStream tis = TikaInputStream.get(zis, tmp, entryMetadata); extractor.parseEmbedded(tis, xhtml, entryMetadata, context, true); } catch (UnsupportedZipFeatureException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, parentMetadata, context); } finally { tmp.dispose(); } @@ -594,10 +594,10 @@ public class ZipParser extends AbstractArchiveParser { } private void handleEncryptedEntry(String name, Metadata parentMetadata, - XHTMLContentHandler xhtml) throws SAXException { + XHTMLContentHandler xhtml, ParseContext context) throws SAXException { EmbeddedDocumentUtil.recordEmbeddedStreamException( new EncryptedDocumentException("stream (" + name + ") is encrypted"), - parentMetadata); + parentMetadata, context); if (name != null && !name.isEmpty()) { xhtml.element("p", name); } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/markdown/MarkdownParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/markdown/MarkdownParser.java index af1a9e7f47..8ae1257d38 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/markdown/MarkdownParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-text-module/src/main/java/org/apache/tika/parser/markdown/MarkdownParser.java @@ -410,7 +410,7 @@ public class MarkdownParser extends AbstractEncodingDetectorParser { try (TikaInputStream tis = TikaInputStream.get(dataURIScheme.getInputStream())) { extractor.parseEmbedded(tis, xhtml, m, context, true); } catch (IOException e) { - EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata); + EmbeddedDocumentUtil.recordEmbeddedStreamException(e, metadata, context); } catch (SAXException e) { throw new RuntimeSAXException(e); } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-webarchive-module/src/main/java/org/apache/tika/parser/warc/WARCParser.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-webarchive-module/src/main/java/org/apache/tika/parser/warc/WARCParser.java index d4349ab20f..975563222f 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-webarchive-module/src/main/java/org/apache/tika/parser/warc/WARCParser.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-webarchive-module/src/main/java/org/apache/tika/parser/warc/WARCParser.java @@ -111,12 +111,12 @@ public class WARCParser implements Parser { try { processResponse((WarcResponse) record, xhtml, context, embeddedDocumentExtractor); } catch (IOException | TikaException e) { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } catch (SAXException e) { if (WriteLimitReachedException.isWriteLimitReached(e)) { throw e; } else { - EmbeddedDocumentUtil.recordException(e, metadata); + EmbeddedDocumentUtil.recordException(e, metadata, context); } } } else if (WARCINFO.equals(record.type())) {
