keycloak
公開メンバ関数 | 関数 | 全メンバ一覧
org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache クラス
org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache の継承関係図
Inheritance graph
org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache 連携図
Collaboration graph

公開メンバ関数

PermissionTicket create (String resourceId, String scopeId, String requester, ResourceServer resourceServer)
 
void delete (String id)
 
PermissionTicket findById (String id, String resourceServerId)
 
List< PermissionTicketfindByResourceServer (String resourceServerId)
 
List< PermissionTicketfindByResource (String resourceId, String resourceServerId)
 
List< PermissionTicketfindByScope (String scopeId, String resourceServerId)
 
List< PermissionTicketfind (Map< String, String > attributes, String resourceServerId, int firstResult, int maxResult)
 
List< PermissionTicketfindGranted (String userId, String resourceServerId)
 
List< PermissionTicketfindByOwner (String owner, String resourceServerId)
 

関数

private< R, Q extends PermissionTicketQuery > List< R > cacheQuery (String cacheKey, Class< Q > queryType, Supplier< List< R >> resultSupplier, BiFunction< Long, List< R >, Q > querySupplier, String resourceServerId)
 

詳解

関数詳解

◆ cacheQuery()

private<R, Q extends PermissionTicketQuery> List<R> org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.cacheQuery ( String  cacheKey,
Class< Q >  queryType,
Supplier< List< R >>  resultSupplier,
BiFunction< Long, List< R >, Q >  querySupplier,
String  resourceServerId 
)
inlinepackage
1062  {
1063  Q query = cache.get(cacheKey, queryType);
1064  if (query != null) {
1065  logger.tracev("cache hit for key: {0}", cacheKey);
1066  }
1067  if (query == null) {
1068  Long loaded = cache.getCurrentRevision(cacheKey);
1069  List<R> model = resultSupplier.get();
1070  if (model == null) return null;
1071  if (invalidations.contains(cacheKey)) return model;
1072  query = querySupplier.apply(loaded, model);
1074  return model;
1075  } else if (query.isInvalid(invalidations)) {
1076  return resultSupplier.get();
1077  } else {
1078  return query.getPermissions().stream().map(resourceId -> (R) findById(resourceId, resourceServerId)).collect(Collectors.toList());
1079  }
1080  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
Set< String > invalidations
Definition: StoreFactoryCacheSession.java:98
PermissionTicket findById(String id, String resourceServerId)
Definition: StoreFactoryCacheSession.java:996
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
StoreFactoryCacheManager cache
Definition: StoreFactoryCacheSession.java:89
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132
static final Logger logger
Definition: StoreFactoryCacheSession.java:87
final long startupRevision
Definition: StoreFactoryCacheSession.java:102

◆ create()

PermissionTicket org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.create ( String  resourceId,
String  scopeId,
String  requester,
ResourceServer  resourceServer 
)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

971  {
972  PermissionTicket created = getPermissionTicketStoreDelegate().create(resourceId, scopeId, requester, resourceServer);
973  registerPermissionTicketInvalidation(created.getId(), created.getOwner(), created.getRequester(), created.getResource().getId(), scopeId, created.getResourceServer().getId());
974  return created;
975  }
void registerPermissionTicketInvalidation(String id, String owner, String requester, String resource, String scope, String serverId)
Definition: StoreFactoryCacheSession.java:289
PermissionTicket create(String resourceId, String scopeId, String requester, ResourceServer resourceServer)
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ delete()

void org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.delete ( String  id)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

978  {
979  if (id == null) return;
980  PermissionTicket permission = findById(id, null);
981  if (permission == null) return;
982 
984  String scopeId = null;
985  if (permission.getScope() != null) {
986  scopeId = permission.getScope().getId();
987  }
988  invalidationEvents.add(PermissionTicketRemovedEvent.create(id, permission.getOwner(), permission.getRequester(), permission.getResource().getId(), scopeId, permission.getResourceServer().getId()));
989  cache.permissionTicketRemoval(id, permission.getOwner(), permission.getRequester(), permission.getResource().getId(), scopeId, permission.getResourceServer().getId(), invalidations);
991  UserManagedPermissionUtil.removePolicy(permission, StoreFactoryCacheSession.this);
992 
993  }
Set< String > invalidations
Definition: StoreFactoryCacheSession.java:98
PermissionTicket findById(String id, String resourceServerId)
Definition: StoreFactoryCacheSession.java:996
Set< InvalidationEvent > invalidationEvents
Definition: StoreFactoryCacheSession.java:99
void permissionTicketRemoval(String id, String owner, String requester, String resource, String scope, String serverId, Set< String > invalidations)
Definition: StoreFactoryCacheManager.java:154
StoreFactoryCacheSession(StoreFactoryCacheManager cache, KeycloakSession session)
Definition: StoreFactoryCacheSession.java:111
Object invalidateObject(String id)
Definition: CacheManager.java:116
StoreFactoryCacheManager cache
Definition: StoreFactoryCacheSession.java:89
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ find()

List<PermissionTicket> org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.find ( Map< String, String >  attributes,
String  resourceServerId,
int  firstResult,
int  maxResult 
)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

1044  {
1045  return getPermissionTicketStoreDelegate().find(attributes, resourceServerId, firstResult, maxResult);
1046  }
List< PermissionTicket > find(Map< String, String > attributes, String resourceServerId, int firstResult, int maxResult)
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ findById()

PermissionTicket org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.findById ( String  id,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

996  {
997  if (id == null) return null;
998 
999  CachedPermissionTicket cached = cache.get(id, CachedPermissionTicket.class);
1000  if (cached != null) {
1001  logger.tracev("by id cache hit: {0}", cached.getId());
1002  }
1003  if (cached == null) {
1004  Long loaded = cache.getCurrentRevision(id);
1005  if (! modelMightExist(id)) return null;
1006  PermissionTicket model = getPermissionTicketStoreDelegate().findById(id, resourceServerId);
1007  if (model == null) {
1008  setModelDoesNotExists(id, loaded);
1009  return null;
1010  }
1011  if (invalidations.contains(id)) return model;
1012  cached = new CachedPermissionTicket(loaded, model);
1014  } else if (invalidations.contains(id)) {
1015  return getPermissionTicketStoreDelegate().findById(id, resourceServerId);
1016  } else if (managedPermissionTickets.containsKey(id)) {
1017  return managedPermissionTickets.get(id);
1018  }
1019  PermissionTicketAdapter adapter = new PermissionTicketAdapter(cached, StoreFactoryCacheSession.this);
1020  managedPermissionTickets.put(id, adapter);
1021  return adapter;
1022  }
Long getCurrentRevision(String id)
Definition: CacheManager.java:77
boolean modelMightExist(String id)
Definition: StoreFactoryCacheSession.java:410
Set< String > invalidations
Definition: StoreFactoryCacheSession.java:98
void setModelDoesNotExists(String id, Long loaded)
Definition: StoreFactoryCacheSession.java:404
Map< String, PermissionTicketAdapter > managedPermissionTickets
Definition: StoreFactoryCacheSession.java:97
public< T extends Revisioned > T get(String id, Class< T > type)
Definition: CacheManager.java:94
PermissionTicket findById(String id, String resourceServerId)
StoreFactoryCacheSession(StoreFactoryCacheManager cache, KeycloakSession session)
Definition: StoreFactoryCacheSession.java:111
StoreFactoryCacheManager cache
Definition: StoreFactoryCacheSession.java:89
void addRevisioned(Revisioned object, long startupRevision)
Definition: CacheManager.java:132
static final Logger logger
Definition: StoreFactoryCacheSession.java:87
final long startupRevision
Definition: StoreFactoryCacheSession.java:102
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ findByOwner()

List<PermissionTicket> org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.findByOwner ( String  owner,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

1056  {
1057  String cacheKey = getPermissionTicketByOwner(owner, resourceServerId);
1058  return cacheQuery(cacheKey, PermissionTicketListQuery.class, () -> getPermissionTicketStoreDelegate().findByOwner(owner, resourceServerId),
1059  (revision, permissions) -> new PermissionTicketListQuery(revision, cacheKey, permissions.stream().map(permission -> permission.getId()).collect(Collectors.toSet()), resourceServerId), resourceServerId);
1060  }
private< R, Q extends PermissionTicketQuery > List< R > cacheQuery(String cacheKey, Class< Q > queryType, Supplier< List< R >> resultSupplier, BiFunction< Long, List< R >, Q > querySupplier, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1062
static String getPermissionTicketByOwner(String owner, String serverId)
Definition: StoreFactoryCacheSession.java:394
List< PermissionTicket > findByOwner(String owner, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1056
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ findByResource()

List<PermissionTicket> org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.findByResource ( String  resourceId,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

1030  {
1031  String cacheKey = getPermissionTicketByResource(resourceId, resourceServerId);
1032  return cacheQuery(cacheKey, PermissionTicketResourceListQuery.class, () -> getPermissionTicketStoreDelegate().findByResource(resourceId, resourceServerId),
1033  (revision, permissions) -> new PermissionTicketResourceListQuery(revision, cacheKey, resourceId, permissions.stream().map(permission -> permission.getId()).collect(Collectors.toSet()), resourceServerId), resourceServerId);
1034  }
List< PermissionTicket > findByResource(String resourceId, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1030
private< R, Q extends PermissionTicketQuery > List< R > cacheQuery(String cacheKey, Class< Q > queryType, Supplier< List< R >> resultSupplier, BiFunction< Long, List< R >, Q > querySupplier, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1062
static String getPermissionTicketByResource(String resourceId, String serverId)
Definition: StoreFactoryCacheSession.java:382
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ findByResourceServer()

List<PermissionTicket> org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.findByResourceServer ( String  resourceServerId)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

1025  {
1026  return getPermissionTicketStoreDelegate().findByResourceServer(resourceServerId);
1027  }
List< PermissionTicket > findByResourceServer(String resourceServerId)
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ findByScope()

List<PermissionTicket> org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.findByScope ( String  scopeId,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

1037  {
1038  String cacheKey = getPermissionTicketByScope(scopeId, resourceServerId);
1039  return cacheQuery(cacheKey, PermissionTicketScopeListQuery.class, () -> getPermissionTicketStoreDelegate().findByScope(scopeId, resourceServerId),
1040  (revision, permissions) -> new PermissionTicketScopeListQuery(revision, cacheKey, scopeId, permissions.stream().map(permission -> permission.getId()).collect(Collectors.toSet()), resourceServerId), resourceServerId);
1041  }
private< R, Q extends PermissionTicketQuery > List< R > cacheQuery(String cacheKey, Class< Q > queryType, Supplier< List< R >> resultSupplier, BiFunction< Long, List< R >, Q > querySupplier, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1062
List< PermissionTicket > findByScope(String scopeId, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1037
static String getPermissionTicketByScope(String scopeId, String serverId)
Definition: StoreFactoryCacheSession.java:386
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

◆ findGranted()

List<PermissionTicket> org.keycloak.models.cache.infinispan.authorization.StoreFactoryCacheSession.PermissionTicketCache.findGranted ( String  userId,
String  resourceServerId 
)
inline

org.keycloak.authorization.store.PermissionTicketStoreを実装しています。

1049  {
1050  String cacheKey = getPermissionTicketByGranted(userId, resourceServerId);
1051  return cacheQuery(cacheKey, PermissionTicketListQuery.class, () -> getPermissionTicketStoreDelegate().findGranted(userId, resourceServerId),
1052  (revision, permissions) -> new PermissionTicketListQuery(revision, cacheKey, permissions.stream().map(permission -> permission.getId()).collect(Collectors.toSet()), resourceServerId), resourceServerId);
1053  }
private< R, Q extends PermissionTicketQuery > List< R > cacheQuery(String cacheKey, Class< Q > queryType, Supplier< List< R >> resultSupplier, BiFunction< Long, List< R >, Q > querySupplier, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1062
List< PermissionTicket > findGranted(String userId, String resourceServerId)
Definition: StoreFactoryCacheSession.java:1049
static String getPermissionTicketByGranted(String userId, String serverId)
Definition: StoreFactoryCacheSession.java:390
PermissionTicketStore getPermissionTicketStoreDelegate()
Definition: StoreFactoryCacheSession.java:330

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