Skip to content

Commit f62449c

Browse files
Merge pull request #4 from xenit-eu/java-8-datetime
Jackson Mapper should accept java-8 date/time values
2 parents bac7cf2 + ce2d6c6 commit f62449c

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

opa-async-java-client/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ dependencies {
99
api project(":rego-java")
1010

1111
api "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"
12+
api "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${jacksonVersion}"
1213

1314
compileOnly "org.projectlombok:lombok:${lombokVersion}"
1415
annotationProcessor "org.projectlombok:lombok:${lombokVersion}"

opa-async-java-client/src/main/java/eu/xenit/contentcloud/opa/client/OpaClient.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package eu.xenit.contentcloud.opa.client;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
3+
import com.fasterxml.jackson.databind.DeserializationFeature;
4+
import com.fasterxml.jackson.databind.json.JsonMapper;
5+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
46
import eu.xenit.contentcloud.opa.client.api.CompileApi;
57
import eu.xenit.contentcloud.opa.client.api.DataApi;
6-
import eu.xenit.contentcloud.opa.client.api.QueryApi;
78
import eu.xenit.contentcloud.opa.client.api.PolicyApi;
9+
import eu.xenit.contentcloud.opa.client.api.QueryApi;
810
import eu.xenit.contentcloud.opa.client.impl.CompileComponent;
911
import eu.xenit.contentcloud.opa.client.impl.DataComponent;
1012
import eu.xenit.contentcloud.opa.client.impl.PolicyComponent;
@@ -48,7 +50,7 @@ public CompletableFuture<PartialEvalResponse> compile(PartialEvaluationRequest r
4850

4951
@Override
5052
public CompletableFuture<ListPoliciesResponse> listPolicies() {
51-
return this.policyComponent.listPolicies();
53+
return this.policyComponent.listPolicies();
5254
}
5355

5456
@Override
@@ -97,8 +99,14 @@ public static class Builder {
9799
* The default rest-client
98100
*/
99101
private OpaHttpClient restClient = new DefaultOpaHttpClient(
100-
HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(5)).followRedirects(Redirect.NORMAL).build(),
101-
new ObjectMapper());
102+
HttpClient.newBuilder()
103+
.connectTimeout(Duration.ofSeconds(5))
104+
.followRedirects(Redirect.NORMAL)
105+
.build(),
106+
JsonMapper.builder()
107+
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
108+
.build()
109+
.registerModule(new JavaTimeModule()));
102110

103111
private Consumer<LogSpecification> httpLogSpec = LogSpecification::verbose;
104112

opa-async-java-client/src/main/java/eu/xenit/contentcloud/opa/client/rest/client/jdk/DefaultOpaHttpClient.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import eu.xenit.contentcloud.opa.client.rest.OpaHttpClient;
55
import eu.xenit.contentcloud.opa.client.rest.RestClientConfiguration;
6+
import eu.xenit.contentcloud.opa.client.rest.client.jdk.converter.ConverterProcessor;
67
import eu.xenit.contentcloud.opa.client.rest.client.jdk.converter.HttpBodyConverter.DeserializationContext;
78
import eu.xenit.contentcloud.opa.client.rest.client.jdk.converter.HttpBodyConverter.SerializationContext;
8-
import eu.xenit.contentcloud.opa.client.rest.client.jdk.converter.ConverterProcessor;
99
import eu.xenit.contentcloud.opa.client.rest.client.jdk.converter.JacksonBodyConverter;
1010
import eu.xenit.contentcloud.opa.client.rest.client.jdk.converter.StringConverter;
1111
import eu.xenit.contentcloud.opa.client.rest.http.HttpMethod;
@@ -27,7 +27,6 @@
2727
public class DefaultOpaHttpClient implements OpaHttpClient {
2828

2929
private final HttpClient httpClient;
30-
private final ObjectMapper objectMapper;
3130
private final ConverterProcessor converterProcessor;
3231

3332
private URI baseUrl;
@@ -42,11 +41,10 @@ public class DefaultOpaHttpClient implements OpaHttpClient {
4241

4342
public DefaultOpaHttpClient(HttpClient httpClient, ObjectMapper objectMapper) {
4443
this.httpClient = httpClient;
45-
this.objectMapper = objectMapper;
4644

4745
this.converterProcessor = new ConverterProcessor(List.of(
4846
new StringConverter(),
49-
new JacksonBodyConverter()
47+
new JacksonBodyConverter(objectMapper)
5048
));
5149
}
5250

@@ -90,7 +88,6 @@ public void configure(Consumer<RestClientConfiguration> callback) {
9088
}
9189

9290

93-
9491
private <TRequest, TResponse> CompletableFuture<TResponse> execute(
9592
HttpMethod method, URI uri,
9693
Consumer<HttpRequestHeaders> headersCallback,
@@ -136,8 +133,6 @@ private <TRequest, TResponse> CompletableFuture<TResponse> execute(
136133
}
137134

138135

139-
140-
141136
private void handleStatusCode(HttpResponse<byte[]> response, Throwable exception) {
142137
if (response != null && response.statusCode() >= 400) {
143138
throw new HttpStatusException(response.statusCode());

0 commit comments

Comments
 (0)