Skip to content

Commit 3673f76

Browse files
♻️ add explicit jackson deserializers to match existing syntax + extract date deserializer from Job (#203)
1 parent 4d11d41 commit 3673f76

File tree

3 files changed

+43
-29
lines changed

3 files changed

+43
-29
lines changed

src/main/java/com/mindee/parsing/common/InferenceExtras.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
/**
99
* Inference-level optional info.
1010
*/
11+
@Setter
1112
@Getter
1213
@EqualsAndHashCode
1314
@JsonIgnoreProperties(ignoreUnknown = true)
1415
public class InferenceExtras {
1516
/**
1617
* Full Text OCR result.
1718
*/
18-
@Setter
1919
private String fullTextOcr;
2020
}

src/main/java/com/mindee/parsing/common/Job.java

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class Job {
3838
/**
3939
* Identifier for the job
4040
*/
41+
@JsonProperty("id")
4142
private String id;
4243

4344
/**
@@ -50,39 +51,12 @@ public class Job {
5051
/**
5152
* Job Status
5253
*/
54+
@JsonProperty("status")
5355
private String status;
5456

5557
/**
5658
* Information about an error that occurred during the job processing.
5759
*/
5860
@JsonProperty("error")
5961
private Error error;
60-
61-
/**
62-
* Private Deserializer for LocalDateTime
63-
*/
64-
private static class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
65-
66-
@Override
67-
public LocalDateTime deserialize(JsonParser jsonParser,
68-
DeserializationContext deserializationContext) throws IOException {
69-
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
70-
.parseCaseInsensitive()
71-
.append(DateTimeFormatter.ISO_LOCAL_DATE)
72-
.appendLiteral('T')
73-
.append(DateTimeFormatter.ISO_LOCAL_TIME)
74-
.optionalStart()
75-
.appendOffsetId()
76-
.toFormatter();
77-
String dateString = jsonParser.getValueAsString();
78-
TemporalAccessor temporalAccessor = formatter.parseBest(dateString, ZonedDateTime::from,
79-
LocalDateTime::from);
80-
if (temporalAccessor instanceof ZonedDateTime) {
81-
return ((ZonedDateTime) temporalAccessor).withZoneSameInstant(ZoneOffset.UTC)
82-
.toLocalDateTime();
83-
} else {
84-
return ((LocalDateTime) temporalAccessor);
85-
}
86-
}
87-
}
8862
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.mindee.parsing.common;
2+
3+
import com.fasterxml.jackson.core.JsonParser;
4+
import com.fasterxml.jackson.databind.DeserializationContext;
5+
import com.fasterxml.jackson.databind.JsonDeserializer;
6+
import java.io.IOException;
7+
import java.time.LocalDateTime;
8+
import java.time.ZoneOffset;
9+
import java.time.ZonedDateTime;
10+
import java.time.format.DateTimeFormatter;
11+
import java.time.format.DateTimeFormatterBuilder;
12+
import java.time.temporal.TemporalAccessor;
13+
14+
/**
15+
* Deserializer for LocalDateTime
16+
*/
17+
class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
18+
@Override
19+
public LocalDateTime deserialize(
20+
JsonParser jsonParser,
21+
DeserializationContext deserializationContext) throws IOException {
22+
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
23+
.parseCaseInsensitive()
24+
.append(DateTimeFormatter.ISO_LOCAL_DATE)
25+
.appendLiteral('T')
26+
.append(DateTimeFormatter.ISO_LOCAL_TIME)
27+
.optionalStart()
28+
.appendOffsetId()
29+
.toFormatter();
30+
String dateString = jsonParser.getValueAsString();
31+
TemporalAccessor temporalAccessor = formatter.parseBest(dateString, ZonedDateTime::from,
32+
LocalDateTime::from);
33+
if (temporalAccessor instanceof ZonedDateTime) {
34+
return ((ZonedDateTime) temporalAccessor).withZoneSameInstant(ZoneOffset.UTC)
35+
.toLocalDateTime();
36+
} else {
37+
return ((LocalDateTime) temporalAccessor);
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)