src/share/classes/sun/util/calendar/CalendarSystem.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 23,32 ****
--- 23,39 ----
* questions.
*/
package sun.util.calendar;
+ import java.io.File;
+ import java.io.FileInputStream;
+ import java.io.IOException;
+ import java.security.AccessController;
+ import java.security.PrivilegedActionException;
+ import java.security.PrivilegedExceptionAction;
+ import java.util.Properties;
import java.util.TimeZone;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
*** 168,177 ****
--- 175,222 ----
}
CalendarSystem cs = calendars.putIfAbsent(calendarName, cal);
return (cs == null) ? cal : cs;
}
+ /**
+ * Returns a {@link Properties} loaded from lib/calendars.properties.
+ *
+ * @return a {@link Properties} loaded from lib/calendars.properties
+ * @throws IOException if an error occurred when reading from the input stream
+ * @throws IllegalArgumentException if the input stream contains any malformed
+ * Unicode escape sequences
+ */
+ public static Properties getCalendarProperties() throws IOException {
+ Properties calendarProps = null;
+ try {
+ String homeDir = AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("java.home"));
+ final String fname = homeDir + File.separator + "lib" + File.separator
+ + "calendars.properties";
+ calendarProps = AccessController.doPrivileged(new PrivilegedExceptionAction<Properties>() {
+ @Override
+ public Properties run() throws IOException {
+ Properties props = new Properties();
+ try (FileInputStream fis = new FileInputStream(fname)) {
+ props.load(fis);
+ }
+ return props;
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ Throwable cause = e.getCause();
+ if (cause instanceof IOException) {
+ throw (IOException) cause;
+ } else if (cause instanceof IllegalArgumentException) {
+ throw (IllegalArgumentException) cause;
+ }
+ // Should not happen
+ throw new InternalError(cause);
+ }
+ return calendarProps;
+ }
+
//////////////////////////////// Calendar API //////////////////////////////////
/**
* Returns the name of this calendar system.
*/