From 297ff1587a402a12afc498c6285510f99b64ad27 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 12 Mar 2018 16:25:04 +0100 Subject: [PATCH] DATAMONGO-1899 - 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. --- .../data/mongodb/repository/cdi/MongoRepositoryBean.java | 5 ++--- ...PersonRepositoryCustom.java => SamplePersonFragment.java} | 3 +-- ...rsonRepositoryImpl.java => SamplePersonFragmentImpl.java} | 3 +-- .../data/mongodb/repository/cdi/SamplePersonRepository.java | 2 +- 4 files changed, 5 insertions(+), 8 deletions(-) rename spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/{SamplePersonRepositoryCustom.java => SamplePersonFragment.java} (94%) rename spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/{SamplePersonRepositoryImpl.java => SamplePersonFragmentImpl.java} (91%) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryBean.java index bd92baf90..ff6ded5f0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/cdi/MongoRepositoryBean.java @@ -63,11 +63,10 @@ public class MongoRepositoryBean 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) { MongoOperations mongoOperations = getDependencyInstance(operations, MongoOperations.class); - MongoRepositoryFactory factory = new MongoRepositoryFactory(mongoOperations); - return customImplementation.isPresent() ? factory.getRepository(repositoryType, customImplementation.get()) : factory.getRepository(repositoryType); + return create(() -> new MongoRepositoryFactory(mongoOperations), repositoryType); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepositoryCustom.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonFragment.java similarity index 94% rename from spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepositoryCustom.java rename to spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonFragment.java index 1d7bed8b0..8a719c763 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepositoryCustom.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/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.mongodb.repository.cdi; /** * @author Mark Paluch */ -interface SamplePersonRepositoryCustom { +interface SamplePersonFragment { int returnOne(); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepositoryImpl.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonFragmentImpl.java similarity index 91% rename from spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepositoryImpl.java rename to spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonFragmentImpl.java index 9963053e7..e05c0a4b0 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepositoryImpl.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/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.mongodb.repository.cdi; /** * @author Mark Paluch */ -class SamplePersonRepositoryImpl implements SamplePersonRepositoryCustom { +class SamplePersonFragmentImpl implements SamplePersonFragment { @Override public int returnOne() { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepository.java index 25469ef1c..2de35137a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/cdi/SamplePersonRepository.java @@ -21,4 +21,4 @@ import org.springframework.data.repository.Repository; /** * @author Mark Paluch */ -public interface SamplePersonRepository extends Repository, SamplePersonRepositoryCustom {} +public interface SamplePersonRepository extends Repository, SamplePersonFragment {}