Hi Peter,

Setting the user.timezone property doesn't reset the value returned from getDefaultRef(). You can see the new value through java.util.TimeZone but not through java.time.ZoneId.

Its a bad idea to allow the default timezone change and in java.time it was purposefully
handled as an initialize once value.

Roger


On 4/23/2015 5:20 PM, Peter Levart wrote:


On 04/23/2015 10:33 PM, Roger Riggs wrote:
Hi Peter,

The defaultTimeZone is cached in java.util.TimeZone the first time it is referenced
and is not updated after that.  See java.util.TimeZone.getDefaultRef().

Regards, Roger


But any code (with enough privilege) can update it:

abstract public class TimeZone .... {

    public static void setDefault(TimeZone zone)
    {
        SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new PropertyPermission
                               ("user.timezone", "write"));
        }
        defaultTimeZone = zone;
    }



Peter


On 4/23/2015 4:11 PM, Peter Levart wrote:


On 04/23/2015 09:53 PM, nadeesh tv wrote:
Hi all,

Please review this minor change which optimized Clock.systemDefaultZone() and Clock.system(ZoneId) to avoid creating new instance of Clock.SystemClock every time they are called.

Bug ID : https://bugs.openjdk.java.net/browse/JDK-8074023

Webrev : http://cr.openjdk.java.net/~rriggs/nadeesh-tv-8074023/


Hi Nadeesh,

What happens if ZondeId.systemDefault() changes (TimeZone.setDefault()) *after* Clock class has already been initialized?

Regards, Peter




Reply via email to