From 81d9f5424ca7f7c579480161d13a782284337714 Mon Sep 17 00:00:00 2001 From: Alex Morel <amorel@codelutin.com> Date: Fri, 21 Jun 2024 15:25:47 +0200 Subject: [PATCH] Rollback on exception --- src/main/java/sh/libre/scim/core/AbstractScimService.java | 4 ++-- src/main/java/sh/libre/scim/core/ScimClient.java | 6 +++--- .../java/sh/libre/scim/core/ScimPropagationException.java | 4 ++++ 3 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 src/main/java/sh/libre/scim/core/ScimPropagationException.java diff --git a/src/main/java/sh/libre/scim/core/AbstractScimService.java b/src/main/java/sh/libre/scim/core/AbstractScimService.java index 1bad0d8..4e42351 100644 --- a/src/main/java/sh/libre/scim/core/AbstractScimService.java +++ b/src/main/java/sh/libre/scim/core/AbstractScimService.java @@ -44,12 +44,12 @@ public abstract class AbstractScimService<RMM extends RoleMapperModel, S extends if (findById(id).isPresent()) { return; } - ResourceNode scimForCreation = toScimForCreation(roleMapperModel); + S scimForCreation = toScimForCreation(roleMapperModel); EntityOnRemoteScimId externalId = scimClient.create(id, scimForCreation); createMapping(id, externalId); } - protected abstract ResourceNode toScimForCreation(RMM roleMapperModel); + protected abstract S toScimForCreation(RMM roleMapperModel); protected abstract KeycloakId getId(RMM roleMapperModel); diff --git a/src/main/java/sh/libre/scim/core/ScimClient.java b/src/main/java/sh/libre/scim/core/ScimClient.java index ac635bc..35ab562 100644 --- a/src/main/java/sh/libre/scim/core/ScimClient.java +++ b/src/main/java/sh/libre/scim/core/ScimClient.java @@ -4,7 +4,6 @@ import com.google.common.net.HttpHeaders; import de.captaingoldfish.scim.sdk.client.ScimClientConfig; import de.captaingoldfish.scim.sdk.client.ScimRequestBuilder; import de.captaingoldfish.scim.sdk.client.response.ServerResponse; -import de.captaingoldfish.scim.sdk.common.exceptions.ResponseException; import de.captaingoldfish.scim.sdk.common.resources.ResourceNode; import de.captaingoldfish.scim.sdk.common.response.ListResponse; import io.github.resilience4j.core.IntervalFunction; @@ -63,7 +62,7 @@ public class ScimClient<S extends ResourceNode> implements AutoCloseable { return new ScimClient(scimRequestBuilder, scimResourceType); } - public EntityOnRemoteScimId create(KeycloakId id, ResourceNode scimForCreation) { + public EntityOnRemoteScimId create(KeycloakId id, S scimForCreation) { if (scimForCreation.getId().isPresent()) { throw new IllegalArgumentException( "%s is already created on remote with id %s".formatted(id, scimForCreation.getId().get()) @@ -97,8 +96,9 @@ public class ScimClient<S extends ResourceNode> implements AutoCloseable { return scimResourceType.getResourceClass(); } - public void replace(EntityOnRemoteScimId externalId, ResourceNode scimForReplace) { + public void replace(EntityOnRemoteScimId externalId, S scimForReplace) { Retry retry = retryRegistry.retry("replace-%s".formatted(externalId.asString())); + logger.warn(scimForReplace); ServerResponse<S> response = retry.executeSupplier(() -> scimRequestBuilder .update(getResourceClass(), getScimEndpoint(), externalId.asString()) .setResource(scimForReplace) diff --git a/src/main/java/sh/libre/scim/core/ScimPropagationException.java b/src/main/java/sh/libre/scim/core/ScimPropagationException.java new file mode 100644 index 0000000..145c7c4 --- /dev/null +++ b/src/main/java/sh/libre/scim/core/ScimPropagationException.java @@ -0,0 +1,4 @@ +package sh.libre.scim.core; + +public class ScimPropagationException { +} -- GitLab