Skip to content

Commit b18bdf0

Browse files
committed
#368 - Polishing.
1 parent 0fab99f commit b18bdf0

File tree

10 files changed

+34
-18
lines changed

10 files changed

+34
-18
lines changed

src/main/asciidoc/reference/r2dbc-upgrading.adoc

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ The following sections explain how to migrate to a newer version of Spring Data
99

1010
Spring Data R2DBC was developed with the intent to evaluate how well R2DBC can integrate with Spring applications.
1111
One of the main aspects was to move core support into Spring Framework once R2DBC support has proven useful.
12-
Spring Framework 5.3 ships with a new module: Spring R2DBC.
12+
Spring Framework 5.3 ships with a new module: Spring R2DBC (`spring-r2dbc`).
1313

1414
`spring-r2dbc` ships core R2DBC functionality (a slim variant of `DatabaseClient`, Transaction Manager, Connection Factory initialization, Exception translation) that was initially provided by Spring Data R2DBC. The 1.2.0 release aligns with what's provided in Spring R2DBC by making several changes outlined in the following sections.
1515

@@ -37,13 +37,13 @@ Spring R2DBC provides a slim exception translation variant without an SPI for no
3737
=== Usage of replacements provided by Spring R2DBC
3838

3939
To ease migration, several deprecated types are now subtypes of their replacements provided by Spring R2DBC. Spring Data R2DBC has changes several methods or introduced new methods accepting Spring R2DBC types.
40-
Specifically the following classes are affected:
40+
Specifically the following classes are changed:
4141

4242
* `R2dbcEntityTemplate`
4343
* `R2dbcDialect`
4444
* Types in `org.springframework.data.r2dbc.query`
4545

46-
We recommend that you review your imports if you work with these types directly.
46+
We recommend that you review and update your imports if you work with these types directly.
4747

4848
=== Breaking Changes
4949

src/main/java/org/springframework/data/r2dbc/connectionfactory/ConnectionHandle.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* @author Mark Paluch
2424
* @see SimpleConnectionHandle
2525
* @see ConnectionHolder
26-
* @deprecated since 1.2 in favor of Spring R2DBC. Use {@link org.springframework.r2dbc.connection} instead.
26+
* @deprecated since 1.2 in favor of Spring R2DBC without replacement.
2727
*/
2828
@FunctionalInterface
2929
@Deprecated

src/main/java/org/springframework/data/r2dbc/connectionfactory/SmartConnectionFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
*
2828
* @author Mark Paluch
2929
* @see ConnectionFactoryUtils#closeConnection
30-
* @deprecated since 1.2 in favor of Spring R2DBC. Use {@link org.springframework.r2dbc.connection} instead.
30+
* @deprecated since 1.2 in favor of Spring R2DBC without replacement.
3131
*/
3232
@Deprecated
3333
public interface SmartConnectionFactory extends ConnectionFactory {

src/main/java/org/springframework/data/r2dbc/connectionfactory/init/DatabasePopulatorUtils.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
* Utility methods for executing a {@link DatabasePopulator}.
2828
*
2929
* @author Mark Paluch
30-
* @deprecated since 1.2 in favor of Spring R2DBC. Use {@link org.springframework.r2dbc.connection.init} instead.
30+
* @deprecated since 1.2 in favor of Spring R2DBC. Use
31+
* {@link org.springframework.r2dbc.connection.init.DatabasePopulator#populate(ConnectionFactory)} instead.
3132
*/
3233
@Deprecated
3334
public abstract class DatabasePopulatorUtils {

src/main/java/org/springframework/data/r2dbc/core/ReactiveDataAccessStrategy.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,11 @@ public interface ReactiveDataAccessStrategy {
6868
* @since 1.1
6969
* @deprecated since 1.2, use {@link #getBindValue(Parameter)} instead.
7070
*/
71+
@Deprecated
7172
SettableValue getBindValue(SettableValue value);
7273

7374
/**
74-
* Return a potentially converted {@link SettableValue} for strategies that support type conversion.
75+
* Return a potentially converted {@link Parameter} for strategies that support type conversion.
7576
*
7677
* @param value must not be {@literal null}.
7778
* @return

src/main/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactory.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.springframework.data.mapping.context.MappingContext;
2222
import org.springframework.data.projection.ProjectionFactory;
2323
import org.springframework.data.r2dbc.convert.R2dbcConverter;
24-
import org.springframework.data.r2dbc.core.DatabaseClient;
2524
import org.springframework.data.r2dbc.core.R2dbcEntityOperations;
2625
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
2726
import org.springframework.data.r2dbc.core.ReactiveDataAccessStrategy;
@@ -185,8 +184,7 @@ public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata,
185184
return new StringBasedR2dbcQuery(queryMethod, this.databaseClient, this.converter, EXPRESSION_PARSER,
186185
this.evaluationContextProvider);
187186
} else {
188-
return new PartTreeR2dbcQuery(queryMethod, this.databaseClient, this.converter,
189-
this.dataAccessStrategy);
187+
return new PartTreeR2dbcQuery(queryMethod, this.databaseClient, this.converter, this.dataAccessStrategy);
190188
}
191189
}
192190
}

src/main/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactoryBean.java

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import java.io.Serializable;
1919

2020
import org.springframework.data.mapping.context.MappingContext;
21-
import org.springframework.data.r2dbc.core.DatabaseClient;
2221
import org.springframework.data.r2dbc.core.R2dbcEntityOperations;
2322
import org.springframework.data.r2dbc.core.ReactiveDataAccessStrategy;
2423
import org.springframework.data.repository.Repository;

src/main/kotlin/org/springframework/data/r2dbc/core/DatabaseClientExtensions.kt

+15
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import org.springframework.data.r2dbc.mapping.SettableValue
2323
*
2424
* @author Sebastien Deleuze
2525
*/
26+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
2627
suspend fun DatabaseClient.GenericExecuteSpec.await() {
2728
then().awaitFirstOrNull()
2829
}
@@ -34,6 +35,7 @@ suspend fun DatabaseClient.GenericExecuteSpec.await() {
3435
* @author Ibanga Enoobong Ime
3536
*/
3637
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
38+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
3739
inline fun <reified T : Any> DatabaseClient.TypedExecuteSpec<*>.bind(index: Int, value: T?) = bind(index, SettableValue.fromOrEmpty(value, T::class.java))
3840

3941
/**
@@ -43,6 +45,7 @@ inline fun <reified T : Any> DatabaseClient.TypedExecuteSpec<*>.bind(index: Int,
4345
* @author Ibanga Enoobong Ime
4446
*/
4547
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
48+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
4649
inline fun <reified T : Any> DatabaseClient.GenericExecuteSpec.bind(index: Int, value: T?) = bind(index, SettableValue.fromOrEmpty(value, T::class.java))
4750

4851
/**
@@ -52,6 +55,7 @@ inline fun <reified T : Any> DatabaseClient.GenericExecuteSpec.bind(index: Int,
5255
* @author Ibanga Enoobong Ime
5356
*/
5457
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
58+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
5559
inline fun <reified T : Any> DatabaseClient.TypedExecuteSpec<*>.bind(name: String, value: T?) = bind(name, SettableValue.fromOrEmpty(value, T::class.java))
5660

5761
/**
@@ -61,6 +65,7 @@ inline fun <reified T : Any> DatabaseClient.TypedExecuteSpec<*>.bind(name: Strin
6165
* @author Ibanga Enoobong Ime
6266
*/
6367
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
68+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
6469
inline fun <reified T : Any> DatabaseClient.GenericExecuteSpec.bind(name: String, value: T?) = bind(name, SettableValue.fromOrEmpty(value, T::class.java))
6570

6671
/**
@@ -69,6 +74,7 @@ inline fun <reified T : Any> DatabaseClient.GenericExecuteSpec.bind(name: String
6974
*
7075
* @author Sebastien Deleuze
7176
*/
77+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
7278
inline fun <reified T : Any> DatabaseClient.GenericExecuteSpec.asType(): DatabaseClient.TypedExecuteSpec<T> =
7379
`as`(T::class.java)
7480

@@ -78,6 +84,7 @@ inline fun <reified T : Any> DatabaseClient.GenericExecuteSpec.asType(): Databas
7884
*
7985
* @author Sebastien Deleuze
8086
*/
87+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
8188
inline fun <reified T : Any> DatabaseClient.GenericSelectSpec.asType(): DatabaseClient.TypedSelectSpec<T> =
8289
`as`(T::class.java)
8390

@@ -86,6 +93,7 @@ inline fun <reified T : Any> DatabaseClient.GenericSelectSpec.asType(): Database
8693
*
8794
* @author Sebastien Deleuze
8895
*/
96+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
8997
suspend fun <T> DatabaseClient.TypedExecuteSpec<T>.await() {
9098
then().awaitFirstOrNull()
9199
}
@@ -96,6 +104,7 @@ suspend fun <T> DatabaseClient.TypedExecuteSpec<T>.await() {
96104
*
97105
* @author Sebastien Deleuze
98106
*/
107+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
99108
inline fun <reified T : Any> DatabaseClient.TypedExecuteSpec<T>.asType(): DatabaseClient.TypedExecuteSpec<T> =
100109
`as`(T::class.java)
101110

@@ -104,6 +113,7 @@ inline fun <reified T : Any> DatabaseClient.TypedExecuteSpec<T>.asType(): Databa
104113
*
105114
* @author Sebastien Deleuze
106115
*/
116+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
107117
suspend fun <T> DatabaseClient.InsertSpec<T>.await() {
108118
then().awaitFirstOrNull()
109119
}
@@ -114,6 +124,7 @@ suspend fun <T> DatabaseClient.InsertSpec<T>.await() {
114124
*
115125
* @author Sebastien Deleuze
116126
*/
127+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
117128
inline fun <reified T : Any> DatabaseClient.InsertIntoSpec.into(): DatabaseClient.TypedInsertSpec<T> =
118129
into(T::class.java)
119130

@@ -123,6 +134,7 @@ inline fun <reified T : Any> DatabaseClient.InsertIntoSpec.into(): DatabaseClien
123134
* @author Mark Paluch
124135
*/
125136
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
137+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
126138
inline fun <reified T : Any> DatabaseClient.GenericInsertSpec<*>.value(name: String, value: T?) = value(name, SettableValue.fromOrEmpty(value, T::class.java))
127139

128140

@@ -132,6 +144,7 @@ inline fun <reified T : Any> DatabaseClient.GenericInsertSpec<*>.value(name: Str
132144
*
133145
* @author Jonas Bark
134146
*/
147+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
135148
inline fun <reified T : Any> DatabaseClient.SelectFromSpec.from(): DatabaseClient.TypedSelectSpec<T> =
136149
from(T::class.java)
137150

@@ -141,6 +154,7 @@ inline fun <reified T : Any> DatabaseClient.SelectFromSpec.from(): DatabaseClien
141154
*
142155
* @author Mark Paluch
143156
*/
157+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
144158
inline fun <reified T : Any> DatabaseClient.UpdateTableSpec.table(): DatabaseClient.TypedUpdateSpec<T> =
145159
table(T::class.java)
146160

@@ -150,5 +164,6 @@ inline fun <reified T : Any> DatabaseClient.UpdateTableSpec.table(): DatabaseCli
150164
*
151165
* @author Jonas Bark
152166
*/
167+
@Deprecated("Deprecated in favor of Spring R2DBC's DatabaseClient")
153168
inline fun <reified T : Any> DatabaseClient.DeleteFromSpec.from(): DatabaseClient.TypedDeleteSpec<T> =
154169
from(T::class.java)

src/test/java/org/springframework/data/r2dbc/core/ReactiveUpdateOperationUnitTests.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import org.springframework.data.annotation.Id;
2929
import org.springframework.data.r2dbc.dialect.PostgresDialect;
30+
import org.springframework.data.r2dbc.mapping.SettableValue;
3031
import org.springframework.data.r2dbc.testing.StatementRecorder;
3132
import org.springframework.data.relational.core.mapping.Column;
3233
import org.springframework.data.relational.core.query.Update;
@@ -68,7 +69,7 @@ public void shouldUpdate() {
6869
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
6970

7071
assertThat(statement.getSql()).isEqualTo("UPDATE person SET THE_NAME = $1");
71-
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, SettableValue.from("Heisenberg"));
72+
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Heisenberg"));
7273
}
7374

7475
@Test // gh-410
@@ -87,7 +88,7 @@ public void shouldUpdateWithTable() {
8788
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
8889

8990
assertThat(statement.getSql()).isEqualTo("UPDATE table SET THE_NAME = $1");
90-
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, SettableValue.from("Heisenberg"));
91+
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Heisenberg"));
9192
}
9293

9394
@Test // gh-220

src/test/java/org/springframework/data/r2dbc/repository/config/R2dbcRepositoriesRegistrarTests.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@
3232
import org.springframework.data.r2dbc.core.ReactiveDataAccessStrategy;
3333
import org.springframework.data.r2dbc.dialect.MySqlDialect;
3434
import org.springframework.data.r2dbc.dialect.PostgresDialect;
35-
import org.springframework.r2dbc.core.DatabaseClient;
3635
import org.springframework.data.r2dbc.dialect.SqlServerDialect;
3736
import org.springframework.data.r2dbc.repository.config.mysql.MySqlPersonRepository;
3837
import org.springframework.data.r2dbc.repository.config.sqlserver.SqlServerPersonRepository;
38+
import org.springframework.r2dbc.core.DatabaseClient;
39+
import org.springframework.r2dbc.core.binding.BindMarkersFactory;
3940

4041
/**
4142
* Integration tests for {@link R2dbcRepositoriesRegistrar}.
@@ -86,8 +87,8 @@ public ConnectionFactory mysqlConnectionFactory() {
8687
public R2dbcEntityOperations mysqlR2dbcEntityOperations(@Qualifier("mysql") ConnectionFactory connectionFactory) {
8788

8889
DefaultReactiveDataAccessStrategy strategy = new DefaultReactiveDataAccessStrategy(MySqlDialect.INSTANCE);
89-
DatabaseClient databaseClient = DatabaseClient.builder().connectionFactory(connectionFactory)
90-
.dataAccessStrategy(strategy).build();
90+
DatabaseClient databaseClient = DatabaseClient.builder().bindMarkers(BindMarkersFactory.anonymous("?"))
91+
.connectionFactory(connectionFactory).build();
9192

9293
return new R2dbcEntityTemplate(databaseClient, strategy);
9394
}
@@ -107,8 +108,8 @@ public ConnectionFactory sqlserverConnectionFactory() {
107108
public DatabaseClient sqlserverDatabaseClient(
108109
@Qualifier("sqlserverConnectionFactory") ConnectionFactory connectionFactory,
109110
@Qualifier("sqlserverDataAccessStrategy") ReactiveDataAccessStrategy mysqlDataAccessStrategy) {
110-
return DatabaseClient.builder().connectionFactory(connectionFactory).dataAccessStrategy(mysqlDataAccessStrategy)
111-
.build();
111+
return DatabaseClient.builder().connectionFactory(connectionFactory)
112+
.bindMarkers(BindMarkersFactory.anonymous("?")).build();
112113
}
113114

114115
@Bean

0 commit comments

Comments
 (0)