@Override public RoleModel getRoleById(String id) { if (isUpdated()) return updated.getRoleById(id); return cacheSession.getRoleById(id, this); }
public Set<RoleModel> getScopeMappings() { if (isUpdated()) return updated.getScopeMappings(); Set<RoleModel> roles = new HashSet<RoleModel>(); for (String id : cached.getScope()) { roles.add(cacheSession.getRoleById(id, getRealm())); } return roles; }
public Set<RoleModel> getScopeMappings() { if (isUpdated()) return updated.getScopeMappings(); Set<RoleModel> roles = new HashSet<RoleModel>(); for (String id : cached.getScope()) { roles.add(cacheSession.getRoleById(id, getRealm())); } return roles; }
@Override public RoleModel getRealmRole(RealmModel realm, String name) { String cacheKey = getRoleByNameCacheKey(realm.getId(), name); boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(realm.getId()); if (queryDB) { return getRealmDelegate().getRealmRole(realm, name); } RoleListQuery query = cache.get(cacheKey, RoleListQuery.class); if (query != null) { logger.tracev("getRealmRole cache hit: {0}.{1}", realm.getName(), name); } if (query == null) { Long loaded = cache.getCurrentRevision(cacheKey); RoleModel model = getRealmDelegate().getRealmRole(realm, name); if (model == null) return null; query = new RoleListQuery(loaded, cacheKey, realm, model.getId()); logger.tracev("adding realm role cache miss: client {0} key {1}", realm.getName(), cacheKey); cache.addRevisioned(query, startupRevision); return model; } RoleModel role = getRoleById(query.getRoles().iterator().next(), realm); if (role == null) { invalidations.add(cacheKey); return getRealmDelegate().getRealmRole(realm, name); } return role; }
@Override public RoleModel getClientRole(RealmModel realm, ClientModel client, String name) { String cacheKey = getRoleByNameCacheKey(client.getId(), name); boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(client.getId()); if (queryDB) { return getRealmDelegate().getClientRole(realm, client, name); } RoleListQuery query = cache.get(cacheKey, RoleListQuery.class); if (query != null) { logger.tracev("getClientRole cache hit: {0}.{1}", client.getClientId(), name); } if (query == null) { Long loaded = cache.getCurrentRevision(cacheKey); RoleModel model = getRealmDelegate().getClientRole(realm, client, name); if (model == null) return null; query = new RoleListQuery(loaded, cacheKey, realm, model.getId(), client.getClientId()); logger.tracev("adding client role cache miss: client {0} key {1}", client.getClientId(), cacheKey); cache.addRevisioned(query, startupRevision); return model; } RoleModel role = getRoleById(query.getRoles().iterator().next(), realm); if (role == null) { invalidations.add(cacheKey); return getRealmDelegate().getClientRole(realm, client, name); } return role; }