@Override protected Serializable doCreate(final Session session) { final Serializable sessionId = jdbcSessionSqlDao.inTransaction(new Transaction<Long, JDBCSessionSqlDao>() { @Override public Long inTransaction(final JDBCSessionSqlDao transactional, final TransactionStatus status) throws Exception { transactional.create(new SessionModelDao(session)); return transactional.getLastInsertId(); } }); assignSessionId(session, sessionId); return sessionId; }
@Test(groups = "slow") public void testCRUD() throws Exception { // Note! We are testing the do* methods here to bypass the caching layer final JDBCSessionDao jdbcSessionDao = new JDBCSessionDao((DBI) dbi); // Retrieve final SimpleSession session = createSession(); Assert.assertNull(jdbcSessionDao.doReadSession(session.getId())); // Create final Serializable sessionId = jdbcSessionDao.doCreate(session); final Session retrievedSession = jdbcSessionDao.doReadSession(sessionId); Assert.assertEquals(retrievedSession, session); // Update final String newHost = UUID.randomUUID().toString(); Assert.assertNotEquals(retrievedSession.getHost(), newHost); session.setHost(newHost); jdbcSessionDao.doUpdate(session); Assert.assertEquals(jdbcSessionDao.doReadSession(sessionId).getHost(), newHost); // Delete jdbcSessionDao.doDelete(session); Assert.assertNull(jdbcSessionDao.doReadSession(session.getId())); }
@Override public JDBCSessionDao get() { final JDBCSessionDao jdbcSessionDao = new JDBCSessionDao(dbi); if (sessionManager instanceof DefaultSessionManager) { final DefaultSessionManager defaultSessionManager = (DefaultSessionManager) sessionManager; defaultSessionManager.setSessionDAO(jdbcSessionDao); defaultSessionManager.setGlobalSessionTimeout(rbacConfig.getGlobalSessionTimeout().getMillis()); } return jdbcSessionDao; } }