Commit Graph

191 Commits

Author SHA1 Message Date
Mark Paluch
b9afd23528 #176 - Polishing.
Remove all-dbs profile.
2019-09-05 12:14:43 +02:00
Mark Paluch
5065d7b588 #176 - Consistently use a single netty version. 2019-09-05 12:08:06 +02:00
Mark Paluch
b575e15dd6 #175 - Polishing. 2019-09-05 12:08:06 +02:00
Jay Bryant
a4b7e57bd5 #175 - Editing pass for the reference docs.
Edited the reference guide, checking for spelling, grammar, usage, punctuation, and corporate voice.
2019-09-05 12:08:06 +02:00
Michael Berry
f691b8c7d7 #174 - Fix broken links in README.adoc.
A final link fix (checked them all now!)
2019-09-04 14:19:21 +02:00
Mark Paluch
bb49ef0137 #172 - Polishing.
Inherit dependency-management for Kotlin Coroutines.

Original pull request: #173.
2019-09-04 11:57:01 +02:00
Sebastien Deleuze
9064b04110 #172 - Upgrade to Coroutines 1.3.0.
Original pull request: #173.
2019-09-04 11:55:42 +02:00
Mark Paluch
70f05785d8 #171 - Upgrade to jasync-r2dbc-mysql 1.0.6. 2019-09-03 17:31:58 +02:00
Mark Paluch
b1dcb38ad8 #170 - Migrate off deprecated Mono/Flux.usingWhen methods. 2019-09-03 17:31:44 +02:00
Mark Paluch
af52bc1a53 #169 - Polishing.
Move R2dbcMappingContextUnitTests to correct source folder.
2019-09-03 16:27:12 +02:00
Mark Paluch
30c5e2f5e0 #162 - Refine declaration of nullable values in DatabaseClient.
DatabaseClient.BindSpec.bind(…) (execute) and DatabaseClient.GenericInsertSpec.value(…) (insert) now consistently accept SettableValue for scalar and absent values.

This change allows us to provide a Kotlin extension leveraging reified generics to provide the type of a value even if it is null to construct an appropriate SettableValue for fluent API usage.
2019-09-03 16:23:48 +02:00
Mark Paluch
bac5c343b7 #169 - Allow usage of Entity-level converters.
We now support Converters on Entity-level if object materialization/dematerialization is handled by application code. We're using a custom R2DBC MappingContext to create mapping metadata for types that have custom converters registered.
2019-09-03 14:25:02 +02:00
Mark Paluch
501d4475e3 #159 - Polishing.
Update tests to work around known issues in type conversion and transaction synchronization.
2019-09-03 12:39:56 +02:00
Mark Paluch
bc9627e987 #159 - Skip result conversion for query methods returning Void. 2019-09-03 12:18:44 +02:00
Jens Schauder
928ac09882 #151 - SimpleR2dbcRepository is now transactional.
Original pull request: #152.
2019-09-03 12:05:32 +02:00
Mark Paluch
ec8f540ed9 #166 - Polishing.
Consider Dialect-specific converters also in DatabaseClient.create(…) factory. Reduce constant visibility. Add tests. Reformat code.

Original pull request: #168.
2019-09-03 11:59:39 +02:00
berry120
19f572f53b #166 - Add the ability to define dialect-specific converters in R2dbcDialect for MySQL.
Add a MySql specific dialect converter for converting from byte to boolean.

Original pull request: #168.
2019-09-03 11:59:09 +02:00
Michael Berry
fee4437eba #165 - Fix broken links in README.adoc.
Fix broken links.
2019-09-02 16:51:38 +02:00
Mark Paluch
e15e6b19d4 #163 - Add tests for R2DBC MySQL. 2019-08-15 12:22:56 +02:00
Greg Turnquist
6cd08ac64b #121 - Force check for updates. 2019-08-05 11:11:09 -05:00
Mark Paluch
da8a7b339c #155 - Add early returns if conversion can be skipped. 2019-07-25 15:59:06 +02:00
Greg Turnquist
412e8519c1 #121 - Polishing. 2019-07-19 11:43:26 -05:00
Greg Turnquist
dd184349c8 #121 - Publish documentation for main branch. 2019-07-19 11:43:15 -05:00
Mark Paluch
861a2b194f #148 - Consider sorting of PageRequest.
Issuing a paged SELECT with paging now considers the Sort order of PageRequest.
2019-07-16 12:00:05 +02:00
Mark Paluch
929c4dfab4 #138 - Allow multiple usages of the same named parameter.
We now allow multiple usages of the same named parameter if the underlying database supports identifiable placeholders.

SELECT * FROM person where name = :id or lastname = :id

gets translated to

SELECT * FROM person where name = $1 or lastname = $1
2019-07-15 16:39:27 +02:00
Mark Paluch
7403651ba3 #103 - Coroutines extensions throw proper EmptyResultDataAccessException.
RowsFetchSpec.awaitOne() and RowsFetchSpec.awaitFirst() now throw EmptyResultDataAccessException instead of NoSuchElementException to consistently use Spring DAO exceptions.
2019-07-15 14:17:39 +02:00
Mark Paluch
e15bd3162c #124 - Polishing.
Tighten nullability constraints. Consistent Javadoc.
2019-07-15 14:03:04 +02:00
Mark Paluch
59552705a3 #124 - Polishing.
Reduce Lombok usage to within tests.
2019-07-15 13:50:10 +02:00
Mark Paluch
3c3277eac4 #124 - Remove deprecated DatabaseClient.execute().sql(…) and TransactionalDatabaseClient. 2019-07-15 13:39:23 +02:00
Mark Paluch
b1e97035f2 #140 - Polishing.
Reduce assertions on numeric fields to contain a Number subtype.
2019-07-12 15:39:11 +02:00
Mark Paluch
776044de2b #140 - Accept simple mapping function for Row in DatabaseClient.
We now accept a Function<Row, T> in DatabaseClient's map(…) operator to simplify mapping by not requiring RowMetadata.
2019-07-12 15:39:11 +02:00
Mark Paluch
1d42866231 #146 - Fix typo. 2019-07-10 09:49:37 +02:00
Mark Paluch
c58366125d #121 - Cleanup release profile.
Reuse inherited configuration from parent pom.
2019-07-09 11:38:24 +02:00
Mark Paluch
8f848170d2 #146 - Revise readme for a consistent structure. 2019-07-09 11:38:24 +02:00
Mark Paluch
9afffdd999 #145 - Register R2DBC Repository factory in spring.factories.
We now register R2dbcRepositoryFactory as repository factory to aid Spring Data's multi-store detection so Spring Data enters strict config mode when multiple modules are on the class path.
2019-07-05 19:29:32 +02:00
Greg Turnquist
7628fd25f6 #121 - Use parent 'artifactory' profile for snapshot releases. 2019-07-05 11:31:43 -05:00
Greg Turnquist
47e181262e #121 - Only build main branch for upstream triggers. 2019-06-28 19:39:15 -05:00
Greg Turnquist
f6e94cdfa7 #121 - Set user.name and user.home for CI jobs. 2019-06-25 14:08:29 -05:00
Mark Paluch
82aad7c4f5 #141 - Add support for schema initialization.
We now provide DatabasePopulator and ScriptUtils to run SQL scripts using R2DBC Connections to initialize and clean up databases.
2019-06-22 20:57:07 +02:00
Greg Turnquist
a21b403e6d #121 - Introduce Jenkins. 2019-06-11 20:24:04 -05:00
Mark Paluch
0d5f5089be #135 - Adapt to renamed TransactionSynchronizationManager.forCurrentTransaction(). 2019-06-05 14:35:16 +02:00
Mark Paluch
bedc18bc69 #105 - Move named parameter resolution to ReactiveDataAccessStrategy.
Named parameter resolution is now provided as part of ReactiveDataAccessStrategy. This allows us to hide implementation internals (bind markers). DatabaseClient allows configuration whether to use named parameter expansion.

Detailed configuration of named parameter support is now moved to DefaultReactiveDataAccessStrategy.

Original pull request: #105.
2019-06-04 14:34:35 +02:00
Jens Schauder
7372efe3e6 #98 - Polishing.
Formatting.
Changed generics to avoid unchecked casting.
Avoided abbreviated variable name.
Simplified handling of absent keys at ConnectionFactory lookup.

Original pull request: #132.
2019-06-04 11:53:06 +02:00
Mark Paluch
e3aae619f4 #98 - Add support for AbstractRoutingConnectionFactory.
We now provide an abstract base class for ConnectionFactory routing. Routing keys are typically obtained from a subscriber context. AbstractRoutingConnectionFactory is backed by either a map of string identifiers or connection factories. When using string identifiers, these can map agains e.g. Spring bean names that can be resolved using BeanFactoryConnectionFactoryLookup.

class MyRoutingConnectionFactory extends AbstractRoutingConnectionFactory {

		@Override
		protected Mono<Object> determineCurrentLookupKey() {
			return Mono.subscriberContext().filter(it -> it.hasKey(ROUTING_KEY)).map(it -> it.get(ROUTING_KEY));
		}
}

@Bean
public void routingConnectionFactory() {

		MyRoutingConnectionFactory router = new MyRoutingConnectionFactory();

		Map<String, ConnectionFactory> factories = new HashMap<>();
		ConnectionFactory myDefault = …;
		ConnectionFactory primary = …;
		ConnectionFactory secondary = …;

		factories.put("primary", primary);
		factories.put("secondary", secondary);

		router.setTargetConnectionFactories(factories);
		router.setDefaultTargetConnectionFactory(myDefault);

		return router;
}

Original pull request: #132.
2019-06-04 11:52:32 +02:00
Mark Paluch
16d4a66f6a #134 - Create security policy readme. 2019-05-31 15:17:42 +02:00
Mark Paluch
d6c812a4eb #104 - Incorporate review feedback.
Original pull request: #127.
2019-05-27 17:11:30 +02:00
Mark Paluch
9f6cf4061c #104 - Polishing.
Fix documentation links. Use variables for links to Spring Framework reference docs.

Original pull request: #127.
2019-05-27 17:11:30 +02:00
Mark Paluch
043e8a6855 #104 - Provide extension mechanism for R2dbcDialect resolution.
We now use Spring's spring.factories mechanism to register and lookup R2dbcDialectProvider implementations.
This allows a pluggable model for third party implementations to ship R2dbcDialect support that can be auto-discovered.

Original pull request: #127.
2019-05-27 17:11:29 +02:00
Toshiaki Maki
85dcf6b71d #130 - Fix scheme name in sample code.
Fix scheme name.
2019-05-24 16:10:41 +02:00
Mark Paluch
376bfef387 #128 - Fix NullPointerException calling bindNull() with enabled named parameter support. 2019-05-23 10:09:31 +02:00