From 54a2f10114dc26568b3fc5d44d0d7ac7a07335af Mon Sep 17 00:00:00 2001 From: Brendan Le Ny <bleny@codelutin.com> Date: Mon, 24 Jun 2024 15:00:09 +0200 Subject: [PATCH] Factorize URI creations --- .../java/sh/libre/scim/core/AbstractScimService.java | 12 ++++++++---- .../java/sh/libre/scim/core/GroupScimService.java | 10 ++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/main/java/sh/libre/scim/core/AbstractScimService.java b/src/main/java/sh/libre/scim/core/AbstractScimService.java index 9586a23..1d32e32 100644 --- a/src/main/java/sh/libre/scim/core/AbstractScimService.java +++ b/src/main/java/sh/libre/scim/core/AbstractScimService.java @@ -207,13 +207,17 @@ public abstract class AbstractScimService<RMM extends RoleMapperModel, S extends protected Meta newMetaLocation(EntityOnRemoteScimId externalId) { Meta meta = new Meta(); + URI uri = getUri(type, externalId); + meta.setLocation(uri.toString()); + return meta; + } + + protected URI getUri(ScimResourceType type, EntityOnRemoteScimId externalId) { try { - URI uri = new URI("%ss/%s".formatted(type, externalId.asString())); - meta.setLocation(uri.toString()); + return new URI("%s/%s".formatted(type.getEndpoint(), externalId.asString())); } catch (URISyntaxException e) { - LOGGER.warn(e); + throw new IllegalStateException("should never occur: can not format URI for type %s and id %s".formatted(type, externalId) , e); } - return meta; } protected KeycloakDao getKeycloakDao() { diff --git a/src/main/java/sh/libre/scim/core/GroupScimService.java b/src/main/java/sh/libre/scim/core/GroupScimService.java index 687d52a..4245b24 100644 --- a/src/main/java/sh/libre/scim/core/GroupScimService.java +++ b/src/main/java/sh/libre/scim/core/GroupScimService.java @@ -13,7 +13,6 @@ import org.keycloak.models.UserModel; import sh.libre.scim.jpa.ScimResource; import java.net.URI; -import java.net.URISyntaxException; import java.util.List; import java.util.Optional; import java.util.Set; @@ -94,13 +93,8 @@ public class GroupScimService extends AbstractScimService<GroupModel, Group> { EntityOnRemoteScimId externalIdAsEntityOnRemoteScimId = groupMemberMapping.getExternalIdAsEntityOnRemoteScimId(); logger.debugf("found mapping for group member %s as %s", member, externalIdAsEntityOnRemoteScimId); groupMember.setValue(externalIdAsEntityOnRemoteScimId.asString()); - try { - String refString = String.format("Users/%s", externalIdAsEntityOnRemoteScimId.asString()); - URI ref = new URI(refString); - groupMember.setRef(ref.toString()); - } catch (URISyntaxException e) { - logger.warnf("bad ref uri for member " + member); - } + URI ref = getUri(ScimResourceType.USER, externalIdAsEntityOnRemoteScimId); + groupMember.setRef(ref.toString()); group.addMember(groupMember); } else { logger.warnf("member %s not found for group %s", member, groupModel.getId()); -- GitLab