From 3c47cd0e1cf71d38a81b69e9ec760aa1cd4549f4 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 12 Mar 2018 16:31:13 +0100 Subject: [PATCH] DATALDAP-64 - 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. --- .../ldap/repository/cdi/LdapRepositoryBean.java | 16 +++++++++++----- ...RepositoryCustom.java => SampleFragment.java} | 2 +- ...positoryImpl.java => SampleFragmentImpl.java} | 2 +- .../ldap/repository/cdi/SampleRepository.java | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) rename src/test/java/org/springframework/data/ldap/repository/cdi/{SampleRepositoryCustom.java => SampleFragment.java} (95%) rename src/test/java/org/springframework/data/ldap/repository/cdi/{SampleRepositoryImpl.java => SampleFragmentImpl.java} (92%) diff --git a/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java b/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java index ef408da..122470d 100644 --- a/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java +++ b/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java @@ -63,13 +63,19 @@ public class LdapRepositoryBean extends CdiRepositoryBean { * @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) { LdapOperations ldapOperations = getDependencyInstance(operations, LdapOperations.class); - LdapRepositoryFactory factory = new LdapRepositoryFactory(ldapOperations); - return customImplementation.map(o -> factory.getRepository(repositoryType, o)) - .orElseGet(() -> factory.getRepository(repositoryType)); + return create(() -> new LdapRepositoryFactory(ldapOperations), repositoryType); + } + + /* + * (non-Javadoc) + * @see org.springframework.data.repository.cdi.CdiRepositoryBean#getScope() + */ + @Override + public Class getScope() { + return operations.getScope(); } } diff --git a/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepositoryCustom.java b/src/test/java/org/springframework/data/ldap/repository/cdi/SampleFragment.java similarity index 95% rename from src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepositoryCustom.java rename to src/test/java/org/springframework/data/ldap/repository/cdi/SampleFragment.java index 838326e..2dbce86 100644 --- a/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepositoryCustom.java +++ b/src/test/java/org/springframework/data/ldap/repository/cdi/SampleFragment.java @@ -18,7 +18,7 @@ package org.springframework.data.ldap.repository.cdi; /** * @author Mark Paluch */ -interface SampleRepositoryCustom { +interface SampleFragment { int returnOne(); } diff --git a/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepositoryImpl.java b/src/test/java/org/springframework/data/ldap/repository/cdi/SampleFragmentImpl.java similarity index 92% rename from src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepositoryImpl.java rename to src/test/java/org/springframework/data/ldap/repository/cdi/SampleFragmentImpl.java index 47d6fc5..ff6bbfb 100644 --- a/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepositoryImpl.java +++ b/src/test/java/org/springframework/data/ldap/repository/cdi/SampleFragmentImpl.java @@ -18,7 +18,7 @@ package org.springframework.data.ldap.repository.cdi; /** * @author Mark Paluch */ -class SampleRepositoryImpl implements SampleRepositoryCustom { +class SampleFragmentImpl implements SampleFragment { @Override public int returnOne() { diff --git a/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepository.java b/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepository.java index ff65632..bd498e8 100644 --- a/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepository.java +++ b/src/test/java/org/springframework/data/ldap/repository/cdi/SampleRepository.java @@ -23,4 +23,4 @@ import org.springframework.data.repository.CrudRepository; /** * @author Mark Paluch */ -public interface SampleRepository extends CrudRepository, SampleRepositoryCustom {} +public interface SampleRepository extends CrudRepository, SampleFragment {}