From 2c4f4f7285046d3ecd0a861df31dec6105c98ad7 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Tue, 21 Dec 2021 17:12:33 -0500 Subject: [PATCH] added basic java.time support --- pom.xml | 5 +++++ src/main/java/com/inteligr8/rs/Client.java | 12 +++++++++++- .../com/inteligr8/rs/ClientConfiguration.java | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c957338..8ece6fd 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,11 @@ jackson-jaxrs-json-provider 2.12.2 + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.12.2 + org.slf4j slf4j-api diff --git a/src/main/java/com/inteligr8/rs/Client.java b/src/main/java/com/inteligr8/rs/Client.java index 5483c72..03d93d9 100644 --- a/src/main/java/com/inteligr8/rs/Client.java +++ b/src/main/java/com/inteligr8/rs/Client.java @@ -3,7 +3,10 @@ package com.inteligr8.rs; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; +import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; /** * A class that provides pre-configured JAX-RS Client & WebTarget objects. @@ -26,8 +29,15 @@ public abstract class Client { * @return A pre-configured JAX-RS client (no URL) with the specified authorization. */ public javax.ws.rs.client.Client getClient(AuthorizationFilter authFilter) { + JacksonJsonProvider provider = new JacksonJaxbJsonProvider(); + + if (this.getConfig().isWrapRootValueEnabled()) + provider.enable(SerializationFeature.WRAP_ROOT_VALUE); + if (this.getConfig().isUnwrapRootValueEnabled()) + provider.enable(DeserializationFeature.UNWRAP_ROOT_VALUE); + ClientBuilder clientBuilder = ClientBuilder.newBuilder() - .register(new JacksonJaxbJsonProvider()); + .register(provider); if (authFilter == null) authFilter = this.getConfig().createAuthorizationFilter(); diff --git a/src/main/java/com/inteligr8/rs/ClientConfiguration.java b/src/main/java/com/inteligr8/rs/ClientConfiguration.java index 5a02d5f..37f4e21 100644 --- a/src/main/java/com/inteligr8/rs/ClientConfiguration.java +++ b/src/main/java/com/inteligr8/rs/ClientConfiguration.java @@ -98,6 +98,24 @@ public interface ClientConfiguration { default String getOAuthPassword() { return null; } + + + + /** + * @return true to enable Jackson UNWRAP_ROOT_VALUE feature; false otherwise. + */ + default boolean isUnwrapRootValueEnabled() { + return false; + } + + /** + * @return true to enable Jackson WRAP_ROOT_VALUE feature; false otherwise. + */ + default boolean isWrapRootValueEnabled() { + return false; + } + + /** * This method creates an authorization filter based on the configuration