Skip to content

Commit 5b644e4

Browse files
authored
Merge pull request #292 from crowdin/fix-date-field-parse
fix: unusual date format in response
2 parents 96e6f05 + a3f8016 commit 5b644e4

File tree

4 files changed

+35
-2
lines changed

4 files changed

+35
-2
lines changed

src/main/java/com/crowdin/client/applications/installations/model/ApplicationInstallation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class ApplicationInstallation {
1717
private Module[] modules;
1818
private String[] scopes;
1919
private Permissions permissions;
20-
private DefaultPermissions defaultPermissions;
20+
private Object defaultPermissions;
2121
private boolean limitReached;
2222

2323
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.crowdin.client.core.http.impl.json;
2+
3+
import com.fasterxml.jackson.core.JsonParser;
4+
import com.fasterxml.jackson.databind.DeserializationContext;
5+
import com.fasterxml.jackson.databind.JsonDeserializer;
6+
import lombok.SneakyThrows;
7+
8+
import java.io.IOException;
9+
import java.text.SimpleDateFormat;
10+
import java.util.Date;
11+
12+
public class DateDeserializer extends JsonDeserializer<Date> {
13+
14+
@Override
15+
@SneakyThrows
16+
public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
17+
String date = p.getText();
18+
if (date == null || date.isEmpty()) {
19+
return null;
20+
}
21+
22+
try {
23+
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
24+
return format.parse(date);
25+
} catch (Exception e) {
26+
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
27+
return format.parse(date);
28+
}
29+
}
30+
}

src/main/java/com/crowdin/client/core/http/impl/json/JacksonJsonTransformer.java

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import com.fasterxml.jackson.databind.util.StdDateFormat;
2121
import lombok.SneakyThrows;
2222

23+
import java.util.Date;
24+
2325
public class JacksonJsonTransformer implements JsonTransformer {
2426

2527
private final ObjectMapper objectMapper;
@@ -32,6 +34,7 @@ public JacksonJsonTransformer() {
3234
.addDeserializer(Enum.class, new EnumDeserializer());
3335

3436
SimpleModule module = new SimpleModule()
37+
.addDeserializer(Date.class, new DateDeserializer())
3538
.addSerializer(Enum.class, new EnumSerializer())
3639
.addDeserializer(Enum.class, new EnumDeserializer())
3740
.addDeserializer(CrowdinApiException.class, new CrowdinApiExceptionDeserializer(cleanObjectMapper))

src/test/resources/api/applications/installApplicationList.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"logo": "/resources/images/logo.png",
99
"baseUrl": "https://localhost.dev",
1010
"manifestUrl": "https://localhost.dev",
11-
"createdAt": "2019-09-20T11:34:40+00:00",
11+
"createdAt": "2024-03-19 11:48:24",
1212
"modules": [
1313
{
1414
"key": "example-application",

0 commit comments

Comments
 (0)