Author: nick
Date: Fri Nov 18 15:13:52 2011
New Revision: 1203689

URL: http://svn.apache.org/viewvc?rev=1203689&view=rev
Log:
TIKA-784 DITA mimetype entries for the 3 subtypes, plus tests

Modified:
    
tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
    
tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java

Modified: 
tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml?rev=1203689&r1=1203688&r2=1203689&view=diff
==============================================================================
--- 
tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml 
(original)
+++ 
tika/trunk/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml 
Fri Nov 18 15:13:52 2011
@@ -72,8 +72,32 @@
 
   <mime-type type="application/dita+xml">
     <sub-class-of type="application/xml"/>
-    <glob pattern="*.dita"/>
+    <_comment>Darwin Information Typing Architecture</_comment>
+  </mime-type>
+
+  <mime-type type="application/dita+map+xml">
+    <sub-class-of type="application/dita+xml"/>
+    <_comment>DITA Map</_comment>
+    <root-XML localName="map"/>
+    <root-XML localName="map" 
namespaceURI="http://docs.oasis-open.org/namespace"/>
     <glob pattern="*.ditamap"/>
+  </mime-type>
+  <mime-type type="application/dita+topic+xml">
+    <sub-class-of type="application/dita+xml"/>
+    <_comment>DITA Topic</_comment>
+    <root-XML localName="topic"/>
+    <root-XML localName="topic" 
namespaceURI="http://docs.oasis-open.org/namespace"/>
+    <root-XML localName="task"/>
+    <root-XML localName="task" 
namespaceURI="http://docs.oasis-open.org/namespace"/>
+    <root-XML localName="concept"/>
+    <root-XML localName="concept" 
namespaceURI="http://docs.oasis-open.org/namespace"/>
+    <glob pattern="*.dita"/>
+  </mime-type>
+  <mime-type type="application/dita+val+xml">
+    <sub-class-of type="application/dita+xml"/>
+    <_comment>DITA Conditional Processing Profile</_comment>
+    <root-XML localName="val"/>
+    <root-XML localName="val" 
namespaceURI="http://docs.oasis-open.org/namespace"/>
     <glob pattern="*.ditaval"/>
   </mime-type>
 

Modified: 
tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java?rev=1203689&r1=1203688&r2=1203689&view=diff
==============================================================================
--- 
tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java 
(original)
+++ 
tika/trunk/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java 
Fri Nov 18 15:13:52 2011
@@ -333,7 +333,7 @@ public class TestMimeTypes extends TestC
         assertTypeByName("application/postscript", "x.epsi");
     }
     
-    public void testMicrosoftMultiMedia() throws Exception {
+    public void testMicrosoftMultiMediaDetection() throws Exception {
        assertTypeByName("video/x-ms-asf", "x.asf");
        assertTypeByName("video/x-ms-wmv", "x.wmv");
        assertTypeByName("audio/x-ms-wma", "x.wma");
@@ -342,6 +342,32 @@ public class TestMimeTypes extends TestC
        assertTypeByData("video/x-ms-wmv", "testWMV.wmv");
        assertTypeByData("audio/x-ms-wma", "testWMA.wma");
     }
+    
+    /**
+     * All 3 DITA types are in theory handled by the same mimetype,
+     *  but we specialise them 
+     */
+    public void testDITADetection() throws Exception {
+       assertTypeByName("application/dita+topic+xml", "test.dita");
+       assertTypeByName("application/dita+map+xml", "test.ditamap");
+       assertTypeByName("application/dita+val+xml", "test.ditaval");
+       
+       assertTypeByData("application/dita+topic+xml", "testDITA.dita");
+       assertTypeByData("application/dita+topic+xml", "testDITA2.dita");
+       assertTypeByData("application/dita+map+xml", "testDITA.ditamap");
+       
+       assertTypeByNameAndData("application/dita+topic+xml", "testDITA.dita");
+       assertTypeByNameAndData("application/dita+topic+xml", "testDITA2.dita");
+       assertTypeByNameAndData("application/dita+map+xml", "testDITA.ditamap");
+       
+       // These are all children of the official type
+       assertEquals("application/dita+xml", 
+             
repo.getMediaTypeRegistry().getSupertype(getTypeByNameAndData("testDITA.dita")).toString());
+       assertEquals("application/dita+xml", 
+             
repo.getMediaTypeRegistry().getSupertype(getTypeByNameAndData("testDITA2.dita")).toString());
+       assertEquals("application/dita+xml", 
+             
repo.getMediaTypeRegistry().getSupertype(getTypeByNameAndData("testDITA.ditamap")).toString());
+    }
 
     /**
      * @since TIKA-194
@@ -499,15 +525,18 @@ public class TestMimeTypes extends TestC
     
     private void assertTypeByNameAndData(String expected, String filename)
            throws IOException {
-       InputStream stream = TestMimeTypes.class.getResourceAsStream(
-               "/test-documents/" + filename);
-       try {
-           Metadata metadata = new Metadata();
-           metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
-           assertEquals(expected, repo.detect(stream, metadata).toString());
-       } finally {
-           stream.close();
-       }
-}
-
+       assertEquals(expected, getTypeByNameAndData(filename).toString());
+    }
+    private MediaType getTypeByNameAndData(String filename) throws IOException 
{
+       InputStream stream = TestMimeTypes.class.getResourceAsStream(
+             "/test-documents/" + filename);
+       assertNotNull("Test document not found: " + filename, stream);
+       try {
+          Metadata metadata = new Metadata();
+          metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
+          return repo.detect(stream, metadata);
+       } finally {
+          stream.close();
+       }
+    }
 }


Reply via email to