From 668a772c8c54fa9e13e3c503ccebe67089650074 Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Sat, 12 Apr 2025 12:08:32 +0200 Subject: [PATCH] deps: update jackson to 3.0.0-rc2 --- CHANGELOG.md | 5 ++- pom.xml | 10 +++--- .../connector/internal/RequestHelper.java | 31 ++++++++++--------- .../model/response/SecretResponse.java | 19 ++++++------ src/main/java/module-info.java | 10 +++--- 5 files changed, 41 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8d6ffd..8fb8ae6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## unreleased +### Breaking +* Requires Java 17 or later + ### Deprecations * `read...Credentials()` methods for specific database mounts (#92) @@ -14,7 +17,7 @@ * Fix initialization from environment without explicit port ### Dependencies -* Updated Jackson to 2.18.3 (#90) +* Updated Jackson to 3.0.0 ### Test * Tested against Vault 1.2 to 1.19 diff --git a/pom.xml b/pom.xml index 4b3964f..2c863c0 100644 --- a/pom.xml +++ b/pom.xml @@ -47,14 +47,14 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - 2.18.3 + 3.0.0-rc2 - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-jsr310 - 2.18.3 + 3.0.0-rc2 @@ -129,7 +129,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 1b4df5c..96f5176 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,14 @@ package de.stklcode.jvault.connector.internal; -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 com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; + import de.stklcode.jvault.connector.exception.*; import de.stklcode.jvault.connector.model.response.ErrorResponse; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.jsr310.JavaTimeModule; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; @@ -65,10 +67,11 @@ public final class RequestHelper implements Serializable { this.timeout = timeout; this.tlsVersion = tlsVersion; this.trustedCaCert = trustedCaCert; - this.jsonMapper = new ObjectMapper() - .registerModule(new JavaTimeModule()) + this.jsonMapper = JsonMapper.builder() + .addModule(new JavaTimeModule()) .enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); + .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE) + .build(); } /** @@ -88,7 +91,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); } @@ -119,7 +122,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); } } @@ -158,7 +161,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); } @@ -189,7 +192,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); } } @@ -301,7 +304,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); } } @@ -442,7 +445,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 705b953..9a8535d 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,14 @@ package de.stklcode.jvault.connector.model.response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -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.DeserializationFeature; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.jsr310.JavaTimeModule; -import java.io.IOException; import java.io.Serializable; import java.util.Map; @@ -85,10 +85,11 @@ public abstract class SecretResponse extends VaultDataResponse { } else if (type.isInstance(rawValue)) { return type.cast(rawValue); } else { - var om = new ObjectMapper() - .registerModule(new JavaTimeModule()) + var om = JsonMapper.builder() + .addModule(new JavaTimeModule()) .enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); + .disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE) + .build(); if (rawValue instanceof String) { return om.readValue((String) rawValue, type); @@ -96,7 +97,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..f233abf 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -26,12 +26,12 @@ 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; + requires tools.jackson.datatype.javatime; }