Skip to content

Commit 613ee4f

Browse files
authored
Fail deserialization into LocalDateTime of datetime with timezone (#192)
1 parent 14b73b6 commit 613ee4f

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed

datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/LocalDateTimeDeserializer.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818

1919
import java.io.IOException;
2020
import java.time.DateTimeException;
21-
import java.time.Instant;
2221
import java.time.LocalDateTime;
23-
import java.time.ZoneOffset;
2422
import java.time.format.DateTimeFormatter;
2523

2624
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -150,15 +148,6 @@ protected LocalDateTime _fromString(JsonParser p, DeserializationContext ctxt,
150148
}
151149
final DateTimeFormatter format = _formatter;
152150
try {
153-
if (format == DEFAULT_FORMATTER) {
154-
// JavaScript by default includes time and zone in JSON serialized Dates (UTC/ISO instant format).
155-
if (string.length() > 10 && string.charAt(10) == 'T') {
156-
if (string.endsWith("Z")) {
157-
return LocalDateTime.ofInstant(Instant.parse(string), ZoneOffset.UTC);
158-
}
159-
return LocalDateTime.parse(string, DEFAULT_FORMATTER);
160-
}
161-
}
162151
return LocalDateTime.parse(string, format);
163152
} catch (DateTimeException e) {
164153
return _handleDateTimeFormatException(ctxt, e, format, string);

datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/deser/LocalDateTimeDeserTest.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.time.Instant;
2121
import java.time.LocalDateTime;
2222
import java.time.Month;
23-
import java.time.ZoneOffset;
2423
import java.time.format.DateTimeParseException;
2524
import java.time.temporal.Temporal;
2625
import java.util.Calendar;
@@ -169,11 +168,16 @@ public void testDeserializationAsString03() throws Exception
169168
}
170169

171170
@Test
172-
public void testDeserializationAsString04() throws Exception
171+
public void testBadDeserializationOfTimeWithTimeZone() throws Exception
173172
{
174-
Instant instant = Instant.now();
175-
LocalDateTime value = MAPPER.readValue('"' + instant.toString() + '"', LocalDateTime.class);
176-
assertEquals("The value is not correct.", LocalDateTime.ofInstant(instant, ZoneOffset.UTC), value);
173+
try {
174+
Instant instant = Instant.now();
175+
MAPPER.readValue('"' + instant.toString() + '"', LocalDateTime.class);
176+
fail("expected fail");
177+
} catch (InvalidFormatException e) {
178+
verifyException(e, "Cannot deserialize value of type");
179+
verifyException(e, "from String \"");
180+
}
177181
}
178182

179183
@Test

0 commit comments

Comments
 (0)