You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2014/12/25 00:37:06 UTC
svn commit: r1647861 -
/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
Author: adrianc
Date: Wed Dec 24 23:37:06 2014
New Revision: 1647861
URL: http://svn.apache.org/r1647861
Log:
UtilDateTime.java improvements:
1. Replace DCL code with lazy-initializer class.
2. Remove class name from static method calls.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java?rev=1647861&r1=1647860&r2=1647861&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java Wed Dec 24 23:37:06 2014
@@ -25,8 +25,8 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Date;
-import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -1045,30 +1045,34 @@ public class UtilDateTime {
return dateFormat.format(stamp);
}
- protected static List<TimeZone> availableTimeZoneList = null;
+ // Private lazy-initializer class
+ private static class TimeZoneHolder {
+ private static final List<TimeZone> availableTimeZoneList = getTimeZones();
+
+ private static List<TimeZone> getTimeZones() {
+ ArrayList<TimeZone> availableTimeZoneList = new ArrayList<TimeZone>();
+ List<String> idList = null;
+ String tzString = UtilProperties.getPropertyValue("general", "timeZones.available");
+ if (UtilValidate.isNotEmpty(tzString)) {
+ idList = StringUtil.split(tzString, ",");
+ } else {
+ idList = Arrays.asList(TimeZone.getAvailableIDs());
+ }
+ for (String id : idList) {
+ TimeZone curTz = TimeZone.getTimeZone(id);
+ availableTimeZoneList.add(curTz);
+ }
+ availableTimeZoneList.trimToSize();
+ return Collections.unmodifiableList(availableTimeZoneList);
+ }
+
+ }
+
/** Returns a List of available TimeZone objects.
* @see java.util.TimeZone
*/
public static List<TimeZone> availableTimeZones() {
- if (availableTimeZoneList == null) {
- synchronized(UtilDateTime.class) {
- if (availableTimeZoneList == null) {
- availableTimeZoneList = new LinkedList<TimeZone>();
- List<String> idList = null;
- String tzString = UtilProperties.getPropertyValue("general", "timeZones.available");
- if (UtilValidate.isNotEmpty(tzString)) {
- idList = StringUtil.split(tzString, ",");
- } else {
- idList = Arrays.asList(TimeZone.getAvailableIDs());
- }
- for (String id: idList) {
- TimeZone curTz = TimeZone.getTimeZone(id);
- availableTimeZoneList.add(curTz);
- }
- }
- }
- }
- return availableTimeZoneList;
+ return TimeZoneHolder.availableTimeZoneList;
}
/** Returns a TimeZone object based upon a time zone ID. Method defaults to
@@ -1095,47 +1099,47 @@ public class UtilDateTime {
}
public static int getSecond(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.SECOND);
}
public static int getMinute(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.MINUTE);
}
public static int getHour(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.HOUR_OF_DAY);
}
public static int getDayOfWeek(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.DAY_OF_WEEK);
}
public static int getDayOfMonth(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.DAY_OF_MONTH);
}
public static int getDayOfYear(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.DAY_OF_YEAR);
}
public static int getWeek(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.WEEK_OF_YEAR);
}
public static int getMonth(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.MONTH);
}
public static int getYear(Timestamp stamp, TimeZone timeZone, Locale locale) {
- Calendar cal = UtilDateTime.toCalendar(stamp, timeZone, locale);
+ Calendar cal = toCalendar(stamp, timeZone, locale);
return cal.get(Calendar.YEAR);
}