diff --git a/src/main/java/org/springframework/data/gemfire/domain/EmptyPage.java b/src/main/java/org/springframework/data/gemfire/domain/EmptyPage.java index af0fc184..6e4d0b4d 100644 --- a/src/main/java/org/springframework/data/gemfire/domain/EmptyPage.java +++ b/src/main/java/org/springframework/data/gemfire/domain/EmptyPage.java @@ -17,7 +17,8 @@ package org.springframework.data.gemfire.domain; -import org.springframework.core.convert.converter.Converter; +import java.util.function.Function; + import org.springframework.data.domain.Page; /** @@ -56,7 +57,7 @@ public final class EmptyPage extends EmptySlice implements Page { */ @Override @SuppressWarnings("unchecked") - public Page map(Converter converter) { + public Page map(Function converter) { return (Page) EMPTY_PAGE; } } diff --git a/src/main/java/org/springframework/data/gemfire/domain/EmptySlice.java b/src/main/java/org/springframework/data/gemfire/domain/EmptySlice.java index 9af1bf24..8a3263a3 100644 --- a/src/main/java/org/springframework/data/gemfire/domain/EmptySlice.java +++ b/src/main/java/org/springframework/data/gemfire/domain/EmptySlice.java @@ -19,8 +19,8 @@ package org.springframework.data.gemfire.domain; import java.util.Collections; import java.util.List; +import java.util.function.Function; -import org.springframework.core.convert.converter.Converter; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.domain.Sort; @@ -104,7 +104,7 @@ public abstract class EmptySlice extends AbstractSliceSupport { */ @Override @SuppressWarnings("unchecked") - public Slice map(Converter converter) { + public Slice map(Function converter) { return (Slice) EMPTY_SLICE; } } diff --git a/src/main/java/org/springframework/data/gemfire/domain/ListablePage.java b/src/main/java/org/springframework/data/gemfire/domain/ListablePage.java index d379da11..bf719cfa 100644 --- a/src/main/java/org/springframework/data/gemfire/domain/ListablePage.java +++ b/src/main/java/org/springframework/data/gemfire/domain/ListablePage.java @@ -22,9 +22,9 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Optional; +import java.util.function.Function; import java.util.stream.Collectors; -import org.springframework.core.convert.converter.Converter; import org.springframework.data.domain.Page; import org.springframework.data.domain.Sort; import org.springframework.data.gemfire.domain.support.AbstractPageSupport; @@ -163,7 +163,7 @@ public class ListablePage extends AbstractPageSupport { * @inheritDoc */ @Override - public Page map(Converter converter) { - return newListablePage(getContent().stream().map(converter::convert).collect(Collectors.toList())); + public Page map(Function converter) { + return newListablePage(getContent().stream().map(converter::apply).collect(Collectors.toList())); } } diff --git a/src/main/java/org/springframework/data/gemfire/domain/support/AbstractPageSupport.java b/src/main/java/org/springframework/data/gemfire/domain/support/AbstractPageSupport.java index 93c6426b..1022d822 100644 --- a/src/main/java/org/springframework/data/gemfire/domain/support/AbstractPageSupport.java +++ b/src/main/java/org/springframework/data/gemfire/domain/support/AbstractPageSupport.java @@ -19,7 +19,8 @@ package org.springframework.data.gemfire.domain.support; import static org.springframework.data.gemfire.util.RuntimeExceptionFactory.newUnsupportedOperationException; -import org.springframework.core.convert.converter.Converter; +import java.util.function.Function; + import org.springframework.data.domain.Page; import org.springframework.data.domain.Slice; import org.springframework.data.gemfire.util.RuntimeExceptionFactory; @@ -58,7 +59,7 @@ public abstract class AbstractPageSupport extends AbstractSliceSupport imp * @inheritDoc */ @Override - public Page map(Converter converter) { + public Page map(Function converter) { throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED); } } diff --git a/src/main/java/org/springframework/data/gemfire/domain/support/AbstractSliceSupport.java b/src/main/java/org/springframework/data/gemfire/domain/support/AbstractSliceSupport.java index efabeeed..75743ff7 100644 --- a/src/main/java/org/springframework/data/gemfire/domain/support/AbstractSliceSupport.java +++ b/src/main/java/org/springframework/data/gemfire/domain/support/AbstractSliceSupport.java @@ -24,8 +24,8 @@ import java.util.Iterator; import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; -import org.springframework.core.convert.converter.Converter; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.domain.Sort; @@ -153,7 +153,7 @@ public abstract class AbstractSliceSupport implements Slice { * @inheritDoc */ @Override - public Slice map(Converter converter) { + public Slice map(Function converter) { throw newUnsupportedOperationException(RuntimeExceptionFactory.NOT_IMPLEMENTED); } diff --git a/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java b/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java index 704891fa..319716f7 100644 --- a/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java @@ -57,6 +57,17 @@ public class GemfireRepositoryFactoryBean, S, ID ext private MappingContext, GemfirePersistentProperty> mappingContext; + /** + * Creates a new {@link GemfireRepositoryFactoryBean} for the given {@link Repository} {@link Class interface}. + * + * @param repositoryInterface {@link Class interface type} specifying the application data access operations + * contract; must not be {@literal null}. + * @see java.lang.Class + */ + public GemfireRepositoryFactoryBean(Class repositoryInterface) { + super(repositoryInterface); + } + /** * Sets a reference to the Spring {@link ApplicationContext} in which this object runs. * diff --git a/src/main/java/org/springframework/data/gemfire/search/lucene/support/LucenePage.java b/src/main/java/org/springframework/data/gemfire/search/lucene/support/LucenePage.java index 2c3084dd..469e108c 100644 --- a/src/main/java/org/springframework/data/gemfire/search/lucene/support/LucenePage.java +++ b/src/main/java/org/springframework/data/gemfire/search/lucene/support/LucenePage.java @@ -23,11 +23,11 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; import java.util.stream.Collectors; import org.apache.geode.cache.lucene.LuceneResultStruct; import org.apache.geode.cache.lucene.PageableLuceneQueryResults; -import org.springframework.core.convert.converter.Converter; import org.springframework.data.domain.Page; import org.springframework.data.gemfire.domain.support.AbstractPageSupport; import org.springframework.data.gemfire.search.lucene.ProjectingLuceneAccessor; @@ -327,7 +327,7 @@ public class LucenePage extends AbstractPageSupport { * @inheritDoc */ @Override - public Page map(Converter converter) { - return newListablePage(getContent().stream().map(converter::convert).collect(Collectors.toList())); + public Page map(Function converter) { + return newListablePage(getContent().stream().map(converter::apply).collect(Collectors.toList())); } } diff --git a/src/test/java/org/springframework/data/gemfire/cache/CompoundCachePutCacheEvictIntegrationTests.java b/src/test/java/org/springframework/data/gemfire/cache/CompoundCachePutCacheEvictIntegrationTests.java index 379a52d0..0541b03b 100644 --- a/src/test/java/org/springframework/data/gemfire/cache/CompoundCachePutCacheEvictIntegrationTests.java +++ b/src/test/java/org/springframework/data/gemfire/cache/CompoundCachePutCacheEvictIntegrationTests.java @@ -182,10 +182,9 @@ public class CompoundCachePutCacheEvictIntegrationTests { @Bean GemfireRepositoryFactoryBean personRepository() { GemfireRepositoryFactoryBean personRepository = - new GemfireRepositoryFactoryBean(); + new GemfireRepositoryFactoryBean<>(PersonRepository.class); personRepository.setGemfireMappingContext(new GemfireMappingContext()); - personRepository.setRepositoryInterface(PersonRepository.class); return personRepository; } diff --git a/src/test/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBeanTest.java b/src/test/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBeanTest.java index 4dffc8c8..505b6bd9 100644 --- a/src/test/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBeanTest.java +++ b/src/test/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBeanTest.java @@ -55,12 +55,11 @@ public class GemfireRepositoryFactoryBeanTest { @Before public void setup() { - repositoryFactoryBean = new GemfireRepositoryFactoryBean(); + repositoryFactoryBean = new GemfireRepositoryFactoryBean<>(PersonRepository.class); } @Test public void rejectsMappingContextNotSet() { - exception.expect(IllegalStateException.class); exception.expectMessage("GemfireMappingContext"); @@ -70,19 +69,21 @@ public class GemfireRepositoryFactoryBeanTest { @Test @SuppressWarnings("unchecked") public void initializesWithMappingContext() { + RegionAttributes mockRegionAttributes = mock(RegionAttributes.class); - RegionAttributes attributes = mock(RegionAttributes.class); - doReturn(Long.class).when(attributes).getKeyConstraint(); + doReturn(Long.class).when(mockRegionAttributes).getKeyConstraint(); - Region region = mock(Region.class); - doReturn("simple").when(region).getName(); - doReturn(attributes).when(region).getAttributes(); + Region mockRegion = mock(Region.class); - ApplicationContext applicationContext = mock(ApplicationContext.class); - doReturn(Collections.singletonMap("simple", region)).when(applicationContext).getBeansOfType(Region.class); + doReturn("simple").when(mockRegion).getName(); + doReturn(mockRegionAttributes).when(mockRegion).getAttributes(); - repositoryFactoryBean.setApplicationContext(applicationContext); - repositoryFactoryBean.setRepositoryInterface(PersonRepository.class); + ApplicationContext mockApplicationContext = mock(ApplicationContext.class); + + doReturn(Collections.singletonMap("simple", mockRegion)) + .when(mockApplicationContext).getBeansOfType(Region.class); + + repositoryFactoryBean.setApplicationContext(mockApplicationContext); repositoryFactoryBean.setGemfireMappingContext(new GemfireMappingContext()); repositoryFactoryBean.afterPropertiesSet();