@Override public void setEnabled(boolean enabled) { if (this.enabled && !enabled) { clear(); } this.enabled = enabled; }
@Override public CachedRealm getCachedRealm(String id) { if (!enabled) return null; return get(id, CachedRealm.class); }
private void remove(Object object) { if (object instanceof CachedRealm) { CachedRealm realm = (CachedRealm) object; realmLookup.remove(realm.getName()); for (String r : realm.getRealmRoles().values()) { realmCache.evictCachedRoleById(r); } for (String c : realm.getClients().values()) { realmCache.evictCachedApplicationById(c); } log.tracev("Realm removed realm={0}", realm.getName()); } else if (object instanceof CachedClient) { CachedClient client = (CachedClient) object; for (String r : client.getRoles().values()) { realmCache.evictCachedRoleById(r); } log.tracev("Client removed client={0}", client.getId()); } } }
@Override public CachedRealm getCachedRealmByName(String name) { if (!enabled) return null; String id = realmLookup.get(name); return id != null ? getCachedRealm(id) : null; }
private void lazyInit(KeycloakSession session) { if (realmCache == null) { synchronized (this) { if (realmCache == null) { checkIspnVersion(); Cache<String, Object> cache = session.getProvider(InfinispanConnectionProvider.class).getCache(InfinispanConnectionProvider.REALM_CACHE_NAME); cache.addListener(new CacheListener()); realmCache = new InfinispanRealmCache(cache, realmLookup); } } } }
@Override public CachedGroup getGroup(String id) { if (!enabled) return null; return get(id, CachedGroup.class); }
@Override public CachedClient getApplication(String id) { if (!enabled) return null; return get(id, CachedClient.class); }
@Override public CachedRole getRole(String id) { if (!enabled) return null; return get(id, CachedRole.class); }
@Override public CachedClientTemplate getClientTemplate(String id) { if (!enabled) return null; return get(id, CachedClientTemplate.class); }