Author: centic
Date: Tue Aug 11 05:37:15 2015
New Revision: 1695212
URL: http://svn.apache.org/r1695212
Log:
Bug 56479: don't hardcode dcterms as namespace alias in the attribute, but
expect the actual alias that is used in the corresponding element.
Added:
poi/trunk/src/integrationtest/org/apache/poi/stress/OPCFileHandler.java
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
poi/trunk/test-data/openxml4j/dcterms_bug_56479.zip
Modified:
poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java
poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java
Modified: poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java?rev=1695212&r1=1695211&r2=1695212&view=diff
==============================================================================
--- poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java (original)
+++ poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java Tue Aug 11
05:37:15 2015
@@ -83,7 +83,10 @@ public class TestAllFiles {
HANDLERS.put(".docx", new XWPFFileHandler());
HANDLERS.put(".dotx", new XWPFFileHandler());
HANDLERS.put(".docm", new XWPFFileHandler());
- HANDLERS.put(".ooxml", new XWPFFileHandler()); // OPCPackage
+
+ // OpenXML4J files
+ HANDLERS.put(".ooxml", new OPCFileHandler()); // OPCPackage
+ HANDLERS.put(".zip", new OPCFileHandler()); // OPCPackage
// Powerpoint
HANDLERS.put(".ppt", new HSLFFileHandler());
@@ -209,7 +212,6 @@ public class TestAllFiles {
// TODO: good to ignore?
EXPECTED_FAILURES.add("spreadsheet/sample-beta.xlsx");
EXPECTED_FAILURES.add("spreadsheet/49931.xls");
- EXPECTED_FAILURES.add("openxml4j/ContentTypeHasParameters.ooxml");
// This is actually a spreadsheet!
EXPECTED_FAILURES.add("hpsf/TestRobert_Flaherty.doc");
Added: poi/trunk/src/integrationtest/org/apache/poi/stress/OPCFileHandler.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/stress/OPCFileHandler.java?rev=1695212&view=auto
==============================================================================
--- poi/trunk/src/integrationtest/org/apache/poi/stress/OPCFileHandler.java
(added)
+++ poi/trunk/src/integrationtest/org/apache/poi/stress/OPCFileHandler.java Tue
Aug 11 05:37:15 2015
@@ -0,0 +1,73 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+package org.apache.poi.stress;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.PushbackInputStream;
+
+import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
+import org.apache.poi.openxml4j.opc.ContentTypes;
+import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.xwpf.usermodel.XWPFRelation;
+import org.junit.Test;
+
+public class OPCFileHandler extends AbstractFileHandler {
+ @Override
+ public void handleFile(InputStream stream) throws Exception {
+ // ignore password protected files
+ if (POIXMLDocumentHandler.isEncrypted(stream)) return;
+
+ InputStream is =
OpenXML4JTestDataSamples.openSampleStream("dcterms_bug_56479.zip");
+ OPCPackage p = OPCPackage.open(is);
+
+ for (PackagePart part : p.getParts()) {
+ if (part.getPartName().toString().equals("/docProps/core.xml")) {
+ assertEquals(ContentTypes.CORE_PROPERTIES_PART,
part.getContentType());
+ }
+ if (part.getPartName().toString().equals("/word/document.xml")) {
+ assertEquals(XWPFRelation.DOCUMENT.getContentType(),
part.getContentType());
+ }
+ if
(part.getPartName().toString().equals("/word/theme/theme1.xml")) {
+ assertEquals(XWPFRelation.THEME.getContentType(),
part.getContentType());
+ }
+ }
+ }
+
+ public void handleExtracting(File file) throws Exception {
+ // text-extraction is not possible currenlty for these types of files
+ }
+
+ // a test-case to test this locally without executing the full
TestAllFiles
+ @Test
+ public void test() throws Exception {
+ File file = new
File("test-data/openxml4j/dcterms_bug_56479.zip");
+
+ InputStream stream = new PushbackInputStream(new
FileInputStream(file), 100000);
+ try {
+ handleFile(stream);
+ } finally {
+ stream.close();
+ }
+
+ handleExtracting(file);
+ }
+}
\ No newline at end of file
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java?rev=1695212&r1=1695211&r2=1695212&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
Tue Aug 11 05:37:15 2015
@@ -279,9 +279,9 @@ public final class PackagePropertiesUnma
+ "' must have the 'xsi:type'
attribute present !");
// Check for the attribute value => 'dcterms:W3CDTF'
- if (!typeAtt.getValue().equals("dcterms:W3CDTF"))
+ if (!typeAtt.getValue().equals(el.getPrefix() +
":W3CDTF"))
throw new InvalidFormatException("The element
'" + elName
- + "' must have the 'xsi:type'
attribute with the value 'dcterms:W3CDTF' !");
+ + "' must have the 'xsi:type'
attribute with the value '" + el.getPrefix() + ":W3CDTF', but had '" +
typeAtt.getValue() + "' !");
}
// Check its children
Added:
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java?rev=1695212&view=auto
==============================================================================
---
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
(added)
+++
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
Tue Aug 11 05:37:15 2015
@@ -0,0 +1,54 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import static org.junit.Assert.*;
+
+import java.io.InputStream;
+
+import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
+import org.apache.poi.xwpf.usermodel.XWPFRelation;
+import org.junit.Test;
+
+public class TestZipPackage {
+ @Test
+ public void testBug56479() throws Exception {
+ InputStream is =
OpenXML4JTestDataSamples.openSampleStream("dcterms_bug_56479.zip");
+ OPCPackage p = OPCPackage.open(is);
+
+ // Check we found the contents of it
+ boolean foundCoreProps = false, foundDocument = false, foundTheme1 =
false;
+ for (PackagePart part : p.getParts()) {
+ if (part.getPartName().toString().equals("/docProps/core.xml")) {
+ assertEquals(ContentTypes.CORE_PROPERTIES_PART,
part.getContentType());
+ foundCoreProps = true;
+ }
+ if (part.getPartName().toString().equals("/word/document.xml")) {
+ assertEquals(XWPFRelation.DOCUMENT.getContentType(),
part.getContentType());
+ foundDocument = true;
+ }
+ if
(part.getPartName().toString().equals("/word/theme/theme1.xml")) {
+ assertEquals(XWPFRelation.THEME.getContentType(),
part.getContentType());
+ foundTheme1 = true;
+ }
+ }
+ assertTrue("Core not found in " + p.getParts(), foundCoreProps);
+ assertFalse("Document should not be found in " + p.getParts(),
foundDocument);
+ assertFalse("Theme1 should not found in " + p.getParts(), foundTheme1);
+ }
+}
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java?rev=1695212&r1=1695211&r2=1695212&view=diff
==============================================================================
---
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java
(original)
+++
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java
Tue Aug 11 05:37:15 2015
@@ -228,7 +228,7 @@ public final class TestOPCComplianceCore
*/
public void testLimitedXSITypeAttribute_PresentWithUnauthorizedValue() {
String msg =
extractInvalidFormatMessage("LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx");
- assertEquals("The element 'modified' must have the 'xsi:type'
attribute with the value 'dcterms:W3CDTF' !", msg);
+ assertEquals("The element 'modified' must have the 'xsi:type'
attribute with the value 'dcterms:W3CDTF', but had 'W3CDTF' !", msg);
}
/**
Added: poi/trunk/test-data/openxml4j/dcterms_bug_56479.zip
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/openxml4j/dcterms_bug_56479.zip?rev=1695212&view=auto
==============================================================================
Binary files poi/trunk/test-data/openxml4j/dcterms_bug_56479.zip (added) and
poi/trunk/test-data/openxml4j/dcterms_bug_56479.zip Tue Aug 11 05:37:15 2015
differ
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]