private UserSessionEntity getUserSessionEntity(String id, boolean offline) { InfinispanChangelogBasedTransaction<String, UserSessionEntity> tx = getTransaction(offline); SessionEntityWrapper<UserSessionEntity> entityWrapper = tx.get(id); return entityWrapper==null ? null : entityWrapper.getEntity(); }
UserSessionAdapter wrap(RealmModel realm, UserSessionEntity entity, boolean offline) { InfinispanChangelogBasedTransaction<String, UserSessionEntity> userSessionUpdateTx = getTransaction(offline); InfinispanChangelogBasedTransaction<UUID, AuthenticatedClientSessionEntity> clientSessionUpdateTx = getClientSessionTransaction(offline); return entity != null ? new UserSessionAdapter(session, this, userSessionUpdateTx, clientSessionUpdateTx, realm, entity, offline) : null; }
AuthenticatedClientSessionAdapter wrap(UserSessionModel userSession, ClientModel client, AuthenticatedClientSessionEntity entity, boolean offline) { InfinispanChangelogBasedTransaction<String, UserSessionEntity> userSessionUpdateTx = getTransaction(offline); InfinispanChangelogBasedTransaction<UUID, AuthenticatedClientSessionEntity> clientSessionUpdateTx = getClientSessionTransaction(offline); return entity != null ? new AuthenticatedClientSessionAdapter(session,this, entity, client, userSession, userSessionUpdateTx, clientSessionUpdateTx, offline) : null; }
protected UserSessionAdapter importUserSession(UserSessionModel userSession, boolean offline) { UserSessionEntity entity = createUserSessionEntityInstance(userSession); InfinispanChangelogBasedTransaction<String, UserSessionEntity> userSessionUpdateTx = getTransaction(offline); InfinispanChangelogBasedTransaction<UUID, AuthenticatedClientSessionEntity> clientSessionUpdateTx = getClientSessionTransaction(offline); SessionUpdateTask<UserSessionEntity> importTask = Tasks.addIfAbsentSync(); userSessionUpdateTx.addTask(userSession.getId(), importTask, entity); UserSessionAdapter importedSession = wrap(userSession.getRealm(), entity, offline); return importedSession; }
@Override public AuthenticatedClientSessionModel createOfflineClientSession(AuthenticatedClientSessionModel clientSession, UserSessionModel offlineUserSession) { UserSessionAdapter userSessionAdapter = (offlineUserSession instanceof UserSessionAdapter) ? (UserSessionAdapter) offlineUserSession : getOfflineUserSession(offlineUserSession.getRealm(), offlineUserSession.getId()); InfinispanChangelogBasedTransaction<String, UserSessionEntity> userSessionUpdateTx = getTransaction(true); InfinispanChangelogBasedTransaction<UUID, AuthenticatedClientSessionEntity> clientSessionUpdateTx = getClientSessionTransaction(true); AuthenticatedClientSessionAdapter offlineClientSession = importClientSession(userSessionAdapter, clientSession, userSessionUpdateTx, clientSessionUpdateTx, true); // update timestamp to current time offlineClientSession.setTimestamp(Time.currentTime()); return offlineClientSession; }
protected void removeUserSession(UserSessionEntity sessionEntity, boolean offline) { InfinispanChangelogBasedTransaction<String, UserSessionEntity> userSessionUpdateTx = getTransaction(offline); InfinispanChangelogBasedTransaction<UUID, AuthenticatedClientSessionEntity> clientSessionUpdateTx = getClientSessionTransaction(offline); sessionEntity.getAuthenticatedClientSessions().forEach((clientUUID, clientSessionId) -> clientSessionUpdateTx.addTask(clientSessionId, Tasks.removeSync())); SessionUpdateTask<UserSessionEntity> removeTask = Tasks.removeSync(); userSessionUpdateTx.addTask(sessionEntity.getId(), removeTask); }
@Override public AuthenticatedClientSessionModel createClientSession(RealmModel realm, ClientModel client, UserSessionModel userSession) { final UUID clientSessionId = keyGenerator.generateKeyUUID(session, clientSessionCache); AuthenticatedClientSessionEntity entity = new AuthenticatedClientSessionEntity(clientSessionId); entity.setRealmId(realm.getId()); entity.setTimestamp(Time.currentTime()); InfinispanChangelogBasedTransaction<String, UserSessionEntity> userSessionUpdateTx = getTransaction(false); InfinispanChangelogBasedTransaction<UUID, AuthenticatedClientSessionEntity> clientSessionUpdateTx = getClientSessionTransaction(false); AuthenticatedClientSessionAdapter adapter = new AuthenticatedClientSessionAdapter(session, this, entity, client, userSession, userSessionUpdateTx, clientSessionUpdateTx, false); SessionUpdateTask<AuthenticatedClientSessionEntity> createClientSessionTask = Tasks.addIfAbsentSync(); clientSessionUpdateTx.addTask(clientSessionId, createClientSessionTask, entity); SessionUpdateTask registerClientSessionTask = new RegisterClientSessionTask(client.getId(), clientSessionId); userSessionUpdateTx.addTask(userSession.getId(), registerClientSessionTask); return adapter; }
if (predicate.test(remoteSessionAdapter)) { InfinispanChangelogBasedTransaction<String, UserSessionEntity> tx = getTransaction(offline);