git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1695212 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_13_FINAL
@@ -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"); |
@@ -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); | |||
} | |||
} |
@@ -279,9 +279,9 @@ public final class PackagePropertiesUnmarshaller implements PartUnmarshaller { | |||
+ "' 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 |
@@ -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); | |||
} | |||
} |
@@ -228,7 +228,7 @@ public final class TestOPCComplianceCoreProperties extends TestCase { | |||
*/ | |||
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); | |||
} | |||
/** |