From ef39b849ec7bc140cdc68b63a0b1713987c41ed9 Mon Sep 17 00:00:00 2001 From: Benjamin Einaudi Date: Wed, 28 Jan 2026 21:37:38 +0100 Subject: [PATCH] feature(jackson) switch to jackson 3 --- cas-client-core/pom.xml | 2 +- .../cas/client/session/SingleSignOutHandler.java | 6 +++--- .../json/Cas30JsonServiceTicketValidator.java | 7 ++----- .../json/JsonValidationResponseParser.java | 14 +++++--------- pom.xml | 10 +++++++--- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/cas-client-core/pom.xml b/cas-client-core/pom.xml index beb075bff..1d37f9f1a 100644 --- a/cas-client-core/pom.xml +++ b/cas-client-core/pom.xml @@ -61,7 +61,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/cas-client-core/src/main/java/org/apereo/cas/client/session/SingleSignOutHandler.java b/cas-client-core/src/main/java/org/apereo/cas/client/session/SingleSignOutHandler.java index 0c706bdd1..e5cda6c6d 100644 --- a/cas-client-core/src/main/java/org/apereo/cas/client/session/SingleSignOutHandler.java +++ b/cas-client-core/src/main/java/org/apereo/cas/client/session/SingleSignOutHandler.java @@ -18,8 +18,6 @@ */ package org.apereo.cas.client.session; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.util.JSONPObject; import org.apereo.cas.client.Protocol; import org.apereo.cas.client.configuration.ConfigurationKeys; import org.apereo.cas.client.util.CommonUtils; @@ -33,6 +31,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.util.JSONPObject; import java.util.Arrays; import java.util.Base64; @@ -57,7 +57,7 @@ public final class SingleSignOutHandler { private final LogoutStrategy logoutStrategy = isServlet30() ? new Servlet30LogoutStrategy() : new Servlet25LogoutStrategy(); - private final ObjectMapper mapper = new ObjectMapper(); + private final JsonMapper mapper = JsonMapper.builder().build(); /** Mapping of token IDs and session IDs to HTTP sessions */ private SessionMappingStorage sessionMappingStorage = new HashMapBackedSessionMappingStorage(); diff --git a/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/Cas30JsonServiceTicketValidator.java b/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/Cas30JsonServiceTicketValidator.java index 5034f2806..7b25ab0b1 100644 --- a/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/Cas30JsonServiceTicketValidator.java +++ b/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/Cas30JsonServiceTicketValidator.java @@ -22,9 +22,8 @@ import org.apereo.cas.client.validation.Cas30ServiceTicketValidator; import org.apereo.cas.client.validation.TicketValidationException; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; -import java.io.IOException; import java.util.Collections; import java.util.Map; @@ -48,11 +47,9 @@ protected Assertion parseResponseFromServer(final String response) throws Ticket try { final var json = new JsonValidationResponseParser().parse(response); return json.getAssertion(getProxyGrantingTicketStorage(), getProxyRetriever()); - } catch (final JsonProcessingException e) { + } catch (final JacksonException e) { logger.warn("Unable parse the JSON response. Falling back to XML", e); return super.parseResponseFromServer(response); - } catch (final IOException e) { - throw new TicketValidationException(e.getMessage(), e); } } diff --git a/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/JsonValidationResponseParser.java b/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/JsonValidationResponseParser.java index 210205843..0b615262d 100644 --- a/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/JsonValidationResponseParser.java +++ b/cas-client-core/src/main/java/org/apereo/cas/client/validation/json/JsonValidationResponseParser.java @@ -20,10 +20,7 @@ import org.apereo.cas.client.util.CommonUtils; import org.apereo.cas.client.validation.TicketValidationException; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; +import tools.jackson.databind.json.JsonMapper; /** * This is {@link JsonValidationResponseParser}. @@ -31,19 +28,18 @@ * @author Misagh Moayyed */ final class JsonValidationResponseParser { - private final ObjectMapper objectMapper; + private final JsonMapper jsonMapper; public JsonValidationResponseParser() { - this.objectMapper = new ObjectMapper(); - this.objectMapper.findAndRegisterModules(); + this.jsonMapper = JsonMapper.builder().build(); } - public TicketValidationJsonResponse parse(final String response) throws TicketValidationException, IOException { + public TicketValidationJsonResponse parse(final String response) throws TicketValidationException { if (CommonUtils.isBlank(response)) { throw new TicketValidationException("Invalid JSON response; The response is empty"); } - final var json = this.objectMapper.readValue(response, TicketValidationJsonResponse.class); + final var json = this.jsonMapper.readValue(response, TicketValidationJsonResponse.class); final var serviceResponse = json.serviceResponse(); if (serviceResponse.authenticationFailure() != null diff --git a/pom.xml b/pom.xml index 0b5c765eb..75dccaf00 100644 --- a/pom.xml +++ b/pom.xml @@ -177,11 +177,15 @@ test ${log4j.version} + - com.fasterxml.jackson.core - jackson-databind + tools.jackson + jackson-bom + pom + import ${jackson.version} + com.nimbusds nimbus-jose-jwt @@ -250,7 +254,7 @@ 7.0.3 3.11.1 2.0.17 - 2.21.0 + 3.0.4 6.1.0 1.20.0 1.2.17