From d2f565acd0450b39c1dbcbeb5ab26534ab858abd Mon Sep 17 00:00:00 2001 From: Adam Retter Date: Tue, 28 Apr 2026 14:09:27 +0200 Subject: [PATCH] [bugfix] Change the storage type for OpenDocument files, and Office Open XML files to Binary, as these are really Zip files. Closes https://github.com/evolvedbinary/elemental/issues/189 --- .../impl/MediaTypeResolverImplTest.java | 24 +++++++++---------- .../mediatype/impl/media-type-mappings.xml | 5 ++++ .../mediatype/media-type-mappings.xml | 7 +++++- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/elemental-media-type/elemental-media-type-impl/src/test/java/xyz/elemental/mediatype/impl/MediaTypeResolverImplTest.java b/elemental-media-type/elemental-media-type-impl/src/test/java/xyz/elemental/mediatype/impl/MediaTypeResolverImplTest.java index 0578507750..e2d5edba53 100644 --- a/elemental-media-type/elemental-media-type-impl/src/test/java/xyz/elemental/mediatype/impl/MediaTypeResolverImplTest.java +++ b/elemental-media-type/elemental-media-type-impl/src/test/java/xyz/elemental/mediatype/impl/MediaTypeResolverImplTest.java @@ -90,7 +90,7 @@ public void allResolveCsvExtension() { @Test public void allResolveDocxExtension() { - assertAllResolveFromFileName("something.docx", MediaType.APPLICATION_OPENXML_WORDPROCESSING, new String[] {"docx"}, StorageType.XML); + assertAllResolveFromFileName("something.docx", MediaType.APPLICATION_OPENXML_WORDPROCESSING, new String[] {"docx"}, StorageType.BINARY); } @Test @@ -170,17 +170,17 @@ public void allResolveNcxExtension() { @Test public void allResolveOdtExtension() { - assertAllResolveFromFileName("something.odt", MediaType.APPLICATION_OPENDOCUMENT_TEXT, new String[] {"odt"}, StorageType.XML); + assertAllResolveFromFileName("something.odt", MediaType.APPLICATION_OPENDOCUMENT_TEXT, new String[] {"odt"}, StorageType.BINARY); } @Test public void allResolveOdpExtension() { - assertAllResolveFromFileName("something.odp", MediaType.APPLICATION_OPENDOCUMENT_PRESENTATION, new String[] {"odp"}, StorageType.XML); + assertAllResolveFromFileName("something.odp", MediaType.APPLICATION_OPENDOCUMENT_PRESENTATION, new String[] {"odp"}, StorageType.BINARY); } @Test public void allResolveOdsExtension() { - assertAllResolveFromFileName("something.ods", MediaType.APPLICATION_OPENDOCUMENT_SPREADSHEET, new String[] {"ods"}, StorageType.XML); + assertAllResolveFromFileName("something.ods", MediaType.APPLICATION_OPENDOCUMENT_SPREADSHEET, new String[] {"ods"}, StorageType.BINARY); } @Test @@ -195,7 +195,7 @@ public void allResolvePngExtension() { @Test public void allResolvePptxExtension() { - assertAllResolveFromFileName("something.pptx", MediaType.APPLICATION_OPENXML_PRESENTATION, new String[] {"pptx"}, StorageType.XML); + assertAllResolveFromFileName("something.pptx", MediaType.APPLICATION_OPENXML_PRESENTATION, new String[] {"pptx"}, StorageType.BINARY); } @Test @@ -240,7 +240,7 @@ public void allResolveXhtmlExtension() { @Test public void allResolveXlsxExtension() { - assertAllResolveFromFileName("something.xlsx", MediaType.APPLICATION_OPENXML_SPREADSHEET, new String[] {"xlsx"}, StorageType.XML); + assertAllResolveFromFileName("something.xlsx", MediaType.APPLICATION_OPENXML_SPREADSHEET, new String[] {"xlsx"}, StorageType.BINARY); } @Test @@ -265,7 +265,7 @@ public void allResolveCsvIdentifier() { @Test public void allResolveDocxIdentifier() { - assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENXML_WORDPROCESSING, new String[] {"docx"}, StorageType.XML); + assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENXML_WORDPROCESSING, new String[] {"docx"}, StorageType.BINARY); } @Test @@ -335,17 +335,17 @@ public void allResolveNcxIdentifier() { @Test public void allResolveOdtIdentifier() { - assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENDOCUMENT_TEXT, new String[] {"odt"}, StorageType.XML); + assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENDOCUMENT_TEXT, new String[] {"odt"}, StorageType.BINARY); } @Test public void allResolveOdpIdentifier() { - assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENDOCUMENT_PRESENTATION, new String[] {"odp"}, StorageType.XML); + assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENDOCUMENT_PRESENTATION, new String[] {"odp"}, StorageType.BINARY); } @Test public void allResolveOdsIdentifier() { - assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENDOCUMENT_SPREADSHEET, new String[] {"ods"}, StorageType.XML); + assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENDOCUMENT_SPREADSHEET, new String[] {"ods"}, StorageType.BINARY); } @Test @@ -360,7 +360,7 @@ public void allResolvePngIdentifier() { @Test public void allResolvePptxIdentifier() { - assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENXML_PRESENTATION, new String[] {"pptx"}, StorageType.XML); + assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENXML_PRESENTATION, new String[] {"pptx"}, StorageType.BINARY); } @Test @@ -400,7 +400,7 @@ public void allResolveXhtmlIdentifier() { @Test public void allResolveXlsxIdentifier() { - assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENXML_SPREADSHEET, new String[] {"xlsx"}, StorageType.XML); + assertAllResolveFromIdentifier(MediaType.APPLICATION_OPENXML_SPREADSHEET, new String[] {"xlsx"}, StorageType.BINARY); } @Test diff --git a/elemental-media-type/elemental-media-type-impl/src/test/resources/xyz/elemental/mediatype/impl/media-type-mappings.xml b/elemental-media-type/elemental-media-type-impl/src/test/resources/xyz/elemental/mediatype/impl/media-type-mappings.xml index 6d8e835bbf..32e303cb23 100644 --- a/elemental-media-type/elemental-media-type-impl/src/test/resources/xyz/elemental/mediatype/impl/media-type-mappings.xml +++ b/elemental-media-type/elemental-media-type-impl/src/test/resources/xyz/elemental/mediatype/impl/media-type-mappings.xml @@ -42,8 +42,13 @@ application/xml text/xml + + + + [^+]+\+xml$ diff --git a/exist-core/src/main/resources/xyz/elemental/mediatype/media-type-mappings.xml b/exist-core/src/main/resources/xyz/elemental/mediatype/media-type-mappings.xml index 5efeeb8525..d8b6e55012 100644 --- a/exist-core/src/main/resources/xyz/elemental/mediatype/media-type-mappings.xml +++ b/exist-core/src/main/resources/xyz/elemental/mediatype/media-type-mappings.xml @@ -42,8 +42,13 @@ application/xml text/xml + + + + [^+]+\+xml$ @@ -51,4 +56,4 @@ - \ No newline at end of file +