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

公開メンバ関数

 InfinispanCodeToTokenStoreProvider (KeycloakSession session, Supplier< BasicCache< UUID, ActionTokenValueEntity >> actionKeyCache)
 
boolean putIfAbsent (UUID codeId)
 
void close ()
 

静的公開変数類

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

非公開変数類

final Supplier< BasicCache< UUID, ActionTokenValueEntity > > codeCache
 
final KeycloakSession session
 

詳解

著者
Marek Posolda

構築子と解体子

◆ InfinispanCodeToTokenStoreProvider()

org.keycloak.models.sessions.infinispan.InfinispanCodeToTokenStoreProvider.InfinispanCodeToTokenStoreProvider ( KeycloakSession  session,
Supplier< BasicCache< UUID, ActionTokenValueEntity >>  actionKeyCache 
)
inline
42  {
43  this.session = session;
44  this.codeCache = actionKeyCache;
45  }
final KeycloakSession session
Definition: InfinispanCodeToTokenStoreProvider.java:40
final Supplier< BasicCache< UUID, ActionTokenValueEntity > > codeCache
Definition: InfinispanCodeToTokenStoreProvider.java:39

関数詳解

◆ close()

void org.keycloak.models.sessions.infinispan.InfinispanCodeToTokenStoreProvider.close ( )
inline

org.keycloak.provider.Providerを実装しています。

70  {
71 
72  }

◆ putIfAbsent()

boolean org.keycloak.models.sessions.infinispan.InfinispanCodeToTokenStoreProvider.putIfAbsent ( UUID  codeId)
inline

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

48  {
49  ActionTokenValueEntity tokenValue = new ActionTokenValueEntity(null);
50 
51  int lifespanInSeconds = session.getContext().getRealm().getAccessCodeLifespan();
52 
53  try {
54  BasicCache<UUID, ActionTokenValueEntity> cache = codeCache.get();
55  ActionTokenValueEntity existing = cache.putIfAbsent(codeId, tokenValue, lifespanInSeconds, TimeUnit.SECONDS);
56  return existing == null;
57  } catch (HotRodClientException re) {
58  // No need to retry. The hotrod (remoteCache) has some retries in itself in case of some random network error happened.
59  // In case of lock conflict, we don't want to retry anyway as there was likely an attempt to use the code from different place.
60  if (logger.isDebugEnabled()) {
61  logger.debugf(re, "Failed when adding code %s", codeId);
62  }
63 
64  return false;
65  }
66 
67  }
final KeycloakSession session
Definition: InfinispanCodeToTokenStoreProvider.java:40
static final Logger logger
Definition: InfinispanCodeToTokenStoreProvider.java:37
final Supplier< BasicCache< UUID, ActionTokenValueEntity > > codeCache
Definition: InfinispanCodeToTokenStoreProvider.java:39

メンバ詳解

◆ codeCache

final Supplier<BasicCache<UUID, ActionTokenValueEntity> > org.keycloak.models.sessions.infinispan.InfinispanCodeToTokenStoreProvider.codeCache
private

◆ logger

final Logger org.keycloak.models.sessions.infinispan.InfinispanCodeToTokenStoreProvider.logger = Logger.getLogger(InfinispanCodeToTokenStoreProvider.class)
static

◆ session

final KeycloakSession org.keycloak.models.sessions.infinispan.InfinispanCodeToTokenStoreProvider.session
private

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