From e19be1c77af4ef8adf6cbd1140118d83a04ec292 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 12 Mar 2018 16:33:48 +0100 Subject: [PATCH] DATACASS-533 - Export composable repositories via CDI. We now export composable repositories through our CDI extension. Repositories can now be customized either by a single custom implementation (as it was before) and by providing fragment interfaces along their fragment implementation. This change aligns CDI support with the existing RepositoryFactory support we provide within a Spring application context. --- .../repository/cdi/CassandraRepositoryBean.java | 11 +++-------- ...epositoryCustom.java => SamplePersonFragment.java} | 3 +-- ...ositoryImpl.java => SamplePersonFragmentImpl.java} | 3 +-- .../repository/cdi/SamplePersonRepository.java | 3 +-- 4 files changed, 6 insertions(+), 14 deletions(-) rename spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/{SamplePersonRepositoryCustom.java => SamplePersonFragment.java} (94%) rename spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/{SamplePersonRepositoryImpl.java => SamplePersonFragmentImpl.java} (91%) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/cdi/CassandraRepositoryBean.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/cdi/CassandraRepositoryBean.java index 5cd9478ac..60a6d8761 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/cdi/CassandraRepositoryBean.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/cdi/CassandraRepositoryBean.java @@ -59,19 +59,14 @@ public class CassandraRepositoryBean extends CdiRepositoryBean { /* * (non-Javadoc) - * @see org.springframework.data.repository.cdi.CdiRepositoryBean#create(javax.enterprise.context.spi.CreationalContext, java.lang.Class, java.util.Optional) + * @see org.springframework.data.repository.cdi.CdiRepositoryBean#create(javax.enterprise.context.spi.CreationalContext, java.lang.Class) */ @Override - protected T create(CreationalContext creationalContext, Class repositoryType, - Optional customImplementation) { + protected T create(CreationalContext creationalContext, Class repositoryType) { CassandraOperations cassandraOperations = getDependencyInstance(cassandraOperationsBean, CassandraOperations.class); - CassandraRepositoryFactory factory = new CassandraRepositoryFactory(cassandraOperations); - - return customImplementation // - .map(o -> factory.getRepository(repositoryType, o)) // - .orElseGet(() -> factory.getRepository(repositoryType)); + return create(() -> new CassandraRepositoryFactory(cassandraOperations), repositoryType); } @Override diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepositoryCustom.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonFragment.java similarity index 94% rename from spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepositoryCustom.java rename to spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonFragment.java index 2680d27a1..e42ca8394 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepositoryCustom.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonFragment.java @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.data.cassandra.repository.cdi; /** * @author Mark Paluch */ -interface SamplePersonRepositoryCustom { +interface SamplePersonFragment { int returnOne(); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepositoryImpl.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonFragmentImpl.java similarity index 91% rename from spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepositoryImpl.java rename to spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonFragmentImpl.java index 022f6eb05..60df186f9 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepositoryImpl.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonFragmentImpl.java @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.data.cassandra.repository.cdi; /** * @author Mark Paluch */ -class SamplePersonRepositoryImpl implements SamplePersonRepositoryCustom { +class SamplePersonFragmentImpl implements SamplePersonFragment { @Override public int returnOne() { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepository.java index b23ae81d2..745ada2f4 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepository.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/SamplePersonRepository.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.data.cassandra.repository.cdi; import org.springframework.data.cassandra.domain.Person; @@ -22,6 +21,6 @@ import org.springframework.data.repository.Repository; /** * @author Mark Paluch */ -public interface SamplePersonRepository extends Repository, SamplePersonRepositoryCustom { +public interface SamplePersonRepository extends Repository, SamplePersonFragment { }