From 7d9e4f82cf1f16b77480e647a2299438238f21d7 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Tue, 24 Jul 2018 12:30:46 +0200 Subject: [PATCH] #380 - Adapt to changed API. New CustomConversions API. More limited access strategies introduced through the immutable support. Fixed dependencies of the r2dbc example. --- .../aggregate/AggregateConfiguration.java | 18 ++-- .../jdbc/basics/aggregate/LegoSet.java | 1 + .../jdbc/mybatis/MyBatisConfiguration.java | 5 +- jdbc/r2dbc/pom.xml | 102 +++++++++++------- .../springdata/r2dbc/basics/Customer.java | 5 +- 5 files changed, 83 insertions(+), 48 deletions(-) diff --git a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/AggregateConfiguration.java b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/AggregateConfiguration.java index 230fea84..0b9eec5b 100644 --- a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/AggregateConfiguration.java +++ b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/AggregateConfiguration.java @@ -15,6 +15,8 @@ */ package example.springdata.jdbc.basics.aggregate; +import static java.util.Arrays.*; + import java.sql.Clob; import java.sql.SQLException; import java.util.HashMap; @@ -25,10 +27,12 @@ import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; +import org.springframework.data.convert.CustomConversions; +import org.springframework.data.jdbc.core.convert.JdbcCustomConversions; import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories; -import org.springframework.data.relational.core.mapping.ConversionCustomizer; -import org.springframework.data.relational.core.mapping.RelationalPersistentProperty; +import org.springframework.data.jdbc.repository.config.JdbcConfiguration; import org.springframework.data.relational.core.mapping.NamingStrategy; +import org.springframework.data.relational.core.mapping.RelationalPersistentProperty; import org.springframework.data.relational.core.mapping.event.BeforeSaveEvent; import org.springframework.lang.Nullable; @@ -37,7 +41,7 @@ import org.springframework.lang.Nullable; */ @Configuration @EnableJdbcRepositories -public class AggregateConfiguration { +public class AggregateConfiguration extends JdbcConfiguration { final AtomicInteger id = new AtomicInteger(0); @@ -101,10 +105,10 @@ public class AggregateConfiguration { }; } - @Bean - public ConversionCustomizer conversionCustomizer() { + @Override + protected CustomConversions jdbcCustomConversions() { - return conversions -> conversions.addConverter(new Converter() { + return new JdbcCustomConversions(asList(new Converter() { @Nullable @Override @@ -120,6 +124,6 @@ public class AggregateConfiguration { throw new IllegalStateException("Failed to convert CLOB to String.", e); } } - }); + })); } } diff --git a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/LegoSet.java b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/LegoSet.java index 9e81fe92..bbde4d82 100644 --- a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/LegoSet.java +++ b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/aggregate/LegoSet.java @@ -47,6 +47,7 @@ public class LegoSet { private Manual manual; // You can build multiple models from one LegoSet + @AccessType(Type.FIELD) private final Map models = new HashMap<>(); // conversion for custom types currently has to be done through getters/setter + marking the underlying property with diff --git a/jdbc/mybatis/src/main/java/example/springdata/jdbc/mybatis/MyBatisConfiguration.java b/jdbc/mybatis/src/main/java/example/springdata/jdbc/mybatis/MyBatisConfiguration.java index c1f20ae2..40d3818e 100644 --- a/jdbc/mybatis/src/main/java/example/springdata/jdbc/mybatis/MyBatisConfiguration.java +++ b/jdbc/mybatis/src/main/java/example/springdata/jdbc/mybatis/MyBatisConfiguration.java @@ -21,6 +21,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.jdbc.core.DataAccessStrategy; import org.springframework.data.jdbc.mybatis.MyBatisDataAccessStrategy; import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories; +import org.springframework.data.relational.core.conversion.RelationalConverter; import org.springframework.data.relational.core.mapping.RelationalMappingContext; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; @@ -32,8 +33,8 @@ import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; public class MyBatisConfiguration { @Bean - DataAccessStrategy defaultDataAccessStrategy(RelationalMappingContext context, + DataAccessStrategy defaultDataAccessStrategy(RelationalMappingContext context, RelationalConverter converter, NamedParameterJdbcOperations operations, SqlSession sqlSession) { - return MyBatisDataAccessStrategy.createCombinedAccessStrategy(context, operations, sqlSession); + return MyBatisDataAccessStrategy.createCombinedAccessStrategy(context, converter, operations, sqlSession); } } diff --git a/jdbc/r2dbc/pom.xml b/jdbc/r2dbc/pom.xml index ec853e83..a84e47fa 100644 --- a/jdbc/r2dbc/pom.xml +++ b/jdbc/r2dbc/pom.xml @@ -1,39 +1,65 @@ - - - 4.0.0 - - - org.springframework.data.examples - spring-data-jdbc-examples - 2.0.0.BUILD-SNAPSHOT - - - spring-data-r2dbc - - - Californium-BUILD-SNAPSHOT - - - - - - org.springframework.data - spring-data-jdbc - 1.0.0.r2dbc-SNAPSHOT - - - - io.r2dbc - r2dbc-postgresql - 1.0.0.BUILD-SNAPSHOT - runtime - - - - io.projectreactor - reactor-test - test - - - + + + 4.0.0 + + + org.springframework.data.examples + spring-data-jdbc-examples + 2.0.0.BUILD-SNAPSHOT + + + spring-data-r2dbc + + Spring Data JDBC - Demonstrating reactive repositories with R2DBC + + + Californium-BUILD-SNAPSHOT + + + + + + org.springframework.data + spring-data-jdbc + 1.0.0.r2dbc-SNAPSHOT + + + + io.r2dbc + r2dbc-spi + 1.0.0.BUILD-SNAPSHOT + + + + io.projectreactor + reactor-core + + + + io.r2dbc + r2dbc-postgresql + 1.0.0.BUILD-SNAPSHOT + test + + + + io.projectreactor + reactor-test + test + + + + io.projectreactor.ipc + reactor-netty + 0.7.7.RELEASE + test + + + + io.projectreactor.addons + reactor-extra + + + diff --git a/jdbc/r2dbc/src/main/java/example/springdata/r2dbc/basics/Customer.java b/jdbc/r2dbc/src/main/java/example/springdata/r2dbc/basics/Customer.java index 7f79b7b0..7385030f 100644 --- a/jdbc/r2dbc/src/main/java/example/springdata/r2dbc/basics/Customer.java +++ b/jdbc/r2dbc/src/main/java/example/springdata/r2dbc/basics/Customer.java @@ -15,6 +15,8 @@ */ package example.springdata.r2dbc.basics; +import lombok.AllArgsConstructor; +import lombok.Data; import lombok.Value; import org.springframework.data.annotation.Id; @@ -22,7 +24,8 @@ import org.springframework.data.annotation.Id; /** * @author Oliver Gierke */ -@Value +@Data +@AllArgsConstructor class Customer { @Id Integer id; String firstname, lastname;