Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4fe22fc

Browse files
committed
BATCH-2232: Fixed generics for RepositoryItemReader#setRepository
1 parent c8d77c0 commit 4fe22fc

File tree

2 files changed

+49
-18
lines changed

2 files changed

+49
-18
lines changed

spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/RepositoryItemReader.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@
1515
*/
1616
package org.springframework.batch.item.data;
1717

18-
import java.lang.reflect.InvocationTargetException;
19-
import java.util.ArrayList;
20-
import java.util.List;
21-
import java.util.Map;
22-
2318
import org.apache.commons.logging.Log;
2419
import org.apache.commons.logging.LogFactory;
2520
import org.springframework.batch.item.ExecutionContext;
@@ -36,6 +31,11 @@
3631
import org.springframework.util.ClassUtils;
3732
import org.springframework.util.MethodInvoker;
3833

34+
import java.lang.reflect.InvocationTargetException;
35+
import java.util.ArrayList;
36+
import java.util.List;
37+
import java.util.Map;
38+
3939
/**
4040
* <p>
4141
* A {@link org.springframework.batch.item.ItemReader} that reads records utilizing
@@ -65,7 +65,7 @@ public class RepositoryItemReader<T> extends AbstractItemCountingItemStreamItemR
6565

6666
protected Log logger = LogFactory.getLog(getClass());
6767

68-
private PagingAndSortingRepository<T, ?> repository;
68+
private PagingAndSortingRepository<?, ?> repository;
6969

7070
private Sort sort;
7171

@@ -118,7 +118,7 @@ public void setPageSize(int pageSize) {
118118
*
119119
* @param repository underlying repository for input to be read from.
120120
*/
121-
public void setRepository(PagingAndSortingRepository<T, ?> repository) {
121+
public void setRepository(PagingAndSortingRepository<?, ?> repository) {
122122
this.repository = repository;
123123
}
124124

spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/RepositoryItemReaderTests.java

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,32 @@
1515
*/
1616
package org.springframework.batch.item.data;
1717

18-
import static org.junit.Assert.assertEquals;
19-
import static org.junit.Assert.assertFalse;
20-
import static org.junit.Assert.assertNull;
21-
import static org.junit.Assert.assertTrue;
22-
import static org.junit.Assert.fail;
23-
import static org.mockito.Mockito.when;
24-
25-
import java.util.ArrayList;
26-
import java.util.HashMap;
27-
import java.util.Map;
28-
2918
import org.junit.Before;
3019
import org.junit.Test;
3120
import org.mockito.ArgumentCaptor;
3221
import org.mockito.Mock;
3322
import org.mockito.MockitoAnnotations;
3423
import org.springframework.batch.item.adapter.DynamicMethodInvocationException;
24+
import org.springframework.data.domain.Page;
3525
import org.springframework.data.domain.PageImpl;
3626
import org.springframework.data.domain.PageRequest;
3727
import org.springframework.data.domain.Pageable;
3828
import org.springframework.data.domain.Sort;
3929
import org.springframework.data.domain.Sort.Direction;
4030
import org.springframework.data.repository.PagingAndSortingRepository;
4131

32+
import java.util.ArrayList;
33+
import java.util.HashMap;
34+
import java.util.Map;
35+
36+
import static org.junit.Assert.assertEquals;
37+
import static org.junit.Assert.assertFalse;
38+
import static org.junit.Assert.assertNull;
39+
import static org.junit.Assert.assertTrue;
40+
import static org.junit.Assert.fail;
41+
import static org.mockito.Mockito.when;
42+
import static org.mockito.Mockito.mock;
43+
4244
public class RepositoryItemReaderTests {
4345

4446
private RepositoryItemReader<Object> reader;
@@ -205,4 +207,33 @@ public void testInvalidMethodName() throws Exception {
205207
assertTrue(dmie.getCause() instanceof NoSuchMethodException);
206208
}
207209
}
210+
211+
@Test
212+
public void testDifferentTypes() throws Exception {
213+
TestRepository differentRepository = mock(TestRepository.class);
214+
RepositoryItemReader<String> reader = new RepositoryItemReader<String>();
215+
sorts = new HashMap<String, Sort.Direction>();
216+
sorts.put("id", Direction.ASC);
217+
reader.setRepository(differentRepository);
218+
reader.setPageSize(1);
219+
reader.setSort(sorts);
220+
reader.setMethodName("findFirstNames");
221+
222+
ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class);
223+
when(differentRepository.findFirstNames(pageRequestContainer.capture())).thenReturn(new PageImpl<String>(new ArrayList<String>(){{
224+
add("result");
225+
}}));
226+
227+
assertEquals("result", reader.doRead());
228+
229+
Pageable pageRequest = pageRequestContainer.getValue();
230+
assertEquals(0, pageRequest.getOffset());
231+
assertEquals(0, pageRequest.getPageNumber());
232+
assertEquals(1, pageRequest.getPageSize());
233+
assertEquals("id: ASC", pageRequest.getSort().toString());
234+
}
235+
236+
public static interface TestRepository extends PagingAndSortingRepository<Map, Long> {
237+
Page<String> findFirstNames(Pageable pageable);
238+
}
208239
}

0 commit comments

Comments
 (0)