Merge branch 'stable-2.12' into stable-2.13
* stable-2.12:
Make SimpleDateFormat thread safe
Change-Id: I9c9096d58d876cd0270ecb481278e9f8f1abfe03
diff --git a/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLQueryMaker.java b/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLQueryMaker.java
index aadf455..5423a50 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLQueryMaker.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/eventslog/sql/SQLQueryMaker.java
@@ -31,16 +31,27 @@
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
+import java.util.function.Supplier;
@Singleton
class SQLQueryMaker implements QueryMaker {
private static final int TWO = 2;
private static final String TIME_ONE = "t1";
private static final String TIME_TWO = "t2";
- private static final DateFormat DATE_TIME_FORMAT = new SimpleDateFormat(
- "yyyy-MM-dd HH:mm:ss");
- private static final DateFormat DATE_ONLY_FORMAT = new SimpleDateFormat(
- "yyyy-MM-dd");
+ private static final ThreadLocal<DateFormat> DATE_TIME_FORMAT =
+ ThreadLocal.withInitial(new Supplier<DateFormat>() {
+ @Override
+ public DateFormat get() {
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ }
+ });
+ private static final ThreadLocal<DateFormat> DATE_ONLY_FORMAT =
+ ThreadLocal.withInitial(new Supplier<DateFormat>() {
+ @Override
+ public DateFormat get() {
+ return new SimpleDateFormat("yyyy-MM-dd");
+ }
+ });
private final int returnLimit;
@@ -63,8 +74,8 @@
}
return String.format(
"SELECT * FROM %s WHERE %s BETWEEN '%s' and '%s' LIMIT %d", TABLE_NAME,
- DATE_ENTRY, DATE_TIME_FORMAT.format(dates[0]),
- DATE_TIME_FORMAT.format(dates[1]), returnLimit);
+ DATE_ENTRY, DATE_TIME_FORMAT.get().format(dates[0]),
+ DATE_TIME_FORMAT.get().format(dates[1]), returnLimit);
}
@Override
@@ -92,9 +103,9 @@
private Date parseDate(String date) throws ParseException {
Date parsedDate;
try {
- parsedDate = DATE_TIME_FORMAT.parse(date);
+ parsedDate = DATE_TIME_FORMAT.get().parse(date);
} catch (ParseException e) {
- parsedDate = DATE_ONLY_FORMAT.parse(date);
+ parsedDate = DATE_ONLY_FORMAT.get().parse(date);
}
return parsedDate;
}