@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 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; }