Use default locale/timezone for GUI formatting.
- fixes regression introduced as part of joda-time deprecation
Change-Id: I336f6dc40f99379349040442511b8718b89b4d7b
diff --git a/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java b/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java
index adf8ead..f8b9757 100644
--- a/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java
+++ b/core/api/src/main/java/org/onosproject/ui/table/cell/TimeFormatter.java
@@ -21,6 +21,7 @@
import static java.time.temporal.ChronoField.MINUTE_OF_HOUR;
import static java.time.temporal.ChronoField.SECOND_OF_MINUTE;
+import java.time.DateTimeException;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@@ -30,12 +31,16 @@
import java.util.Locale;
import org.joda.time.DateTimeZone;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Formats time values using {@link DateTimeFormatter}.
*/
public final class TimeFormatter extends AbstractCellFormatter {
+ private static final Logger log = LoggerFactory.getLogger(TimeFormatter.class);
+
private DateTimeFormatter dtf;
// NOTE: Unlike other formatters in this package, this one is not
@@ -58,7 +63,9 @@
.optionalStart()
.appendLiteral(' ')
.appendOffset("+HH:MM", "+00:00")
- .toFormatter();
+ .toFormatter()
+ .withLocale(Locale.getDefault())
+ .withZone(ZoneId.systemDefault());
}
/**
@@ -99,7 +106,13 @@
@Override
protected String nonNullFormat(Object value) {
if (value instanceof TemporalAccessor) {
- return dtf.format((TemporalAccessor) value);
+ try {
+ return dtf.format((TemporalAccessor) value);
+ } catch (DateTimeException e) {
+ log.error("Failed formatting {} [{}]", value, value.getClass().getSimpleName(), e);
+ log.warn("dtf zone was {}", dtf.getZone());
+ throw e;
+ }
} else if (value instanceof org.joda.time.DateTime) {
return dtf.format(Instant.ofEpochMilli(((org.joda.time.DateTime) value).getMillis()));
}