From 4ee8e079c90ecfb7aa39643b569adc8c074fda51 Mon Sep 17 00:00:00 2001 From: zsxwing Date: Fri, 30 May 2014 11:45:28 +0800 Subject: [PATCH] Put ISO8601_FORMAT into ThreadLocal to fix the concurrency issue --- .../com/google/refine/util/ParsingUtilities.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/main/src/com/google/refine/util/ParsingUtilities.java b/main/src/com/google/refine/util/ParsingUtilities.java index 1843c12ee..1be4535d6 100644 --- a/main/src/com/google/refine/util/ParsingUtilities.java +++ b/main/src/com/google/refine/util/ParsingUtilities.java @@ -54,7 +54,14 @@ import org.json.JSONTokener; public class ParsingUtilities { - static final public SimpleDateFormat ISO8601_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + static final private ThreadLocal ISO8601_FORMAT = new ThreadLocal() { + + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + } + + }; static public Properties parseUrlParameters(HttpServletRequest request) { Properties options = new Properties(); @@ -167,7 +174,7 @@ public class ParsingUtilities { * @return string with ISO 8601 formatted date & time */ static public String dateToString(Date d) { - return ISO8601_FORMAT.format(d); + return ISO8601_FORMAT.get().format(d); } /** @@ -178,7 +185,7 @@ public class ParsingUtilities { */ static public Date stringToDate(String s) { try { - return ISO8601_FORMAT.parse(s); + return ISO8601_FORMAT.get().parse(s); } catch (ParseException e) { return null; }