@Override public RoleModel getRoleById(String id) { return session.realms().getRoleById(id, this); }
@Override public RoleModel getRoleById(String id) { return session.realms().getRoleById(id, this); }
@Override public RoleModel getClientRole(RealmModel realm, ClientModel client, String name) { TypedQuery<String> query = em.createNamedQuery("getClientRoleIdByName", String.class); query.setParameter("name", name); query.setParameter("client", client.getId()); List<String> roles = query.getResultList(); if (roles.isEmpty()) return null; return session.realms().getRoleById(roles.get(0), realm); }
@Override public Set<RoleModel> getRealmRoles(RealmModel realm) { TypedQuery<String> query = em.createNamedQuery("getRealmRoleIds", String.class); query.setParameter("realm", realm.getId()); List<String> roles = query.getResultList(); if (roles.isEmpty()) return Collections.EMPTY_SET; Set<RoleModel> list = new HashSet<>(); for (String id : roles) { list.add(session.realms().getRoleById(id, realm)); } return Collections.unmodifiableSet(list); }
@Override public RoleModel getRealmRole(RealmModel realm, String name) { TypedQuery<String> query = em.createNamedQuery("getRealmRoleIdByName", String.class); query.setParameter("name", name); query.setParameter("realm", realm.getId()); List<String> roles = query.getResultList(); if (roles.isEmpty()) return null; return session.realms().getRoleById(roles.get(0), realm); }
@Override public Set<RoleModel> getClientRoles(RealmModel realm, ClientModel client) { Set<RoleModel> list = new HashSet<>(); TypedQuery<String> query = em.createNamedQuery("getClientRoleIds", String.class); query.setParameter("client", client.getId()); List<String> roles = query.getResultList(); for (String id : roles) { list.add(session.realms().getRoleById(id, realm)); } return list; }
protected boolean isUpdated() { if (updated != null) return true; if (!invalidated) return false; updated = cacheSession.getRealmDelegate().getRoleById(cached.getId(), realm); if (updated == null) throw new IllegalStateException("Not found in database"); return true; }
private RoleModel getRoleModel() { return cacheSession.getRealmDelegate().getRoleById(cached.getId(), realm); }
protected void getDelegateForUpdate() { if (updated == null) { cacheSession.registerRoleInvalidation(getId()); updated = cacheSession.getDelegate().getRoleById(getId(), realm); if (updated == null) throw new IllegalStateException("Not found in database"); } }
@Override public Set<RoleModel> getRoleMappings() { if (updated != null) return updated.getRoleMappings(); Set<RoleModel> roles = new HashSet<RoleModel>(); for (String id : cached.getRoleMappings(modelSupplier)) { RoleModel roleById = keycloakSession.realms().getRoleById(id, realm); if (roleById == null) { // chance that role was removed, so just delete to persistence and get user invalidated getDelegateForUpdate(); return updated.getRoleMappings(); } roles.add(roleById); } return roles; }
@Override public Set<RoleModel> getRoleMappings() { if (updated != null) return updated.getRoleMappings(); Set<RoleModel> roles = new HashSet<RoleModel>(); for (String id : cached.getRoleMappings()) { RoleModel roleById = keycloakSession.realms().getRoleById(id, realm); if (roleById == null) { // chance that role was removed, so just delegate to persistence and get user invalidated getDelegateForUpdate(); return updated.getRoleMappings(); } roles.add(roleById); } return roles; }
@Override public Set<RoleModel> getRoleMappings() { if (updated != null) return updated.getRoleMappings(); Set<RoleModel> roles = new HashSet<RoleModel>(); for (String id : cached.getRoleMappings()) { RoleModel roleById = keycloakSession.realms().getRoleById(id, realm); if (roleById == null) { // chance that role was removed, so just delete to persistence and get user invalidated getDelegateForUpdate(); return updated.getRoleMappings(); } roles.add(roleById); } return roles; }
@Override public Set<RoleModel> getRoleMappings() { if (isUpdated()) return updated.getRoleMappings(); Set<RoleModel> roles = new HashSet<RoleModel>(); for (String id : cached.getRoleMappings(modelSupplier)) { RoleModel roleById = keycloakSession.realms().getRoleById(id, realm); if (roleById == null) { // chance that role was removed, so just delegate to persistence and get user invalidated getDelegateForUpdate(); return updated.getRoleMappings(); } roles.add(roleById); } return roles; }
@Override public RoleModel getRoleById(String id, RealmModel realm) { if (!cache.isEnabled()) return getDelegate().getRoleById(id, realm); CachedRole cached = cache.getRole(id); if (cached != null && !cached.getRealm().equals(realm.getId())) { cached = null; } if (cached == null) { RoleModel model = getDelegate().getRoleById(id, realm); if (model == null) return null; if (roleInvalidations.contains(id)) return model; if (model.getContainer() instanceof ClientModel) { cached = new CachedClientRole(((ClientModel) model.getContainer()).getId(), model, realm); } else { cached = new CachedRealmRole(model, realm); } cache.addCachedRole(cached); } else if (roleInvalidations.contains(id)) { return getDelegate().getRoleById(id, realm); } else if (managedRoles.containsKey(id)) { return managedRoles.get(id); } RoleAdapter adapter = new RoleAdapter(cached, cache, this, realm); managedRoles.put(id, adapter); return adapter; }
@Override public Set<RoleModel> getRealmRoles(RealmModel realm) { DBObject query = new QueryBuilder() .and("realmId").is(realm.getId()) .get(); List<MongoRoleEntity> roles = getMongoStore().loadEntities(MongoRoleEntity.class, query, invocationContext); if (roles == null) return Collections.EMPTY_SET; Set<RoleModel> result = new HashSet<RoleModel>(); for (MongoRoleEntity role : roles) { result.add(session.realms().getRoleById(role.getId(), realm)); } return Collections.unmodifiableSet(result); }
@Override public RoleModel getRoleById(String id, RealmModel realm) { CachedRole cached = cache.get(id, CachedRole.class); if (cached != null && !cached.getRealm().equals(realm.getId())) { cached = null; } if (cached == null) { Long loaded = cache.getCurrentRevision(id); RoleModel model = getRealmDelegate().getRoleById(id, realm); if (model == null) return null; if (invalidations.contains(id)) return model; if (model.isClientRole()) { cached = new CachedClientRole(loaded, model.getContainerId(), model, realm); } else { cached = new CachedRealmRole(loaded, model, realm); } cache.addRevisioned(cached, startupRevision); } else if (invalidations.contains(id)) { return getRealmDelegate().getRoleById(id, realm); } else if (managedRoles.containsKey(id)) { return managedRoles.get(id); } RoleAdapter adapter = new RoleAdapter(cached,this, realm); managedRoles.put(id, adapter); return adapter; }
@Override public Set<RoleModel> getClientRoles(RealmModel realm, ClientModel client) { DBObject query = new QueryBuilder() .and("clientId").is(client.getId()) .get(); List<MongoRoleEntity> roles = getMongoStore().loadEntities(MongoRoleEntity.class, query, invocationContext); Set<RoleModel> result = new HashSet<RoleModel>(); for (MongoRoleEntity role : roles) { result.add(session.realms().getRoleById(role.getId(), realm)); } return result; }
RoleModel role = session.realms().getRoleById(id, realm); if (role == null) { invalidations.add(cacheKey);
@Override public RoleModel getRealmRole(RealmModel realm, String name) { DBObject query = new QueryBuilder() .and("name").is(name) .and("realmId").is(realm.getId()) .get(); MongoRoleEntity role = getMongoStore().loadSingleEntity(MongoRoleEntity.class, query, invocationContext); if (role == null) { return null; } else { return session.realms().getRoleById(role.getId(), realm); } }
@Override public RoleModel getClientRole(RealmModel realm, ClientModel client, String name) { DBObject query = new QueryBuilder() .and("name").is(name) .and("clientId").is(client.getId()) .get(); MongoRoleEntity role = getMongoStore().loadSingleEntity(MongoRoleEntity.class, query, invocationContext); if (role == null) { return null; } else { return session.realms().getRoleById(role.getId(), realm); } }