Factorize "true" string

This commit is contained in:
Brendan Le Ny 2024-06-12 14:20:29 +02:00
parent 182824a3b4
commit 62eff08fcf
4 changed files with 14 additions and 10 deletions

View file

@ -10,6 +10,7 @@ import jakarta.persistence.NoResultException;
import de.captaingoldfish.scim.sdk.common.resources.Group; import de.captaingoldfish.scim.sdk.common.resources.Group;
import de.captaingoldfish.scim.sdk.common.resources.multicomplex.Member; import de.captaingoldfish.scim.sdk.common.resources.multicomplex.Member;
import de.captaingoldfish.scim.sdk.common.resources.complex.Meta; import de.captaingoldfish.scim.sdk.common.resources.complex.Meta;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
import org.keycloak.models.GroupModel; import org.keycloak.models.GroupModel;
@ -47,7 +48,7 @@ public class GroupAdapter extends Adapter<GroupModel, Group> {
.getGroupMembersStream(session.getContext().getRealm(), group) .getGroupMembersStream(session.getContext().getRealm(), group)
.map(x -> x.getId()) .map(x -> x.getId())
.collect(Collectors.toSet()); .collect(Collectors.toSet());
this.skip = StringUtils.equals(group.getFirstAttribute("scim-skip"), "true"); this.skip = BooleanUtils.TRUE.equals(group.getFirstAttribute("scim-skip"));
} }
@Override @Override

View file

@ -15,6 +15,7 @@ import de.captaingoldfish.scim.sdk.common.resources.complex.Name;
import de.captaingoldfish.scim.sdk.common.resources.multicomplex.PersonRole; import de.captaingoldfish.scim.sdk.common.resources.multicomplex.PersonRole;
import de.captaingoldfish.scim.sdk.common.resources.complex.Meta; import de.captaingoldfish.scim.sdk.common.resources.complex.Meta;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
import org.keycloak.models.KeycloakSession; import org.keycloak.models.KeycloakSession;
@ -119,17 +120,17 @@ public class UserAdapter extends Adapter<UserModel, User> {
setLastName(user.getLastName()); setLastName(user.getLastName());
var rolesSet = new HashSet<String>(); var rolesSet = new HashSet<String>();
user.getGroupsStream().flatMap(g -> g.getRoleMappingsStream()) user.getGroupsStream().flatMap(g -> g.getRoleMappingsStream())
.filter((r) -> StringUtils.equals(r.getFirstAttribute("scim"), "true")) .filter((r) -> BooleanUtils.TRUE.equals(r.getFirstAttribute("scim")))
.map((r) -> r.getName()) .map((r) -> r.getName())
.forEach(r -> rolesSet.add(r)); .forEach(r -> rolesSet.add(r));
user.getRoleMappingsStream() user.getRoleMappingsStream()
.filter((r) -> StringUtils.equals(r.getFirstAttribute("scim"), "true")) .filter((r) -> BooleanUtils.TRUE.equals(r.getFirstAttribute("scim")))
.map((r) -> r.getName()) .map((r) -> r.getName())
.forEach(r -> rolesSet.add(r)); .forEach(r -> rolesSet.add(r));
var roles = new String[rolesSet.size()]; var roles = new String[rolesSet.size()];
rolesSet.toArray(roles); rolesSet.toArray(roles);
setRoles(roles); setRoles(roles);
this.skip = StringUtils.equals(user.getFirstAttribute("scim-skip"), "true"); this.skip = BooleanUtils.TRUE.equals(user.getFirstAttribute("scim-skip"));
} }
@Override @Override

View file

@ -3,6 +3,7 @@ package sh.libre.scim.event;
import java.util.HashMap; import java.util.HashMap;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
import org.keycloak.events.Event; import org.keycloak.events.Event;
@ -100,7 +101,7 @@ public class ScimEventListenerProvider implements EventListenerProvider {
var groupId = matcher.group(2); var groupId = matcher.group(2);
LOGGER.infof("%s %s from %s", event.getOperationType(), userId, groupId); LOGGER.infof("%s %s from %s", event.getOperationType(), userId, groupId);
var group = getGroup(groupId); var group = getGroup(groupId);
group.setSingleAttribute("scim-dirty", "true"); group.setSingleAttribute("scim-dirty", BooleanUtils.TRUE);
var user = getUser(userId); var user = getUser(userId);
dispatcher.run(ScimDispatcher.SCOPE_USER, (client) -> client.replace(UserAdapter.class, user)); dispatcher.run(ScimDispatcher.SCOPE_USER, (client) -> client.replace(UserAdapter.class, user));
} }

View file

@ -5,6 +5,7 @@ import java.util.List;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
import org.keycloak.component.ComponentModel; import org.keycloak.component.ComponentModel;
@ -74,14 +75,14 @@ public class ScimStorageProviderFactory
.type(ProviderConfigProperty.BOOLEAN_TYPE) .type(ProviderConfigProperty.BOOLEAN_TYPE)
.label("Enable user propagation") .label("Enable user propagation")
.helpText("Should operation on users be propagated to this provider ?") .helpText("Should operation on users be propagated to this provider ?")
.defaultValue("true") .defaultValue(BooleanUtils.TRUE)
.add() .add()
.property() .property()
.name("propagation-group") .name("propagation-group")
.type(ProviderConfigProperty.BOOLEAN_TYPE) .type(ProviderConfigProperty.BOOLEAN_TYPE)
.label("Enable group propagation") .label("Enable group propagation")
.helpText("Should operation on groups be propagated to this provider ?") .helpText("Should operation on groups be propagated to this provider ?")
.defaultValue("true") .defaultValue(BooleanUtils.TRUE)
.add() .add()
.property() .property()
.name("sync-import") .name("sync-import")
@ -132,10 +133,10 @@ public class ScimStorageProviderFactory
var realm = session.realms().getRealm(realmId); var realm = session.realms().getRealm(realmId);
session.getContext().setRealm(realm); session.getContext().setRealm(realm);
var dispatcher = new ScimDispatcher(session); var dispatcher = new ScimDispatcher(session);
if (StringUtils.equals(model.get("propagation-user"), "true")) { if (BooleanUtils.TRUE.equals(model.get("propagation-user"))) {
dispatcher.runOne(model, (client) -> client.sync(UserAdapter.class, result)); dispatcher.runOne(model, (client) -> client.sync(UserAdapter.class, result));
} }
if (StringUtils.equals(model.get("propagation-group"), "true")) { if (BooleanUtils.TRUE.equals(model.get("propagation-group"))) {
dispatcher.runOne(model, (client) -> client.sync(GroupAdapter.class, result)); dispatcher.runOne(model, (client) -> client.sync(GroupAdapter.class, result));
} }
} }
@ -163,7 +164,7 @@ public class ScimStorageProviderFactory
session.getContext().setRealm(realm); session.getContext().setRealm(realm);
var dispatcher = new ScimDispatcher(session); var dispatcher = new ScimDispatcher(session);
for (var group : session.groups().getGroupsStream(realm) for (var group : session.groups().getGroupsStream(realm)
.filter(x -> StringUtils.equals(x.getFirstAttribute("scim-dirty"), "true")).toList()) { .filter(x -> BooleanUtils.TRUE.equals(x.getFirstAttribute("scim-dirty"))).toList()) {
LOGGER.debug(group.getName() + " is dirty"); LOGGER.debug(group.getName() + " is dirty");
dispatcher.run(ScimDispatcher.SCOPE_GROUP, dispatcher.run(ScimDispatcher.SCOPE_GROUP,
(client) -> client.replace(GroupAdapter.class, group)); (client) -> client.replace(GroupAdapter.class, group));