mirror of https://github.com/apache/poi.git
Bug 56479: don't hardcode dcterms as namespace alias in the attribute, but expect the actual alias that is used in the corresponding element.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1695212 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
80d0e74507
commit
e2244c83f8
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue