Class RecursiveParserWrapper
- All Implemented Interfaces:
Serializable
,Parser
After parsing a document, call getMetadata() to retrieve a list of Metadata objects, one for each embedded resource. The first item in the list will contain the Metadata for the outer container file.
Content can also be extracted and stored in the TikaCoreProperties.TIKA_CONTENT
field
of a Metadata object. Select the type of content to be stored
at initialization.
If a WriteLimitReachedException is encountered, the wrapper will stop processing the current resource, and it will not process any of the child resources for the given resource. However, it will try to parse as much as it can. If a WLRE is reached in the parent document, no child resources will be parsed.
The implementation is based on Jukka's RecursiveMetadataParser and Nick's additions. See: RecursiveMetadataParser.
Note that this wrapper holds all data in memory and is not appropriate for files with content too large to be held in memory.
The unit tests for this class are in the tika-parsers module.
- See Also:
-
Constructor Summary
ConstructorDescriptionRecursiveParserWrapper
(Parser wrappedParser) Initialize the wrapper withcatchEmbeddedExceptions
set totrue
as default.RecursiveParserWrapper
(Parser wrappedParser, boolean catchEmbeddedExceptions) -
Method Summary
Modifier and TypeMethodDescriptionstatic String
getResourceName
(Metadata metadata, AtomicInteger counter) getSupportedTypes
(ParseContext context) Delegates the method call to the decorated parser.void
parse
(InputStream stream, ContentHandler recursiveParserWrapperHandler, Metadata metadata, ParseContext context) Delegates the method call to the decorated parser.Methods inherited from class org.apache.tika.parser.ParserDecorator
getDecorationName, getWrappedParser, withFallbacks, withoutTypes, withTypes
-
Constructor Details
-
RecursiveParserWrapper
Initialize the wrapper withcatchEmbeddedExceptions
set totrue
as default.- Parameters:
wrappedParser
- parser to use for the container documents and the embedded documents
-
RecursiveParserWrapper
- Parameters:
wrappedParser
- parser to wrapcatchEmbeddedExceptions
- whether or not to catch+record embedded exceptions. If set tofalse
, embedded exceptions will be thrown and the rest of the file will not be parsed. The following will not be ignored:CorruptedFileException
,RuntimeException
-
-
Method Details
-
getSupportedTypes
Description copied from class:ParserDecorator
Delegates the method call to the decorated parser. Subclasses should override this method (and usesuper.getSupportedTypes()
to invoke the decorated parser) to implement extra decoration.- Specified by:
getSupportedTypes
in interfaceParser
- Overrides:
getSupportedTypes
in classParserDecorator
- Parameters:
context
- parse context- Returns:
- immutable set of media types
-
parse
public void parse(InputStream stream, ContentHandler recursiveParserWrapperHandler, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException Description copied from class:ParserDecorator
Delegates the method call to the decorated parser. Subclasses should override this method (and usesuper.parse()
to invoke the decorated parser) to implement extra decoration.- Specified by:
parse
in interfaceParser
- Overrides:
parse
in classParserDecorator
- Parameters:
stream
-recursiveParserWrapperHandler
- -- handler must implementRecursiveParserWrapperHandler
metadata
-context
-- Throws:
IOException
SAXException
TikaException
IllegalStateException
- if the handler is not aRecursiveParserWrapperHandler
-
getResourceName
-