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]

Reply via email to