RFR 8144262: LogRecord.getMillis() method is a convenience API that should not have been deprecated

Daniel Fuchs daniel.fuchs at oracle.com
Wed Dec 2 20:10:32 UTC 2015


Hi,

Please find below a fix for
8144262: LogRecord.getMillis() method is a convenience API that
          should not have been deprecated
https://bugs.openjdk.java.net/browse/JDK-8144262


webrev:
http://cr.openjdk.java.net/~dfuchs/webrev_8144262/webrev.00

specdiff:
http://cr.openjdk.java.net/~dfuchs/webrev_8144262/specdiff-logging/java/util/logging/LogRecord.html


When 8072645:java.util.logging should use java.time to get more
      precise time stamps
was implemented we decided to deprecate LogRecord.getMillis()
and LogRecord.setMillis() in favor of the new LogRecord.getInstant()
and LogRecord.setInstant().

This may have been a bit hasty as LogRecord.getMillis() can in fact
be seen as a convenience method - a shortcut to
LogRecord.getInstant().toEpochMillis().
The only method we really wanted to deprecate was LogRecord.setMillis()
as that would truncate the instant to milliseconds:
in other words, LogRecord.setMillis(LogRecord.getMillis()) was no longer
idempotent.

This changes proposes to restore LogRecord.getMillis() to its previous
status, and also fixes LogRecord.setInstant to reject instant values
which would not fit in a long milliseconds-since-epoch - which would
have caused serialization to fail and LogRecord.getMillis() to throw
an undocumented ArithmeticException.

Rationale about this proposed change have also been discussed in this
thread:
http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-November/037039.html

best regards,

-- daniel




More information about the core-libs-dev mailing list