From 0ce6ceb3ea48a1e89ad164652097f6453e196186 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 15 Feb 2021 21:05:57 +0000 Subject: [PATCH] add method to test for strict ooxml format git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886545 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/openxml4j/opc/OPCPackage.java | 10 ++++++++++ .../org/apache/poi/openxml4j/opc/TestPackage.java | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java index 203d5c18f2..ffd764918b 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java @@ -1664,6 +1664,16 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { return partList.getUnusedPartIndex(nameTemplate); } + /** + * @return true if the package is in Strict OOXML format + * @since POI 5.0.1 + */ + public boolean isStrictOoxmlFormat() { + PackageRelationshipCollection coreDocRelationships = getRelationshipsByType( + PackageRelationshipTypes.STRICT_CORE_DOCUMENT); + return coreDocRelationships.size() > 0; + } + /** * Has close been called already? */ diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index 07e9a17d21..0d8b8360c8 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -103,6 +103,20 @@ public final class TestPackage { private static final String CONTENT_EXT_PROPS = "application/vnd.openxmlformats-officedocument.extended-properties+xml"; private static final POIDataSamples xlsSamples = POIDataSamples.getSpreadSheetInstance(); + @Test + void isStrictOoxmlFormat() throws IOException, InvalidFormatException { + try (OPCPackage p = OPCPackage.open(getSampleFileName("TestPackageCommon.docx"), PackageAccess.READ)) { + assertFalse(p.isStrictOoxmlFormat()); + } + try (OPCPackage p = OPCPackage.open(xlsSamples.getFile("sample.xlsx"), PackageAccess.READ)) { + assertFalse(p.isStrictOoxmlFormat()); + } + try (OPCPackage p = OPCPackage.open(xlsSamples.getFile("sample.strict.xlsx"), PackageAccess.READ)) { + assertTrue(p.isStrictOoxmlFormat()); + } + } + + /** * Test that just opening and closing the file doesn't alter the document. */