diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/RepositoryItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/RepositoryItemReader.java index f206a65aa..a5da3932d 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/RepositoryItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/RepositoryItemReader.java @@ -15,11 +15,6 @@ */ package org.springframework.batch.item.data; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.batch.item.ExecutionContext; @@ -36,6 +31,11 @@ import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.MethodInvoker; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + /** *

* A {@link org.springframework.batch.item.ItemReader} that reads records utilizing @@ -65,7 +65,7 @@ public class RepositoryItemReader extends AbstractItemCountingItemStreamItemR protected Log logger = LogFactory.getLog(getClass()); - private PagingAndSortingRepository repository; + private PagingAndSortingRepository repository; private Sort sort; @@ -118,7 +118,7 @@ public class RepositoryItemReader extends AbstractItemCountingItemStreamItemR * * @param repository underlying repository for input to be read from. */ - public void setRepository(PagingAndSortingRepository repository) { + public void setRepository(PagingAndSortingRepository repository) { this.repository = repository; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/RepositoryItemReaderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/RepositoryItemReaderTests.java index dcdb34c1f..9db26f5c9 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/RepositoryItemReaderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/RepositoryItemReaderTests.java @@ -15,23 +15,13 @@ */ package org.springframework.batch.item.data; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.batch.item.adapter.DynamicMethodInvocationException; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -39,6 +29,18 @@ import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.repository.PagingAndSortingRepository; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.mock; + public class RepositoryItemReaderTests { private RepositoryItemReader reader; @@ -205,4 +207,33 @@ public class RepositoryItemReaderTests { assertTrue(dmie.getCause() instanceof NoSuchMethodException); } } + + @Test + public void testDifferentTypes() throws Exception { + TestRepository differentRepository = mock(TestRepository.class); + RepositoryItemReader reader = new RepositoryItemReader(); + sorts = new HashMap(); + sorts.put("id", Direction.ASC); + reader.setRepository(differentRepository); + reader.setPageSize(1); + reader.setSort(sorts); + reader.setMethodName("findFirstNames"); + + ArgumentCaptor pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); + when(differentRepository.findFirstNames(pageRequestContainer.capture())).thenReturn(new PageImpl(new ArrayList(){{ + add("result"); + }})); + + assertEquals("result", reader.doRead()); + + Pageable pageRequest = pageRequestContainer.getValue(); + assertEquals(0, pageRequest.getOffset()); + assertEquals(0, pageRequest.getPageNumber()); + assertEquals(1, pageRequest.getPageSize()); + assertEquals("id: ASC", pageRequest.getSort().toString()); + } + + public static interface TestRepository extends PagingAndSortingRepository { + Page findFirstNames(Pageable pageable); + } }