Author: nick
Date: Sun Mar  1 17:48:48 2015
New Revision: 1663135

URL: http://svn.apache.org/r1663135
Log:
Add getChildTypes(MediaType) support to MediaTypeRegistry, to allow you to 
navigate the hierarchy the other way too

Modified:
    
tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MediaTypeRegistry.java
    
tika/trunk/tika-core/src/test/java/org/apache/tika/mime/MimeTypesReaderTest.java

Modified: 
tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MediaTypeRegistry.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MediaTypeRegistry.java?rev=1663135&r1=1663134&r2=1663135&view=diff
==============================================================================
--- 
tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MediaTypeRegistry.java 
(original)
+++ 
tika/trunk/tika-core/src/main/java/org/apache/tika/mime/MediaTypeRegistry.java 
Sun Mar  1 17:48:48 2015
@@ -82,6 +82,23 @@ public class MediaTypeRegistry implement
         }
         return aliases;
     }
+    
+    /**
+     * Returns the set of known children of the given canonical media type
+     * 
+     * @since Apache Tika 1.8
+     * @param type canonical media type
+     * @return known children
+     */
+    public SortedSet<MediaType> getChildTypes(MediaType type) {
+        SortedSet<MediaType> children = new TreeSet<MediaType>();
+        for (Map.Entry<MediaType, MediaType> entry : inheritance.entrySet()) {
+            if (entry.getValue().equals(type)) {
+                children.add(entry.getKey());
+            }
+        }
+        return children;
+    }
 
     public void addType(MediaType type) {
         registry.put(type, type);

Modified: 
tika/trunk/tika-core/src/test/java/org/apache/tika/mime/MimeTypesReaderTest.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/test/java/org/apache/tika/mime/MimeTypesReaderTest.java?rev=1663135&r1=1663134&r2=1663135&view=diff
==============================================================================
--- 
tika/trunk/tika-core/src/test/java/org/apache/tika/mime/MimeTypesReaderTest.java
 (original)
+++ 
tika/trunk/tika-core/src/test/java/org/apache/tika/mime/MimeTypesReaderTest.java
 Sun Mar  1 17:48:48 2015
@@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.metadata.Metadata;
@@ -155,6 +156,11 @@ public class MimeTypesReaderTest {
         MediaType mtBTree = 
this.mimeTypes.getMediaTypeRegistry().getSupertype(mtBTree4);
         assertEquals("application/x-berkeley-db; format=btree", 
mtBTree.toString());
         
+        // Parent has several children, for versions 2 through 4
+        Set<MediaType> mtBTreeChildren = 
this.mimeTypes.getMediaTypeRegistry().getChildTypes(mtBTree);
+        assertTrue(mtBTreeChildren.toString(), mtBTreeChildren.size() >= 3);
+        assertTrue(mtBTreeChildren.toString(), 
mtBTreeChildren.contains(mtBTree4));
+        
         // Parent of that has none
         MediaType mtBD = 
this.mimeTypes.getMediaTypeRegistry().getSupertype(mtBTree);
         assertEquals("application/x-berkeley-db", mtBD.toString());


Reply via email to