Ain't generics fun?

git-svn-id: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpclient/trunk@603319 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Oleg Kalnichevski 2007-12-11 18:13:00 +00:00
parent 89ffb0f780
commit 86f8cd7460
1 changed files with 10 additions and 7 deletions

View File

@ -32,6 +32,7 @@
package org.apache.http.impl.cookie; package org.apache.http.impl.cookie;
import java.lang.ref.SoftReference; import java.lang.ref.SoftReference;
import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
@ -213,10 +214,12 @@ public final class DateUtils {
*/ */
final static class DateFormatHolder { final static class DateFormatHolder {
private static final ThreadLocal THREADLOCAL_FORMATS = new ThreadLocal() { private static final ThreadLocal<SoftReference<Map<String, DateFormat>>>
THREADLOCAL_FORMATS = new ThreadLocal<SoftReference<Map<String, DateFormat>>>() {
protected Object initialValue() { protected SoftReference<Map<String, DateFormat>> initialValue() {
return new SoftReference(new HashMap()); return new SoftReference<Map<String, DateFormat>>(
new HashMap<String, DateFormat>());
} }
}; };
@ -234,11 +237,11 @@ public final class DateUtils {
* different pattern. * different pattern.
*/ */
public static SimpleDateFormat formatFor(String pattern) { public static SimpleDateFormat formatFor(String pattern) {
SoftReference ref = (SoftReference) THREADLOCAL_FORMATS.get(); SoftReference<Map<String, DateFormat>> ref = THREADLOCAL_FORMATS.get();
Map formats = (Map) ref.get(); Map<String, DateFormat> formats = ref.get();
if (formats == null) { if (formats == null) {
formats = new HashMap(); formats = new HashMap<String, DateFormat>();
THREADLOCAL_FORMATS.set(new SoftReference(formats)); THREADLOCAL_FORMATS.set(new SoftReference<Map<String, DateFormat>>(formats));
} }
SimpleDateFormat format = (SimpleDateFormat) formats.get(pattern); SimpleDateFormat format = (SimpleDateFormat) formats.get(pattern);