keycloak
公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 限定公開変数類 | 静的限定公開変数類 | 静的関数 | 非公開メンバ関数 | 全メンバ一覧
org.keycloak.models.cache.infinispan.RealmCacheSession クラス
org.keycloak.models.cache.infinispan.RealmCacheSession の継承関係図
Inheritance graph
org.keycloak.models.cache.infinispan.RealmCacheSession 連携図
Collaboration graph

公開メンバ関数

 RealmCacheSession (RealmCacheManager cache, KeycloakSession session)
 
long getStartupRevision ()
 
boolean isInvalid (String id)
 
void clear ()
 
MigrationModel getMigrationModel ()
 
RealmProvider getRealmDelegate ()
 
ClientProvider getClientDelegate ()
 
void registerRealmInvalidation (String id, String name)
 
void registerClientInvalidation (String id, String clientId, String realmId)
 
void registerClientScopeInvalidation (String id)
 
void registerRoleInvalidation (String id, String roleName, String roleContainerId)
 
void registerGroupInvalidation (String id)
 
RealmModel createRealm (String name)
 
RealmModel createRealm (String id, String name)
 
RealmModel getRealm (String id)
 
RealmModel getRealmByName (String name)
 
List< RealmModelgetRealms ()
 
boolean removeRealm (String id)
 
void evictRealmOnRemoval (RealmModel realm)
 
ClientModel addClient (RealmModel realm, String clientId)
 
ClientModel addClient (RealmModel realm, String id, String clientId)
 
List< ClientModelgetClients (RealmModel realm)
 
boolean removeClient (String id, RealmModel realm)
 
void close ()
 
RoleModel addRealmRole (RealmModel realm, String name)
 
RoleModel addRealmRole (RealmModel realm, String id, String name)
 
Set< RoleModelgetRealmRoles (RealmModel realm)
 
Set< RoleModelgetClientRoles (RealmModel realm, ClientModel client)
 
RoleModel addClientRole (RealmModel realm, ClientModel client, String name)
 
RoleModel addClientRole (RealmModel realm, ClientModel client, String id, String name)
 
RoleModel getRealmRole (RealmModel realm, String name)
 
RoleModel getClientRole (RealmModel realm, ClientModel client, String name)
 
boolean removeRole (RealmModel realm, RoleModel role)
 
RoleModel getRoleById (String id, RealmModel realm)
 
GroupModel getGroupById (String id, RealmModel realm)
 
void moveGroup (RealmModel realm, GroupModel group, GroupModel toParent)
 
List< GroupModelgetGroups (RealmModel realm)
 
Long getGroupsCount (RealmModel realm, Boolean onlyTopGroups)
 
Long getGroupsCountByNameContaining (RealmModel realm, String search)
 
List< GroupModelgetTopLevelGroups (RealmModel realm)
 
List< GroupModelgetTopLevelGroups (RealmModel realm, Integer first, Integer max)
 
List< GroupModelsearchForGroupByName (RealmModel realm, String search, Integer first, Integer max)
 
boolean removeGroup (RealmModel realm, GroupModel group)
 
GroupModel createGroup (RealmModel realm, String name)
 
GroupModel createGroup (RealmModel realm, String id, String name)
 
void addTopLevelGroup (RealmModel realm, GroupModel subGroup)
 
ClientModel getClientById (String id, RealmModel realm)
 
ClientModel getClientByClientId (String clientId, RealmModel realm)
 
ClientScopeModel getClientScopeById (String id, RealmModel realm)
 
ClientInitialAccessModel createClientInitialAccessModel (RealmModel realm, int expiration, int count)
 
ClientInitialAccessModel getClientInitialAccessModel (RealmModel realm, String id)
 
void removeClientInitialAccessModel (RealmModel realm, String id)
 
List< ClientInitialAccessModellistClientInitialAccess (RealmModel realm)
 
void removeExpiredClientInitialAccess ()
 
void decreaseRemainingCount (RealmModel realm, ClientInitialAccessModel clientInitialAccess)
 

静的公開変数類

static final String REALM_CLIENTS_QUERY_SUFFIX = ".realm.clients"
 
static final String ROLES_QUERY_SUFFIX = ".roles"
 

限定公開メンバ関数

void runInvalidations ()
 
ClientModel cacheClient (RealmModel realm, ClientModel delegate, Long revision)
 
ClientModel validateCache (RealmModel realm, CachedClient cached)
 

限定公開変数類

RealmCacheManager cache
 
KeycloakSession session
 
RealmProvider realmDelegate
 
ClientProvider clientDelegate
 
boolean transactionActive
 
boolean setRollbackOnly
 
Map< String, RealmAdaptermanagedRealms = new HashMap<>()
 
Map< String, ClientModelmanagedApplications = new HashMap<>()
 
Map< String, ClientScopeAdaptermanagedClientScopes = new HashMap<>()
 
Map< String, RoleAdaptermanagedRoles = new HashMap<>()
 
Map< String, GroupAdaptermanagedGroups = new HashMap<>()
 
Set< String > listInvalidations = new HashSet<>()
 
Set< String > invalidations = new HashSet<>()
 
Set< InvalidationEventinvalidationEvents = new HashSet<>()
 
boolean clearAll
 
final long startupRevision
 

静的限定公開変数類

static final Logger logger = Logger.getLogger(RealmCacheSession.class)
 

静的関数

static String getRealmByNameCacheKey (String name)
 
static String getRealmClientsQueryCacheKey (String realm)
 
static String getGroupsQueryCacheKey (String realm)
 
static String getTopGroupsQueryCacheKey (String realm)
 
static String getRolesCacheKey (String container)
 
static String getRoleByNameCacheKey (String container, String name)
 
static String getClientByClientIdCacheKey (String clientId, String realmId)
 

非公開メンバ関数

void invalidateClient (String id)
 
void invalidateClientScope (String id)
 
void roleRemovalInvalidations (String roleId, String roleName, String roleContainerId)
 
void invalidateRole (String id)
 
void addedRole (String roleId, String roleContainerId)
 
void invalidateGroup (String id, String realmId, boolean invalidateQueries)
 
void invalidateGroup (String id)
 
KeycloakTransaction getPrepareTransaction ()
 
KeycloakTransaction getAfterTransaction ()
 
ClientModel addedClient (RealmModel realm, ClientModel client)
 
GroupModel groupAdded (RealmModel realm, GroupModel group)
 
void addGroupEventIfAbsent (InvalidationEvent eventToAdd)
 

詳解

ClientList caches:

Clustered caches:

DBs with Repeatable Read:

Groups and Roles:

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ RealmCacheSession()

org.keycloak.models.cache.infinispan.RealmCacheSession.RealmCacheSession ( RealmCacheManager  cache,
KeycloakSession  session 
)
inline
117  {
118  this.cache = cache;
119  this.session = session;
120  this.startupRevision = cache.getCurrentCounter();
123  }
long getCurrentCounter()
Definition: CacheManager.java:73
KeycloakTransactionManager getTransactionManager()
RealmCacheManager cache
Definition: RealmCacheSession.java:98
KeycloakTransaction getAfterTransaction()
Definition: RealmCacheSession.java:325
KeycloakTransaction getPrepareTransaction()
Definition: RealmCacheSession.java:280
final long startupRevision
Definition: RealmCacheSession.java:115
KeycloakSession session
Definition: RealmCacheSession.java:99
void enlistAfterCompletion(KeycloakTransaction transaction)
void enlistPrepare(KeycloakTransaction transaction)

関数詳解

◆ addClient() [1/2]

ClientModel org.keycloak.models.cache.infinispan.RealmCacheSession.addClient ( RealmModel  realm,
String  clientId 
)
inline

org.keycloak.models.ClientProviderを実装しています。

487  {
488  ClientModel client = getRealmDelegate().addClient(realm, clientId);
489  return addedClient(realm, client);
490  }
ClientModel addClient(RealmModel realm, String clientId)
Definition: ClientModel.java:27
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
ClientModel addedClient(RealmModel realm, ClientModel client)
Definition: RealmCacheSession.java:498

◆ addClient() [2/2]

ClientModel org.keycloak.models.cache.infinispan.RealmCacheSession.addClient ( RealmModel  realm,
String  id,
String  clientId 
)
inline

org.keycloak.models.ClientProviderを実装しています。

493  {
494  ClientModel client = getRealmDelegate().addClient(realm, id, clientId);
495  return addedClient(realm, client);
496  }
ClientModel addClient(RealmModel realm, String clientId)
Definition: ClientModel.java:27
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
ClientModel addedClient(RealmModel realm, ClientModel client)
Definition: RealmCacheSession.java:498

◆ addClientRole() [1/2]

RoleModel org.keycloak.models.cache.infinispan.RealmCacheSession.addClientRole ( RealmModel  realm,
ClientModel  client,
String  name 
)
inline

org.keycloak.models.ClientProviderを実装しています。

677  {
678  return addClientRole(realm, client, KeycloakModelUtils.generateId(), name);
679  }
Definition: KeycloakModelUtils.java:68
RoleModel addClientRole(RealmModel realm, ClientModel client, String name)
Definition: RealmCacheSession.java:677
static String generateId()
Definition: KeycloakModelUtils.java:73

◆ addClientRole() [2/2]

RoleModel org.keycloak.models.cache.infinispan.RealmCacheSession.addClientRole ( RealmModel  realm,
ClientModel  client,
String  id,
String  name 
)
inline

org.keycloak.models.ClientProviderを実装しています。

682  {
683  RoleModel role = getRealmDelegate().addClientRole(realm, client, id, name);
684  addedRole(role.getId(), client.getId());
685  return role;
686  }
void addedRole(String roleId, String roleContainerId)
Definition: RealmCacheSession.java:244
RoleModel addClientRole(RealmModel realm, ClientModel client, String name)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Definition: RoleModel.java:26

◆ addedClient()

ClientModel org.keycloak.models.cache.infinispan.RealmCacheSession.addedClient ( RealmModel  realm,
ClientModel  client 
)
inlineprivate
498  {
499  logger.trace("added Client.....");
500 
501  invalidateClient(client.getId());
502  // this is needed so that a client that hasn't been committed isn't cached in a query
503  listInvalidations.add(realm.getId());
504 
505  invalidationEvents.add(ClientAddedEvent.create(client.getId(), client.getClientId(), realm.getId()));
506  cache.clientAdded(realm.getId(), client.getId(), client.getClientId(), invalidations);
507  return client;
508  }
void invalidateClient(String id)
Definition: RealmCacheSession.java:177
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void clientAdded(String realmId, String clientUUID, String clientId, Set< String > invalidations)
Definition: RealmCacheManager.java:81
static ClientAddedEvent create(String clientUuid, String clientId, String realmId)
Definition: ClientAddedEvent.java:40
Set< String > invalidations
Definition: RealmCacheSession.java:111
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
static final Logger logger
Definition: RealmCacheSession.java:95
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ addedRole()

void org.keycloak.models.cache.infinispan.RealmCacheSession.addedRole ( String  roleId,
String  roleContainerId 
)
inlineprivate
244  {
245  // this is needed so that a new role that hasn't been committed isn't cached in a query
246  listInvalidations.add(roleContainerId);
247 
248  invalidateRole(roleId);
249  cache.roleAdded(roleContainerId, invalidations);
250  invalidationEvents.add(RoleAddedEvent.create(roleId, roleContainerId));
251  }
void roleAdded(String roleContainerId, Set< String > invalidations)
Definition: RealmCacheManager.java:60
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void invalidateRole(String id)
Definition: RealmCacheSession.java:238
Set< String > invalidations
Definition: RealmCacheSession.java:111
static RoleAddedEvent create(String roleId, String containerId)
Definition: RoleAddedEvent.java:39
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ addGroupEventIfAbsent()

void org.keycloak.models.cache.infinispan.RealmCacheSession.addGroupEventIfAbsent ( InvalidationEvent  eventToAdd)
inlineprivate
1002  {
1003  String groupId = eventToAdd.getId();
1004 
1005  // Check if we have existing event with bigger priority
1006  boolean eventAlreadyExists = invalidationEvents.stream()
1007  .anyMatch((InvalidationEvent event) -> (event.getId().equals(groupId)) &&
1008  (event instanceof GroupAddedEvent || event instanceof GroupMovedEvent || event instanceof GroupRemovedEvent));
1009 
1010  if (!eventAlreadyExists) {
1011  invalidationEvents.add(eventToAdd);
1012  }
1013  }
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ addRealmRole() [1/2]

RoleModel org.keycloak.models.cache.infinispan.RealmCacheSession.addRealmRole ( RealmModel  realm,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

593  {
594  return addRealmRole(realm, KeycloakModelUtils.generateId(), name);
595  }
Definition: KeycloakModelUtils.java:68
RoleModel addRealmRole(RealmModel realm, String name)
Definition: RealmCacheSession.java:593
static String generateId()
Definition: KeycloakModelUtils.java:73

◆ addRealmRole() [2/2]

RoleModel org.keycloak.models.cache.infinispan.RealmCacheSession.addRealmRole ( RealmModel  realm,
String  id,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

598  {
599  RoleModel role = getRealmDelegate().addRealmRole(realm, id, name);
600  addedRole(role.getId(), realm.getId());
601  return role;
602  }
RoleModel addRealmRole(RealmModel realm, String name)
void addedRole(String roleId, String roleContainerId)
Definition: RealmCacheSession.java:244
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Definition: RoleModel.java:26

◆ addTopLevelGroup()

void org.keycloak.models.cache.infinispan.RealmCacheSession.addTopLevelGroup ( RealmModel  realm,
GroupModel  subGroup 
)
inline

org.keycloak.models.RealmProviderを実装しています。

990  {
991  invalidateGroup(subGroup.getId(), realm.getId(), true);
992  if (subGroup.getParentId() != null) {
993  invalidateGroup(subGroup.getParentId(), realm.getId(), false); // Queries already invalidated
994  }
995 
996  addGroupEventIfAbsent(GroupMovedEvent.create(subGroup, null, realm.getId()));
997 
998  getRealmDelegate().addTopLevelGroup(realm, subGroup);
999 
1000  }
void invalidateGroup(String id, String realmId, boolean invalidateQueries)
Definition: RealmCacheSession.java:259
static GroupMovedEvent create(GroupModel group, GroupModel toParent, String realmId)
Definition: GroupMovedEvent.java:42
void addTopLevelGroup(RealmModel realm, GroupModel subGroup)
void addGroupEventIfAbsent(InvalidationEvent eventToAdd)
Definition: RealmCacheSession.java:1002
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ cacheClient()

ClientModel org.keycloak.models.cache.infinispan.RealmCacheSession.cacheClient ( RealmModel  realm,
ClientModel  delegate,
Long  revision 
)
inlineprotected
1042  {
1043  if (invalidations.contains(delegate.getId())) return delegate;
1044  StorageId storageId = new StorageId(delegate.getId());
1045  CachedClient cached = null;
1046  ClientAdapter adapter = null;
1047 
1048  if (!storageId.isLocal()) {
1049  ComponentModel component = realm.getComponent(storageId.getProviderId());
1051  if (!model.isEnabled()) {
1052  return delegate;
1053  }
1054  ClientStorageProviderModel.CachePolicy policy = model.getCachePolicy();
1055  if (policy != null && policy == ClientStorageProviderModel.CachePolicy.NO_CACHE) {
1056  return delegate;
1057  }
1058 
1059  cached = new CachedClient(revision, realm, delegate);
1060  adapter = new ClientAdapter(realm, cached, this);
1061 
1062  long lifespan = model.getLifespan();
1063  if (lifespan > 0) {
1064  cache.addRevisioned(cached, startupRevision, lifespan);
1065  } else {
1067  }
1068  } else {
1069  cached = new CachedClient(revision, realm, delegate);
1070  adapter = new ClientAdapter(realm, cached, this);
1072  }
1073 
1074  return adapter;
1075  }
Definition: ComponentModel.java:31
long getLifespan()
Definition: CacheableStorageProviderModel.java:164
RealmCacheManager cache
Definition: RealmCacheSession.java:98
boolean isEnabled()
Definition: ClientStorageProviderModel.java:48
ComponentModel getComponent(String id)
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
CachePolicy getCachePolicy()
Definition: CacheableStorageProviderModel.java:54
Definition: ClientStorageProviderModel.java:28
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ clear()

void org.keycloak.models.cache.infinispan.RealmCacheSession.clear ( )
inline

org.keycloak.models.cache.CacheRealmProviderを実装しています。

134  {
135  ClusterProvider cluster = session.getProvider(ClusterProvider.class);
136  cluster.notify(InfinispanCacheRealmProviderFactory.REALM_CLEAR_CACHE_EVENTS, new ClearCacheEvent(), false, ClusterProvider.DCNotify.ALL_DCS);
137  }
< T extends Provider > T getProvider(Class< T > clazz)
KeycloakSession session
Definition: RealmCacheSession.java:99

◆ close()

void org.keycloak.models.cache.infinispan.RealmCacheSession.close ( )
inline

org.keycloak.models.RealmProviderを実装しています。

587  {
588  if (realmDelegate != null) realmDelegate.close();
589  if (clientDelegate != null) clientDelegate.close();
590  }
ClientProvider clientDelegate
Definition: RealmCacheSession.java:101
RealmProvider realmDelegate
Definition: RealmCacheSession.java:100

◆ createClientInitialAccessModel()

ClientInitialAccessModel org.keycloak.models.cache.infinispan.RealmCacheSession.createClientInitialAccessModel ( RealmModel  realm,
int  expiration,
int  count 
)
inline

org.keycloak.models.RealmProviderを実装しています。

1161  {
1162  return getRealmDelegate().createClientInitialAccessModel(realm, expiration, count);
1163  }
ClientInitialAccessModel createClientInitialAccessModel(RealmModel realm, int expiration, int count)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ createGroup() [1/2]

GroupModel org.keycloak.models.cache.infinispan.RealmCacheSession.createGroup ( RealmModel  realm,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

970  {
971  GroupModel group = getRealmDelegate().createGroup(realm, name);
972  return groupAdded(realm, group);
973  }
GroupModel groupAdded(RealmModel realm, GroupModel group)
Definition: RealmCacheSession.java:975
Definition: GroupModel.java:30
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
GroupModel createGroup(RealmModel realm, String name)

◆ createGroup() [2/2]

GroupModel org.keycloak.models.cache.infinispan.RealmCacheSession.createGroup ( RealmModel  realm,
String  id,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

984  {
985  GroupModel group = getRealmDelegate().createGroup(realm, id, name);
986  return groupAdded(realm, group);
987  }
GroupModel groupAdded(RealmModel realm, GroupModel group)
Definition: RealmCacheSession.java:975
Definition: GroupModel.java:30
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
GroupModel createGroup(RealmModel realm, String name)

◆ createRealm() [1/2]

RealmModel org.keycloak.models.cache.infinispan.RealmCacheSession.createRealm ( String  name)
inline

org.keycloak.models.RealmProviderを実装しています。

374  {
375  RealmModel realm = getRealmDelegate().createRealm(name);
376  registerRealmInvalidation(realm.getId(), realm.getName());
377  return realm;
378  }
RealmModel createRealm(String name)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
void registerRealmInvalidation(String id, String name)
Definition: RealmCacheSession.java:162
Definition: RealmModel.java:34

◆ createRealm() [2/2]

RealmModel org.keycloak.models.cache.infinispan.RealmCacheSession.createRealm ( String  id,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

381  {
382  RealmModel realm = getRealmDelegate().createRealm(id, name);
383  registerRealmInvalidation(realm.getId(), realm.getName());
384  return realm;
385  }
RealmModel createRealm(String name)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
void registerRealmInvalidation(String id, String name)
Definition: RealmCacheSession.java:162
Definition: RealmModel.java:34

◆ decreaseRemainingCount()

void org.keycloak.models.cache.infinispan.RealmCacheSession.decreaseRemainingCount ( RealmModel  realm,
ClientInitialAccessModel  clientInitialAccess 
)
inline

org.keycloak.models.RealmProviderを実装しています。

1186  {
1187  getRealmDelegate().decreaseRemainingCount(realm, clientInitialAccess);
1188  }
void decreaseRemainingCount(RealmModel realm, ClientInitialAccessModel clientInitialAccess)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ evictRealmOnRemoval()

void org.keycloak.models.cache.infinispan.RealmCacheSession.evictRealmOnRemoval ( RealmModel  realm)
inline
479  {
480  cache.invalidateObject(realm.getId());
482  cache.realmRemoval(realm.getId(), realm.getName(), invalidations);
483  }
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static RealmRemovedEvent create(String realmId, String realmName)
Definition: RealmRemovedEvent.java:39
Set< String > invalidations
Definition: RealmCacheSession.java:111
Object invalidateObject(String id)
Definition: CacheManager.java:116
void realmRemoval(String id, String name, Set< String > invalidations)
Definition: RealmCacheManager.java:54
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ getAfterTransaction()

KeycloakTransaction org.keycloak.models.cache.infinispan.RealmCacheSession.getAfterTransaction ( )
inlineprivate
325  {
326  return new KeycloakTransaction() {
327  @Override
328  public void begin() {
329  transactionActive = true;
330  }
331 
332  @Override
333  public void commit() {
334  try {
335  if (clearAll) {
336  cache.clear();
337  }
339  transactionActive = false;
340  } finally {
342  }
343  }
344 
345  @Override
346  public void rollback() {
347  try {
348  setRollbackOnly = true;
350  transactionActive = false;
351  } finally {
353  }
354  }
355 
356  @Override
357  public void setRollbackOnly() {
358  setRollbackOnly = true;
359  }
360 
361  @Override
362  public boolean getRollbackOnly() {
363  return setRollbackOnly;
364  }
365 
366  @Override
367  public boolean isActive() {
368  return transactionActive;
369  }
370  };
371  }
boolean setRollbackOnly
Definition: RealmCacheSession.java:103
boolean transactionActive
Definition: RealmCacheSession.java:102
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void runInvalidations()
Definition: RealmCacheSession.java:272
boolean clearAll
Definition: RealmCacheSession.java:114
void endRevisionBatch()
Definition: CacheManager.java:86
void clear()
Definition: CacheManager.java:181
Definition: KeycloakTransaction.java:24

◆ getClientByClientId()

ClientModel org.keycloak.models.cache.infinispan.RealmCacheSession.getClientByClientId ( String  clientId,
RealmModel  realm 
)
inline

org.keycloak.storage.client.ClientLookupProviderを実装しています。

1102  {
1103  String cacheKey = getClientByClientIdCacheKey(clientId, realm.getId());
1104  ClientListQuery query = cache.get(cacheKey, ClientListQuery.class);
1105  String id = null;
1106 
1107  if (query != null) {
1108  logger.tracev("client by name cache hit: {0}", clientId);
1109  }
1110 
1111  if (query == null) {
1112  Long loaded = cache.getCurrentRevision(cacheKey);
1113  ClientModel model = getClientDelegate().getClientByClientId(clientId, realm);
1114  if (model == null) return null;
1115  if (invalidations.contains(model.getId())) return model;
1116  id = model.getId();
1117  query = new ClientListQuery(loaded, cacheKey, realm, id);
1118  logger.tracev("adding client by name cache miss: {0}", clientId);
1120  } else if (invalidations.contains(cacheKey)) {
1121  return getClientDelegate().getClientByClientId(clientId, realm);
1122  } else {
1123  id = query.getClients().iterator().next();
1124  if (invalidations.contains(id)) {
1125  return getClientDelegate().getClientByClientId(clientId, realm);
1126  }
1127  }
1128  return getClientById(id, realm);
1129  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
ClientModel getClientByClientId(String clientId, RealmModel realm)
ClientModel getClientById(String id, RealmModel realm)
Definition: RealmCacheSession.java:1016
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
Definition: ClientModel.java:27
ClientProvider getClientDelegate()
Definition: RealmCacheSession.java:151
static final Logger logger
Definition: RealmCacheSession.java:95
static String getClientByClientIdCacheKey(String clientId, String realmId)
Definition: RealmCacheSession.java:1131
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getClientByClientIdCacheKey()

static String org.keycloak.models.cache.infinispan.RealmCacheSession.getClientByClientIdCacheKey ( String  clientId,
String  realmId 
)
inlinestaticpackage
1131  {
1132  return realmId + ".client.query.by.clientId." + clientId;
1133  }

◆ getClientById()

ClientModel org.keycloak.models.cache.infinispan.RealmCacheSession.getClientById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.storage.client.ClientLookupProviderを実装しています。

1016  {
1017  CachedClient cached = cache.get(id, CachedClient.class);
1018  if (cached != null && !cached.getRealm().equals(realm.getId())) {
1019  cached = null;
1020  }
1021  if (cached != null) {
1022  logger.tracev("client by id cache hit: {0}", cached.getClientId());
1023  }
1024 
1025  if (cached == null) {
1026  Long loaded = cache.getCurrentRevision(id);
1027  ClientModel model = getClientDelegate().getClientById(id, realm);
1028  if (model == null) return null;
1029  ClientModel adapter = cacheClient(realm, model, loaded);
1030  managedApplications.put(id, adapter);
1031  return adapter;
1032  } else if (invalidations.contains(id)) {
1033  return getRealmDelegate().getClientById(id, realm);
1034  } else if (managedApplications.containsKey(id)) {
1035  return managedApplications.get(id);
1036  }
1037  ClientModel adapter = validateCache(realm, cached);
1038  managedApplications.put(id, adapter);
1039  return adapter;
1040  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
String getRealm()
Definition: CachedClient.java:136
Map< String, ClientModel > managedApplications
Definition: RealmCacheSession.java:106
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
Set< String > invalidations
Definition: RealmCacheSession.java:111
String getClientId()
Definition: CachedClient.java:124
ClientModel getClientById(String id, RealmModel realm)
Definition: ClientModel.java:27
ClientProvider getClientDelegate()
Definition: RealmCacheSession.java:151
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
static final Logger logger
Definition: RealmCacheSession.java:95
ClientModel cacheClient(RealmModel realm, ClientModel delegate, Long revision)
Definition: RealmCacheSession.java:1042
ClientModel validateCache(RealmModel realm, CachedClient cached)
Definition: RealmCacheSession.java:1078

◆ getClientDelegate()

ClientProvider org.keycloak.models.cache.infinispan.RealmCacheSession.getClientDelegate ( )
inline
151  {
152  if (!transactionActive) throw new IllegalStateException("Cannot access delegate without a transaction");
153  if (clientDelegate != null) return clientDelegate;
155  return clientDelegate;
156  }
boolean transactionActive
Definition: RealmCacheSession.java:102
ClientProvider clientDelegate
Definition: RealmCacheSession.java:101
KeycloakSession session
Definition: RealmCacheSession.java:99

◆ getClientInitialAccessModel()

ClientInitialAccessModel org.keycloak.models.cache.infinispan.RealmCacheSession.getClientInitialAccessModel ( RealmModel  realm,
String  id 
)
inline

org.keycloak.models.RealmProviderを実装しています。

1166  {
1167  return getRealmDelegate().getClientInitialAccessModel(realm, id);
1168  }
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
ClientInitialAccessModel getClientInitialAccessModel(RealmModel realm, String id)

◆ getClientRole()

RoleModel org.keycloak.models.cache.infinispan.RealmCacheSession.getClientRole ( RealmModel  realm,
ClientModel  client,
String  name 
)
inline

org.keycloak.models.ClientProviderを実装しています。

719  {
720  String cacheKey = getRoleByNameCacheKey(client.getId(), name);
721  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(client.getId());
722  if (queryDB) {
723  return getRealmDelegate().getClientRole(realm, client, name);
724  }
725 
726  RoleListQuery query = cache.get(cacheKey, RoleListQuery.class);
727  if (query != null) {
728  logger.tracev("getClientRole cache hit: {0}.{1}", client.getClientId(), name);
729  }
730 
731  if (query == null) {
732  Long loaded = cache.getCurrentRevision(cacheKey);
733  RoleModel model = getRealmDelegate().getClientRole(realm, client, name);
734  if (model == null) return null;
735  query = new RoleListQuery(loaded, cacheKey, realm, model.getId(), client.getClientId());
736  logger.tracev("adding client role cache miss: client {0} key {1}", client.getClientId(), cacheKey);
738  return model;
739  }
740  RoleModel role = getRoleById(query.getRoles().iterator().next(), realm);
741  if (role == null) {
742  invalidations.add(cacheKey);
743  return getRealmDelegate().getClientRole(realm, client, name);
744  }
745  return role;
746  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static String getRoleByNameCacheKey(String container, String name)
Definition: RealmCacheSession.java:525
RoleModel getRoleById(String id, RealmModel realm)
Definition: RealmCacheSession.java:760
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
RoleModel getClientRole(RealmModel realm, ClientModel client, String name)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
static final Logger logger
Definition: RealmCacheSession.java:95
Definition: RoleModel.java:26
Set< String > getRoles()
Definition: RoleListQuery.java:44
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getClientRoles()

Set<RoleModel> org.keycloak.models.cache.infinispan.RealmCacheSession.getClientRoles ( RealmModel  realm,
ClientModel  client 
)
inline

org.keycloak.models.ClientProviderを実装しています。

641  {
642  String cacheKey = getRolesCacheKey(client.getId());
643  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(client.getId());
644  if (queryDB) {
645  return getRealmDelegate().getClientRoles(realm, client);
646  }
647 
648  RoleListQuery query = cache.get(cacheKey, RoleListQuery.class);
649  if (query != null) {
650  logger.tracev("getClientRoles cache hit: {0}", client.getClientId());
651  }
652 
653  if (query == null) {
654  Long loaded = cache.getCurrentRevision(cacheKey);
655  Set<RoleModel> model = getRealmDelegate().getClientRoles(realm, client);
656  if (model == null) return null;
657  Set<String> ids = new HashSet<>();
658  for (RoleModel role : model) ids.add(role.getId());
659  query = new RoleListQuery(loaded, cacheKey, realm, ids, client.getClientId());
660  logger.tracev("adding client roles cache miss: client {0} key {1}", client.getClientId(), cacheKey);
662  return model;
663  }
664  Set<RoleModel> list = new HashSet<>();
665  for (String id : query.getRoles()) {
666  RoleModel role = session.realms().getRoleById(id, realm);
667  if (role == null) {
668  invalidations.add(cacheKey);
669  return getRealmDelegate().getClientRoles(realm, client);
670  }
671  list.add(role);
672  }
673  return list;
674  }
Set< RoleModel > getClientRoles(RealmModel realm, ClientModel client)
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RoleModel getRoleById(String id, RealmModel realm)
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static String getRolesCacheKey(String container)
Definition: RealmCacheSession.java:522
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
KeycloakSession session
Definition: RealmCacheSession.java:99
static final Logger logger
Definition: RealmCacheSession.java:95
Definition: RoleModel.java:26
Set< String > getRoles()
Definition: RoleListQuery.java:44
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getClients()

List<ClientModel> org.keycloak.models.cache.infinispan.RealmCacheSession.getClients ( RealmModel  realm)
inline

org.keycloak.models.ClientProviderを実装しています。

530  {
531  String cacheKey = getRealmClientsQueryCacheKey(realm.getId());
532  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(realm.getId());
533  if (queryDB) {
534  return getClientDelegate().getClients(realm);
535  }
536 
537  ClientListQuery query = cache.get(cacheKey, ClientListQuery.class);
538  if (query != null) {
539  logger.tracev("getClients cache hit: {0}", realm.getName());
540  }
541 
542  if (query == null) {
543  Long loaded = cache.getCurrentRevision(cacheKey);
544  List<ClientModel> model = getClientDelegate().getClients(realm);
545  if (model == null) return null;
546  Set<String> ids = new HashSet<>();
547  for (ClientModel client : model) ids.add(client.getId());
548  query = new ClientListQuery(loaded, cacheKey, realm, ids);
549  logger.tracev("adding realm clients cache miss: realm {0} key {1}", realm.getName(), cacheKey);
551  return model;
552  }
553  List<ClientModel> list = new LinkedList<>();
554  for (String id : query.getClients()) {
555  ClientModel client = session.realms().getClientById(id, realm);
556  if (client == null) {
557  // TODO: Handle with cluster invalidations too
558  invalidations.add(cacheKey);
559  return getRealmDelegate().getClients(realm);
560  }
561  list.add(client);
562  }
563  return list;
564  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Set< String > getClients()
Definition: ClientListQuery.java:33
static String getRealmClientsQueryCacheKey(String realm)
Definition: RealmCacheSession.java:510
RealmCacheManager cache
Definition: RealmCacheSession.java:98
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
ClientModel getClientById(String id, RealmModel realm)
Definition: ClientModel.java:27
ClientProvider getClientDelegate()
Definition: RealmCacheSession.java:151
List< ClientModel > getClients(RealmModel realm)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
KeycloakSession session
Definition: RealmCacheSession.java:99
static final Logger logger
Definition: RealmCacheSession.java:95
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getClientScopeById()

ClientScopeModel org.keycloak.models.cache.infinispan.RealmCacheSession.getClientScopeById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.RealmProviderを実装しています。

1136  {
1137  CachedClientScope cached = cache.get(id, CachedClientScope.class);
1138  if (cached != null && !cached.getRealm().equals(realm.getId())) {
1139  cached = null;
1140  }
1141 
1142  if (cached == null) {
1143  Long loaded = cache.getCurrentRevision(id);
1145  if (model == null) return null;
1146  if (invalidations.contains(id)) return model;
1147  cached = new CachedClientScope(loaded, realm, model);
1149  } else if (invalidations.contains(id)) {
1150  return getRealmDelegate().getClientScopeById(id, realm);
1151  } else if (managedClientScopes.containsKey(id)) {
1152  return managedClientScopes.get(id);
1153  }
1154  ClientScopeAdapter adapter = new ClientScopeAdapter(realm, cached, this);
1155  managedClientScopes.put(id, adapter);
1156  return adapter;
1157  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
ClientScopeModel getClientScopeById(String id, RealmModel realm)
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
Map< String, ClientScopeAdapter > managedClientScopes
Definition: RealmCacheSession.java:107
String getRealm()
Definition: CachedClientScope.java:67
Definition: ClientScopeModel.java:26
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getGroupById()

GroupModel org.keycloak.models.cache.infinispan.RealmCacheSession.getGroupById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.RealmProviderを実装しています。

789  {
790  CachedGroup cached = cache.get(id, CachedGroup.class);
791  if (cached != null && !cached.getRealm().equals(realm.getId())) {
792  cached = null;
793  }
794 
795  if (cached == null) {
796  Long loaded = cache.getCurrentRevision(id);
797  GroupModel model = getRealmDelegate().getGroupById(id, realm);
798  if (model == null) return null;
799  if (invalidations.contains(id)) return model;
800  cached = new CachedGroup(loaded, realm, model);
802 
803  } else if (invalidations.contains(id)) {
804  return getRealmDelegate().getGroupById(id, realm);
805  } else if (managedGroups.containsKey(id)) {
806  return managedGroups.get(id);
807  }
808  GroupAdapter adapter = new GroupAdapter(cached, this, session, realm);
809  managedGroups.put(id, adapter);
810  return adapter;
811  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
Map< String, GroupAdapter > managedGroups
Definition: RealmCacheSession.java:109
GroupModel getGroupById(String id, RealmModel realm)
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
String getRealm()
Definition: CachedGroup.java:58
Set< String > invalidations
Definition: RealmCacheSession.java:111
Definition: GroupModel.java:30
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
KeycloakSession session
Definition: RealmCacheSession.java:99
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getGroups()

List<GroupModel> org.keycloak.models.cache.infinispan.RealmCacheSession.getGroups ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

824  {
825  String cacheKey = getGroupsQueryCacheKey(realm.getId());
826  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(realm.getId());
827  if (queryDB) {
828  return getRealmDelegate().getGroups(realm);
829  }
830 
831  GroupListQuery query = cache.get(cacheKey, GroupListQuery.class);
832  if (query != null) {
833  logger.tracev("getGroups cache hit: {0}", realm.getName());
834  }
835 
836  if (query == null) {
837  Long loaded = cache.getCurrentRevision(cacheKey);
838  List<GroupModel> model = getRealmDelegate().getGroups(realm);
839  if (model == null) return null;
840  Set<String> ids = new HashSet<>();
841  for (GroupModel client : model) ids.add(client.getId());
842  query = new GroupListQuery(loaded, cacheKey, realm, ids);
843  logger.tracev("adding realm getGroups cache miss: realm {0} key {1}", realm.getName(), cacheKey);
845  return model;
846  }
847  List<GroupModel> list = new LinkedList<>();
848  for (String id : query.getGroups()) {
849  GroupModel group = session.realms().getGroupById(id, realm);
850  if (group == null) {
851  invalidations.add(cacheKey);
852  return getRealmDelegate().getGroups(realm);
853  }
854  list.add(group);
855  }
856 
857  list.sort(Comparator.comparing(GroupModel::getName));
858 
859  return list;
860  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static String getGroupsQueryCacheKey(String realm)
Definition: RealmCacheSession.java:514
GroupModel getGroupById(String id, RealmModel realm)
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
List< GroupModel > getGroups(RealmModel realm)
Definition: GroupModel.java:30
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > getGroups()
Definition: GroupListQuery.java:24
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
KeycloakSession session
Definition: RealmCacheSession.java:99
static final Logger logger
Definition: RealmCacheSession.java:95
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getGroupsCount()

Long org.keycloak.models.cache.infinispan.RealmCacheSession.getGroupsCount ( RealmModel  realm,
Boolean  onlyTopGroups 
)
inline

org.keycloak.models.RealmProviderを実装しています。

863  {
864  return getRealmDelegate().getGroupsCount(realm, onlyTopGroups);
865  }
Long getGroupsCount(RealmModel realm, Boolean onlyTopGroups)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ getGroupsCountByNameContaining()

Long org.keycloak.models.cache.infinispan.RealmCacheSession.getGroupsCountByNameContaining ( RealmModel  realm,
String  search 
)
inline

org.keycloak.models.RealmProviderを実装しています。

868  {
869  return getRealmDelegate().getGroupsCountByNameContaining(realm, search);
870  }
Long getGroupsCountByNameContaining(RealmModel realm, String search)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ getGroupsQueryCacheKey()

static String org.keycloak.models.cache.infinispan.RealmCacheSession.getGroupsQueryCacheKey ( String  realm)
inlinestaticpackage
514  {
515  return realm + ".groups";
516  }

◆ getMigrationModel()

MigrationModel org.keycloak.models.cache.infinispan.RealmCacheSession.getMigrationModel ( )
inline

org.keycloak.models.RealmProviderを実装しています。

140  {
142  }
MigrationModel getMigrationModel()
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ getPrepareTransaction()

KeycloakTransaction org.keycloak.models.cache.infinispan.RealmCacheSession.getPrepareTransaction ( )
inlineprivate
280  {
281  return new KeycloakTransaction() {
282  @Override
283  public void begin() {
284  transactionActive = true;
285  }
286 
287  @Override
288  public void commit() {
289  /* THIS WAS CAUSING DEADLOCK IN A CLUSTER
290  if (delegate == null) return;
291  List<String> locks = new LinkedList<>();
292  locks.addAll(invalidations);
293 
294  Collections.sort(locks); // lock ordering
295  cache.getRevisions().startBatch();
296 
297  if (!locks.isEmpty()) cache.getRevisions().getAdvancedCache().lock(locks);
298  */
299 
300  }
301 
302  @Override
303  public void rollback() {
304  setRollbackOnly = true;
305  transactionActive = false;
306  }
307 
308  @Override
309  public void setRollbackOnly() {
310  setRollbackOnly = true;
311  }
312 
313  @Override
314  public boolean getRollbackOnly() {
315  return setRollbackOnly;
316  }
317 
318  @Override
319  public boolean isActive() {
320  return transactionActive;
321  }
322  };
323  }
boolean setRollbackOnly
Definition: RealmCacheSession.java:103
boolean transactionActive
Definition: RealmCacheSession.java:102
Definition: KeycloakTransaction.java:24

◆ getRealm()

RealmModel org.keycloak.models.cache.infinispan.RealmCacheSession.getRealm ( String  id)
inline

org.keycloak.models.RealmProviderを実装しています。

388  {
389  CachedRealm cached = cache.get(id, CachedRealm.class);
390  if (cached != null) {
391  logger.tracev("by id cache hit: {0}", cached.getName());
392  }
393  boolean wasCached = false;
394  if (cached == null) {
395  Long loaded = cache.getCurrentRevision(id);
396  RealmModel model = getRealmDelegate().getRealm(id);
397  if (model == null) return null;
398  if (invalidations.contains(id)) return model;
399  cached = new CachedRealm(loaded, model);
401  wasCached =true;
402  } else if (invalidations.contains(id)) {
403  return getRealmDelegate().getRealm(id);
404  } else if (managedRealms.containsKey(id)) {
405  return managedRealms.get(id);
406  }
407  RealmAdapter adapter = new RealmAdapter(session, cached, this);
408  if (wasCached) {
409  CachedRealmModel.RealmCachedEvent event = new CachedRealmModel.RealmCachedEvent() {
410  @Override
411  public CachedRealmModel getRealm() {
412  return adapter;
413  }
414 
415  @Override
416  public KeycloakSession getKeycloakSession() {
417  return session;
418  }
419  };
421  }
422  managedRealms.put(id, adapter);
423  return adapter;
424  }
Map< String, RealmAdapter > managedRealms
Definition: RealmCacheSession.java:105
RealmModel getRealm(String id)
Definition: RealmCacheSession.java:388
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
KeycloakSessionFactory getKeycloakSessionFactory()
RealmCacheManager cache
Definition: RealmCacheSession.java:98
RealmModel getRealm(String id)
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
String getName()
Definition: CachedRealm.java:308
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
KeycloakSession session
Definition: RealmCacheSession.java:99
static final Logger logger
Definition: RealmCacheSession.java:95
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132
Definition: KeycloakSession.java:32
Definition: RealmModel.java:34

◆ getRealmByName()

RealmModel org.keycloak.models.cache.infinispan.RealmCacheSession.getRealmByName ( String  name)
inline

org.keycloak.models.RealmProviderを実装しています。

427  {
428  String cacheKey = getRealmByNameCacheKey(name);
429  RealmListQuery query = cache.get(cacheKey, RealmListQuery.class);
430  if (query != null) {
431  logger.tracev("realm by name cache hit: {0}", name);
432  }
433  if (query == null) {
434  Long loaded = cache.getCurrentRevision(cacheKey);
436  if (model == null) return null;
437  if (invalidations.contains(model.getId())) return model;
438  query = new RealmListQuery(loaded, cacheKey, model.getId());
440  return model;
441  } else if (invalidations.contains(cacheKey)) {
442  return getRealmDelegate().getRealmByName(name);
443  } else {
444  String realmId = query.getRealms().iterator().next();
445  if (invalidations.contains(realmId)) {
446  return getRealmDelegate().getRealmByName(name);
447  }
448  return getRealm(realmId);
449  }
450  }
RealmModel getRealm(String id)
Definition: RealmCacheSession.java:388
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmModel getRealmByName(String name)
RealmCacheManager cache
Definition: RealmCacheSession.java:98
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
static String getRealmByNameCacheKey(String name)
Definition: RealmCacheSession.java:452
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
static final Logger logger
Definition: RealmCacheSession.java:95
Set< String > getRealms()
Definition: RealmListQuery.java:24
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132
Definition: RealmModel.java:34

◆ getRealmByNameCacheKey()

static String org.keycloak.models.cache.infinispan.RealmCacheSession.getRealmByNameCacheKey ( String  name)
inlinestaticpackage
452  {
453  return "realm.query.by.name." + name;
454  }

◆ getRealmClientsQueryCacheKey()

static String org.keycloak.models.cache.infinispan.RealmCacheSession.getRealmClientsQueryCacheKey ( String  realm)
inlinestaticpackage
510  {
511  return realm + REALM_CLIENTS_QUERY_SUFFIX;
512  }
static final String REALM_CLIENTS_QUERY_SUFFIX
Definition: RealmCacheSession.java:96

◆ getRealmDelegate()

RealmProvider org.keycloak.models.cache.infinispan.RealmCacheSession.getRealmDelegate ( )
inline

org.keycloak.models.cache.CacheRealmProviderを実装しています。

145  {
146  if (!transactionActive) throw new IllegalStateException("Cannot access delegate without a transaction");
147  if (realmDelegate != null) return realmDelegate;
149  return realmDelegate;
150  }
boolean transactionActive
Definition: RealmCacheSession.java:102
RealmProvider realmDelegate
Definition: RealmCacheSession.java:100
KeycloakSession session
Definition: RealmCacheSession.java:99

◆ getRealmRole()

RoleModel org.keycloak.models.cache.infinispan.RealmCacheSession.getRealmRole ( RealmModel  realm,
String  name 
)
inline

org.keycloak.models.RealmProviderを実装しています。

689  {
690  String cacheKey = getRoleByNameCacheKey(realm.getId(), name);
691  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(realm.getId());
692  if (queryDB) {
693  return getRealmDelegate().getRealmRole(realm, name);
694  }
695 
696  RoleListQuery query = cache.get(cacheKey, RoleListQuery.class);
697  if (query != null) {
698  logger.tracev("getRealmRole cache hit: {0}.{1}", realm.getName(), name);
699  }
700 
701  if (query == null) {
702  Long loaded = cache.getCurrentRevision(cacheKey);
703  RoleModel model = getRealmDelegate().getRealmRole(realm, name);
704  if (model == null) return null;
705  query = new RoleListQuery(loaded, cacheKey, realm, model.getId());
706  logger.tracev("adding realm role cache miss: client {0} key {1}", realm.getName(), cacheKey);
708  return model;
709  }
710  RoleModel role = getRoleById(query.getRoles().iterator().next(), realm);
711  if (role == null) {
712  invalidations.add(cacheKey);
713  return getRealmDelegate().getRealmRole(realm, name);
714  }
715  return role;
716  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static String getRoleByNameCacheKey(String container, String name)
Definition: RealmCacheSession.java:525
RoleModel getRoleById(String id, RealmModel realm)
Definition: RealmCacheSession.java:760
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
RoleModel getRealmRole(RealmModel realm, String name)
static final Logger logger
Definition: RealmCacheSession.java:95
Definition: RoleModel.java:26
Set< String > getRoles()
Definition: RoleListQuery.java:44
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getRealmRoles()

Set<RoleModel> org.keycloak.models.cache.infinispan.RealmCacheSession.getRealmRoles ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

605  {
606  String cacheKey = getRolesCacheKey(realm.getId());
607  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(realm.getId());
608  if (queryDB) {
609  return getRealmDelegate().getRealmRoles(realm);
610  }
611 
612  RoleListQuery query = cache.get(cacheKey, RoleListQuery.class);
613  if (query != null) {
614  logger.tracev("getRealmRoles cache hit: {0}", realm.getName());
615  }
616 
617  if (query == null) {
618  Long loaded = cache.getCurrentRevision(cacheKey);
619  Set<RoleModel> model = getRealmDelegate().getRealmRoles(realm);
620  if (model == null) return null;
621  Set<String> ids = new HashSet<>();
622  for (RoleModel role : model) ids.add(role.getId());
623  query = new RoleListQuery(loaded, cacheKey, realm, ids);
624  logger.tracev("adding realm roles cache miss: realm {0} key {1}", realm.getName(), cacheKey);
626  return model;
627  }
628  Set<RoleModel> list = new HashSet<>();
629  for (String id : query.getRoles()) {
630  RoleModel role = session.realms().getRoleById(id, realm);
631  if (role == null) {
632  invalidations.add(cacheKey);
633  return getRealmDelegate().getRealmRoles(realm);
634  }
635  list.add(role);
636  }
637  return list;
638  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RoleModel getRoleById(String id, RealmModel realm)
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static String getRolesCacheKey(String container)
Definition: RealmCacheSession.java:522
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
Set< RoleModel > getRealmRoles(RealmModel realm)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
KeycloakSession session
Definition: RealmCacheSession.java:99
static final Logger logger
Definition: RealmCacheSession.java:95
Definition: RoleModel.java:26
Set< String > getRoles()
Definition: RoleListQuery.java:44
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getRealms()

List<RealmModel> org.keycloak.models.cache.infinispan.RealmCacheSession.getRealms ( )
inline

org.keycloak.models.RealmProviderを実装しています。

457  {
458  // Retrieve realms from backend
459  List<RealmModel> backendRealms = getRealmDelegate().getRealms();
460 
461  // Return cache delegates to ensure cache invalidated during write operations
462  List<RealmModel> cachedRealms = new LinkedList<RealmModel>();
463  for (RealmModel realm : backendRealms) {
464  RealmModel cached = getRealm(realm.getId());
465  cachedRealms.add(cached);
466  }
467  return cachedRealms;
468  }
RealmModel getRealm(String id)
Definition: RealmCacheSession.java:388
List< RealmModel > getRealms()
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Definition: RealmModel.java:34

◆ getRoleById()

RoleModel org.keycloak.models.cache.infinispan.RealmCacheSession.getRoleById ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.RealmProviderを実装しています。

760  {
761  CachedRole cached = cache.get(id, CachedRole.class);
762  if (cached != null && !cached.getRealm().equals(realm.getId())) {
763  cached = null;
764  }
765 
766  if (cached == null) {
767  Long loaded = cache.getCurrentRevision(id);
768  RoleModel model = getRealmDelegate().getRoleById(id, realm);
769  if (model == null) return null;
770  if (invalidations.contains(id)) return model;
771  if (model.isClientRole()) {
772  cached = new CachedClientRole(loaded, model.getContainerId(), model, realm);
773  } else {
774  cached = new CachedRealmRole(loaded, model, realm);
775  }
777 
778  } else if (invalidations.contains(id)) {
779  return getRealmDelegate().getRoleById(id, realm);
780  } else if (managedRoles.containsKey(id)) {
781  return managedRoles.get(id);
782  }
783  RoleAdapter adapter = new RoleAdapter(cached,this, realm);
784  managedRoles.put(id, adapter);
785  return adapter;
786  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
String getRealm()
Definition: CachedRole.java:56
RoleModel getRoleById(String id, RealmModel realm)
RealmCacheManager cache
Definition: RealmCacheSession.java:98
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Definition: RoleModel.java:26
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132
Map< String, RoleAdapter > managedRoles
Definition: RealmCacheSession.java:108

◆ getRoleByNameCacheKey()

static String org.keycloak.models.cache.infinispan.RealmCacheSession.getRoleByNameCacheKey ( String  container,
String  name 
)
inlinestaticpackage
525  {
526  return container + "." + name + ROLES_QUERY_SUFFIX;
527  }
static final String ROLES_QUERY_SUFFIX
Definition: RealmCacheSession.java:97

◆ getRolesCacheKey()

static String org.keycloak.models.cache.infinispan.RealmCacheSession.getRolesCacheKey ( String  container)
inlinestaticpackage
522  {
523  return container + ROLES_QUERY_SUFFIX;
524  }
static final String ROLES_QUERY_SUFFIX
Definition: RealmCacheSession.java:97

◆ getStartupRevision()

long org.keycloak.models.cache.infinispan.RealmCacheSession.getStartupRevision ( )
inline
125  {
126  return startupRevision;
127  }
final long startupRevision
Definition: RealmCacheSession.java:115

◆ getTopGroupsQueryCacheKey()

static String org.keycloak.models.cache.infinispan.RealmCacheSession.getTopGroupsQueryCacheKey ( String  realm)
inlinestaticpackage
518  {
519  return realm + ".top.groups";
520  }

◆ getTopLevelGroups() [1/2]

List<GroupModel> org.keycloak.models.cache.infinispan.RealmCacheSession.getTopLevelGroups ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

873  {
874  String cacheKey = getTopGroupsQueryCacheKey(realm.getId());
875  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(realm.getId());
876  if (queryDB) {
877  return getRealmDelegate().getTopLevelGroups(realm);
878  }
879 
880  GroupListQuery query = cache.get(cacheKey, GroupListQuery.class);
881  if (query != null) {
882  logger.tracev("getTopLevelGroups cache hit: {0}", realm.getName());
883  }
884 
885  if (query == null) {
886  Long loaded = cache.getCurrentRevision(cacheKey);
887  List<GroupModel> model = getRealmDelegate().getTopLevelGroups(realm);
888  if (model == null) return null;
889  Set<String> ids = new HashSet<>();
890  for (GroupModel client : model) ids.add(client.getId());
891  query = new GroupListQuery(loaded, cacheKey, realm, ids);
892  logger.tracev("adding realm getTopLevelGroups cache miss: realm {0} key {1}", realm.getName(), cacheKey);
894  return model;
895  }
896  List<GroupModel> list = new LinkedList<>();
897  for (String id : query.getGroups()) {
898  GroupModel group = session.realms().getGroupById(id, realm);
899  if (group == null) {
900  invalidations.add(cacheKey);
901  return getRealmDelegate().getTopLevelGroups(realm);
902  }
903  list.add(group);
904  }
905 
906  list.sort(Comparator.comparing(GroupModel::getName));
907 
908  return list;
909  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static String getTopGroupsQueryCacheKey(String realm)
Definition: RealmCacheSession.java:518
GroupModel getGroupById(String id, RealmModel realm)
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
Definition: GroupModel.java:30
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > getGroups()
Definition: GroupListQuery.java:24
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
List< GroupModel > getTopLevelGroups(RealmModel realm)
KeycloakSession session
Definition: RealmCacheSession.java:99
static final Logger logger
Definition: RealmCacheSession.java:95
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ getTopLevelGroups() [2/2]

List<GroupModel> org.keycloak.models.cache.infinispan.RealmCacheSession.getTopLevelGroups ( RealmModel  realm,
Integer  first,
Integer  max 
)
inline

org.keycloak.models.RealmProviderを実装しています。

912  {
913  String cacheKey = getTopGroupsQueryCacheKey(realm.getId() + first + max);
914  boolean queryDB = invalidations.contains(cacheKey) || listInvalidations.contains(realm.getId() + first + max);
915  if (queryDB) {
916  return getRealmDelegate().getTopLevelGroups(realm, first, max);
917  }
918 
919  GroupListQuery query = cache.get(cacheKey, GroupListQuery.class);
920  if (Objects.nonNull(query)) {
921  logger.tracev("getTopLevelGroups cache hit: {0}", realm.getName());
922  }
923 
924  if (Objects.isNull(query)) {
925  Long loaded = cache.getCurrentRevision(cacheKey);
926  List<GroupModel> model = getRealmDelegate().getTopLevelGroups(realm, first, max);
927  if (model == null) return null;
928  Set<String> ids = new HashSet<>();
929  for (GroupModel client : model) ids.add(client.getId());
930  query = new GroupListQuery(loaded, cacheKey, realm, ids);
931  logger.tracev("adding realm getTopLevelGroups cache miss: realm {0} key {1}", realm.getName(), cacheKey);
933  return model;
934  }
935  List<GroupModel> list = new LinkedList<>();
936  for (String id : query.getGroups()) {
937  GroupModel group = session.realms().getGroupById(id, realm);
938  if (Objects.isNull(group)) {
939  invalidations.add(cacheKey);
940  return getRealmDelegate().getTopLevelGroups(realm);
941  }
942  list.add(group);
943  }
944 
945  list.sort(Comparator.comparing(GroupModel::getName));
946 
947  return list;
948  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static String getTopGroupsQueryCacheKey(String realm)
Definition: RealmCacheSession.java:518
GroupModel getGroupById(String id, RealmModel realm)
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
final long startupRevision
Definition: RealmCacheSession.java:115
Set< String > invalidations
Definition: RealmCacheSession.java:111
Definition: GroupModel.java:30
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > getGroups()
Definition: GroupListQuery.java:24
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
List< GroupModel > getTopLevelGroups(RealmModel realm)
KeycloakSession session
Definition: RealmCacheSession.java:99
static final Logger logger
Definition: RealmCacheSession.java:95
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132

◆ groupAdded()

GroupModel org.keycloak.models.cache.infinispan.RealmCacheSession.groupAdded ( RealmModel  realm,
GroupModel  group 
)
inlineprivate
975  {
976  listInvalidations.add(realm.getId());
978  invalidations.add(group.getId());
979  invalidationEvents.add(GroupAddedEvent.create(group.getId(), realm.getId()));
980  return group;
981  }
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void groupQueriesInvalidations(String realmId, Set< String > invalidations)
Definition: RealmCacheManager.java:75
Set< String > invalidations
Definition: RealmCacheSession.java:111
static GroupAddedEvent create(String groupId, String realmId)
Definition: GroupAddedEvent.java:40
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ invalidateClient()

void org.keycloak.models.cache.infinispan.RealmCacheSession.invalidateClient ( String  id)
inlineprivate
177  {
178  invalidations.add(id);
179  ClientModel adapter = managedApplications.get(id);
180  if (adapter != null && adapter instanceof ClientAdapter) ((ClientAdapter)adapter).invalidate();
181  }
Map< String, ClientModel > managedApplications
Definition: RealmCacheSession.java:106
Set< String > invalidations
Definition: RealmCacheSession.java:111
Definition: ClientModel.java:27

◆ invalidateClientScope()

void org.keycloak.models.cache.infinispan.RealmCacheSession.invalidateClientScope ( String  id)
inlineprivate
191  {
192  invalidations.add(id);
193  ClientScopeAdapter adapter = managedClientScopes.get(id);
194  if (adapter != null) adapter.invalidate();
195  }
Set< String > invalidations
Definition: RealmCacheSession.java:111
Map< String, ClientScopeAdapter > managedClientScopes
Definition: RealmCacheSession.java:107

◆ invalidateGroup() [1/2]

void org.keycloak.models.cache.infinispan.RealmCacheSession.invalidateGroup ( String  id,
String  realmId,
boolean  invalidateQueries 
)
inlineprivate
259  {
260  invalidateGroup(id);
261  if (invalidateQueries) {
263  }
264  }
void invalidateGroup(String id, String realmId, boolean invalidateQueries)
Definition: RealmCacheSession.java:259
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void groupQueriesInvalidations(String realmId, Set< String > invalidations)
Definition: RealmCacheManager.java:75
Set< String > invalidations
Definition: RealmCacheSession.java:111

◆ invalidateGroup() [2/2]

void org.keycloak.models.cache.infinispan.RealmCacheSession.invalidateGroup ( String  id)
inlineprivate
266  {
267  invalidations.add(id);
268  GroupAdapter adapter = managedGroups.get(id);
269  if (adapter != null) adapter.invalidate();
270  }
Map< String, GroupAdapter > managedGroups
Definition: RealmCacheSession.java:109
Set< String > invalidations
Definition: RealmCacheSession.java:111

◆ invalidateRole()

void org.keycloak.models.cache.infinispan.RealmCacheSession.invalidateRole ( String  id)
inlineprivate
238  {
239  invalidations.add(id);
240  RoleAdapter adapter = managedRoles.get(id);
241  if (adapter != null) adapter.invalidate();
242  }
Set< String > invalidations
Definition: RealmCacheSession.java:111
Map< String, RoleAdapter > managedRoles
Definition: RealmCacheSession.java:108

◆ isInvalid()

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.isInvalid ( String  id)
inline
129  {
130  return invalidations.contains(id);
131  }
Set< String > invalidations
Definition: RealmCacheSession.java:111

◆ listClientInitialAccess()

List<ClientInitialAccessModel> org.keycloak.models.cache.infinispan.RealmCacheSession.listClientInitialAccess ( RealmModel  realm)
inline

org.keycloak.models.RealmProviderを実装しています。

1176  {
1177  return getRealmDelegate().listClientInitialAccess(realm);
1178  }
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
List< ClientInitialAccessModel > listClientInitialAccess(RealmModel realm)

◆ moveGroup()

void org.keycloak.models.cache.infinispan.RealmCacheSession.moveGroup ( RealmModel  realm,
GroupModel  group,
GroupModel  toParent 
)
inline

org.keycloak.models.RealmProviderを実装しています。

814  {
815  invalidateGroup(group.getId(), realm.getId(), true);
816  if (toParent != null) invalidateGroup(group.getId(), realm.getId(), false); // Queries already invalidated
817  listInvalidations.add(realm.getId());
818 
819  invalidationEvents.add(GroupMovedEvent.create(group, toParent, realm.getId()));
820  getRealmDelegate().moveGroup(realm, group, toParent);
821  }
void invalidateGroup(String id, String realmId, boolean invalidateQueries)
Definition: RealmCacheSession.java:259
static GroupMovedEvent create(GroupModel group, GroupModel toParent, String realmId)
Definition: GroupMovedEvent.java:42
void moveGroup(RealmModel realm, GroupModel group, GroupModel toParent)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ registerClientInvalidation()

void org.keycloak.models.cache.infinispan.RealmCacheSession.registerClientInvalidation ( String  id,
String  clientId,
String  realmId 
)
inline

org.keycloak.models.cache.CacheRealmProviderを実装しています。

171  {
172  invalidateClient(id);
173  invalidationEvents.add(ClientUpdatedEvent.create(id, clientId, realmId));
174  cache.clientUpdated(realmId, id, clientId, invalidations);
175  }
void invalidateClient(String id)
Definition: RealmCacheSession.java:177
RealmCacheManager cache
Definition: RealmCacheSession.java:98
static ClientUpdatedEvent create(String clientUuid, String clientId, String realmId)
Definition: ClientUpdatedEvent.java:40
Set< String > invalidations
Definition: RealmCacheSession.java:111
void clientUpdated(String realmId, String clientUuid, String clientId, Set< String > invalidations)
Definition: RealmCacheManager.java:85
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ registerClientScopeInvalidation()

void org.keycloak.models.cache.infinispan.RealmCacheSession.registerClientScopeInvalidation ( String  id)
inline

org.keycloak.models.cache.CacheRealmProviderを実装しています。

184  {
186  // Note: Adding/Removing client template is supposed to invalidate CachedRealm as well, so the list of clientScopes is invalidated.
187  // But separate RealmUpdatedEvent will be sent for it. So ClientTemplateEvent don't need to take care of it.
189  }
void invalidateClientScope(String id)
Definition: RealmCacheSession.java:191
static ClientTemplateEvent create(String clientTemplateId)
Definition: ClientTemplateEvent.java:41
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ registerGroupInvalidation()

void org.keycloak.models.cache.infinispan.RealmCacheSession.registerGroupInvalidation ( String  id)
inline

org.keycloak.models.cache.CacheRealmProviderを実装しています。

254  {
255  invalidateGroup(id, null, false);
257  }
void invalidateGroup(String id, String realmId, boolean invalidateQueries)
Definition: RealmCacheSession.java:259
static GroupUpdatedEvent create(String groupId)
Definition: GroupUpdatedEvent.java:38
void addGroupEventIfAbsent(InvalidationEvent eventToAdd)
Definition: RealmCacheSession.java:1002

◆ registerRealmInvalidation()

void org.keycloak.models.cache.infinispan.RealmCacheSession.registerRealmInvalidation ( String  id,
String  name 
)
inline

org.keycloak.models.cache.CacheRealmProviderを実装しています。

162  {
163  cache.realmUpdated(id, name, invalidations);
164  RealmAdapter adapter = managedRealms.get(id);
165  if (adapter != null) adapter.invalidateFlag();
166 
168  }
Map< String, RealmAdapter > managedRealms
Definition: RealmCacheSession.java:105
RealmCacheManager cache
Definition: RealmCacheSession.java:98
Set< String > invalidations
Definition: RealmCacheSession.java:111
void realmUpdated(String id, String name, Set< String > invalidations)
Definition: RealmCacheManager.java:49
static RealmUpdatedEvent create(String realmId, String realmName)
Definition: RealmUpdatedEvent.java:39
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ registerRoleInvalidation()

void org.keycloak.models.cache.infinispan.RealmCacheSession.registerRoleInvalidation ( String  id,
String  roleName,
String  roleContainerId 
)
inline

org.keycloak.models.cache.CacheRealmProviderを実装しています。

198  {
199  invalidateRole(id);
200  cache.roleUpdated(roleContainerId, roleName, invalidations);
201  invalidationEvents.add(RoleUpdatedEvent.create(id, roleName, roleContainerId));
202  }
void roleUpdated(String roleContainerId, String roleName, Set< String > invalidations)
Definition: RealmCacheManager.java:64
static RoleUpdatedEvent create(String roleId, String roleName, String containerId)
Definition: RoleUpdatedEvent.java:40
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void invalidateRole(String id)
Definition: RealmCacheSession.java:238
Set< String > invalidations
Definition: RealmCacheSession.java:111
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ removeClient()

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.removeClient ( String  id,
RealmModel  realm 
)
inline

org.keycloak.models.ClientProviderを実装しています。

568  {
569  ClientModel client = getClientById(id, realm);
570  if (client == null) return false;
571 
572  invalidateClient(client.getId());
573  // this is needed so that a client that hasn't been committed isn't cached in a query
574  listInvalidations.add(realm.getId());
575 
577  cache.clientRemoval(realm.getId(), id, client.getClientId(), invalidations);
578 
579  for (RoleModel role : client.getRoles()) {
580  roleRemovalInvalidations(role.getId(), role.getName(), client.getId());
581  }
582  return getRealmDelegate().removeClient(id, realm);
583  }
void invalidateClient(String id)
Definition: RealmCacheSession.java:177
static ClientRemovedEvent create(ClientModel client)
Definition: ClientRemovedEvent.java:48
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void roleRemovalInvalidations(String roleId, String roleName, String roleContainerId)
Definition: RealmCacheSession.java:204
ClientModel getClientById(String id, RealmModel realm)
Definition: RealmCacheSession.java:1016
Set< String > invalidations
Definition: RealmCacheSession.java:111
Definition: ClientModel.java:27
boolean removeClient(String id, RealmModel realm)
void clientRemoval(String realmId, String clientUUID, String clientId, Set< String > invalidations)
Definition: RealmCacheManager.java:90
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
Definition: RoleModel.java:26
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ removeClientInitialAccessModel()

void org.keycloak.models.cache.infinispan.RealmCacheSession.removeClientInitialAccessModel ( RealmModel  realm,
String  id 
)
inline

org.keycloak.models.RealmProviderを実装しています。

1171  {
1173  }
void removeClientInitialAccessModel(RealmModel realm, String id)
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ removeExpiredClientInitialAccess()

void org.keycloak.models.cache.infinispan.RealmCacheSession.removeExpiredClientInitialAccess ( )
inline

org.keycloak.models.RealmProviderを実装しています。

1181  {
1183  }
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145

◆ removeGroup()

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.removeGroup ( RealmModel  realm,
GroupModel  group 
)
inline

org.keycloak.models.RealmProviderを実装しています。

956  {
957  invalidateGroup(group.getId(), realm.getId(), true);
958  listInvalidations.add(realm.getId());
960  if (group.getParentId() != null) {
961  invalidateGroup(group.getParentId(), realm.getId(), false); // Queries already invalidated
962  }
963 
964  invalidationEvents.add(GroupRemovedEvent.create(group, realm.getId()));
965 
966  return getRealmDelegate().removeGroup(realm, group);
967  }
void invalidateGroup(String id, String realmId, boolean invalidateQueries)
Definition: RealmCacheSession.java:259
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void groupQueriesInvalidations(String realmId, Set< String > invalidations)
Definition: RealmCacheManager.java:75
Set< String > invalidations
Definition: RealmCacheSession.java:111
static GroupRemovedEvent create(GroupModel group, String realmId)
Definition: GroupRemovedEvent.java:41
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112
boolean removeGroup(RealmModel realm, GroupModel group)

◆ removeRealm()

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.removeRealm ( String  id)
inline

org.keycloak.models.RealmProviderを実装しています。

471  {
472  RealmModel realm = getRealm(id);
473  if (realm == null) return false;
474 
475  evictRealmOnRemoval(realm);
476  return getRealmDelegate().removeRealm(id);
477  }
RealmModel getRealm(String id)
Definition: RealmCacheSession.java:388
void evictRealmOnRemoval(RealmModel realm)
Definition: RealmCacheSession.java:479
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
boolean removeRealm(String id)
Definition: RealmModel.java:34

◆ removeRole()

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.removeRole ( RealmModel  realm,
RoleModel  role 
)
inline

org.keycloak.models.RealmProviderを実装しています。

749  {
750  listInvalidations.add(role.getContainer().getId());
751 
752  invalidateRole(role.getId());
754  roleRemovalInvalidations(role.getId(), role.getName(), role.getContainer().getId());
755 
756  return getRealmDelegate().removeRole(realm, role);
757  }
static RoleRemovedEvent create(String roleId, String roleName, String containerId)
Definition: RoleRemovedEvent.java:40
boolean removeRole(RealmModel realm, RoleModel role)
RoleContainerModel getContainer()
void roleRemovalInvalidations(String roleId, String roleName, String roleContainerId)
Definition: RealmCacheSession.java:204
void invalidateRole(String id)
Definition: RealmCacheSession.java:238
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
Set< String > listInvalidations
Definition: RealmCacheSession.java:110
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ roleRemovalInvalidations()

void org.keycloak.models.cache.infinispan.RealmCacheSession.roleRemovalInvalidations ( String  roleId,
String  roleName,
String  roleContainerId 
)
inlineprivate
204  {
205  Set<String> newInvalidations = new HashSet<>();
206  cache.roleRemoval(roleId, roleName, roleContainerId, newInvalidations);
207  invalidations.addAll(newInvalidations);
208  // need to make sure that scope and group mapping clients and groups are invalidated
209  for (String id : newInvalidations) {
210  ClientModel adapter = managedApplications.get(id);
211  if (adapter != null && adapter instanceof ClientAdapter){
212  ((ClientAdapter)adapter).invalidate();
213  continue;
214  }
215  GroupAdapter group = managedGroups.get(id);
216  if (group != null) {
217  group.invalidate();
218  continue;
219  }
220  ClientScopeAdapter clientScope = managedClientScopes.get(id);
221  if (clientScope != null) {
222  clientScope.invalidate();
223  continue;
224  }
225  RoleAdapter role = managedRoles.get(id);
226  if (role != null) {
227  role.invalidate();
228  continue;
229  }
230 
231 
232  }
233  }
RealmCacheManager cache
Definition: RealmCacheSession.java:98
Map< String, GroupAdapter > managedGroups
Definition: RealmCacheSession.java:109
void roleRemoval(String id, String roleName, String roleContainerId, Set< String > invalidations)
Definition: RealmCacheManager.java:68
Map< String, ClientModel > managedApplications
Definition: RealmCacheSession.java:106
Set< String > invalidations
Definition: RealmCacheSession.java:111
Map< String, ClientScopeAdapter > managedClientScopes
Definition: RealmCacheSession.java:107
Definition: ClientModel.java:27
Map< String, RoleAdapter > managedRoles
Definition: RealmCacheSession.java:108

◆ runInvalidations()

void org.keycloak.models.cache.infinispan.RealmCacheSession.runInvalidations ( )
inlineprotected
272  {
273  for (String id : invalidations) {
275  }
276 
277  cache.sendInvalidationEvents(session, invalidationEvents, InfinispanCacheRealmProviderFactory.REALM_INVALIDATION_EVENTS);
278  }
RealmCacheManager cache
Definition: RealmCacheSession.java:98
void sendInvalidationEvents(KeycloakSession session, Collection< InvalidationEvent > invalidationEvents, String eventKey)
Definition: CacheManager.java:201
Set< String > invalidations
Definition: RealmCacheSession.java:111
Object invalidateObject(String id)
Definition: CacheManager.java:116
KeycloakSession session
Definition: RealmCacheSession.java:99
Set< InvalidationEvent > invalidationEvents
Definition: RealmCacheSession.java:112

◆ searchForGroupByName()

List<GroupModel> org.keycloak.models.cache.infinispan.RealmCacheSession.searchForGroupByName ( RealmModel  realm,
String  search,
Integer  first,
Integer  max 
)
inline

org.keycloak.models.RealmProviderを実装しています。

951  {
952  return getRealmDelegate().searchForGroupByName(realm, search, first, max);
953  }
RealmProvider getRealmDelegate()
Definition: RealmCacheSession.java:145
List searchForGroupByName(RealmModel realm, String search, Integer first, Integer max)

◆ validateCache()

ClientModel org.keycloak.models.cache.infinispan.RealmCacheSession.validateCache ( RealmModel  realm,
CachedClient  cached 
)
inlineprotected
1078  {
1079  if (!realm.getId().equals(cached.getRealm())) {
1080  return null;
1081  }
1082 
1083  StorageId storageId = new StorageId(cached.getId());
1084  if (!storageId.isLocal()) {
1085  ComponentModel component = realm.getComponent(storageId.getProviderId());
1087 
1088  // although we do set a timeout, Infinispan has no guarantees when the user will be evicted
1089  // its also hard to test stuff
1090  if (model.shouldInvalidate(cached)) {
1091  registerClientInvalidation(cached.getId(), cached.getClientId(), realm.getId());
1092  return getClientDelegate().getClientById(cached.getId(), realm);
1093  }
1094  }
1095  ClientAdapter adapter = new ClientAdapter(realm, cached, this);
1096 
1097  return adapter;
1098  }
Definition: ComponentModel.java:31
String getRealm()
Definition: CachedClient.java:136
void registerClientInvalidation(String id, String clientId, String realmId)
Definition: RealmCacheSession.java:171
ComponentModel getComponent(String id)
String getClientId()
Definition: CachedClient.java:124
ClientModel getClientById(String id, RealmModel realm)
ClientProvider getClientDelegate()
Definition: RealmCacheSession.java:151
boolean shouldInvalidate(CachedObject cached)
Definition: CacheableStorageProviderModel.java:183
Definition: ClientStorageProviderModel.java:28
String getId()
Definition: AbstractRevisioned.java:23

メンバ詳解

◆ cache

RealmCacheManager org.keycloak.models.cache.infinispan.RealmCacheSession.cache
protected

◆ clearAll

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.clearAll
protected

◆ clientDelegate

ClientProvider org.keycloak.models.cache.infinispan.RealmCacheSession.clientDelegate
protected

◆ invalidationEvents

Set<InvalidationEvent> org.keycloak.models.cache.infinispan.RealmCacheSession.invalidationEvents = new HashSet<>()
protected

◆ invalidations

Set<String> org.keycloak.models.cache.infinispan.RealmCacheSession.invalidations = new HashSet<>()
protected

◆ listInvalidations

Set<String> org.keycloak.models.cache.infinispan.RealmCacheSession.listInvalidations = new HashSet<>()
protected

◆ logger

final Logger org.keycloak.models.cache.infinispan.RealmCacheSession.logger = Logger.getLogger(RealmCacheSession.class)
staticprotected

◆ managedApplications

Map<String, ClientModel> org.keycloak.models.cache.infinispan.RealmCacheSession.managedApplications = new HashMap<>()
protected

◆ managedClientScopes

Map<String, ClientScopeAdapter> org.keycloak.models.cache.infinispan.RealmCacheSession.managedClientScopes = new HashMap<>()
protected

◆ managedGroups

Map<String, GroupAdapter> org.keycloak.models.cache.infinispan.RealmCacheSession.managedGroups = new HashMap<>()
protected

◆ managedRealms

Map<String, RealmAdapter> org.keycloak.models.cache.infinispan.RealmCacheSession.managedRealms = new HashMap<>()
protected

◆ managedRoles

Map<String, RoleAdapter> org.keycloak.models.cache.infinispan.RealmCacheSession.managedRoles = new HashMap<>()
protected

◆ REALM_CLIENTS_QUERY_SUFFIX

final String org.keycloak.models.cache.infinispan.RealmCacheSession.REALM_CLIENTS_QUERY_SUFFIX = ".realm.clients"
static

◆ realmDelegate

RealmProvider org.keycloak.models.cache.infinispan.RealmCacheSession.realmDelegate
protected

◆ ROLES_QUERY_SUFFIX

final String org.keycloak.models.cache.infinispan.RealmCacheSession.ROLES_QUERY_SUFFIX = ".roles"
static

◆ session

KeycloakSession org.keycloak.models.cache.infinispan.RealmCacheSession.session
protected

◆ setRollbackOnly

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.setRollbackOnly
protected

◆ startupRevision

final long org.keycloak.models.cache.infinispan.RealmCacheSession.startupRevision
protected

◆ transactionActive

boolean org.keycloak.models.cache.infinispan.RealmCacheSession.transactionActive
protected

このクラス詳解は次のファイルから抽出されました: