You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2010/06/18 14:10:28 UTC
svn commit: r955963 -
/tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java
Author: jukka
Date: Fri Jun 18 12:10:28 2010
New Revision: 955963
URL: http://svn.apache.org/viewvc?rev=955963&view=rev
Log:
TIKA-298: CompositeParser.getParser() should use mimetype hierarchy when falling back
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java?rev=955963&r1=955962&r2=955963&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java Fri Jun 18 12:10:28 2010
@@ -118,7 +118,9 @@ public class CompositeParser implements
/**
* Returns the parser that best matches the given metadata. By default
* looks for a parser that matches the content type metadata property,
- * and uses the fallback parser if a better match is not found.
+ * and uses the fallback parser if a better match is not found. The
+ * type hierarchy information included in the configured media type
+ * registry is used when looking for a matching parser instance.
* <p>
* Subclasses can override this method to provide more accurate
* parser resolution.
@@ -128,24 +130,12 @@ public class CompositeParser implements
*/
protected Parser getParser(Metadata metadata) {
MediaType type = MediaType.parse(metadata.get(Metadata.CONTENT_TYPE));
- if (type != null) {
+ while (type != null) {
Parser parser = parsers.get(type);
-
- if (parser == null && type.hasParameters()) {
- type = type.getBaseType();
- parser = parsers.get(type);
- }
-
if (parser != null) {
return parser;
- } else {
- for (MediaType parserType : parsers.keySet()) {
- if (parserType != null
- && registry.isSpecializationOf(type, parserType)) {
- return parsers.get(parserType);
- }
- }
}
+ type = registry.getSuperType(type);
}
return fallback;
}