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;
     }