From 627b99005a6ba5bfc7bb3350bd695a2b320817d7 Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Mon, 12 May 2025 18:28:30 +0200 Subject: [PATCH] deps: update jackson to 3.0.0-rc4 Migrate packages from com.fasterxml.jackson to tools.jackson, adjust exception handling and remove JSR310 module and replace with new JavaTimeFeature flags. --- CHANGELOG.md | 7 ++--- pom.xml | 11 +++----- .../connector/internal/RequestHelper.java | 26 +++++++++---------- .../model/response/SecretResponse.java | 15 +++++------ src/main/java/module-info.java | 9 +++---- 5 files changed, 29 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7d77bc..357851f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ### Breaking * Requires Java 17 or later +* Required Jackson 3 + +### Dependencies +* Updated Jackson to 3.0.0 ## 1.5.0 (2025-04-13) @@ -19,9 +23,6 @@ ### Fix * Fix initialization from environment without explicit port -### Dependencies -* Updated Jackson to 2.18.3 (#90) - ### Test * Tested against Vault 1.2 to 1.19 diff --git a/pom.xml b/pom.xml index d0e1b45..21a2da4 100644 --- a/pom.xml +++ b/pom.xml @@ -48,14 +48,9 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - 2.19.0 - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - 2.19.0 + 3.0.0-rc4 @@ -130,7 +125,7 @@ @{argLine} - --add-opens de.stklcode.jvault.connector/de.stklcode.jvault.connector.test=com.fasterxml.jackson.databind + --add-opens de.stklcode.jvault.connector/de.stklcode.jvault.connector.test=tools.jackson.databind diff --git a/src/main/java/de/stklcode/jvault/connector/internal/RequestHelper.java b/src/main/java/de/stklcode/jvault/connector/internal/RequestHelper.java index b49942a..c7081a1 100644 --- a/src/main/java/de/stklcode/jvault/connector/internal/RequestHelper.java +++ b/src/main/java/de/stklcode/jvault/connector/internal/RequestHelper.java @@ -1,12 +1,11 @@ package de.stklcode.jvault.connector.internal; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import tools.jackson.core.JacksonException; + import de.stklcode.jvault.connector.exception.*; import de.stklcode.jvault.connector.model.response.ErrorResponse; +import tools.jackson.databind.cfg.DateTimeFeature; +import tools.jackson.databind.json.JsonMapper; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; @@ -66,9 +65,8 @@ public final class RequestHelper implements Serializable { this.tlsVersion = tlsVersion; this.trustedCaCert = trustedCaCert; this.jsonMapper = JsonMapper.builder() - .addModule(new JavaTimeModule()) - .enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE) + .enable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS) + .disable(DateTimeFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE) .build(); } @@ -89,7 +87,7 @@ public final class RequestHelper implements Serializable { // Generate JSON from payload. try { req.POST(HttpRequest.BodyPublishers.ofString(jsonMapper.writeValueAsString(payload), UTF_8)); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new InvalidRequestException(Error.PARSE_RESPONSE, e); } @@ -120,7 +118,7 @@ public final class RequestHelper implements Serializable { try { String response = post(path, payload, token); return jsonMapper.readValue(response, target); - } catch (IOException e) { + } catch (JacksonException e) { throw new InvalidResponseException(Error.PARSE_RESPONSE, e); } } @@ -159,7 +157,7 @@ public final class RequestHelper implements Serializable { // Generate JSON from payload. try { req.PUT(HttpRequest.BodyPublishers.ofString(jsonMapper.writeValueAsString(payload), UTF_8)); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new InvalidRequestException("Payload serialization failed", e); } @@ -190,7 +188,7 @@ public final class RequestHelper implements Serializable { try { String response = put(path, payload, token); return jsonMapper.readValue(response, target); - } catch (IOException e) { + } catch (JacksonException e) { throw new InvalidResponseException(Error.PARSE_RESPONSE, e); } } @@ -302,7 +300,7 @@ public final class RequestHelper implements Serializable { try { String response = get(path, payload, token); return jsonMapper.readValue(response, target); - } catch (IOException e) { + } catch (JacksonException e) { throw new InvalidResponseException(Error.PARSE_RESPONSE, e); } } @@ -443,7 +441,7 @@ public final class RequestHelper implements Serializable { throw new InvalidResponseException(Error.RESPONSE_CODE, response.statusCode(), er.toString()); } } - } catch (IOException ignored) { + } catch (IOException | JacksonException ignored) { // Exception ignored. } } diff --git a/src/main/java/de/stklcode/jvault/connector/model/response/SecretResponse.java b/src/main/java/de/stklcode/jvault/connector/model/response/SecretResponse.java index b21bb92..9e074a9 100644 --- a/src/main/java/de/stklcode/jvault/connector/model/response/SecretResponse.java +++ b/src/main/java/de/stklcode/jvault/connector/model/response/SecretResponse.java @@ -17,14 +17,12 @@ package de.stklcode.jvault.connector.model.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import de.stklcode.jvault.connector.exception.InvalidResponseException; import de.stklcode.jvault.connector.model.response.embedded.VersionMetadata; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.cfg.DateTimeFeature; +import tools.jackson.databind.json.JsonMapper; -import java.io.IOException; import java.io.Serializable; import java.util.Map; @@ -86,9 +84,8 @@ public abstract class SecretResponse extends VaultDataResponse { return type.cast(rawValue); } else { var om = JsonMapper.builder() - .addModule(new JavaTimeModule()) - .enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE) + .enable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS) + .disable(DateTimeFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE) .build(); if (rawValue instanceof String) { @@ -97,7 +94,7 @@ public abstract class SecretResponse extends VaultDataResponse { return om.readValue(om.writeValueAsString(rawValue), type); } } - } catch (IOException e) { + } catch (JacksonException e) { throw new InvalidResponseException("Unable to parse response payload: " + e.getMessage()); } } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index cd2c31e..34fb1e4 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -26,12 +26,11 @@ module de.stklcode.jvault.connector { exports de.stklcode.jvault.connector.model.response; exports de.stklcode.jvault.connector.model.response.embedded; - opens de.stklcode.jvault.connector.model to com.fasterxml.jackson.databind; - opens de.stklcode.jvault.connector.model.response to com.fasterxml.jackson.databind; - opens de.stklcode.jvault.connector.model.response.embedded to com.fasterxml.jackson.databind; + opens de.stklcode.jvault.connector.model to tools.jackson.databind; + opens de.stklcode.jvault.connector.model.response to tools.jackson.databind; + opens de.stklcode.jvault.connector.model.response.embedded to tools.jackson.databind; requires java.net.http; requires com.fasterxml.jackson.annotation; - requires com.fasterxml.jackson.databind; - requires com.fasterxml.jackson.datatype.jsr310; + requires tools.jackson.databind; }