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
4795b3d2cb
commit
ccc4ebcf70
@ -83,7 +83,10 @@ public class TestAllFiles {
|
|||||||
HANDLERS.put(".docx", new XWPFFileHandler());
|
HANDLERS.put(".docx", new XWPFFileHandler());
|
||||||
HANDLERS.put(".dotx", new XWPFFileHandler());
|
HANDLERS.put(".dotx", new XWPFFileHandler());
|
||||||
HANDLERS.put(".docm", 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
|
// Powerpoint
|
||||||
HANDLERS.put(".ppt", new HSLFFileHandler());
|
HANDLERS.put(".ppt", new HSLFFileHandler());
|
||||||
@ -209,7 +212,6 @@ public class TestAllFiles {
|
|||||||
// TODO: good to ignore?
|
// TODO: good to ignore?
|
||||||
EXPECTED_FAILURES.add("spreadsheet/sample-beta.xlsx");
|
EXPECTED_FAILURES.add("spreadsheet/sample-beta.xlsx");
|
||||||
EXPECTED_FAILURES.add("spreadsheet/49931.xls");
|
EXPECTED_FAILURES.add("spreadsheet/49931.xls");
|
||||||
EXPECTED_FAILURES.add("openxml4j/ContentTypeHasParameters.ooxml");
|
|
||||||
|
|
||||||
// This is actually a spreadsheet!
|
// This is actually a spreadsheet!
|
||||||
EXPECTED_FAILURES.add("hpsf/TestRobert_Flaherty.doc");
|
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 !");
|
+ "' must have the 'xsi:type' attribute present !");
|
||||||
|
|
||||||
// Check for the attribute value => 'dcterms:W3CDTF'
|
// 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
|
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
|
// 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() {
|
public void testLimitedXSITypeAttribute_PresentWithUnauthorizedValue() {
|
||||||
String msg = extractInvalidFormatMessage("LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx");
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
BIN
test-data/openxml4j/dcterms_bug_56479.zip
Normal file
BIN
test-data/openxml4j/dcterms_bug_56479.zip
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user