This is an automated email from the ASF dual-hosted git repository.
tballison 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 ae19e8b58b TIKA-4848 - parsers, step 2 (#3086)
ae19e8b58b is described below
commit ae19e8b58b21e7fd0721f1f275e90ca3a193ebdb
Author: Tim Allison <[email protected]>
AuthorDate: Thu Aug 27 21:19:06 2026 -0400
TIKA-4848 - parsers, step 2 (#3086)
---
.../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())) {