BATCH-2232: Fixed generics for RepositoryItemReader#setRepository
This commit is contained in:
@@ -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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* A {@link org.springframework.batch.item.ItemReader} that reads records utilizing
|
||||
@@ -65,7 +65,7 @@ public class RepositoryItemReader<T> extends AbstractItemCountingItemStreamItemR
|
||||
|
||||
protected Log logger = LogFactory.getLog(getClass());
|
||||
|
||||
private PagingAndSortingRepository<T, ?> repository;
|
||||
private PagingAndSortingRepository<?, ?> repository;
|
||||
|
||||
private Sort sort;
|
||||
|
||||
@@ -118,7 +118,7 @@ public class RepositoryItemReader<T> extends AbstractItemCountingItemStreamItemR
|
||||
*
|
||||
* @param repository underlying repository for input to be read from.
|
||||
*/
|
||||
public void setRepository(PagingAndSortingRepository<T, ?> repository) {
|
||||
public void setRepository(PagingAndSortingRepository<?, ?> repository) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<Object> 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<String> reader = new RepositoryItemReader<String>();
|
||||
sorts = new HashMap<String, Sort.Direction>();
|
||||
sorts.put("id", Direction.ASC);
|
||||
reader.setRepository(differentRepository);
|
||||
reader.setPageSize(1);
|
||||
reader.setSort(sorts);
|
||||
reader.setMethodName("findFirstNames");
|
||||
|
||||
ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class);
|
||||
when(differentRepository.findFirstNames(pageRequestContainer.capture())).thenReturn(new PageImpl<String>(new ArrayList<String>(){{
|
||||
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<Map, Long> {
|
||||
Page<String> findFirstNames(Pageable pageable);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user