Parse build.time as an ISO 8601 instant
Closes gh-12420
This commit is contained in:
@@ -16,9 +16,9 @@
|
||||
|
||||
package org.springframework.boot.info;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.DateTimeException;
|
||||
import java.time.Instant;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
@@ -89,12 +89,12 @@ public class BuildProperties extends InfoProperties {
|
||||
private static void coerceDate(Properties properties, String key) {
|
||||
String value = properties.getProperty(key);
|
||||
if (value != null) {
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
|
||||
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);
|
||||
}
|
||||
catch (ParseException ex) {
|
||||
catch (DateTimeException ex) {
|
||||
// Ignore and store the original value
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.boot.info;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -31,14 +33,15 @@ public class BuildPropertiesTests {
|
||||
|
||||
@Test
|
||||
public void basicInfo() {
|
||||
Instant instant = Instant.now();
|
||||
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.getArtifact()).isEqualTo("demo");
|
||||
assertThat(properties.getVersion()).isEqualTo("0.0.1");
|
||||
assertThat(properties.getTime()).isNotNull();
|
||||
assertThat(properties.get("time")).isEqualTo("1457098593000");
|
||||
assertThat(properties.getTime().toEpochMilli()).isEqualTo(1457098593000L);
|
||||
assertThat(properties.getTime()).isEqualTo(instant);
|
||||
assertThat(properties.get("time"))
|
||||
.isEqualTo(String.valueOf(instant.toEpochMilli()));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user