Author: markt
Date: Thu Oct 7 14:05:51 2010
New Revision: 1005452
URL: http://svn.apache.org/viewvc?rev=1005452&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49972
Address potential thread safety issues.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/http/FastHttpDateFormat.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/http/FastHttpDateFormat.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/FastHttpDateFormat.java?rev=1005452&r1=1005451&r2=1005452&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/FastHttpDateFormat.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/FastHttpDateFormat.java Thu
Oct 7 14:05:51 2010
@@ -36,28 +36,28 @@ public final class FastHttpDateFormat {
// -------------------------------------------------------------- Variables
- protected static final int CACHE_SIZE =
+ private static final int CACHE_SIZE =
Integer.parseInt(System.getProperty("org.apache.tomcat.util.http.FastHttpDateFormat.CACHE_SIZE",
"1000"));
/**
* HTTP date format.
*/
- protected static final SimpleDateFormat format =
+ private static final SimpleDateFormat format =
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
/**
* The set of SimpleDateFormat formats to use in getDateHeader().
*/
- protected static final SimpleDateFormat formats[] = {
+ private static final SimpleDateFormat formats[] = {
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US),
new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US),
new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale.US)
};
- protected final static TimeZone gmtZone = TimeZone.getTimeZone("GMT");
+ private static final TimeZone gmtZone = TimeZone.getTimeZone("GMT");
/**
@@ -77,26 +77,26 @@ public final class FastHttpDateFormat {
/**
* Instant on which the currentDate object was generated.
*/
- protected static long currentDateGenerated = 0L;
+ private static volatile long currentDateGenerated = 0L;
/**
* Current formatted date.
*/
- protected static String currentDate = null;
+ private static String currentDate = null;
/**
* Formatter cache.
*/
- protected static final ConcurrentHashMap<Long, String> formatCache =
+ private static final ConcurrentHashMap<Long, String> formatCache =
new ConcurrentHashMap<Long, String>(CACHE_SIZE);
/**
* Parser cache.
*/
- protected static final ConcurrentHashMap<String, Long> parseCache =
+ private static final ConcurrentHashMap<String, Long> parseCache =
new ConcurrentHashMap<String, Long>(CACHE_SIZE);
@@ -112,8 +112,8 @@ public final class FastHttpDateFormat {
if ((now - currentDateGenerated) > 1000) {
synchronized (format) {
if ((now - currentDateGenerated) > 1000) {
- currentDateGenerated = now;
currentDate = format.format(new Date(now));
+ currentDateGenerated = now;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]