From f7f9924828bce383f5c39aab3c0d62daf27d96d3 Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Sun, 20 Jul 2025 15:40:46 +0200 Subject: [PATCH] deps: update jackson to 3.0.0 (#116) Migrate packages from com.fasterxml.jackson to tools.jackson, adjust exception handling and remove JSR310 module and replace with new JavaTimeFeature flags. --- CHANGELOG.md | 5 +++- pom.xml | 12 +++------ .../connector/internal/RequestHelper.java | 26 +++++++++---------- .../model/response/SecretResponse.java | 15 +++++------ src/main/java/module-info.java | 9 +++---- 5 files changed, 29 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba4be0c0..b95d2315 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Breaking * Requires Java 17 or later (#100) (#111) +* Required Jackson 3 * Modified interface structure ### Improvements @@ -9,10 +10,12 @@ Use `connector.sys()`, `.kv2()`, `.token()`, `.appRole()` and `.transit()` to access respective feature sets. - ### Removal * Remove deprecated `read...Credentials()` methods (#112) +### Dependencies +* Updated Jackson to 3.0.0 (#116) + ## 1.5.3 (2025-09-09) diff --git a/pom.xml b/pom.xml index 7fc26860..7b6937fa 100644 --- a/pom.xml +++ b/pom.xml @@ -47,14 +47,9 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - 2.20.0 - - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - 2.20.0 + 3.0.0 @@ -129,8 +124,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 96755039..b0456f12 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; @@ -67,9 +66,8 @@ public RequestHelper(final String baseURL, 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(); } @@ -90,7 +88,7 @@ public String post(final String path, final Object payload, final String token) // 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); } @@ -121,7 +119,7 @@ public T post(final String path, final Object payload, final String token, f 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); } } @@ -160,7 +158,7 @@ public String put(final String path, final Map payload, final St // 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); } @@ -191,7 +189,7 @@ public T put(final String path, final Map payload, final Str 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); } } @@ -303,7 +301,7 @@ public T get(final String path, final Map payload, final Str 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); } } @@ -455,7 +453,7 @@ private void handleError(final HttpResponse response) throws VaultC 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 48e35964..912c78f0 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.Serial; import java.io.Serializable; import java.util.Map; @@ -88,9 +86,8 @@ public final C get(final String key, final Class type) throws InvalidResp 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 stringValue) { @@ -99,7 +96,7 @@ public final C get(final String key, final Class type) throws InvalidResp 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 cd2c31e1..34fb1e4a 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -26,12 +26,11 @@ 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; }