diff --git a/pom.xml b/pom.xml index aa50f8f8..9f8de03f 100644 --- a/pom.xml +++ b/pom.xml @@ -61,17 +61,17 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core - 2.15.4 + 3.0.3 jar compile false - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - 2.15.4 + 3.0.3 jar compile false @@ -79,7 +79,7 @@ com.fasterxml.jackson.core jackson-annotations - 2.15.4 + 2.20 jar compile false diff --git a/src/main/java/io/fusionauth/jwks/JSONWebKeySetHelper.java b/src/main/java/io/fusionauth/jwks/JSONWebKeySetHelper.java index df6bb77f..fc8e4c7e 100644 --- a/src/main/java/io/fusionauth/jwks/JSONWebKeySetHelper.java +++ b/src/main/java/io/fusionauth/jwks/JSONWebKeySetHelper.java @@ -16,7 +16,7 @@ package io.fusionauth.jwks; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import io.fusionauth.http.AbstractHttpHelper; import io.fusionauth.jwks.domain.JSONWebKey; import io.fusionauth.jwt.json.Mapper; diff --git a/src/main/java/io/fusionauth/jwt/domain/JWT.java b/src/main/java/io/fusionauth/jwt/domain/JWT.java index f315af7b..e7322d86 100644 --- a/src/main/java/io/fusionauth/jwt/domain/JWT.java +++ b/src/main/java/io/fusionauth/jwt/domain/JWT.java @@ -20,8 +20,8 @@ import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import io.fusionauth.jwt.JWTDecoder; import io.fusionauth.jwt.JWTEncoder; import io.fusionauth.jwt.TimeMachineJWTDecoder; diff --git a/src/main/java/io/fusionauth/jwt/json/JacksonModule.java b/src/main/java/io/fusionauth/jwt/json/JacksonModule.java index f05db486..2bbd3f77 100644 --- a/src/main/java/io/fusionauth/jwt/json/JacksonModule.java +++ b/src/main/java/io/fusionauth/jwt/json/JacksonModule.java @@ -16,7 +16,7 @@ package io.fusionauth.jwt.json; -import com.fasterxml.jackson.databind.module.SimpleModule; +import tools.jackson.databind.module.SimpleModule; import java.time.ZonedDateTime; diff --git a/src/main/java/io/fusionauth/jwt/json/Mapper.java b/src/main/java/io/fusionauth/jwt/json/Mapper.java index 483966f1..481aa238 100644 --- a/src/main/java/io/fusionauth/jwt/json/Mapper.java +++ b/src/main/java/io/fusionauth/jwt/json/Mapper.java @@ -17,10 +17,11 @@ package io.fusionauth.jwt.json; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; import io.fusionauth.jwt.InvalidJWTException; import java.io.IOException; @@ -32,12 +33,17 @@ * @author Daniel DeGroff */ public class Mapper { - private final static ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private final static ObjectMapper OBJECT_MAPPER = JsonMapper.builder() + .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL)) + .configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS, true) + .configure(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS, true) + .addModule(new JacksonModule()) + .build(); public static T deserialize(byte[] bytes, Class type) throws InvalidJWTException { try { return OBJECT_MAPPER.readValue(bytes, type); - } catch (IOException e) { + } catch (JacksonException e) { throw new InvalidJWTException("The JWT could not be de-serialized.", e); } } @@ -45,7 +51,7 @@ public static T deserialize(byte[] bytes, Class type) throws InvalidJWTEx public static T deserialize(InputStream is, Class type) throws InvalidJWTException { try { return OBJECT_MAPPER.readValue(is, type); - } catch (IOException e) { + } catch (JacksonException e) { throw new InvalidJWTException("The input stream could not be de-serialized.", e); } } @@ -53,7 +59,7 @@ public static T deserialize(InputStream is, Class type) throws InvalidJWT public static byte[] prettyPrint(Object object) throws InvalidJWTException { try { return OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsBytes(object); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new InvalidJWTException("The object could not be serialized.", e); } } @@ -61,16 +67,8 @@ public static byte[] prettyPrint(Object object) throws InvalidJWTException { public static byte[] serialize(Object object) throws InvalidJWTException { try { return OBJECT_MAPPER.writeValueAsBytes(object); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new InvalidJWTException("The JWT could not be serialized.", e); } } - - static { - OBJECT_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL) - .configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false) - .configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS, true) - .configure(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS, true) - .registerModule(new JacksonModule()); - } } diff --git a/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeDeserializer.java b/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeDeserializer.java index cc253b5c..dc9dba43 100644 --- a/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeDeserializer.java +++ b/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeDeserializer.java @@ -16,10 +16,10 @@ package io.fusionauth.jwt.json; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.deser.std.StdScalarDeserializer; import java.io.IOException; import java.time.Instant; @@ -37,8 +37,8 @@ public ZonedDateTimeDeserializer() { } @Override - public ZonedDateTime deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { - JsonToken t = jp.getCurrentToken(); + public ZonedDateTime deserialize(JsonParser jp, DeserializationContext ctxt) { + JsonToken t = jp.currentToken(); long value; if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) { value = jp.getLongValue(); @@ -51,10 +51,10 @@ public ZonedDateTime deserialize(JsonParser jp, DeserializationContext ctxt) thr try { value = Long.parseLong(str); } catch (NumberFormatException e) { - throw ctxt.mappingException(handledType()); + return null; } } else { - throw ctxt.mappingException(handledType()); + return null; } return Instant.ofEpochSecond(value).atZone(ZoneOffset.UTC); diff --git a/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeSerializer.java b/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeSerializer.java index 72ba8750..6f136812 100644 --- a/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeSerializer.java +++ b/src/main/java/io/fusionauth/jwt/json/ZonedDateTimeSerializer.java @@ -16,9 +16,9 @@ package io.fusionauth.jwt.json; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdScalarSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ser.std.StdScalarSerializer; import java.io.IOException; import java.time.ZonedDateTime; @@ -34,7 +34,7 @@ public ZonedDateTimeSerializer() { } @Override - public void serialize(ZonedDateTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException { + public void serialize(ZonedDateTime value, JsonGenerator jgen, SerializationContext provider) { if (value == null) { jgen.writeNull(); } else { diff --git a/src/main/java9/module-info.java b/src/main/java9/module-info.java index b9030cba..d40e0bb3 100644 --- a/src/main/java9/module-info.java +++ b/src/main/java9/module-info.java @@ -13,6 +13,6 @@ exports io.fusionauth.security; requires com.fasterxml.jackson.annotation; - requires com.fasterxml.jackson.core; - requires com.fasterxml.jackson.databind; + requires tools.jackson.core; + requires tools.jackson.databind; } \ No newline at end of file