Created
August 21, 2015 09:12
-
-
Save timcharper/037fb54fd788d42ad94f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected [helpers] val singleSession = databaseConnection.createSession | |
val noDataSource = new JdbcDataSource { | |
def createConnection(): Connection = throw new RuntimeException("Tried to allocate another connection in test mode. This is an issue because the test database assumes that only one database connection in used. RolledbackDatabase needs to be improved.") | |
def close(): Unit = () | |
} | |
// backend.BaseSession | |
class DelegatingSession(session: backend.SessionDef) extends backend.SessionDef { | |
override def database = session.database | |
override def conn = session.conn | |
override def metaData = session.metaData | |
override def capabilities = session.capabilities | |
override def resultSetType = session.resultSetType | |
override def resultSetConcurrency = session.resultSetConcurrency | |
override def resultSetHoldability = session.resultSetHoldability | |
override def fetchSize = session.fetchSize | |
override def close() = session.close() | |
override def rollback() = session.rollback() | |
override def force() = session.force() | |
override def withTransaction[T](f: => T) = session.withTransaction(f) | |
override def asDynamicSession[T](f: => T): T = session.asDynamicSession(f) | |
// These are private, so they won't be called directly. But, they need to be implemented. | |
def endInTransaction(f: => Unit): Unit = ??? | |
def startInTransaction: Unit = ??? | |
} | |
protected object SingleConnectionDatabase extends backend.DatabaseDef(noDataSource, AsyncExecutor("single-thread", 1, 1000)) { | |
override def createSession(): backend.Session = { | |
new DelegatingSession(singleSession) { | |
override def close(): Unit = { | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment