diff --git a/src/main/java/sh/libre/scim/core/AbstractScimService.java b/src/main/java/sh/libre/scim/core/AbstractScimService.java index 1bad0d8cfee764953191cb1f6650ad8ccd97f714..4e42351c242cb69b307ccdadea8bbd3f75cb0e45 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 ac635bcd14d3cd1d721374d7c2ffd8f31196ae94..35ab5620bc1fd44e08535d0afa21217059d8f7a6 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 0000000000000000000000000000000000000000..145c7c4c0aac9c85413c19dfc415a09b1cd35410 --- /dev/null +++ b/src/main/java/sh/libre/scim/core/ScimPropagationException.java @@ -0,0 +1,4 @@ +package sh.libre.scim.core; + +public class ScimPropagationException { +}