Skip to content

Commit 1dcd7f4

Browse files
committed
Access connection factory from DatabaseClient
This commit provides an accessor for the underlying ConnectionFactory that a DatabaseClient uses. Closes gh-25521
1 parent 673f83e commit 1dcd7f4

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

spring-r2dbc/src/main/java/org/springframework/r2dbc/core/DatabaseClient.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@
5555
*/
5656
public interface DatabaseClient extends ConnectionAccessor {
5757

58+
/**
59+
* Return the {@link ConnectionFactory} that this client uses.
60+
* @return the connection factory
61+
*/
62+
ConnectionFactory getConnectionFactory();
63+
5864
/**
5965
* Specify a static {@code sql} statement to run. Contract for specifying a
6066
* SQL call along with options leading to the execution. The SQL string can

spring-r2dbc/src/main/java/org/springframework/r2dbc/core/DefaultDatabaseClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ class DefaultDatabaseClient implements DatabaseClient {
8585
}
8686

8787

88+
@Override
89+
public ConnectionFactory getConnectionFactory() {
90+
return this.connectionFactory;
91+
}
92+
8893
@Override
8994
public GenericExecuteSpec sql(String sql) {
9095
Assert.hasText(sql, "SQL must not be null or empty");

spring-r2dbc/src/test/java/org/springframework/r2dbc/core/DefaultDatabaseClientUnitTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.springframework.r2dbc.core.binding.BindMarkersFactory;
4747
import org.springframework.r2dbc.core.binding.BindTarget;
4848

49+
import static org.assertj.core.api.Assertions.assertThat;
4950
import static org.mockito.ArgumentMatchers.anyString;
5051
import static org.mockito.ArgumentMatchers.eq;
5152
import static org.mockito.BDDMockito.doReturn;
@@ -85,6 +86,15 @@ void before() {
8586
connectionFactory).bindMarkers(BindMarkersFactory.indexed("$", 1));
8687
}
8788

89+
@Test
90+
void connectionFactoryIsExposed() {
91+
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
92+
DatabaseClient databaseClient = DatabaseClient.builder()
93+
.connectionFactory(connectionFactory)
94+
.bindMarkers(BindMarkersFactory.anonymous("?")).build();
95+
assertThat(databaseClient.getConnectionFactory()).isSameAs(connectionFactory);
96+
}
97+
8898
@Test
8999
void shouldCloseConnectionOnlyOnce() {
90100
DefaultDatabaseClient databaseClient = (DefaultDatabaseClient) databaseClientBuilder.build();

0 commit comments

Comments
 (0)