You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2016/07/04 20:55:07 UTC
svn commit: r1751379 - in /poi/trunk:
src/ooxml/java/org/apache/poi/openxml4j/opc/internal/
src/ooxml/testcases/org/apache/poi/openxml4j/opc/ test-data/openxml4j/
Author: nick
Date: Mon Jul 4 20:55:07 2016
New Revision: 1751379
URL: http://svn.apache.org/viewvc?rev=1751379&view=rev
Log:
#59780 OPC support for a wider range of timezone'd created and modified date formats in package properties
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java
poi/trunk/test-data/openxml4j/OPCCompliance_CoreProperties_AlternateTimezones.docx
Modified: poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java?rev=1751379&r1=1751378&r2=1751379&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java Mon Jul 4 20:55:07 2016
@@ -50,7 +50,7 @@ public final class PackagePropertiesPart
public final static String NAMESPACE_DCTERMS_URI = "http://purl.org/dc/terms/";
- private final static String DEFAULT_DATEFORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
+ private final static String DEFAULT_DATEFORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
private final static String[] DATE_FORMATS = new String[]{
DEFAULT_DATEFORMAT,
@@ -61,9 +61,12 @@ public final class PackagePropertiesPart
//When we move to Java 7, we should be able to add another
//date format to DATE_FORMATS that uses XXX and get rid of this
//and TIME_ZONE_PAT
+ // TODO Fix this after the Java 7 upgrade
private final String[] TZ_DATE_FORMATS = new String[]{
"yyyy-MM-dd'T'HH:mm:ssz",
- "yyyy-MM-dd'T'HH:mm:ss.SSSz"
+ "yyyy-MM-dd'T'HH:mm:ss.Sz",
+ "yyyy-MM-dd'T'HH:mm:ss.SSz",
+ "yyyy-MM-dd'T'HH:mm:ss.SSSz",
};
private final Pattern TIME_ZONE_PAT = Pattern.compile("([-+]\\d\\d):?(\\d\\d)");
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java?rev=1751379&r1=1751378&r2=1751379&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java Mon Jul 4 20:55:07 2016
@@ -273,21 +273,52 @@ public final class TestPackageCoreProper
}
@Test
- @Ignore
public void testAlternateCorePropertyTimezones() throws Exception {
InputStream is = OpenXML4JTestDataSamples.openSampleStream("OPCCompliance_CoreProperties_AlternateTimezones.docx");
OPCPackage pkg = OPCPackage.open(is);
PackagePropertiesPart props = (PackagePropertiesPart)pkg.getPackageProperties();
is.close();
+
+ // We need predictable dates for testing!
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ROOT);
+ df.setTimeZone(LocaleUtil.TIMEZONE_UTC);
// Check text properties first
- assertEquals("Lorem Ipsu", props.getTitleProperty().getValue());
+ assertEquals("Lorem Ipsum", props.getTitleProperty().getValue());
assertEquals("Apache POI", props.getCreatorProperty().getValue());
// Created at has a +3 timezone and milliseconds
- // 2006-10-13T18:06:00.1234+03:00
+ // 2006-10-13T18:06:00.123+03:00
+ // = 2006-10-13T15:06:00.123+00:00
+ assertEquals("2006-10-13T15:06:00Z", props.getCreatedPropertyString());
+ assertEquals("2006-10-13T15:06:00.123Z", df.format(props.getCreatedProperty().getValue()));
// Modified at has a -13 timezone but no milliseconds
// 2007-06-20T07:59:00-13:00
+ // = 2007-06-20T20:59:00-13:00
+ assertEquals("2007-06-20T20:59:00Z", props.getModifiedPropertyString());
+ assertEquals("2007-06-20T20:59:00.000Z", df.format(props.getModifiedProperty().getValue()));
+
+
+ // Ensure we can change them with other timezones and still read back OK
+ props.setCreatedProperty("2007-06-20T20:57:00+13:00");
+ props.setModifiedProperty("2007-06-20T20:59:00.123-13:00");
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ pkg.save(baos);
+ pkg = OPCPackage.open(new ByteArrayInputStream(baos.toByteArray()));
+
+ // Check text properties first - should be unchanged
+ assertEquals("Lorem Ipsum", props.getTitleProperty().getValue());
+ assertEquals("Apache POI", props.getCreatorProperty().getValue());
+
+ // Check the updated times
+ // 2007-06-20T20:57:00+13:00
+ // = 2007-06-20T07:57:00Z
+ assertEquals("2007-06-20T07:57:00.000Z", df.format(props.getCreatedProperty().getValue()));
+
+ // 2007-06-20T20:59:00.123-13:00
+ // = 2007-06-21T09:59:00.123Z
+ assertEquals("2007-06-21T09:59:00.123Z", df.format(props.getModifiedProperty().getValue()));
}
}
Modified: poi/trunk/test-data/openxml4j/OPCCompliance_CoreProperties_AlternateTimezones.docx
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/openxml4j/OPCCompliance_CoreProperties_AlternateTimezones.docx?rev=1751379&r1=1751378&r2=1751379&view=diff
==============================================================================
Binary files - no diff available.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org