Skip to content

Commit 6f8bfd5

Browse files
Guido Medinacowtowncoder
Guido Medina
authored andcommitted
Cache formatter with offset parsed.
1 parent bd09cb6 commit 6f8bfd5

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/main/java/com/fasterxml/jackson/datatype/joda/cfg/JacksonJodaDateFormat.java

+15-7
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public class JacksonJodaDateFormat extends JacksonJodaFormatBase
2323

2424
protected final DateTimeFormatter _formatter;
2525

26+
protected final DateTimeFormatter _formatterWithOffsetParsed;
27+
2628
protected final TimeZone _jdkTimezone;
2729

2830
protected transient DateTimeZone _jodaTimezone;
@@ -47,6 +49,7 @@ public JacksonJodaDateFormat(DateTimeFormatter defaultFormatter)
4749
{
4850
super();
4951
_formatter = defaultFormatter;
52+
_formatterWithOffsetParsed = _formatter.withOffsetParsed();
5053
DateTimeZone tz = defaultFormatter.getZone();
5154
_jdkTimezone = (tz == null) ? null : tz.toTimeZone();
5255
_explicitTimezone = false;
@@ -59,6 +62,7 @@ public JacksonJodaDateFormat(JacksonJodaDateFormat base,
5962
{
6063
super(base, useTimestamp);
6164
_formatter = base._formatter;
65+
_formatterWithOffsetParsed = _formatter.withOffsetParsed();
6266
_jdkTimezone = base._jdkTimezone;
6367
_explicitTimezone = base._explicitTimezone;
6468
_adjustToContextTZOverride = base._adjustToContextTZOverride;
@@ -70,6 +74,7 @@ public JacksonJodaDateFormat(JacksonJodaDateFormat base,
7074
{
7175
super(base);
7276
_formatter = formatter;
77+
_formatterWithOffsetParsed = _formatter.withOffsetParsed();
7378
_jdkTimezone = base._jdkTimezone;
7479
_explicitTimezone = base._explicitTimezone;
7580
_adjustToContextTZOverride = base._adjustToContextTZOverride;
@@ -80,6 +85,7 @@ public JacksonJodaDateFormat(JacksonJodaDateFormat base, TimeZone jdkTimezone)
8085
{
8186
super(base, jdkTimezone);
8287
_formatter = base._formatter.withZone(DateTimeZone.forTimeZone(jdkTimezone));
88+
_formatterWithOffsetParsed = _formatter.withOffsetParsed();
8389
_jdkTimezone = jdkTimezone;
8490
_explicitTimezone = true;
8591
_adjustToContextTZOverride = base._adjustToContextTZOverride;
@@ -90,6 +96,7 @@ public JacksonJodaDateFormat(JacksonJodaDateFormat base, Locale locale)
9096
{
9197
super(base, locale);
9298
_formatter = base._formatter.withLocale(locale);
99+
_formatterWithOffsetParsed = _formatter.withOffsetParsed();
93100
_jdkTimezone = base._jdkTimezone;
94101
_explicitTimezone = base._explicitTimezone;
95102
_adjustToContextTZOverride = base._adjustToContextTZOverride;
@@ -104,6 +111,7 @@ protected JacksonJodaDateFormat(JacksonJodaDateFormat base,
104111
{
105112
super(base);
106113
_formatter = base._formatter;
114+
_formatterWithOffsetParsed = _formatter.withOffsetParsed();
107115
_jdkTimezone = base._jdkTimezone;
108116
_explicitTimezone = base._explicitTimezone;
109117
_adjustToContextTZOverride = adjustToContextTZOverride;
@@ -255,20 +263,20 @@ public DateTimeFormatter createFormatterWithLocale(SerializerProvider ctxt)
255263
public DateTimeFormatter createParser(DeserializationContext ctxt)
256264
{
257265
DateTimeFormatter formatter = _formatter;
258-
if (!_explicitLocale) {
259-
Locale loc = ctxt.getLocale();
260-
if (loc != null && !loc.equals(_locale)) {
261-
formatter = formatter.withLocale(loc);
262-
}
263-
}
264266
if (!_explicitTimezone) {
265267
if (shouldAdjustToContextTimeZone(ctxt)) {
266268
TimeZone tz = ctxt.getTimeZone();
267269
if (tz != null && !tz.equals(_jdkTimezone)) {
268270
formatter = formatter.withZone(DateTimeZone.forTimeZone(tz));
269271
}
270272
} else {
271-
formatter = formatter.withOffsetParsed();
273+
formatter = _formatterWithOffsetParsed;
274+
}
275+
}
276+
if (!_explicitLocale) {
277+
Locale loc = ctxt.getLocale();
278+
if (loc != null && !loc.equals(_locale)) {
279+
formatter = formatter.withLocale(loc);
272280
}
273281
}
274282
return formatter;

0 commit comments

Comments
 (0)