JCRVLT-276 Switch to timezone designators being understood by ISO8601.parse (Fix #14)
git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/commons/filevault-package-maven-plugin/trunk@1828487 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 63f8f50..c9ad0a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -440,6 +440,12 @@
<version>3.2.0</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-commons</artifactId>
+ <version>2.17.1</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<!-- ====================================================================== -->
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
index 5481918..dc0d9e5 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
@@ -81,7 +81,12 @@
)
public class GenerateMetadataMojo extends AbstractPackageMojo {
- private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+ /**
+ * A date format which is compliant with {@code org.apache.jackrabbit.util.ISO8601.parse(...)}
+ * @see <a href="https://www.w3.org/TR/NOTE-datetime">Restricted profile for ISO8601</a>
+ * @see <a href="https://issues.apache.org/jira/browse/JCR-4267">JCR-4267</a>
+ */
+ private final DateFormat iso8601DateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
public static final String MF_KEY_PACKAGE_TYPE = "Content-Package-Type";
@@ -785,7 +790,7 @@
if (!props.containsKey("createdBy")) {
props.put("createdBy", System.getProperty("user.name"));
}
- props.put("created", DATE_FORMAT.format(new Date()));
+ props.put("created", iso8601DateFormat.format(new Date()));
// configurable properties
props.put("requiresRoot", String.valueOf(requiresRoot));
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java
index 44a2abc..2f0e295 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java
@@ -16,17 +16,23 @@
*/
package org.apache.jackrabbit.filevault.maven.packaging.it;
-import java.io.IOException;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import java.io.IOException;
+import java.util.Calendar;
+
+import org.apache.jackrabbit.util.ISO8601;
import org.apache.maven.it.VerificationException;
+import org.hamcrest.number.OrderingComparison;
import org.junit.Test;
public class DefaultProjectIT {
private static final String TEST_PROJECT_NAME = "/default-test-projects/";
- private void verify(String projectName) throws VerificationException, IOException {
- new ProjectBuilder()
+ private ProjectBuilder verify(String projectName) throws VerificationException, IOException {
+ return new ProjectBuilder()
.setTestProjectDir(TEST_PROJECT_NAME + projectName)
.build()
.verifyExpectedFiles()
@@ -37,7 +43,14 @@
@Test
public void generic_project_package_contains_correct_files() throws Exception {
- verify("generic");
+ Calendar dateBeforeRun = Calendar.getInstance();
+ String createdDate = verify("generic").getPackageProperty("created");
+ Calendar dateAfterRun = Calendar.getInstance();
+ Calendar date = ISO8601.parse(createdDate);
+ assertNotNull("The created date is not compliant to the ISO8601 profile defined in https://www.w3.org/TR/NOTE-datetime", date);
+ // check actual value
+ assertThat(date, OrderingComparison.greaterThan(dateBeforeRun));
+ assertThat(date, OrderingComparison.lessThan(dateAfterRun));
}
@Test
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
index 4e9ff04..f339d45 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
@@ -33,6 +33,7 @@
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import org.apache.maven.it.VerificationException;
@@ -225,6 +226,11 @@
if (buildExpectedToFail) {
return this;
}
+ assertEquals("Property '" + key + "' has correct value", value, getPackageProperty(key));
+ return this;
+ }
+
+ public String getPackageProperty(String key) throws ZipException, IOException {
Properties properties;
try (ZipFile zip = new ZipFile(testPackageFile)) {
ZipEntry propertiesFile = zip.getEntry("META-INF/vault/properties.xml");
@@ -233,9 +239,7 @@
properties = new Properties();
properties.loadFromXML(zip.getInputStream(propertiesFile));
}
-
- assertEquals("Property '" + key + "' has correct value", value, properties.getProperty(key));
- return this;
+ return properties.getProperty(key);
}
public ProjectBuilder verifyExpectedManifest() throws IOException {