Parse build.time as an ISO 8601 instant

Closes gh-12420
pull/12419/merge
Andy Wilkinson 7 years ago
parent 252ef3fc56
commit 87239ba6c9

@ -16,9 +16,9 @@
package org.springframework.boot.info; package org.springframework.boot.info;
import java.text.ParseException; import java.time.DateTimeException;
import java.text.SimpleDateFormat;
import java.time.Instant; import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.Properties; import java.util.Properties;
/** /**
@ -89,12 +89,12 @@ public class BuildProperties extends InfoProperties {
private static void coerceDate(Properties properties, String key) { private static void coerceDate(Properties properties, String key) {
String value = properties.getProperty(key); String value = properties.getProperty(key);
if (value != null) { if (value != null) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
try { try {
String updatedValue = String.valueOf(format.parse(value).getTime()); String updatedValue = String.valueOf(DateTimeFormatter.ISO_INSTANT
.parse(value, Instant::from).toEpochMilli());
properties.setProperty(key, updatedValue); properties.setProperty(key, updatedValue);
} }
catch (ParseException ex) { catch (DateTimeException ex) {
// Ignore and store the original value // Ignore and store the original value
} }
} }

@ -16,6 +16,8 @@
package org.springframework.boot.info; package org.springframework.boot.info;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.Properties; import java.util.Properties;
import org.junit.Test; import org.junit.Test;
@ -31,14 +33,15 @@ public class BuildPropertiesTests {
@Test @Test
public void basicInfo() { public void basicInfo() {
Instant instant = Instant.now();
BuildProperties properties = new BuildProperties(createProperties("com.example", BuildProperties properties = new BuildProperties(createProperties("com.example",
"demo", "0.0.1", "2016-03-04T14:36:33+0100")); "demo", "0.0.1", DateTimeFormatter.ISO_INSTANT.format(instant)));
assertThat(properties.getGroup()).isEqualTo("com.example"); assertThat(properties.getGroup()).isEqualTo("com.example");
assertThat(properties.getArtifact()).isEqualTo("demo"); assertThat(properties.getArtifact()).isEqualTo("demo");
assertThat(properties.getVersion()).isEqualTo("0.0.1"); assertThat(properties.getVersion()).isEqualTo("0.0.1");
assertThat(properties.getTime()).isNotNull(); assertThat(properties.getTime()).isEqualTo(instant);
assertThat(properties.get("time")).isEqualTo("1457098593000"); assertThat(properties.get("time"))
assertThat(properties.getTime().toEpochMilli()).isEqualTo(1457098593000L); .isEqualTo(String.valueOf(instant.toEpochMilli()));
} }
@Test @Test

Loading…
Cancel
Save