From 1db3c3bc2233a295191b0d23de5438320dc2f305 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 12 Mar 2018 17:02:23 +0100 Subject: [PATCH] SGF-725 - 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. --- .../gemfire/repository/cdi/GemfireRepositoryBean.java | 11 ++--------- ...itoryImpl.java => CustomPersonRepositoryImpl.java} | 3 ++- .../repository/cdi/GemfireRepositoryBeanTest.java | 2 +- .../repository/cdi/SamplePersonRepository.java | 3 ++- 4 files changed, 7 insertions(+), 12 deletions(-) rename src/test/java/org/springframework/data/gemfire/repository/cdi/{SamplePersonRepositoryImpl.java => CustomPersonRepositoryImpl.java} (92%) diff --git a/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java b/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java index a70169a6..18c94f29 100644 --- a/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java @@ -143,18 +143,11 @@ class GemfireRepositoryBean extends CdiRepositoryBean { * @param creationalContext operations used by the {@link javax.enterprise.context.spi.Contextual} implementation * during creation of the bean instance. * @param repositoryType the actual class type of the SD (GemFire) Repository. - * @param customImplementation the supporting custom Repository implementing class. - * @return a factory used to create instance of {@link org.springframework.data.gemfire.repository.GemfireRepository}. * @see javax.enterprise.context.spi.Contextual#create(javax.enterprise.context.spi.CreationalContext) * @see #newGemfireRepositoryFactory() */ @Override - @SuppressWarnings("all") - protected T create(CreationalContext creationalContext, Class repositoryType, - Optional customImplementation) { - - return (customImplementation.isPresent() - ? newGemfireRepositoryFactory().getRepository(repositoryType, customImplementation.get()) - : newGemfireRepositoryFactory().getRepository(repositoryType)); + protected T create(CreationalContext creationalContext, Class repositoryType) { + return create(this::newGemfireRepositoryFactory, repositoryType); } } diff --git a/src/test/java/org/springframework/data/gemfire/repository/cdi/SamplePersonRepositoryImpl.java b/src/test/java/org/springframework/data/gemfire/repository/cdi/CustomPersonRepositoryImpl.java similarity index 92% rename from src/test/java/org/springframework/data/gemfire/repository/cdi/SamplePersonRepositoryImpl.java rename to src/test/java/org/springframework/data/gemfire/repository/cdi/CustomPersonRepositoryImpl.java index 11bda0b9..6fb59ef7 100644 --- a/src/test/java/org/springframework/data/gemfire/repository/cdi/SamplePersonRepositoryImpl.java +++ b/src/test/java/org/springframework/data/gemfire/repository/cdi/CustomPersonRepositoryImpl.java @@ -22,10 +22,11 @@ package org.springframework.data.gemfire.repository.cdi; * supporting additional data access (CRUD) operations on people. * * @author John Blum + * @author Mark Paluch * @see org.springframework.data.gemfire.repository.cdi.CustomPersonRepository * @since 1.8.0 */ -public class SamplePersonRepositoryImpl implements CustomPersonRepository { +public class CustomPersonRepositoryImpl implements CustomPersonRepository { public int returnOne() { return 1; diff --git a/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java b/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java index 42f6eea3..ecd92fd0 100644 --- a/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java +++ b/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java @@ -335,7 +335,7 @@ public class GemfireRepositoryBeanTest { }; GemfireRepository gemfireRepository = - repositoryBean.create(null, PersonRepository.class, Optional.empty()); + repositoryBean.create(null, PersonRepository.class); assertThat(gemfireRepository, is(notNullValue())); assertThat(repositoryProxyPostProcessed.get(), is(true)); diff --git a/src/test/java/org/springframework/data/gemfire/repository/cdi/SamplePersonRepository.java b/src/test/java/org/springframework/data/gemfire/repository/cdi/SamplePersonRepository.java index 9b92b9c1..a4e4bf79 100644 --- a/src/test/java/org/springframework/data/gemfire/repository/cdi/SamplePersonRepository.java +++ b/src/test/java/org/springframework/data/gemfire/repository/cdi/SamplePersonRepository.java @@ -26,9 +26,10 @@ import org.springframework.data.gemfire.repository.sample.Person; * operations on instances of {@link Person}. * * @author John Blum + * @author Mark Paluch * @see org.springframework.data.gemfire.repository.GemfireRepository * @see org.springframework.data.gemfire.repository.cdi.CustomPersonRepository - * @see org.springframework.data.gemfire.repository.cdi.SamplePersonRepositoryImpl + * @see CustomPersonRepositoryImpl * @see org.springframework.data.gemfire.repository.sample.Person * @since 1.8.0 */