diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/Dataplane.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/Dataplane.java index ec55c81..1a6abd4 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/Dataplane.java +++ b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/Dataplane.java @@ -16,8 +16,6 @@ package org.eclipse.dataplane; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.domain.DataAddress; import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.controlplane.ControlPlane; @@ -52,6 +50,9 @@ import org.eclipse.dataplane.store.InMemoryControlPlaneStore; import org.eclipse.dataplane.store.InMemoryDataFlowStore; import org.eclipse.dataplane.store.Stores; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import java.net.URI; import java.net.http.HttpClient; @@ -64,14 +65,15 @@ import java.util.UUID; import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; -import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; +import static tools.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; import static jakarta.ws.rs.core.HttpHeaders.AUTHORIZATION; public class Dataplane { - private final ObjectMapper objectMapper = new ObjectMapper() + private final ObjectMapper objectMapper = JsonMapper.builder() .configure(FAIL_ON_UNKNOWN_PROPERTIES, false) - .setDefaultPropertyInclusion(NON_NULL); + .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(NON_NULL)) + .build(); private DataFlowStore dataFlowStore = new InMemoryDataFlowStore(objectMapper); private ControlPlaneStore controlPlaneStore = new InMemoryControlPlaneStore(objectMapper); private String id; @@ -391,7 +393,7 @@ private Result notifyControlPlane(String action, DataFlow dataFlow, Object private Result toJson(Object message) { try { return Result.success(objectMapper.writeValueAsString(message)); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { return Result.failure(e); } } diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java index 10ab1e4..aadbbb2 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java +++ b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java @@ -14,8 +14,8 @@ package org.eclipse.dataplane.domain.controlplane; -import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; import org.eclipse.dataplane.domain.registration.AuthorizationProfile; +import tools.jackson.databind.annotation.JsonPOJOBuilder; import java.net.URI; import java.util.Objects; diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java index ce355ae..740a156 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java +++ b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java @@ -16,12 +16,15 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import org.eclipse.dataplane.exception.IllegalAttributeTypeException; import java.util.HashMap; import java.util.Map; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; + +@JsonAutoDetect(getterVisibility = NONE, isGetterVisibility = NONE) public class AuthorizationProfile { private final Map attributes; @@ -35,7 +38,6 @@ public AuthorizationProfile(String type) { attributes.put("type", type); } - @JsonIgnore public String getType() { return attributes.get("type").toString(); } diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java index 9e855ec..a94a889 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java +++ b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java @@ -14,10 +14,10 @@ package org.eclipse.dataplane.domain.registration; -import com.fasterxml.jackson.databind.ObjectMapper; import com.nimbusds.jose.jwk.source.JWKSourceBuilder; import com.nimbusds.jwt.proc.DefaultJWTProcessor; import org.eclipse.dataplane.domain.Result; +import tools.jackson.databind.ObjectMapper; import java.net.URI; import java.net.URLEncoder; diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryControlPlaneStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryControlPlaneStore.java index 9f30cef..4193799 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryControlPlaneStore.java +++ b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryControlPlaneStore.java @@ -14,11 +14,11 @@ package org.eclipse.dataplane.store; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.controlplane.ControlPlane; import org.eclipse.dataplane.exception.ResourceNotFoundException; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.Map; @@ -37,7 +37,7 @@ public Result save(ControlPlane controlPlane) { try { store.put(controlPlane.getId(), objectMapper.writeValueAsString(controlPlane)); return Result.success(); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { return Result.failure(e); } } @@ -70,7 +70,7 @@ private Result deserialize(String json) { try { var deserialized = objectMapper.readValue(json, ControlPlane.class); return Result.success(deserialized); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { return Result.failure(e); } } diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryDataFlowStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryDataFlowStore.java index 510c9c6..56936be 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryDataFlowStore.java +++ b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/store/InMemoryDataFlowStore.java @@ -14,11 +14,11 @@ package org.eclipse.dataplane.store; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.dataflow.DataFlow; import org.eclipse.dataplane.exception.ResourceNotFoundException; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.Map; @@ -37,7 +37,7 @@ public Result save(DataFlow dataFlow) { try { store.put(dataFlow.getId(), objectMapper.writeValueAsString(dataFlow)); return Result.success(); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { return Result.failure(e); } } @@ -52,7 +52,7 @@ public Result findById(String flowId) { try { var deserialized = objectMapper.readValue(dataFlow, DataFlow.class); return Result.success(deserialized); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { return Result.failure(e); } } diff --git a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java index 64c46b3..76bbd50 100644 --- a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java +++ b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java @@ -14,13 +14,13 @@ package org.eclipse.dataplane.store; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; -import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; +import static tools.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; class InMemoryControlPlaneStoreTest extends ControlPlaneStoreTestBase { - private InMemoryControlPlaneStore store = new InMemoryControlPlaneStore(new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false)); + private InMemoryControlPlaneStore store = new InMemoryControlPlaneStore(JsonMapper.builder().configure(FAIL_ON_UNKNOWN_PROPERTIES, false).build()); @Override protected ControlPlaneStore store() { diff --git a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java index d94acc1..a9a8259 100644 --- a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java +++ b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java @@ -14,13 +14,13 @@ package org.eclipse.dataplane.store; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; -import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; +import static tools.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; class InMemoryDataFlowStoreTest extends DataFlowStoreTestBase { - private InMemoryDataFlowStore store = new InMemoryDataFlowStore(new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false)); + private InMemoryDataFlowStore store = new InMemoryDataFlowStore(JsonMapper.builder().configure(FAIL_ON_UNKNOWN_PROPERTIES, false).build()); @Override protected DataFlowStore store() { diff --git a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java index 7c4657f..65e7094 100644 --- a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java @@ -14,11 +14,11 @@ package org.eclipse.dataplane.store.postgresql; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.exception.PersistenceException; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ObjectMapper; import java.sql.Connection; import javax.sql.DataSource; @@ -61,7 +61,7 @@ protected String toJson(Object object) { try { return object instanceof String ? object.toString() : objectMapper.writeValueAsString(object); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new PersistenceException("Failed to convert object to JSON.", e); } } @@ -81,7 +81,7 @@ protected T fromJson(String json, JavaType type) { try { return objectMapper.readValue(json, type); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new PersistenceException("Failed to convert JSON to object.", e); } } diff --git a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java index 8f44187..6372ca9 100644 --- a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java @@ -14,13 +14,13 @@ package org.eclipse.dataplane.store.postgresql; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.controlplane.ControlPlane; import org.eclipse.dataplane.domain.registration.AuthorizationProfile; import org.eclipse.dataplane.exception.PersistenceException; import org.eclipse.dataplane.exception.ResourceNotFoundException; import org.eclipse.dataplane.store.ControlPlaneStore; +import tools.jackson.databind.ObjectMapper; import java.net.URI; import javax.sql.DataSource; diff --git a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java index 126e0e9..43825cd 100644 --- a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java @@ -14,14 +14,14 @@ package org.eclipse.dataplane.store.postgresql; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.domain.DataAddress; import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.dataflow.DataFlow; import org.eclipse.dataplane.exception.PersistenceException; import org.eclipse.dataplane.exception.ResourceNotFoundException; import org.eclipse.dataplane.store.DataFlowStore; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; import java.net.URI; import javax.sql.DataSource; diff --git a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java index 0c7232a..cd1e006 100644 --- a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java +++ b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java @@ -14,7 +14,6 @@ package org.eclipse.dataplane.store.postgresql; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.store.ControlPlaneStore; import org.eclipse.dataplane.store.ControlPlaneStoreTestBase; import org.junit.jupiter.api.AfterAll; @@ -24,8 +23,10 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.postgresql.PostgreSQLContainer; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; -import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; +import static tools.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; @Testcontainers class PostgresControlPlaneStoreTest extends ControlPlaneStoreTestBase { @@ -35,7 +36,7 @@ class PostgresControlPlaneStoreTest extends ControlPlaneStoreTestBase { private static final String USERNAME = "user"; private static final String PASSWORD = "password"; - private final ObjectMapper mapper = new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false); + private final ObjectMapper mapper = JsonMapper.builder().configure(FAIL_ON_UNKNOWN_PROPERTIES, false).build(); private PostgresControlPlaneStore store; @Container diff --git a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java index 327ca02..4f46df5 100644 --- a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java +++ b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java @@ -14,7 +14,6 @@ package org.eclipse.dataplane.store.postgresql; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.store.DataFlowStore; import org.eclipse.dataplane.store.DataFlowStoreTestBase; import org.junit.jupiter.api.AfterAll; @@ -24,8 +23,10 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.postgresql.PostgreSQLContainer; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; -import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; +import static tools.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; @Testcontainers class PostgresDataFlowStoreTest extends DataFlowStoreTestBase { @@ -35,7 +36,7 @@ class PostgresDataFlowStoreTest extends DataFlowStoreTestBase { private static final String USERNAME = "user"; private static final String PASSWORD = "password"; - private final ObjectMapper mapper = new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false); + private final ObjectMapper mapper = JsonMapper.builder().configure(FAIL_ON_UNKNOWN_PROPERTIES, false).build(); private PostgresDataFlowStore store; @Container diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9e6c593..bc488e2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,9 +4,9 @@ format.version = "1.1" [versions] assertJ = "3.27.7" awaitility = "4.3.0" -jackson = "2.22.3" +jackson = "3.2.3" jakarta = "4.0.0" -jersey = "4.0.2" +jersey = "4.0.3" jetty = "12.1.13" junit = "6.1.3" mockito = "5.24.0" @@ -19,12 +19,12 @@ testcontainers = "2.0.5" wiremock = "3.13.2" [libraries] -jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" } +jackson-databind = { module = "tools.jackson.core:jackson-databind", version.ref = "jackson" } nimbus-jwt = { module = "com.nimbusds:nimbus-jose-jwt", version.ref = "nimbusJoseJwt" } jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "jakarta" } jersey-servlet = { module = "org.glassfish.jersey.containers:jersey-container-servlet", version.ref = "jersey" } jersey-hk2 = { module = "org.glassfish.jersey.inject:jersey-hk2", version.ref = "jersey" } -jersey-jackson = { module = "org.glassfish.jersey.media:jersey-media-json-jackson", version.ref = "jersey" } +jersey-jackson = { module = "org.glassfish.jersey.media:jersey-media-json-jackson3", version.ref = "jersey" } slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }