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(); + } + } }