IN PROGRESS - BATCH-712: Upgrade ItemReaders to use Parameterized types

This commit is contained in:
robokaso
2008-07-18 13:10:21 +00:00
parent 09a21fb95c
commit 918ce36e43
7 changed files with 34 additions and 28 deletions

View File

@@ -10,15 +10,15 @@ import org.springframework.jdbc.core.JdbcTemplate;
class FooItemReader implements ItemStream, ItemReader<Foo>, DisposableBean, InitializingBean {
DrivingQueryItemReader<Foo> itemReader;
DrivingQueryItemReader<?> itemReader;
public void setItemReader(DrivingQueryItemReader<Foo> itemReader) {
public void setItemReader(DrivingQueryItemReader<?> itemReader) {
this.itemReader = itemReader;
}
FooDao fooDao = new SingleKeyFooDao();
public FooItemReader(DrivingQueryItemReader<Foo> inputSource, JdbcTemplate jdbcTemplate) {
public FooItemReader(DrivingQueryItemReader<?> inputSource, JdbcTemplate jdbcTemplate) {
this.itemReader = inputSource;
fooDao.setJdbcTemplate(jdbcTemplate);
}

View File

@@ -15,8 +15,11 @@
*/
package org.springframework.batch.item.database;
import java.util.Map;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.database.support.MultipleColumnJdbcKeyCollector;
import org.springframework.batch.item.sample.Foo;
/**
* @author Lucas Ward
@@ -25,14 +28,14 @@ import org.springframework.batch.item.database.support.MultipleColumnJdbcKeyColl
public class MultipleColumnJdbcDrivingQueryItemReaderIntegrationTests extends
AbstractJdbcItemReaderIntegrationTests {
protected ItemReader createItemReader() throws Exception {
protected ItemReader<Foo> createItemReader() throws Exception {
MultipleColumnJdbcKeyCollector keyGenerator =
new MultipleColumnJdbcKeyCollector(getJdbcTemplate(),
MultipleColumnJdbcKeyCollector<Map<?,?>> keyGenerator =
new MultipleColumnJdbcKeyCollector<Map<?,?>>(getJdbcTemplate(),
"SELECT ID, VALUE from T_FOOS order by ID, VALUE");
keyGenerator.setRestartSql("SELECT ID, VALUE from T_FOOS where ID > ? and VALUE > ? order by ID");
DrivingQueryItemReader inputSource = new DrivingQueryItemReader();
DrivingQueryItemReader<Map<?,?>> inputSource = new DrivingQueryItemReader<Map<?,?>>();
inputSource.setSaveState(true);
inputSource.setKeyCollector(keyGenerator);
FooItemReader fooItemReader = new FooItemReader(inputSource, getJdbcTemplate());

View File

@@ -3,30 +3,31 @@ package org.springframework.batch.item.database;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.database.support.SingleColumnJdbcKeyCollector;
import org.springframework.batch.item.sample.Foo;
import org.springframework.jdbc.core.JdbcTemplate;
public class SingleColumnJdbcDrivingQueryItemReaderCommonTests extends CommonDatabaseItemStreamItemReaderTests {
protected ItemReader getItemReader() throws Exception {
protected ItemReader<Foo> getItemReader() throws Exception {
JdbcTemplate jdbcTemplate = new JdbcTemplate(getDataSource());
SingleColumnJdbcKeyCollector keyCollector = new SingleColumnJdbcKeyCollector(jdbcTemplate,
SingleColumnJdbcKeyCollector<Long> keyCollector = new SingleColumnJdbcKeyCollector<Long>(jdbcTemplate,
"SELECT ID from T_FOOS order by ID");
keyCollector.setRestartSql("SELECT ID from T_FOOS where ID > ? order by ID");
DrivingQueryItemReader reader = new DrivingQueryItemReader();
DrivingQueryItemReader<Long> reader = new DrivingQueryItemReader<Long>();
reader.setKeyCollector(keyCollector);
reader.setSaveState(true);
return new FooItemReader(reader, jdbcTemplate);
}
protected void pointToEmptyInput(ItemReader tested) throws Exception {
protected void pointToEmptyInput(ItemReader<Foo> tested) throws Exception {
FooItemReader fooReader = (FooItemReader) tested;
fooReader.close(new ExecutionContext());
DrivingQueryItemReader reader = new DrivingQueryItemReader();
DrivingQueryItemReader<Long> reader = new DrivingQueryItemReader<Long>();
reader.close(new ExecutionContext());
JdbcTemplate jdbcTemplate = new JdbcTemplate(getDataSource());
SingleColumnJdbcKeyCollector keyCollector = new SingleColumnJdbcKeyCollector(jdbcTemplate,
SingleColumnJdbcKeyCollector<Long> keyCollector = new SingleColumnJdbcKeyCollector<Long>(jdbcTemplate,
"SELECT ID from T_FOOS where ID < 0");
reader.setKeyCollector(keyCollector);

View File

@@ -2,21 +2,22 @@ package org.springframework.batch.item.database;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.database.support.SingleColumnJdbcKeyCollector;
import org.springframework.batch.item.sample.Foo;
public class SingleColumnJdbcDrivingQueryItemReaderIntegrationTests extends AbstractJdbcItemReaderIntegrationTests {
protected ItemReader source;
protected ItemReader<Long> source;
/**
* @return input source with all necessary dependencies set
*/
protected ItemReader createItemReader() throws Exception {
protected ItemReader<Foo> createItemReader() throws Exception {
SingleColumnJdbcKeyCollector keyStrategy = new SingleColumnJdbcKeyCollector(getJdbcTemplate(),
SingleColumnJdbcKeyCollector<Long> keyStrategy = new SingleColumnJdbcKeyCollector<Long>(getJdbcTemplate(),
"SELECT ID from T_FOOS order by ID");
keyStrategy.setRestartSql("SELECT ID from T_FOOS where ID > ? order by ID");
DrivingQueryItemReader inputSource = new DrivingQueryItemReader();
DrivingQueryItemReader<Long> inputSource = new DrivingQueryItemReader<Long>();
inputSource.setKeyCollector(keyStrategy);
inputSource.setSaveState(true);
return new FooItemReader(inputSource, getJdbcTemplate());

View File

@@ -17,7 +17,7 @@ import org.springframework.util.ClassUtils;
*/
public class MultipleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTransactionalDataSourceSpringContextTests {
MultipleColumnJdbcKeyCollector keyStrategy;
MultipleColumnJdbcKeyCollector<Map<?,?>> keyStrategy;
ExecutionContext executionContext;
@@ -28,7 +28,7 @@ public class MultipleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTran
protected void onSetUpBeforeTransaction() throws Exception {
super.onSetUpBeforeTransaction();
keyStrategy = new MultipleColumnJdbcKeyCollector(getJdbcTemplate(),
keyStrategy = new MultipleColumnJdbcKeyCollector<Map<?,?>>(getJdbcTemplate(),
"SELECT ID, VALUE from T_FOOS order by ID");
keyStrategy.setRestartSql("SELECT ID, VALUE from T_FOOS where ID > ? and VALUE > ? order by ID");
@@ -38,10 +38,10 @@ public class MultipleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTran
public void testRetrieveKeys(){
List<Object> keys = keyStrategy.retrieveKeys(executionContext);
List<Map<?,?>> keys = keyStrategy.retrieveKeys(executionContext);
for (int i = 0; i < keys.size(); i++) {
Map<?,?> id = (Map<?,?>)keys.get(i);
Map<?,?> id = keys.get(i);
assertEquals(id.get("ID"), new Long(i + 1));
assertEquals(id.get("VALUE"), new Integer(i + 1));
}
@@ -54,13 +54,13 @@ public class MultipleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTran
keyMap.put("VALUE", "3");
executionContext.put(ClassUtils.getShortName(MultipleColumnJdbcKeyCollector.class)+ ".current.key", keyMap);
List<Object> keys = keyStrategy.retrieveKeys(executionContext);
List<Map<?,?>> keys = keyStrategy.retrieveKeys(executionContext);
assertEquals(2, keys.size());
Map<?,?> key = (Map<?,?>)keys.get(0);
Map<?,?> key = keys.get(0);
assertEquals(new Long(4), key.get("ID"));
assertEquals(new Integer(4), key.get("VALUE"));
key = (Map<?,?>)keys.get(1);
key = keys.get(1);
assertEquals(new Long(5), key.get("ID"));
assertEquals(new Integer(5), key.get("VALUE"));
}

View File

@@ -13,7 +13,7 @@ import org.springframework.util.ClassUtils;
*/
public class SingleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTransactionalDataSourceSpringContextTests {
SingleColumnJdbcKeyCollector keyStrategy;
SingleColumnJdbcKeyCollector<Long> keyStrategy;
ExecutionContext executionContext;
@@ -25,7 +25,7 @@ public class SingleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTransa
protected void onSetUpBeforeTransaction() throws Exception {
super.onSetUpBeforeTransaction();
keyStrategy = new SingleColumnJdbcKeyCollector(getJdbcTemplate(),
keyStrategy = new SingleColumnJdbcKeyCollector<Long>(getJdbcTemplate(),
"SELECT ID from T_FOOS order by ID");
keyStrategy.setRestartSql("SELECT ID from T_FOOS where ID > ? order by ID");
@@ -35,7 +35,7 @@ public class SingleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTransa
public void testRetrieveKeys(){
List<Object> keys = keyStrategy.retrieveKeys(new ExecutionContext());
List<Long> keys = keyStrategy.retrieveKeys(new ExecutionContext());
for (int i = 0; i < keys.size(); i++) {
Long id = (Long)keys.get(i);
@@ -51,7 +51,7 @@ public class SingleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTransa
keyStrategy.updateContext(new Long(3), executionContext);
List<Object> keys = keyStrategy.retrieveKeys(executionContext);
List<Long> keys = keyStrategy.retrieveKeys(executionContext);
assertEquals(2, keys.size());
assertEquals(new Long(4), keys.get(0));

View File

@@ -15,6 +15,7 @@ public class AggregateItemReaderTests extends TestCase {
private ItemReader<Object> input;
private AggregateItemReader provider;
@SuppressWarnings("unchecked")
public void setUp() {
//create mock for input