private PersistentUserSessionAdapter toAdapter(RealmModel realm, UserModel user, PersistentUserSessionEntity entity) { PersistentUserSessionModel model = new PersistentUserSessionModel(); model.setUserSessionId(entity.getId()); model.setLastSessionRefresh(entity.getLastSessionRefresh()); model.setData(entity.getData()); List<ClientSessionModel> clientSessions = new LinkedList<>(); PersistentUserSessionAdapter userSessionAdapter = new PersistentUserSessionAdapter(model, realm, user, clientSessions); for (PersistentClientSessionEntity clientSessEntity : entity.getClientSessions()) { PersistentClientSessionAdapter clientSessAdapter = toAdapter(realm, userSessionAdapter, clientSessEntity); clientSessions.add(clientSessAdapter); } return userSessionAdapter; }
private PersistentUserSessionAdapter toAdapter(RealmModel realm, PersistentUserSessionEntity entity) { PersistentUserSessionModel model = new PersistentUserSessionModel(); model.setUserSessionId(entity.getUserSessionId()); model.setStarted(entity.getCreatedOn()); model.setLastSessionRefresh(entity.getLastSessionRefresh()); model.setData(entity.getData()); model.setOffline(offlineFromString(entity.getOffline())); Map<String, AuthenticatedClientSessionModel> clientSessions = new HashMap<>(); return new PersistentUserSessionAdapter(session, model, realm, entity.getUserId(), clientSessions); }
@Override public void createUserSession(UserSessionModel userSession, boolean offline) { PersistentUserSessionAdapter adapter = new PersistentUserSessionAdapter(userSession); PersistentUserSessionModel model = adapter.getUpdatedModel(); PersistentUserSessionEntity entity = new PersistentUserSessionEntity(); entity.setUserSessionId(model.getUserSessionId()); entity.setCreatedOn(model.getStarted()); entity.setRealmId(adapter.getRealm().getId()); entity.setUserId(adapter.getUser().getId()); String offlineStr = offlineToString(offline); entity.setOffline(offlineStr); entity.setLastSessionRefresh(model.getLastSessionRefresh()); entity.setData(model.getData()); em.persist(entity); em.flush(); }
@Override public void createUserSession(UserSessionModel userSession, boolean offline) { PersistentUserSessionAdapter adapter = new PersistentUserSessionAdapter(userSession); PersistentUserSessionModel model = adapter.getUpdatedModel(); MongoUserSessionEntity entity = offline ? new MongoOfflineUserSessionEntity() : new MongoOnlineUserSessionEntity(); entity.setId(model.getUserSessionId()); entity.setRealmId(adapter.getRealm().getId()); entity.setUserId(adapter.getUser().getId()); entity.setLastSessionRefresh(model.getLastSessionRefresh()); entity.setData(model.getData()); entity.setClientSessions(new ArrayList<PersistentClientSessionEntity>()); getMongoStore().insertEntity(entity, invocationContext); }
@Override public void updateUserSession(UserSessionModel userSession, boolean offline) { PersistentUserSessionAdapter adapter; if (userSession instanceof PersistentUserSessionAdapter) { adapter = (PersistentUserSessionAdapter) userSession; } else { adapter = new PersistentUserSessionAdapter(userSession); } PersistentUserSessionModel model = adapter.getUpdatedModel(); MongoUserSessionEntity entity = loadUserSession(model.getUserSessionId(), offline); if (entity == null) { throw new ModelException("UserSession with ID " + userSession.getId() + ", offline: " + offline + " not found"); } entity.setLastSessionRefresh(model.getLastSessionRefresh()); entity.setData(model.getData()); getMongoStore().updateEntity(entity, invocationContext); }