diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/support/DelegatingItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/support/DelegatingItemWriter.java index 74beb343f..5f4ef6501 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/support/DelegatingItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/support/DelegatingItemWriter.java @@ -11,24 +11,28 @@ import org.springframework.util.Assert; * * The implementation is thread-safe if the delegate is thread-safe. * + * I is the type of item expected as input, O it the + * type of item after transformation that is passed to + * {@link #setDelegate(ItemWriter)}. + * * @author Dave Syer * @author Robert Kasanicky */ -public class DelegatingItemWriter implements ItemWriter, InitializingBean { +public class DelegatingItemWriter implements ItemWriter, InitializingBean { + + private ItemWriter delegate; - private ItemWriter delegate; - /** * Default constructor. */ public DelegatingItemWriter() { super(); } - + /** * @param itemWriter */ - public DelegatingItemWriter(ItemWriter itemWriter) { + public DelegatingItemWriter(ItemWriter itemWriter) { this(); this.delegate = itemWriter; } @@ -36,28 +40,29 @@ public class DelegatingItemWriter implements ItemWriter, InitializingBean { /** * Calls {@link #doProcess(Object)} and then writes the result to the * delegate {@link ItemWriter}. - * @throws Exception + * @throws Exception * * @see ItemWriter#write(Object) */ - public void write(Object item) throws Exception { - Object result = doProcess(item); + public void write(I item) throws Exception { + O result = doProcess(item); delegate.write(result); } /** * By default returns the argument. This method is an extension point meant * to be overridden by subclasses that implement processing logic. - * @throws Exception + * @throws Exception */ - protected Object doProcess(Object item) throws Exception { - return item; + @SuppressWarnings("unchecked") + protected O doProcess(I item) throws Exception { + return (O) item; } /** * Setter for {@link ItemWriter}. */ - public void setDelegate(ItemWriter writer) { + public void setDelegate(ItemWriter writer) { this.delegate = writer; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/BatchSqlUpdateItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/BatchSqlUpdateItemWriterTests.java index fb65ea486..31906f251 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/BatchSqlUpdateItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/BatchSqlUpdateItemWriterTests.java @@ -41,7 +41,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager */ public class BatchSqlUpdateItemWriterTests extends TestCase { - private BatchSqlUpdateItemWriter writer = new BatchSqlUpdateItemWriter(); + private BatchSqlUpdateItemWriter writer = new BatchSqlUpdateItemWriter(); private JdbcTemplate jdbcTemplate; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateAwareItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateAwareItemWriterTests.java index 8b3241a15..b274b1b9c 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateAwareItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateAwareItemWriterTests.java @@ -44,7 +44,7 @@ public class HibernateAwareItemWriterTests extends TestCase { }; } - private class StubItemWriter implements ItemWriter { + private class StubItemWriter implements ItemWriter { public void write(Object item) { list.add(item); } @@ -58,7 +58,7 @@ public class HibernateAwareItemWriterTests extends TestCase { } } - HibernateAwareItemWriter writer = new HibernateAwareItemWriter(); + HibernateAwareItemWriter writer = new HibernateAwareItemWriter(); final List list = new ArrayList(); @@ -95,7 +95,7 @@ public class HibernateAwareItemWriterTests extends TestCase { * @throws Exception */ public void testAfterPropertiesSet() throws Exception { - writer = new HibernateAwareItemWriter(); + writer = new HibernateAwareItemWriter(); try { writer.afterPropertiesSet(); fail("Expected IllegalArgumentException"); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderCommonTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderCommonTests.java index 8a4c67d26..cf7cf8820 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderCommonTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderCommonTests.java @@ -16,7 +16,7 @@ public class HibernateCursorItemReaderCommonTests extends CommonDatabaseItemStre String hsqlQuery = "from Foo"; - HibernateCursorItemReader reader = new HibernateCursorItemReader(); + HibernateCursorItemReader reader = new HibernateCursorItemReader(); reader.setQueryString(hsqlQuery); reader.setSessionFactory(sessionFactory); reader.setUseStatelessSession(true); @@ -36,8 +36,8 @@ public class HibernateCursorItemReaderCommonTests extends CommonDatabaseItemStre } - protected void pointToEmptyInput(ItemReader tested) throws Exception { - HibernateCursorItemReader reader = (HibernateCursorItemReader) tested; + protected void pointToEmptyInput(ItemReader tested) throws Exception { + HibernateCursorItemReader reader = (HibernateCursorItemReader) tested; reader.close(new ExecutionContext()); reader.setQueryString("from Foo foo where foo.id = -1"); reader.afterPropertiesSet(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderStatefulIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderStatefulIntegrationTests.java index c027e9953..0879de3ca 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderStatefulIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorItemReaderStatefulIntegrationTests.java @@ -5,6 +5,7 @@ import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.classic.Session; import org.springframework.batch.item.ExecutionContext; +import org.springframework.batch.item.sample.Foo; /** * Tests for {@link HibernateCursorItemReader} using standard hibernate {@link Session}. @@ -20,13 +21,13 @@ public class HibernateCursorItemReaderStatefulIntegrationTests extends Hibernate //Ensure close is called on the stateful session correctly. public void testStatfulClose(){ - MockControl sessionFactoryControl = MockControl.createControl(SessionFactory.class); - SessionFactory sessionFactory = (SessionFactory) sessionFactoryControl.getMock(); - MockControl sessionControl = MockControl.createControl(Session.class); - Session session = (Session) sessionControl.getMock(); - MockControl resultsControl = MockControl.createNiceControl(Query.class); - Query scrollableResults = (Query) resultsControl.getMock(); - HibernateCursorItemReader itemReader = new HibernateCursorItemReader(); + MockControl sessionFactoryControl = MockControl.createControl(SessionFactory.class); + SessionFactory sessionFactory = sessionFactoryControl.getMock(); + MockControl sessionControl = MockControl.createControl(Session.class); + Session session = sessionControl.getMock(); + MockControl resultsControl = MockControl.createNiceControl(Query.class); + Query scrollableResults = resultsControl.getMock(); + HibernateCursorItemReader itemReader = new HibernateCursorItemReader(); itemReader.setSessionFactory(sessionFactory); itemReader.setQueryString("testQuery"); itemReader.setUseStatelessSession(false); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorProjectionItemReaderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorProjectionItemReaderIntegrationTests.java index d11d0f236..4f6a52ffb 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorProjectionItemReaderIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/HibernateCursorProjectionItemReaderIntegrationTests.java @@ -18,7 +18,7 @@ import org.springframework.test.AbstractTransactionalDataSourceSpringContextTest */ public class HibernateCursorProjectionItemReaderIntegrationTests extends AbstractTransactionalDataSourceSpringContextTests { - protected ItemReader reader; + protected ItemReader reader; protected ExecutionContext executionContext; protected String[] getConfigLocations() { @@ -36,7 +36,7 @@ public class HibernateCursorProjectionItemReaderIntegrationTests extends Abstrac } - protected ItemReader createItemReader() throws Exception { + protected ItemReader createItemReader() throws Exception { LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean(); factoryBean.setDataSource(super.getJdbcTemplate().getDataSource()); factoryBean.setMappingLocations(new Resource[] { new ClassPathResource("Foo.hbm.xml", getClass()) }); @@ -46,7 +46,7 @@ public class HibernateCursorProjectionItemReaderIntegrationTests extends Abstrac String hsqlQuery = "select f.value, f.name from Foo f"; - HibernateCursorItemReader inputSource = new HibernateCursorItemReader(); + HibernateCursorItemReader inputSource = new HibernateCursorItemReader(); inputSource.setQueryString(hsqlQuery); inputSource.setSessionFactory(sessionFactory); inputSource.afterPropertiesSet();