Skip to content

Commit 375e8a3

Browse files
committed
Replace DbClient.addTransactionListener with DataSource.withTransactionListener
1 parent 77e008e commit 375e8a3

File tree

3 files changed

+7
-25
lines changed

3 files changed

+7
-25
lines changed

scalasql/core/src/DbClient.scala

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,6 @@ import scalasql.core.DialectConfig
88
*/
99
trait DbClient {
1010

11-
/**
12-
* Adds a listener to be notified of transaction events.
13-
*
14-
* Listeners added on DbClient are automatically added to all transactions created by this
15-
* DbClient.
16-
*/
17-
def addTransactionListener(listener: DbApi.TransactionListener): Unit
18-
1911
/**
2012
* Converts the given query [[Q]] into a string. Useful for debugging and logging
2113
*/
@@ -69,17 +61,10 @@ object DbClient {
6961
connection: java.sql.Connection,
7062
config: Config = new Config {},
7163
/** Listeners that are added to all transactions created by this connection */
72-
defaultListeners: Iterable[DbApi.TransactionListener] = Seq.empty
64+
listeners: Seq[DbApi.TransactionListener] = Seq.empty
7365
)(implicit dialect: DialectConfig)
7466
extends DbClient {
7567

76-
val listeners =
77-
collection.mutable.ArrayDeque.empty[DbApi.TransactionListener].addAll(defaultListeners)
78-
79-
override def addTransactionListener(listener: DbApi.TransactionListener): Unit = {
80-
listeners.append(listener)
81-
}
82-
8368
def renderSql[Q, R](query: Q, castParams: Boolean = false)(
8469
implicit qr: Queryable[Q, R]
8570
): String = {
@@ -130,15 +115,13 @@ object DbClient {
130115
dataSource: javax.sql.DataSource,
131116
config: Config = new Config {},
132117
/** Listeners that are added to all transactions created through the [[DataSource]] */
133-
defaultListeners: Iterable[DbApi.TransactionListener] = Seq.empty
118+
listeners: Seq[DbApi.TransactionListener] = Seq.empty
134119
)(implicit dialect: DialectConfig)
135120
extends DbClient {
136121

137-
val listeners =
138-
collection.mutable.ArrayDeque.empty[DbApi.TransactionListener].addAll(defaultListeners)
139-
140-
override def addTransactionListener(listener: DbApi.TransactionListener): Unit = {
141-
listeners.append(listener)
122+
/** Returns a new [[DataSource]] with the given listener added */
123+
def withTransactionListener(listener: DbApi.TransactionListener): DbClient = {
124+
new DataSource(dataSource, config, listeners :+ listener)
142125
}
143126

144127
def renderSql[Q, R](query: Q, castParams: Boolean = false)(

scalasql/test/src/api/TransactionTests.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -578,8 +578,7 @@ trait TransactionTests extends ScalaSqlSuite {
578578
test("listener") {
579579
test("beforeCommit and afterCommit are called under normal circumstances") {
580580
val listener = new StubTransactionListener()
581-
dbClient.addTransactionListener(listener)
582-
dbClient.transaction { _ =>
581+
dbClient.withTransactionListener(listener).transaction { _ =>
583582
// do nothing
584583
}
585584
listener.beginCalled ==> true

scalasql/test/src/utils/TestChecker.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import scalasql.query.SubqueryRef
66
import scalasql.{DbClient, Queryable, Expr, UtestFramework}
77

88
class TestChecker(
9-
val dbClient: DbClient,
9+
val dbClient: DbClient.DataSource,
1010
testSchemaFileName: String,
1111
testDataFileName: String,
1212
suiteName: String,

0 commit comments

Comments
 (0)