diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/ItemProviderProcessTasklet.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/ItemOrientedTasklet.java similarity index 90% rename from spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/ItemProviderProcessTasklet.java rename to spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/ItemOrientedTasklet.java index fba6e0e12..a9c4099dd 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/ItemProviderProcessTasklet.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/ItemOrientedTasklet.java @@ -25,12 +25,12 @@ import java.util.Set; import org.springframework.batch.core.tasklet.Tasklet; import org.springframework.batch.io.Skippable; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemRecoverer; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.retry.RetryPolicy; -import org.springframework.batch.retry.callback.ItemProviderRetryCallback; -import org.springframework.batch.retry.policy.ItemProviderRetryPolicy; +import org.springframework.batch.retry.callback.ItemReaderRetryCallback; +import org.springframework.batch.retry.policy.ItemReaderRetryPolicy; import org.springframework.batch.retry.support.RetryTemplate; import org.springframework.batch.statistics.StatisticsProvider; import org.springframework.beans.factory.InitializingBean; @@ -42,7 +42,7 @@ import org.springframework.util.Assert; * the reading and processing of batch data into two separate classes: * ItemProvider and ItemProcessor. The ItemProvider class provides a solid means * for re-usability and enforces good architecture practices. Because an object - * must be returned by the {@link ItemProvider} to continue + * must be returned by the {@link ItemReader} to continue * processing, (returning null indicates processing should end) a developer is * forced to read in all relevant data, place it into a domain object, and * return that object. The {@link ItemProcessor} will then use this object for @@ -50,12 +50,12 @@ import org.springframework.util.Assert; * * If a {@link RetryPolicy} is provided it will be used to construct a stateful * retry around the {@link ItemProcessor}, delegating identity concerns to the - * {@link ItemProvider} and recovery concerns to the {@link ItemRecoverer} (if + * {@link ItemReader} and recovery concerns to the {@link ItemRecoverer} (if * present). In this case clients of this class do not need to take any * additional action at runtime to take advantage of the retry and recovery, * provided that when the {@link #execute()} method is called again the same * item is eventually re-presented (normally this would be the case because a - * transaction would have rolled back and the {@link ItemProvider} would go back + * transaction would have rolled back and the {@link ItemReader} would go back * to its previous state).
* * If a {@link RetryPolicy} is not provided then the {@link ItemRecoverer} can @@ -65,7 +65,7 @@ import org.springframework.util.Assert; * can be achieved by injecting an {@link ItemRecoverer} that has a * transactional recover method. * - * @see ItemProvider + * @see ItemReader * @see ItemProcessor * @see RetryPolicy * @see Recoverable @@ -75,7 +75,7 @@ import org.springframework.util.Assert; * @author Robert Kasanicky * */ -public class ItemProviderProcessTasklet implements Tasklet, Skippable, +public class ItemOrientedTasklet implements Tasklet, Skippable, StatisticsProvider, InitializingBean { /** @@ -92,7 +92,7 @@ public class ItemProviderProcessTasklet implements Tasklet, Skippable, private RetryPolicy retryPolicy = null; - protected ItemProvider itemProvider; + protected ItemReader itemProvider; protected ItemProcessor itemProcessor; @@ -100,7 +100,7 @@ public class ItemProviderProcessTasklet implements Tasklet, Skippable, private RetryTemplate template = new RetryTemplate(); - private ItemProviderRetryCallback retryCallback; + private ItemReaderRetryCallback retryCallback; /** * Check mandatory properties (provider and processor). @@ -115,12 +115,12 @@ public class ItemProviderProcessTasklet implements Tasklet, Skippable, itemRecoverer = (ItemRecoverer) itemProvider; } - ItemProviderRetryPolicy itemProviderRetryPolicy = new ItemProviderRetryPolicy( + ItemReaderRetryPolicy itemProviderRetryPolicy = new ItemReaderRetryPolicy( retryPolicy); template.setRetryPolicy(itemProviderRetryPolicy); if (retryPolicy != null) { - retryCallback = new ItemProviderRetryCallback(itemProvider, + retryCallback = new ItemReaderRetryCallback(itemProvider, itemProcessor); retryCallback.setRecoverer(itemRecoverer); } @@ -128,7 +128,7 @@ public class ItemProviderProcessTasklet implements Tasklet, Skippable, } /** - * Read from the {@link ItemProvider} and process (if not null) with the + * Read from the {@link ItemReader} and process (if not null) with the * {@link ItemProcessor}. The call to {@link ItemProcessor} is wrapped in a * stateful retry, if a {@link RetryPolicy} is provided. The * {@link ItemRecoverer} is used (if provided) in the case of an exception @@ -144,7 +144,7 @@ public class ItemProviderProcessTasklet implements Tasklet, Skippable, public ExitStatus execute() throws Exception { if (retryCallback == null) { - Object item = itemProvider.next(); + Object item = itemProvider.read(); if (item == null) { return ExitStatus.FINISHED; } @@ -168,7 +168,7 @@ public class ItemProviderProcessTasklet implements Tasklet, Skippable, /** * @param itemProvider */ - public void setItemProvider(ItemProvider itemProvider) { + public void setItemProvider(ItemReader itemProvider) { this.itemProvider = itemProvider; } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemProviderTasklet.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTasklet.java similarity index 78% rename from spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemProviderTasklet.java rename to spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTasklet.java index a02330ffc..6d6e61ec5 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemProviderTasklet.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTasklet.java @@ -19,17 +19,17 @@ package org.springframework.batch.execution.tasklet; import java.util.Properties; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; import org.springframework.batch.restart.Restartable; import org.springframework.batch.support.PropertiesConverter; /** - * An extension of {@link ItemProviderProcessTasklet} that delegates calls to + * An extension of {@link ItemOrientedTasklet} that delegates calls to * {@link Restartable} to the provider and processor. * - * @see ItemProvider + * @see ItemReader * @see ItemProcessor * @see Restartable * @@ -37,7 +37,7 @@ import org.springframework.batch.support.PropertiesConverter; * @author Dave Syer * */ -public class RestartableItemProviderTasklet extends ItemProviderProcessTasklet implements Restartable { +public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implements Restartable { /** * @see Restartable#getRestartData() @@ -55,7 +55,7 @@ public class RestartableItemProviderTasklet extends ItemProviderProcessTasklet i itemProcessorRestartData = ((Restartable) itemProcessor).getRestartData(); } - RestartableItemProviderTaskletRestartData restartData = new RestartableItemProviderTaskletRestartData(itemProviderRestartData, itemProcessorRestartData); + RestartableItemOrientedTaskletRestartData restartData = new RestartableItemOrientedTaskletRestartData(itemProviderRestartData, itemProcessorRestartData); return restartData; } @@ -67,13 +67,13 @@ public class RestartableItemProviderTasklet extends ItemProviderProcessTasklet i if (data == null || data.getProperties() == null) return; - RestartableItemProviderTaskletRestartData moduleRestartData; + RestartableItemOrientedTaskletRestartData moduleRestartData; - if (data instanceof RestartableItemProviderTaskletRestartData) { - moduleRestartData = (RestartableItemProviderTaskletRestartData) data; + if (data instanceof RestartableItemOrientedTaskletRestartData) { + moduleRestartData = (RestartableItemOrientedTaskletRestartData) data; } else { - moduleRestartData = new RestartableItemProviderTaskletRestartData(data.getProperties()); + moduleRestartData = new RestartableItemOrientedTaskletRestartData(data.getProperties()); } if (itemProvider instanceof Restartable) { @@ -84,7 +84,7 @@ public class RestartableItemProviderTasklet extends ItemProviderProcessTasklet i } } - private class RestartableItemProviderTaskletRestartData implements RestartData { + private class RestartableItemOrientedTaskletRestartData implements RestartData { private static final String PROVIDER_KEY = "DATA_PROVIDER"; @@ -94,12 +94,12 @@ public class RestartableItemProviderTasklet extends ItemProviderProcessTasklet i RestartData processorData; - public RestartableItemProviderTaskletRestartData(RestartData providerData, RestartData processorData) { + public RestartableItemOrientedTaskletRestartData(RestartData providerData, RestartData processorData) { this.providerData = providerData; this.processorData = processorData; } - public RestartableItemProviderTaskletRestartData(Properties data) { + public RestartableItemOrientedTaskletRestartData(Properties data) { providerData = new GenericRestartData(PropertiesConverter .stringToProperties(data.getProperty(PROVIDER_KEY))); processorData = new GenericRestartData(PropertiesConverter.stringToProperties(data diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/launch/SimpleJobTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/launch/SimpleJobTests.java index 376cc97bf..164ff67d1 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/launch/SimpleJobTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/launch/SimpleJobTests.java @@ -39,11 +39,11 @@ import org.springframework.batch.execution.repository.dao.MapStepDao; import org.springframework.batch.execution.runtime.ScheduledJobIdentifierFactory; import org.springframework.batch.execution.step.SimpleStepConfiguration; import org.springframework.batch.execution.step.simple.SimpleStepExecutor; -import org.springframework.batch.execution.tasklet.ItemProviderProcessTasklet; +import org.springframework.batch.execution.tasklet.ItemOrientedTasklet; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemRecoverer; -import org.springframework.batch.item.provider.ListItemProvider; +import org.springframework.batch.item.provider.ListItemReader; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.exception.handler.ExceptionHandler; import org.springframework.batch.repeat.support.RepeatTemplate; @@ -67,7 +67,7 @@ public class SimpleJobTests extends TestCase { } }; - private ItemProvider provider; + private ItemReader provider; private DefaultJobExecutor jobExecutor = new DefaultJobExecutor();; @@ -92,11 +92,11 @@ public class SimpleJobTests extends TestCase { return getTasklet(new String[] { arg0, arg1 }); } - private ItemProviderProcessTasklet getTasklet(String[] args) throws Exception { - ItemProviderProcessTasklet module = new ItemProviderProcessTasklet(); + private ItemOrientedTasklet getTasklet(String[] args) throws Exception { + ItemOrientedTasklet module = new ItemOrientedTasklet(); List items = TransactionAwareProxyFactory.createTransactionalList(); items.addAll(Arrays.asList(args)); - provider = new ListItemProvider(items); + provider = new ListItemReader(items); module.setItemRecoverer(new ItemRecoverer() { public boolean recover(Object item, Throwable cause) { recovered.add(item); @@ -161,7 +161,7 @@ public class SimpleJobTests extends TestCase { * is recovered ("skipped") on the second attempt (see retry policy * definition above)... */ - final ItemProviderProcessTasklet module = getTasklet(new String[] { "foo", "bar", "spam" }); + final ItemOrientedTasklet module = getTasklet(new String[] { "foo", "bar", "spam" }); StepConfiguration step = new SimpleStepConfiguration(module); module.setItemProcessor(new ItemProcessor() { public void process(Object data) throws Exception { @@ -177,7 +177,7 @@ public class SimpleJobTests extends TestCase { assertEquals(BatchStatus.COMPLETED, jobExecution.getJob().getStatus()); assertEquals(0, processed.size()); // provider should be exhausted - assertEquals(null, provider.next()); + assertEquals(null, provider.read()); assertEquals(3, recovered.size()); } @@ -185,7 +185,7 @@ public class SimpleJobTests extends TestCase { JobConfiguration jobConfiguration = new JobConfiguration(); JobIdentifier runtimeInformation = new SimpleJobIdentifier("real.job"); - final ItemProviderProcessTasklet module = getTasklet(new String[] { "foo", "bar", "spam" }); + final ItemOrientedTasklet module = getTasklet(new String[] { "foo", "bar", "spam" }); StepConfiguration step = new SimpleStepConfiguration(module); module.setItemProcessor(new ItemProcessor() { public void process(Object data) throws Exception { diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/DefaultStepExecutorTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/DefaultStepExecutorTests.java index 73b4d9fe9..a65ab3f80 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/DefaultStepExecutorTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/DefaultStepExecutorTests.java @@ -36,10 +36,10 @@ import org.springframework.batch.execution.repository.dao.MapStepDao; import org.springframework.batch.execution.scope.StepScope; import org.springframework.batch.execution.scope.StepSynchronizationManager; import org.springframework.batch.execution.step.SimpleStepConfiguration; -import org.springframework.batch.execution.tasklet.ItemProviderProcessTasklet; +import org.springframework.batch.execution.tasklet.ItemOrientedTasklet; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; -import org.springframework.batch.item.provider.ListItemProvider; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.provider.ListItemReader; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.exception.handler.DefaultExceptionHandler; @@ -66,8 +66,8 @@ public class DefaultStepExecutorTests extends TestCase { private RepeatTemplate template; - private ItemProvider getProvider(String[] args) { - return new ListItemProvider(Arrays.asList(args)); + private ItemReader getProvider(String[] args) { + return new ListItemReader(Arrays.asList(args)); } /** @@ -76,7 +76,7 @@ public class DefaultStepExecutorTests extends TestCase { * @throws Exception */ private Tasklet getTasklet(String[] strings) throws Exception { - ItemProviderProcessTasklet module = new ItemProviderProcessTasklet(); + ItemOrientedTasklet module = new ItemOrientedTasklet(); module.setItemProcessor(processor); module.setItemProvider(getProvider(strings)); module.afterPropertiesSet(); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/ItemProviderProcessTaskletTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/ItemOrientedTaskletTests.java similarity index 87% rename from spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/ItemProviderProcessTaskletTests.java rename to spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/ItemOrientedTaskletTests.java index 29975f580..f973a9a41 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/ItemProviderProcessTaskletTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/ItemOrientedTaskletTests.java @@ -25,9 +25,9 @@ import junit.framework.TestCase; import org.springframework.batch.io.Skippable; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemRecoverer; -import org.springframework.batch.item.provider.AbstractItemProvider; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.batch.repeat.context.RepeatContextSupport; import org.springframework.batch.repeat.synch.RepeatSynchronizationManager; import org.springframework.batch.retry.policy.SimpleRetryPolicy; @@ -38,16 +38,16 @@ import org.springframework.batch.support.PropertiesConverter; * @author Dave Syer * @author Peter Zozom */ -public class ItemProviderProcessTaskletTests extends TestCase { +public class ItemOrientedTaskletTests extends TestCase { private List list = new ArrayList(); private List items = new ArrayList(); - private ItemProvider itemProvider = new AbstractItemProvider() { + private ItemReader itemProvider = new AbstractItemReader() { int count = 0; - public Object next() throws Exception { + public Object read() throws Exception { if (count < items.size()) { Object data = items.get(count++); if (data instanceof Exception) { @@ -65,12 +65,12 @@ public class ItemProviderProcessTaskletTests extends TestCase { } }; - private ItemProviderProcessTasklet module; + private ItemOrientedTasklet module; public void setUp() throws Exception { // create module - module = new ItemProviderProcessTasklet(); + module = new ItemOrientedTasklet(); // set up module module.setItemProvider(itemProvider); @@ -144,15 +144,15 @@ public class ItemProviderProcessTaskletTests extends TestCase { } } - public void testSkippableProvider() throws Exception { - module.setItemProvider(new SkippableItemProvider()); + public void testSkippableReader() throws Exception { + module.setItemProvider(new SkippableItemReader()); module.setItemRecoverer(null); module.skip(); assertEquals(1, list.size()); } - public void testSkippablProviderProcessor() throws Exception { - module.setItemProvider(new SkippableItemProvider()); + public void testSkippablReaderProcessor() throws Exception { + module.setItemProvider(new SkippableItemReader()); module.setItemProcessor(new SkippableItemProcessor()); module.setItemRecoverer(null); module.skip(); @@ -160,7 +160,7 @@ public class ItemProviderProcessTaskletTests extends TestCase { } public void testStatisticsProvider() throws Exception { - module.setItemProvider(new SkippableItemProvider()); + module.setItemProvider(new SkippableItemReader()); Properties stats = module.getStatistics(); assertEquals(1, stats.size()); assertEquals("bar", stats.getProperty("foo")); @@ -174,7 +174,7 @@ public class ItemProviderProcessTaskletTests extends TestCase { } public void testStatisticsProviderProcessor() throws Exception { - module.setItemProvider(new SkippableItemProvider()); + module.setItemProvider(new SkippableItemReader()); module.setItemProcessor(new SkippableItemProcessor()); Properties stats = module.getStatistics(); assertEquals(2, stats.size()); @@ -184,7 +184,7 @@ public class ItemProviderProcessTaskletTests extends TestCase { public void testStatisticsProviderProcessorMergeDuplicates() throws Exception { - module.setItemProvider(new SkippableItemProvider()); + module.setItemProvider(new SkippableItemReader()); module.setItemProcessor(new SkippableItemProcessor( "foo=bar\nspam=bucket")); Properties stats = module.getStatistics(); @@ -207,8 +207,8 @@ public class ItemProviderProcessTaskletTests extends TestCase { } }); - module.setItemProvider(new AbstractItemProvider() { - public Object next() throws Exception { + module.setItemProvider(new AbstractItemReader() { + public Object read() throws Exception { return "bar"; } }); @@ -245,8 +245,8 @@ public class ItemProviderProcessTaskletTests extends TestCase { return true; } }); - module.setItemProvider(new AbstractItemProvider() { - public Object next() throws Exception { + module.setItemProvider(new AbstractItemReader() { + public Object read() throws Exception { return "foo"; } }); @@ -295,10 +295,10 @@ public class ItemProviderProcessTaskletTests extends TestCase { } } - private class SkippableItemProvider implements ItemProvider, + private class SkippableItemReader implements ItemReader, Skippable, StatisticsProvider { - public Object next() throws Exception { - return itemProvider.next(); + public Object read() throws Exception { + return itemProvider.read(); } public Object getKey(Object item) { return item; diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemProviderTaskletTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTaskletTests.java similarity index 88% rename from spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemProviderTaskletTests.java rename to spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTaskletTests.java index e88e69ebf..f6dcca269 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemProviderTaskletTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTaskletTests.java @@ -20,9 +20,9 @@ import java.util.Properties; import junit.framework.TestCase; -import org.springframework.batch.execution.tasklet.RestartableItemProviderTasklet; +import org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; import org.springframework.batch.restart.Restartable; @@ -31,9 +31,9 @@ import org.springframework.batch.support.PropertiesConverter; /** * @author Peter Zozom */ -public class RestartableItemProviderTaskletTests extends TestCase { +public class RestartableItemOrientedTaskletTests extends TestCase { - private static class MockProvider implements ItemProvider, Restartable { + private static class MockProvider implements ItemReader, Restartable { RestartData data = new RestartData() { @@ -43,7 +43,7 @@ public class RestartableItemProviderTaskletTests extends TestCase { }; - public Object next() { + public Object read() { return null; } @@ -88,11 +88,11 @@ public class RestartableItemProviderTaskletTests extends TestCase { } - private ItemProvider itemProvider; + private ItemReader itemProvider; private ItemProcessor itemProcessor; - private RestartableItemProviderTasklet module; + private RestartableItemOrientedTasklet module; public void testRestart() { @@ -101,7 +101,7 @@ public class RestartableItemProviderTaskletTests extends TestCase { itemProcessor = new MockProcessor(); // create and set up module - module = new RestartableItemProviderTasklet(); + module = new RestartableItemOrientedTasklet(); module.setItemProvider(itemProvider); module.setItemProcessor(itemProcessor); @@ -119,7 +119,7 @@ public class RestartableItemProviderTaskletTests extends TestCase { itemProcessor = new MockProcessor(); // create and set up module - module = new RestartableItemProviderTasklet(); + module = new RestartableItemOrientedTasklet(); module.setItemProvider(itemProvider); module.setItemProcessor(itemProcessor); @@ -134,7 +134,7 @@ public class RestartableItemProviderTaskletTests extends TestCase { public void testRestartFromNotRestartable() { // create and set up module - module = new RestartableItemProviderTasklet(); + module = new RestartableItemOrientedTasklet(); module.setItemProvider(null); module.setItemProcessor(null); diff --git a/spring-batch-execution/src/test/resources/job-configuration.xml b/spring-batch-execution/src/test/resources/job-configuration.xml index 42e170dc7..5b9db1294 100644 --- a/spring-batch-execution/src/test/resources/job-configuration.xml +++ b/spring-batch-execution/src/test/resources/job-configuration.xml @@ -16,10 +16,10 @@ + class="org.springframework.batch.execution.tasklet.ItemOrientedTasklet"> + class="org.springframework.batch.item.provider.ListItemReader"> diff --git a/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml b/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml index 345a8b28d..c9a3fef7f 100644 --- a/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml +++ b/spring-batch-execution/src/test/resources/org/springframework/batch/execution/configuration/test-context.xml @@ -18,10 +18,10 @@ + class="org.springframework.batch.execution.tasklet.ItemOrientedTasklet"> + class="org.springframework.batch.item.provider.ListItemReader"> diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/InputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/InputSource.java deleted file mode 100644 index 61629d998..000000000 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/InputSource.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2006-2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.batch.io; - - -/** - * Basic interface for generic input operations. Class implementing this - * interface will be responsible for reading records from input stream and also - * possibly for mapping these records to objects. Generally it is responsibility - * of implementing class to decide which technology to use for mapping and how - * it should be configured. - * - * @author Dave Syer - */ -public interface InputSource { - - /** - * Read record from input stream and map it to an object. - * - * @return the value object - */ - public Object read(); -} diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorInputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorItemReader.java similarity index 90% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorInputSource.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorItemReader.java index 413be6531..40775b123 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorInputSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorItemReader.java @@ -23,9 +23,10 @@ import org.hibernate.ScrollableResults; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.StatelessSession; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.Skippable; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; @@ -39,7 +40,7 @@ import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; /** - * {@link InputSource} for reading database records built on top of Hibernate. + * {@link ItemReader} for reading database records built on top of Hibernate. * * It executes the HQL {@link #queryString} when initialized and iterates over * the result set as {@link #read()} method is called, returning an object @@ -56,15 +57,15 @@ import org.springframework.util.StringUtils; * @author Robert Kasanicky * @author Dave Syer */ -public class HibernateCursorInputSource implements InputSource, Restartable, +public class HibernateCursorItemReader extends AbstractItemReader implements ItemReader, Restartable, Skippable, InitializingBean, DisposableBean, ResourceLifecycle { private static final String RESTART_DATA_ROW_NUMBER_KEY = ClassUtils - .getShortName(HibernateCursorInputSource.class) + .getShortName(HibernateCursorItemReader.class) + ".rowNumber"; private static final String SKIPPED_ROWS = ClassUtils - .getShortName(HibernateCursorInputSource.class) + .getShortName(HibernateCursorItemReader.class) + ".skippedRows";; private SessionFactory sessionFactory; @@ -90,7 +91,7 @@ public class HibernateCursorInputSource implements InputSource, Restartable, private boolean initialized = false; - private TransactionSynchronization synchronization = new HibernateInputSourceTransactionSynchronization(); + private TransactionSynchronization synchronization = new HibernateItemReaderTransactionSynchronization(); public Object read() { if (!initialized) { @@ -238,7 +239,7 @@ public class HibernateCursorInputSource implements InputSource, Restartable, /** * Encapsulates transaction events handling. */ - private class HibernateInputSourceTransactionSynchronization extends + private class HibernateItemReaderTransactionSynchronization extends TransactionSynchronizationAdapter { public void afterCompletion(int status) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorInputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorItemReader.java similarity index 94% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorInputSource.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorItemReader.java index e995a0867..f5fc39efb 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorInputSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorItemReader.java @@ -29,9 +29,9 @@ import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.Skippable; import org.springframework.batch.io.support.AbstractTransactionalIoSource; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; @@ -116,11 +116,11 @@ import org.springframework.util.StringUtils; * @author Lucas Ward * @author Peter Zozom */ -public class JdbcCursorInputSource extends AbstractTransactionalIoSource - implements InputSource, ResourceLifecycle, DisposableBean, +public class JdbcCursorItemReader extends AbstractTransactionalIoSource + implements ItemReader, ResourceLifecycle, DisposableBean, InitializingBean, Restartable, StatisticsProvider, Skippable { - private static Log log = LogFactory.getLog(JdbcCursorInputSource.class); + private static Log log = LogFactory.getLog(JdbcCursorItemReader.class); public static final int VALUE_NOT_SET = -1; @@ -565,4 +565,13 @@ public class JdbcCursorInputSource extends AbstractTransactionalIoSource initialized = true; } + + /** + * Return the item itself (which is already a key). + * @see org.springframework.batch.item.ItemReader#getKey(java.lang.Object) + */ + public Object getKey(Object item) { + return item; + } + } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryInputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryItemReader.java similarity index 86% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryInputSource.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryItemReader.java index 5701c4819..1dc05952f 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryInputSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryItemReader.java @@ -18,8 +18,8 @@ package org.springframework.batch.io.driving; import java.util.Iterator; import java.util.List; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.support.AbstractTransactionalIoSource; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; import org.springframework.batch.restart.RestartData; @@ -50,8 +50,8 @@ import org.springframework.util.Assert; * @author Lucas Ward * @since 1.0 */ -public class DrivingQueryInputSource extends AbstractTransactionalIoSource - implements InputSource, ResourceLifecycle, InitializingBean, +public class DrivingQueryItemReader extends AbstractTransactionalIoSource + implements ItemReader, ResourceLifecycle, InitializingBean, DisposableBean, Restartable { private boolean initialized = false; @@ -66,7 +66,7 @@ public class DrivingQueryInputSource extends AbstractTransactionalIoSource private KeyGenerator keyGenerator; - public DrivingQueryInputSource() { + public DrivingQueryItemReader() { } @@ -75,14 +75,14 @@ public class DrivingQueryInputSource extends AbstractTransactionalIoSource * * @param keys */ - public DrivingQueryInputSource(List keys) { + public DrivingQueryItemReader(List keys) { this.keys = keys; this.keysIterator = keys.iterator(); } /** - * Return the next key in the List. If the InputSource has not been - * initialized yet, then {@link AbstractDrivingQueryInputSource.open()} will + * Return the next key in the List. If the ItemReader has not been + * initialized yet, then {@link AbstractDrivingQueryItemReader.open()} will * be called. * * @return next key in the list if not index is not at the last element, @@ -103,7 +103,7 @@ public class DrivingQueryInputSource extends AbstractTransactionalIoSource /** * Get the current key. This method will return the same object returned by - * the last read() method. If the InputSource hasn't been initialized yet, + * the last read() method. If the ItemReader hasn't been initialized yet, * then null will be returned. * * @return the current key. @@ -217,4 +217,12 @@ public class DrivingQueryInputSource extends AbstractTransactionalIoSource keysIterator = keys.listIterator(lastCommitIndex); } + /** + * Return the item itself (which is already a key). + * @see org.springframework.batch.item.ItemReader#getKey(java.lang.Object) + */ + public Object getKey(Object item) { + return item; + } + } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/IbatisDrivingQueryInputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/IbatisDrivingQueryItemReader.java similarity index 86% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/IbatisDrivingQueryInputSource.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/IbatisDrivingQueryItemReader.java index 821dbd89d..b33117e28 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/IbatisDrivingQueryInputSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/IbatisDrivingQueryItemReader.java @@ -21,13 +21,13 @@ import org.springframework.orm.ibatis.SqlMapClientTemplate; import com.ibatis.sqlmap.client.SqlMapClient; /** - * Extension of {@link DrivingQueryInputSource} that maps keys to + * Extension of {@link DrivingQueryItemReader} that maps keys to * objects. An iBatis query id must be set to map and return each 'detail record'. * * @author Lucas Ward * @see IbatisKeyGenerator */ -public class IbatisDrivingQueryInputSource extends DrivingQueryInputSource { +public class IbatisDrivingQueryItemReader extends DrivingQueryItemReader { private String detailsQueryId; @@ -36,7 +36,7 @@ public class IbatisDrivingQueryInputSource extends DrivingQueryInputSource { /** * Overridden read() that uses the returned key as arguments to the details query. * - * @see org.springframework.batch.io.driving.DrivingQueryInputSource#read() + * @see org.springframework.batch.io.driving.DrivingQueryItemReader#read() */ public Object read() { Object key = super.read(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/IbatisKeyGenerator.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/IbatisKeyGenerator.java index 9bfe64165..c71ee530c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/IbatisKeyGenerator.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/IbatisKeyGenerator.java @@ -3,7 +3,7 @@ package org.springframework.batch.io.driving.support; import java.util.List; import java.util.Properties; -import org.springframework.batch.io.driving.DrivingQueryInputSource; +import org.springframework.batch.io.driving.DrivingQueryItemReader; import org.springframework.batch.io.driving.KeyGenerator; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; @@ -19,11 +19,11 @@ import com.ibatis.sqlmap.client.SqlMapClient; * * @author Robert Kasanicky * @author Lucas Ward - * @see DrivingQueryInputSource + * @see DrivingQueryItemReader */ public class IbatisKeyGenerator implements KeyGenerator { - public static final String RESTART_KEY = "IbatisDrivingQueryInputSource.keyIndex"; + public static final String RESTART_KEY = "IbatisDrivingQueryItemReader.keyIndex"; private SqlMapClientTemplate sqlMapClientTemplate; @@ -34,7 +34,7 @@ public class IbatisKeyGenerator implements KeyGenerator { /* * Retrieve the keys using the provided driving query id. * - * @see org.springframework.batch.io.support.AbstractDrivingQueryInputSource#retrieveKeys() + * @see org.springframework.batch.io.support.AbstractDrivingQueryItemReader#retrieveKeys() */ public List retrieveKeys() { return sqlMapClientTemplate.queryForList(drivingQuery); @@ -54,7 +54,7 @@ public class IbatisKeyGenerator implements KeyGenerator { /** * Restore the keys list given the provided restart data. * - * @see org.springframework.batch.io.driving.DrivingQueryInputSource#restoreKeys(org.springframework.batch.restart.RestartData) + * @see org.springframework.batch.io.driving.DrivingQueryItemReader#restoreKeys(org.springframework.batch.restart.RestartData) */ public List restoreKeys(RestartData data) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGenerator.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGenerator.java index 95161c668..906993caa 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGenerator.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGenerator.java @@ -18,7 +18,7 @@ package org.springframework.batch.io.driving.support; import java.util.ArrayList; import java.util.List; -import org.springframework.batch.io.driving.DrivingQueryInputSource; +import org.springframework.batch.io.driving.DrivingQueryItemReader; import org.springframework.batch.io.driving.KeyGenerator; import org.springframework.batch.restart.RestartData; import org.springframework.jdbc.core.JdbcTemplate; @@ -33,13 +33,13 @@ import org.springframework.util.StringUtils; *

* * @author Lucas Ward - * @see DrivingQueryInputSource + * @see DrivingQueryItemReader * @since 1.0 */ public class MultipleColumnJdbcKeyGenerator implements KeyGenerator { - public static final String RESTART_KEY = "CompositeKeySqlDrivingQueryInputSource.key"; + public static final String RESTART_KEY = "CompositeKeySqlDrivingQueryItemReader.key"; private JdbcTemplate jdbcTemplate; @@ -54,7 +54,7 @@ public class MultipleColumnJdbcKeyGenerator implements } /** - * Construct a new InputSource. + * Construct a new ItemReader. * * @param jdbcTemplate * @param sql - Sql statement that returns all keys to process. @@ -71,14 +71,14 @@ public class MultipleColumnJdbcKeyGenerator implements } /* (non-Javadoc) - * @see org.springframework.batch.io.sql.scratch.AbstractDrivingQueryInputSource#retrieveKeys() + * @see org.springframework.batch.io.sql.scratch.AbstractDrivingQueryItemReader#retrieveKeys() */ public List retrieveKeys() { return jdbcTemplate.query(sql, keyMapper); } /* (non-Javadoc) - * @see org.springframework.batch.io.sql.scratch.AbstractDrivingQueryInputSource#restoreKeys(org.springframework.batch.restart.RestartData) + * @see org.springframework.batch.io.sql.scratch.AbstractDrivingQueryItemReader#restoreKeys(org.springframework.batch.restart.RestartData) */ public List restoreKeys(RestartData restartData) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/DefaultFlatFileInputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/DefaultFlatFileItemReader.java similarity index 95% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/DefaultFlatFileInputSource.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/DefaultFlatFileItemReader.java index 24d0b9e28..5cb0adffa 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/DefaultFlatFileInputSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/DefaultFlatFileItemReader.java @@ -33,7 +33,7 @@ import org.springframework.transaction.support.TransactionSynchronizationAdapter /** *

- * This class is a {@link FieldSetInputSource} that supports restart, + * This class is a {@link FieldSetItemReader} that supports restart, * skipping invalid lines and storing statistics. *

* @@ -41,9 +41,9 @@ import org.springframework.transaction.support.TransactionSynchronizationAdapter * @author Tomas Slanina * @author Robert Kasanicky */ -public class DefaultFlatFileInputSource extends SimpleFlatFileInputSource implements Skippable, Restartable, +public class DefaultFlatFileItemReader extends SimpleFlatFileItemReader implements Skippable, Restartable, StatisticsProvider { - private static Log log = LogFactory.getLog(DefaultFlatFileInputSource.class); + private static Log log = LogFactory.getLog(DefaultFlatFileItemReader.class); public static final String READ_STATISTICS_NAME = "lines.read.count"; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/ResourceLineReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/ResourceLineReader.java index be369e6cd..f4824be85 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/ResourceLineReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/ResourceLineReader.java @@ -25,11 +25,12 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.exception.BatchEnvironmentException; import org.springframework.batch.io.file.support.separator.DefaultRecordSeparatorPolicy; import org.springframework.batch.io.file.support.separator.RecordSeparatorPolicy; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.beans.factory.DisposableBean; import org.springframework.core.io.Resource; import org.springframework.util.Assert; @@ -57,7 +58,7 @@ import org.springframework.util.Assert; * @author Dave Syer * @author Rob Harrop */ -class ResourceLineReader implements ResourceLifecycle, InputSource, +class ResourceLineReader extends AbstractItemReader implements ResourceLifecycle, ItemReader, DisposableBean { private static final Collection DEFAULT_COMMENTS = Collections @@ -128,7 +129,7 @@ class ResourceLineReader implements ResourceLifecycle, InputSource, * if there is an IOException while accessing the input * resource. * - * @see org.springframework.batch.item.provider.support.InputSource#read() + * @see org.springframework.batch.item.provider.support.ItemReader#read() */ public synchronized Object read() { // Make a copy of the recordSeparatorPolicy reference, in case it is @@ -179,7 +180,7 @@ class ResourceLineReader implements ResourceLifecycle, InputSource, /** * Close the reader associated with this input source. * - * @see org.springframework.batch.io.InputSource#close() + * @see org.springframework.batch.io.ItemReader#close() * @throws BatchEnvironmentException * if there is an {@link IOException} during the close * operation. diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/SimpleFlatFileInputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/SimpleFlatFileItemReader.java similarity index 90% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/SimpleFlatFileInputSource.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/SimpleFlatFileItemReader.java index 0728e185d..1a920eb6c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/SimpleFlatFileInputSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/SimpleFlatFileItemReader.java @@ -18,7 +18,6 @@ package org.springframework.batch.io.file.support; import java.io.IOException; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.exception.FlatFileParsingException; import org.springframework.batch.io.file.FieldSet; import org.springframework.batch.io.file.FieldSetMapper; @@ -26,7 +25,9 @@ import org.springframework.batch.io.file.support.separator.RecordSeparatorPolicy import org.springframework.batch.io.file.support.transform.AbstractLineTokenizer; import org.springframework.batch.io.file.support.transform.DelimitedLineTokenizer; import org.springframework.batch.io.file.support.transform.LineTokenizer; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; @@ -39,16 +40,16 @@ import org.springframework.util.Assert; * structure of the file, {@link LineTokenizer} is used to parse data obtained * from the file.
* - * A {@link SimpleFlatFileInputSource} is not thread safe because it maintains + * A {@link SimpleFlatFileItemReader} is not thread safe because it maintains * state in the form of a {@link ResourceLineReader}. Be careful to configure a - * {@link SimpleFlatFileInputSource} using an appropriate factory or scope so + * {@link SimpleFlatFileItemReader} using an appropriate factory or scope so * that it is not shared between threads.
* - * @see FieldSetInputSource + * @see FieldSetItemReader * * @author Dave Syer */ -public class SimpleFlatFileInputSource implements InputSource, +public class SimpleFlatFileItemReader extends AbstractItemReader implements ItemReader, InitializingBean, DisposableBean { // default encoding for input files - set to ISO-8859-1 @@ -182,9 +183,9 @@ public class SimpleFlatFileInputSource implements InputSource, /** * A wrapper for {@link #readFieldSet()} to make this into a real - * {@link InputSource}. + * {@link ItemReader}. * - * @see org.springframework.batch.io.InputSource#read() + * @see org.springframework.batch.io.ItemReader#read() */ public Object read() { String line = readLine(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/StaxEventReaderInputSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/StaxEventReaderItemReader.java similarity index 82% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/StaxEventReaderInputSource.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/StaxEventReaderItemReader.java index d90f9933f..29eccba6f 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/StaxEventReaderInputSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/support/StaxEventReaderItemReader.java @@ -12,14 +12,15 @@ import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.StartElement; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.Skippable; import org.springframework.batch.io.file.support.stax.DefaultFragmentEventReader; import org.springframework.batch.io.file.support.stax.DefaultTransactionalEventReader; import org.springframework.batch.io.file.support.stax.FragmentDeserializer; import org.springframework.batch.io.file.support.stax.FragmentEventReader; import org.springframework.batch.io.file.support.stax.TransactionalEventReader; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; @@ -35,19 +36,20 @@ import org.springframework.util.Assert; /** * Input source for reading XML input based on StAX. - * + * * It extracts fragments from the input XML document which correspond to records * for processing. The fragments are wrapped with StartDocument and EndDocument * events so that the fragments can be further processed like standalone XML * documents. - * + * * @author Robert Kasanicky */ -public class StaxEventReaderInputSource implements InputSource, ResourceLifecycle, Skippable, Restartable, StatisticsProvider, InitializingBean, DisposableBean { +public class StaxEventReaderItemReader extends AbstractItemReader implements ItemReader, ResourceLifecycle, + Skippable, Restartable, StatisticsProvider, InitializingBean, DisposableBean { - public static final String READ_COUNT_STATISTICS_NAME = "StaxEventReaderInputSource.readCount"; + public static final String READ_COUNT_STATISTICS_NAME = "StaxEventReaderItemReader.readCount"; - private static final String RESTART_DATA_NAME = "StaxEventReaderInputSource.recordcount"; + private static final String RESTART_DATA_NAME = "StaxEventReaderItemReader.recordcount"; private FragmentEventReader fragmentReader; @@ -63,7 +65,7 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl private boolean initialized = false; - private TransactionSynchronization synchronization = new StaxEventReaderInputSourceTransactionSychronization(); + private TransactionSynchronization synchronization = new StaxEventReaderItemReaderTransactionSychronization(); private long lastCommitPointRecordCount = 0; @@ -73,9 +75,9 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl /** * Read in the next root element from the file, and return it. - * + * * @return the next available record, if none exist, return null - * @see org.springframework.batch.io.InputSource#read() + * @see org.springframework.batch.io.ItemReader#read() */ public Object read() { if (!initialized) { @@ -120,8 +122,8 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl registerSynchronization(); try { inputStream = resource.getInputStream(); - txReader = new DefaultTransactionalEventReader(XMLInputFactory - .newInstance().createXMLEventReader(inputStream)); + txReader = new DefaultTransactionalEventReader(XMLInputFactory.newInstance().createXMLEventReader( + inputStream)); fragmentReader = new DefaultFragmentEventReader(txReader); } catch (XMLStreamException xse) { @@ -138,8 +140,8 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl } /** - * @param fragmentDeserializer maps xml fragments corresponding to records to - * objects + * @param fragmentDeserializer maps xml fragments corresponding to records + * to objects */ public void setFragmentDeserializer(FragmentDeserializer fragmentDeserializer) { this.fragmentDeserializer = fragmentDeserializer; @@ -156,7 +158,7 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl /** * Mark the last read record as 'skipped', so that I will not be returned * from read() in the case of a rollback. - * + * * @see Skippable#skip() */ public void skip() { @@ -173,9 +175,9 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl } /** - * Ensure that all required dependencies for the InputSource to run are provided - * after all properties have been set. - * + * Ensure that all required dependencies for the ItemReader to run are + * provided after all properties have been set. + * * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() * @throws IllegalArgumentException if the Resource, FragmentDeserializer or * FragmentRootElementName is null, or if the root element is empty. @@ -201,17 +203,17 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl } /** - * Restores the input source for the given restart data by rereading and skipping - * the number of records stored in the RestartData. - * + * Restores the input source for the given restart data by rereading and + * skipping the number of records stored in the RestartData. + * * @param RestartData that holds the line count from the last commit. - * @throws IllegalStateException if the InputSource has already been initialized - * or if the number of records to read and skip exceeds the available records. + * @throws IllegalStateException if the ItemReader has already been + * initialized or if the number of records to read and skip exceeds the + * available records. */ public void restoreFrom(RestartData data) { Assert.state(!initialized); - if (data == null || data.getProperties() == null || - data.getProperties().getProperty(RESTART_DATA_NAME) == null) { + if (data == null || data.getProperties() == null || data.getProperties().getProperty(RESTART_DATA_NAME) == null) { return; } @@ -232,13 +234,15 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl } /** - * Responsible for moving the cursor before the StartElement of the fragment root. - * - * This implementation simply looks for the next corresponding element, it does not care - * about element nesting. You will need to override this method to correctly handle - * composite fragments. - * - * @return true if next fragment was found, false otherwise. + * Responsible for moving the cursor before the StartElement of the fragment + * root. + * + * This implementation simply looks for the next corresponding element, it + * does not care about element nesting. You will need to override this + * method to correctly handle composite fragments. + * + * @return true if next fragment was found, + * false otherwise. */ protected boolean moveCursorToNextFragment(XMLEventReader reader) { try { @@ -252,7 +256,8 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl QName startElementName = ((StartElement) reader.peek()).getName(); if (startElementName.getLocalPart().equals(fragmentRootElementName)) { return true; - } else { + } + else { reader.nextEvent(); } } @@ -268,9 +273,9 @@ public class StaxEventReaderInputSource implements InputSource, ResourceLifecycl } /** - * Encapsulates transaction events for the StaxEventReaderInputSource. + * Encapsulates transaction events for the StaxEventReaderItemReader. */ - private class StaxEventReaderInputSourceTransactionSychronization extends TransactionSynchronizationAdapter { + private class StaxEventReaderItemReaderTransactionSychronization extends TransactionSynchronizationAdapter { /** * @param status diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/AbstractTransactionalIoSource.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/AbstractTransactionalIoSource.java index f7b8f62cf..b4d88cd85 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/AbstractTransactionalIoSource.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/AbstractTransactionalIoSource.java @@ -15,8 +15,8 @@ */ package org.springframework.batch.io.support; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.ItemWriter; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; import org.springframework.beans.factory.InitializingBean; import org.springframework.transaction.support.TransactionSynchronization; @@ -26,7 +26,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager /** *

* Abstract class that abstracts away transaction handling from input and - * output. Any {@link InputSource} or {@link ItemWriter} that wants to be + * output. Any {@link ItemReader} or {@link ItemWriter} that wants to be * notified of transaction events to maintain the contract that all calls to * read or write can extend this base class to ensure that correct ordering is * maintained regardless of rollbacks. diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/FailedItemIdentifier.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/FailedItemIdentifier.java index 21e30ff3c..5adf68b47 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/FailedItemIdentifier.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/FailedItemIdentifier.java @@ -17,7 +17,7 @@ package org.springframework.batch.item; /** - * Mixin interface for {@link ItemProvider} implementations if they can + * Mixin interface for {@link ItemReader} implementations if they can * distinguish a new item from one that has been processed before and failed, * e.g. by examining a message flag. * diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/ItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/ItemReader.java similarity index 96% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/ItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/ItemReader.java index 25f9a0c4d..71a2d8609 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/ItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/ItemReader.java @@ -24,7 +24,7 @@ package org.springframework.batch.item; * for each batch, with each call to {@link #next} returning a different value * and finally returning null when all input data is exhausted.
* - * Implementations need to be thread safe and clients of a {@link ItemProvider} + * Implementations need to be thread safe and clients of a {@link ItemReader} * need to be aware that this is the case. Clients can code to this interface * without worrying about thread safety by using the AbstractItemProvider base * class.
@@ -35,7 +35,7 @@ package org.springframework.batch.item; * @author Rob Harrop * @author Dave Syer */ -public interface ItemProvider { +public interface ItemReader { /** * Reads a piece of input data and advance to the next one. Implementations @@ -46,7 +46,7 @@ public interface ItemProvider { * * @throws Exception if an underlying resource is unavailable. */ - Object next() throws Exception; + Object read() throws Exception; /** * Get a unique identifier for the item that can be used to cache it between diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/DelegatingItemProcessor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/ItemProcessorAdapter.java similarity index 83% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/DelegatingItemProcessor.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/ItemProcessorAdapter.java index bda01f4bf..a7c58ecba 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/DelegatingItemProcessor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/ItemProcessorAdapter.java @@ -17,7 +17,7 @@ package org.springframework.batch.item.processor; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.support.AbstractDelegator; +import org.springframework.batch.support.AbstractMethodInvokingDelegator; /** @@ -28,7 +28,7 @@ import org.springframework.batch.support.AbstractDelegator; * * @author Robert Kasanicky */ -public class DelegatingItemProcessor extends AbstractDelegator implements ItemProcessor { +public class ItemProcessorAdapter extends AbstractMethodInvokingDelegator implements ItemProcessor { public void process(Object item) throws Exception { invokeDelegateMethodWithArgument(item); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/PropertyExtractingDelegatingItemProcessor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/PropertyExtractingDelegatingItemProcessor.java index 277dff2b0..3c934418a 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/PropertyExtractingDelegatingItemProcessor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/processor/PropertyExtractingDelegatingItemProcessor.java @@ -17,7 +17,7 @@ package org.springframework.batch.item.processor; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.support.AbstractDelegator; +import org.springframework.batch.support.AbstractMethodInvokingDelegator; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import org.springframework.util.Assert; @@ -26,11 +26,11 @@ import org.springframework.util.Assert; * Delegates processing to a custom method - extracts property values * from item object and uses them as arguments for the delegate method. * - * @see DelegatingItemProcessor + * @see ItemProcessorAdapter * * @author Robert Kasanicky */ -public class PropertyExtractingDelegatingItemProcessor extends AbstractDelegator implements ItemProcessor { +public class PropertyExtractingDelegatingItemProcessor extends AbstractMethodInvokingDelegator implements ItemProcessor { private String[] fieldsUsedAsTargetMethodArguments; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AbstractItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AbstractItemReader.java similarity index 78% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AbstractItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AbstractItemReader.java index e73d4f4b7..79f4076f4 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AbstractItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AbstractItemReader.java @@ -16,21 +16,21 @@ package org.springframework.batch.item.provider; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; /** - * Base class for {@link ItemProvider} implementations. + * Base class for {@link ItemReader} implementations. * @author Dave Syer * */ -public abstract class AbstractItemProvider implements ItemProvider { +public abstract class AbstractItemReader implements ItemReader { /** * Simply returns the item itself. Will be adequate for many purposes, but * not (for example) if the item is a message - in which case the identifier * should be used. * - * @see org.springframework.batch.item.ItemProvider#getKey(java.lang.Object) + * @see org.springframework.batch.item.ItemReader#getKey(java.lang.Object) */ public Object getKey(Object item) { return item; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AggregateItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AggregateItemReader.java similarity index 71% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AggregateItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AggregateItemReader.java index 43a4134bf..eb8a3667b 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AggregateItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/AggregateItemReader.java @@ -21,36 +21,36 @@ import java.util.Collection; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.file.FieldSetMapper; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; /** - * An {@link ItemProvider} that delivers a list as its item, storing up objects - * from the injected {@link InputSource} until they are ready to be packed out - * as a collection. The {@link InputSource} should mark the beginning and end of + * An {@link ItemReader} that delivers a list as its item, storing up objects + * from the injected {@link ItemReader} until they are ready to be packed out + * as a collection. The {@link ItemReader} should mark the beginning and end of * records with the constant values in {@link FieldSetMapper} ({@link FieldSetMapper#BEGIN_RECORD} * and {@link FieldSetMapper#END_RECORD}).
* * This class is thread safe (it can be used concurrently by multiple threads) - * as long as the {@link InputSource} is also thread safe. + * as long as the {@link ItemReader} is also thread safe. * * @author Dave Syer * */ -public class AggregateItemProvider extends AbstractItemProvider { +public class AggregateItemReader extends AbstractItemReader { private static final Log log = LogFactory - .getLog(AggregateItemProvider.class); + .getLog(AggregateItemReader.class); - private InputSource inputSource; + private ItemReader inputSource; /** * Get the next list of records. + * @throws Exception * - * @see org.springframework.batch.item.ItemProvider#next() + * @see org.springframework.batch.item.ItemReader#read() */ - public Object next() { + public Object read() throws Exception { ResultHolder holder = new ResultHolder(); while (process(inputSource.read(), holder)) { @@ -67,7 +67,7 @@ public class AggregateItemProvider extends AbstractItemProvider { private boolean process(Object value, ResultHolder holder) { // finish processing if we hit the end of file if (value == null) { - log.debug("Exhausted InputSource"); + log.debug("Exhausted ItemReader"); holder.exhausted = true; return false; } @@ -91,12 +91,12 @@ public class AggregateItemProvider extends AbstractItemProvider { } /** - * Injection setter for {@link InputSource}. + * Injection setter for {@link ItemReader}. * * @param inputSource - * an {@link InputSource}. + * an {@link ItemReader}. */ - public void setInputSource(InputSource inputSource) { + public void setItemReader(ItemReader inputSource) { this.inputSource = inputSource; } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/InputSourceItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/DelegatingItemReader.java similarity index 80% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/InputSourceItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/DelegatingItemReader.java index a06bc0dd6..58399a50c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/InputSourceItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/DelegatingItemReader.java @@ -18,8 +18,8 @@ package org.springframework.batch.item.provider; import java.util.Properties; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.Skippable; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.restart.RestartData; import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; @@ -27,24 +27,25 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; /** - * Simple wrapper around {@link InputSource}. The input source is expected to + * Simple wrapper around {@link ItemReader}. The input source is expected to * take care of open and close operations. If necessary it should be registered * as a step scoped bean to ensure that the lifecycle methods are called. * * @author Dave Syer */ -public class InputSourceItemProvider extends AbstractItemProvider implements Restartable, StatisticsProvider, Skippable, InitializingBean{ +public class DelegatingItemReader extends AbstractItemReader implements Restartable, StatisticsProvider, Skippable, InitializingBean{ - private InputSource inputSource; + private ItemReader inputSource; public void afterPropertiesSet() throws Exception { - Assert.notNull(inputSource, "InputSource must not be null."); + Assert.notNull(inputSource, "ItemReader must not be null."); } /** * Get the next object from the input source. - * @see org.springframework.batch.item.ItemProvider#next() + * @throws Exception + * @see org.springframework.batch.item.ItemReader#read() */ - public Object next() { + public Object read() throws Exception { return inputSource.read(); } @@ -89,11 +90,11 @@ public class InputSourceItemProvider extends AbstractItemProvider implements Res * Setter for input source. * @param source */ - public void setInputSource(InputSource source) { + public void setItemReader(ItemReader source) { this.inputSource = source; } - public InputSource getInputSource() { + public ItemReader getItemReader() { return inputSource; } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/DelegatingItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ItemReaderAdapter.java similarity index 78% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/DelegatingItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ItemReaderAdapter.java index 592a3dc4f..8ce4318ba 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/DelegatingItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ItemReaderAdapter.java @@ -16,20 +16,20 @@ package org.springframework.batch.item.provider; -import org.springframework.batch.item.ItemProvider; -import org.springframework.batch.support.AbstractDelegator; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.support.AbstractMethodInvokingDelegator; /** * Invokes a custom method which provides an item. * * @author Robert Kasanicky */ -public class DelegatingItemProvider extends AbstractDelegator implements ItemProvider { +public class ItemReaderAdapter extends AbstractMethodInvokingDelegator implements ItemReader { /** * @return return value of the target method. */ - public Object next() throws Exception { + public Object read() throws Exception { return invokeDelegateMethod(); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/JmsItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/JmsItemReader.java similarity index 90% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/JmsItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/JmsItemReader.java index d150b57f1..45e7e1244 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/JmsItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/JmsItemReader.java @@ -23,7 +23,7 @@ import javax.jms.Message; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.batch.item.FailedItemIdentifier; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.exception.UnexpectedInputException; import org.springframework.jms.JmsException; import org.springframework.jms.core.JmsOperations; @@ -31,15 +31,15 @@ import org.springframework.jms.core.JmsTemplate; import org.springframework.util.Assert; /** - * An {@link ItemProvider} for JMS using a {@link JmsTemplate}. The template + * An {@link ItemReader} for JMS using a {@link JmsTemplate}. The template * should have a default destination, which will be used to provide items in - * {@link #next()}. If a recovery step is needed, set the error destination and + * {@link #read()}. If a recovery step is needed, set the error destination and * the item will be sent there if processing fails in an external retry. * * @author Dave Syer * */ -public class JmsItemProvider extends AbstractItemProvider implements FailedItemIdentifier { +public class JmsItemReader extends AbstractItemReader implements FailedItemIdentifier { protected Log logger = LogFactory.getLog(getClass()); @@ -92,7 +92,7 @@ public class JmsItemProvider extends AbstractItemProvider implements FailedItemI this.itemType = itemType; } - public Object next() { + public Object read() { if (itemType != null && itemType.isAssignableFrom(Message.class)) { return jmsTemplate.receive(); } @@ -108,7 +108,7 @@ public class JmsItemProvider extends AbstractItemProvider implements FailedItemI * Send the message back to the proovider using the specified error * destination property of this provider. * - * @see org.springframework.batch.item.provider.AbstractItemProvider#recover(java.lang.Object, + * @see org.springframework.batch.item.provider.AbstractItemReader#recover(java.lang.Object, * Throwable) */ public boolean recover(Object item, Throwable cause) { @@ -137,7 +137,7 @@ public class JmsItemProvider extends AbstractItemProvider implements FailedItemI * If the message is a {@link Message} then returns the JMS message ID. * Otherwise just delegate to parent class. * - * @see org.springframework.batch.item.provider.AbstractItemProvider#getKey(java.lang.Object) + * @see org.springframework.batch.item.provider.AbstractItemReader#getKey(java.lang.Object) * * @throws UnexpectedInputException if the JMS id cannot be determined from * a JMS Message diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ListItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ListItemReader.java similarity index 81% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ListItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ListItemReader.java index 58f027c68..4a34514a2 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ListItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ListItemReader.java @@ -20,19 +20,19 @@ import java.util.ArrayList; import java.util.List; import org.springframework.aop.support.AopUtils; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; /** - * An {@link ItemProvider} that pulls data from a list. Useful for testing. + * An {@link ItemReader} that pulls data from a list. Useful for testing. * * @author Dave Syer * */ -public class ListItemProvider extends AbstractItemProvider { +public class ListItemReader extends AbstractItemReader { private List list; - public ListItemProvider(List list) { + public ListItemReader(List list) { // If it is a proxy we assume it knows how to deal with its own state. // (It's probably transaction aware.) if (AopUtils.isAopProxy(list)) { @@ -43,7 +43,7 @@ public class ListItemProvider extends AbstractItemProvider { } } - public Object next() { + public Object read() { if (!list.isEmpty()) { return list.remove(0); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ValidatingItemProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ValidatingItemReader.java similarity index 75% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ValidatingItemProvider.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ValidatingItemReader.java index 6acab044a..a4d5f9836 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ValidatingItemProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/provider/ValidatingItemReader.java @@ -19,18 +19,18 @@ import org.springframework.batch.item.validator.Validator; import org.springframework.util.Assert; /** - * Simple extension of InputsourceItemProvider that provides for + * Simple extension of {@link DelegatingItemReader} that provides for * validation before returning input. * * @author Lucas Ward * */ -public class ValidatingItemProvider extends InputSourceItemProvider { +public class ValidatingItemReader extends DelegatingItemReader { private Validator validator; /* (non-Javadoc) - * @see org.springframework.batch.item.provider.InputSourceItemProvider#afterPropertiesSet() + * @see org.springframework.batch.item.provider.ItemReaderItemProvider#afterPropertiesSet() */ public void afterPropertiesSet() throws Exception { super.afterPropertiesSet(); @@ -38,10 +38,10 @@ public class ValidatingItemProvider extends InputSourceItemProvider { } /* (non-Javadoc) - * @see org.springframework.batch.item.provider.InputSourceItemProvider#next() + * @see org.springframework.batch.item.provider.ItemReaderItemProvider#next() */ - public Object next() { - Object input = super.next(); + public Object read() throws Exception { + Object input = super.read(); if(input != null){ validator.validate(input); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatCallback.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatCallback.java index 5fc1cfd72..b71ddc60c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatCallback.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatCallback.java @@ -18,9 +18,8 @@ package org.springframework.batch.repeat; /** * Callback interface for batch operations. Many simple batch processes will be - * able to use off-the-shelf implementations of this interface, e.g. - * {@link org.springframework.batch.repeat.callback.ItemProviderRepeatCallback}, - * enabling the batch developer to concentrate on business logic. + * able to use off-the-shelf implementations of this interface, enabling the + * batch developer to concentrate on business logic. * * @see RepeatOperations * diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/callback/ItemProviderRepeatCallback.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/callback/ItemReaderRepeatCallback.java similarity index 86% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/callback/ItemProviderRepeatCallback.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/callback/ItemReaderRepeatCallback.java index 4c01ae319..2add5277c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/callback/ItemProviderRepeatCallback.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/callback/ItemReaderRepeatCallback.java @@ -17,7 +17,7 @@ package org.springframework.batch.repeat.callback; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.repeat.RepeatCallback; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.ExitStatus; @@ -29,13 +29,13 @@ import org.springframework.batch.repeat.ExitStatus; * @author Dave Syer * */ -public class ItemProviderRepeatCallback implements RepeatCallback { +public class ItemReaderRepeatCallback implements RepeatCallback { - ItemProvider provider; + ItemReader provider; ItemProcessor processor; - public ItemProviderRepeatCallback(ItemProvider provider, ItemProcessor processor) { + public ItemReaderRepeatCallback(ItemReader provider, ItemProcessor processor) { super(); this.provider = provider; this.processor = processor; @@ -47,7 +47,7 @@ public class ItemProviderRepeatCallback implements RepeatCallback { * provider by calling next(). * @param provider */ - public ItemProviderRepeatCallback(ItemProvider provider) { + public ItemReaderRepeatCallback(ItemReader provider) { this(provider, null); } @@ -61,7 +61,7 @@ public class ItemProviderRepeatCallback implements RepeatCallback { public ExitStatus doInIteration(RepeatContext context) throws Exception { ExitStatus result = ExitStatus.FINISHED; - Object item = provider.next(); + Object item = provider.read(); if (processor != null) { if (item != null) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/callback/ItemProviderRetryCallback.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/callback/ItemReaderRetryCallback.java similarity index 80% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/callback/ItemProviderRetryCallback.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/callback/ItemReaderRetryCallback.java index 5cd28053c..0d7001592 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/callback/ItemProviderRetryCallback.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/callback/ItemReaderRetryCallback.java @@ -19,41 +19,41 @@ package org.springframework.batch.retry.callback; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemRecoverer; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; import org.springframework.batch.retry.RetryPolicy; import org.springframework.batch.retry.exception.ExhaustedRetryException; import org.springframework.batch.retry.exception.RetryException; -import org.springframework.batch.retry.policy.ItemProviderRetryPolicy; +import org.springframework.batch.retry.policy.ItemReaderRetryPolicy; /** * A {@link RetryCallback} that knows about and caches the value from an - * {@link ItemProvider}. Used by the {@link ItemProviderRetryPolicy} to enable + * {@link ItemReader}. Used by the {@link ItemReaderRetryPolicy} to enable * external retry of the item processing. * * @author Dave Syer * - * @see ItemProviderRetryPolicy + * @see ItemReaderRetryPolicy * @see RetryPolicy#handleRetryExhausted(RetryContext) * */ -public class ItemProviderRetryCallback implements RetryCallback { +public class ItemReaderRetryCallback implements RetryCallback { private final static Log logger = LogFactory - .getLog(ItemProviderRetryCallback.class); + .getLog(ItemReaderRetryCallback.class); - public static final String ITEM = ItemProviderRetryCallback.class.getName() + public static final String ITEM = ItemReaderRetryCallback.class.getName() + ".ITEM"; - private ItemProvider provider; + private ItemReader provider; private ItemProcessor processor; private ItemRecoverer recoverer; - public ItemProviderRetryCallback(ItemProvider provider, + public ItemReaderRetryCallback(ItemReader provider, ItemProcessor processor) { super(); this.provider = provider; @@ -81,7 +81,7 @@ public class ItemProviderRetryCallback implements RetryCallback { Object item = context.getAttribute(ITEM); if (item == null) { try { - item = provider.next(); + item = provider.read(); } catch (Exception e) { throw new ExhaustedRetryException( "Unexpected end of item provider", e); @@ -107,7 +107,7 @@ public class ItemProviderRetryCallback implements RetryCallback { /** * Accessor for the {@link ItemRecoverer}. If the handler is null but - * the {@link ItemProvider} is an instanceof {@link ItemRecoverer}, + * the {@link ItemReader} is an instanceof {@link ItemRecoverer}, * then it will be returned instead. * * @return the {@link ItemRecoverer}. @@ -123,11 +123,11 @@ public class ItemProviderRetryCallback implements RetryCallback { } /** - * Public getter for the {@link ItemProvider}. + * Public getter for the {@link ItemReader}. * - * @return the {@link ItemProvider} instance. + * @return the {@link ItemReader} instance. */ - public ItemProvider getProvider() { + public ItemReader getProvider() { return provider; } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/policy/ItemProviderRetryPolicy.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/policy/ItemReaderRetryPolicy.java similarity index 89% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/policy/ItemProviderRetryPolicy.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/policy/ItemReaderRetryPolicy.java index fb734600c..4a4d09329 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/policy/ItemProviderRetryPolicy.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/policy/ItemReaderRetryPolicy.java @@ -19,33 +19,33 @@ package org.springframework.batch.retry.policy; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.batch.item.FailedItemIdentifier; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemRecoverer; import org.springframework.batch.repeat.synch.RepeatSynchronizationManager; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; import org.springframework.batch.retry.RetryPolicy; -import org.springframework.batch.retry.callback.ItemProviderRetryCallback; +import org.springframework.batch.retry.callback.ItemReaderRetryCallback; import org.springframework.batch.retry.context.RetryContextSupport; import org.springframework.batch.retry.exception.TerminatedRetryException; import org.springframework.batch.retry.synch.RetrySynchronizationManager; import org.springframework.util.Assert; /** - * A {@link RetryPolicy} that detects an {@link ItemProviderRetryCallback} when + * A {@link RetryPolicy} that detects an {@link ItemReaderRetryCallback} when * it opens a new context, and uses it to make sure the item is in place for * later decisions about how to retry or backoff. The callback should be an - * instance of {@link ItemProviderRetryCallback} otherwise an exception will be + * instance of {@link ItemReaderRetryCallback} otherwise an exception will be * thrown when the context is created. * * @author Dave Syer * */ -public class ItemProviderRetryPolicy extends AbstractStatefulRetryPolicy { +public class ItemReaderRetryPolicy extends AbstractStatefulRetryPolicy { protected Log logger = LogFactory.getLog(getClass()); - public static final String EXHAUSTED = ItemProviderRetryPolicy.class + public static final String EXHAUSTED = ItemReaderRetryPolicy.class .getName() + ".EXHAUSTED"; @@ -56,7 +56,7 @@ public class ItemProviderRetryPolicy extends AbstractStatefulRetryPolicy { * * @param delegate */ - public ItemProviderRetryPolicy(RetryPolicy delegate) { + public ItemReaderRetryPolicy(RetryPolicy delegate) { super(); this.delegate = delegate; } @@ -65,7 +65,7 @@ public class ItemProviderRetryPolicy extends AbstractStatefulRetryPolicy { * Default constructor. Creates a new {@link SimpleRetryPolicy} for the * delegate. */ - public ItemProviderRetryPolicy() { + public ItemReaderRetryPolicy() { this(new SimpleRetryPolicy()); } @@ -99,7 +99,7 @@ public class ItemProviderRetryPolicy extends AbstractStatefulRetryPolicy { /** * Create a new context for the execution of the callback, which must be an - * instance of {@link ItemProviderRetryCallback}. + * instance of {@link ItemReaderRetryCallback}. * * @see org.springframework.batch.retry.RetryPolicy#open(org.springframework.batch.retry.RetryCallback) * @@ -107,10 +107,10 @@ public class ItemProviderRetryPolicy extends AbstractStatefulRetryPolicy { * if the callback is not of the required type. */ public RetryContext open(RetryCallback callback) { - Assert.state(callback instanceof ItemProviderRetryCallback, + Assert.state(callback instanceof ItemReaderRetryCallback, "Callback must be ItemProviderRetryCallback"); ItemProviderRetryContext context = new ItemProviderRetryContext( - (ItemProviderRetryCallback) callback); + (ItemReaderRetryCallback) callback); context.open(callback); return context; } @@ -145,11 +145,11 @@ public class ItemProviderRetryPolicy extends AbstractStatefulRetryPolicy { // The delegate context... private RetryContext delegateContext; - private ItemProvider provider; + private ItemReader provider; private ItemRecoverer recoverer; - public ItemProviderRetryContext(ItemProviderRetryCallback callback) { + public ItemProviderRetryContext(ItemReaderRetryCallback callback) { super(RetrySynchronizationManager.getContext()); item = callback.next(this); this.provider = callback.getProvider(); @@ -243,7 +243,7 @@ public class ItemProviderRetryPolicy extends AbstractStatefulRetryPolicy { * @param item * @return */ - protected boolean hasFailed(ItemProvider provider, Object item) { + protected boolean hasFailed(ItemReader provider, Object item) { if (provider instanceof FailedItemIdentifier) { return ((FailedItemIdentifier) provider).hasFailed(item); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/AbstractDelegator.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/AbstractMethodInvokingDelegator.java similarity index 95% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/support/AbstractDelegator.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/support/AbstractMethodInvokingDelegator.java index f3fdab5a8..61e6bf6e9 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/AbstractDelegator.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/AbstractMethodInvokingDelegator.java @@ -32,7 +32,7 @@ import org.springframework.util.MethodInvoker; * * @author Robert Kasanicky */ -public class AbstractDelegator implements InitializingBean { +public class AbstractMethodInvokingDelegator implements InitializingBean { private Object targetObject; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorInputSourceStatefulIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorInputSourceStatefulIntegrationTests.java deleted file mode 100644 index 483090a30..000000000 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorInputSourceStatefulIntegrationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.springframework.batch.io.cursor; - -import org.hibernate.Session; - -/** - * Tests for {@link HibernateCursorInputSource} using standard hibernate {@link Session}. - * - * @author Robert Kasanicky - */ -public class HibernateCursorInputSourceStatefulIntegrationTests extends HibernateCursorInputSourceIntegrationTests { - - protected boolean isUseStatelessSession() { - return false; - } - -} diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorInputSourceIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorItemReaderIntegrationTests.java similarity index 65% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorInputSourceIntegrationTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorItemReaderIntegrationTests.java index 7227377fa..0cc4ac87e 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorInputSourceIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorItemReaderIntegrationTests.java @@ -2,20 +2,20 @@ package org.springframework.batch.io.cursor; import org.hibernate.SessionFactory; import org.hibernate.StatelessSession; -import org.springframework.batch.io.InputSource; -import org.springframework.batch.io.support.AbstractDataSourceInputSourceIntegrationTests; +import org.springframework.batch.io.support.AbstractDataSourceItemReaderIntegrationTests; +import org.springframework.batch.item.ItemReader; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.orm.hibernate3.LocalSessionFactoryBean; /** - * Tests for {@link HibernateCursorInputSource} using {@link StatelessSession}. + * Tests for {@link HibernateCursorItemReader} using {@link StatelessSession}. * * @author Robert Kasanicky */ -public class HibernateCursorInputSourceIntegrationTests extends AbstractDataSourceInputSourceIntegrationTests { +public class HibernateCursorItemReaderIntegrationTests extends AbstractDataSourceItemReaderIntegrationTests { - protected InputSource createInputSource() 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()) }); @@ -25,7 +25,7 @@ public class HibernateCursorInputSourceIntegrationTests extends AbstractDataSour String hsqlQuery = "from Foo"; - HibernateCursorInputSource inputSource = new HibernateCursorInputSource(); + HibernateCursorItemReader inputSource = new HibernateCursorItemReader(); inputSource.setQueryString(hsqlQuery); inputSource.setSessionFactory(sessionFactory); inputSource.setUseStatelessSession(isUseStatelessSession()); @@ -41,11 +41,11 @@ public class HibernateCursorInputSourceIntegrationTests extends AbstractDataSour /** * Exception scenario. * - * {@link HibernateCursorInputSource#setUseStatelessSession(boolean)} can be + * {@link HibernateCursorItemReader#setUseStatelessSession(boolean)} can be * called only in uninitialized state. */ public void testSetUseStatelessSession() { - HibernateCursorInputSource inputSource = ((HibernateCursorInputSource) source); + HibernateCursorItemReader inputSource = ((HibernateCursorItemReader) source); // initialize and call setter => error inputSource.open(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorItemReaderStatefulIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorItemReaderStatefulIntegrationTests.java new file mode 100644 index 000000000..3897f3225 --- /dev/null +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/HibernateCursorItemReaderStatefulIntegrationTests.java @@ -0,0 +1,16 @@ +package org.springframework.batch.io.cursor; + +import org.hibernate.Session; + +/** + * Tests for {@link HibernateCursorItemReader} using standard hibernate {@link Session}. + * + * @author Robert Kasanicky + */ +public class HibernateCursorItemReaderStatefulIntegrationTests extends HibernateCursorItemReaderIntegrationTests { + + protected boolean isUseStatelessSession() { + return false; + } + +} diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/JdbcCursorInputSourceIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/JdbcCursorItemReaderIntegrationTests.java similarity index 52% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/JdbcCursorInputSourceIntegrationTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/JdbcCursorItemReaderIntegrationTests.java index 5360a1a43..70bc4bc23 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/JdbcCursorInputSourceIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/cursor/JdbcCursorItemReaderIntegrationTests.java @@ -1,18 +1,18 @@ package org.springframework.batch.io.cursor; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.driving.FooRowMapper; -import org.springframework.batch.io.support.AbstractDataSourceInputSourceIntegrationTests; +import org.springframework.batch.io.support.AbstractDataSourceItemReaderIntegrationTests; +import org.springframework.batch.item.ItemReader; /** - * Tests for {@link JdbcCursorInputSource} + * Tests for {@link JdbcCursorItemReader} * * @author Robert Kasanicky */ -public class JdbcCursorInputSourceIntegrationTests extends AbstractDataSourceInputSourceIntegrationTests { +public class JdbcCursorItemReaderIntegrationTests extends AbstractDataSourceItemReaderIntegrationTests { - protected InputSource createInputSource() throws Exception { - JdbcCursorInputSource result = new JdbcCursorInputSource(); + protected ItemReader createItemReader() throws Exception { + JdbcCursorItemReader result = new JdbcCursorItemReader(); result.setDataSource(super.getJdbcTemplate().getDataSource()); result.setSql("select ID, NAME, VALUE from T_FOOS"); result.setIgnoreWarnings(true); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryInputSourceTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryItemReaderTests.java similarity index 88% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryInputSourceTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryItemReaderTests.java index 156e5615d..906cd0529 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryInputSourceTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryItemReaderTests.java @@ -6,8 +6,8 @@ import java.util.Properties; import junit.framework.TestCase; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.sample.domain.Foo; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; import org.springframework.batch.restart.Restartable; @@ -17,9 +17,9 @@ import org.springframework.transaction.support.TransactionSynchronizationManager import org.springframework.transaction.support.TransactionSynchronizationUtils; import org.springframework.util.Assert; -public class DrivingQueryInputSourceTests extends TestCase { +public class DrivingQueryItemReaderTests extends TestCase { - InputSource source; + ItemReader source; static { TransactionSynchronizationManager.initSynchronization(); @@ -28,12 +28,12 @@ public class DrivingQueryInputSourceTests extends TestCase { protected void setUp() throws Exception { super.setUp(); - source = createInputSource(); + source = createItemReader(); } - private InputSource createInputSource() throws Exception{ + private ItemReader createItemReader() throws Exception{ - DrivingQueryInputSource inputSource = new DrivingQueryInputSource(); + DrivingQueryItemReader inputSource = new DrivingQueryItemReader(); inputSource.setKeyGenerator(new MockKeyGenerator()); return inputSource; @@ -79,7 +79,7 @@ public class DrivingQueryInputSourceTests extends TestCase { RestartData restartData = getAsRestartable(source).getRestartData(); // create new input source - source = createInputSource(); + source = createItemReader(); getAsRestartable(source).restoreFrom(restartData); @@ -101,7 +101,7 @@ public class DrivingQueryInputSourceTests extends TestCase { RestartData restartData = getAsRestartable(source).getRestartData(); // create new input source - source = createInputSource(); + source = createItemReader(); Foo foo = (Foo) source.read(); assertEquals(1, foo.getValue()); @@ -117,8 +117,9 @@ public class DrivingQueryInputSourceTests extends TestCase { /** * Empty restart data should be handled gracefully. + * @throws Exception */ - public void testRestoreFromEmptyData() { + public void testRestoreFromEmptyData() throws Exception { RestartData restartData = new GenericRestartData(new Properties()); getAsRestartable(source).restoreFrom(restartData); @@ -129,8 +130,9 @@ public class DrivingQueryInputSourceTests extends TestCase { /** * Rollback scenario. + * @throws Exception */ - public void testRollback() { + public void testRollback() throws Exception { Foo foo1 = (Foo) source.read(); commit(); @@ -159,11 +161,11 @@ public class DrivingQueryInputSourceTests extends TestCase { TransactionSynchronization.STATUS_ROLLED_BACK); } - private InitializingBean getAsInitializingBean(InputSource source) { + private InitializingBean getAsInitializingBean(ItemReader source) { return (InitializingBean) source; } - private Restartable getAsRestartable(InputSource source) { + private Restartable getAsRestartable(ItemReader source) { return (Restartable) source; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/FooInputSource.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/FooInputSource.java index 858384abf..8fd1c4d07 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/FooInputSource.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/FooInputSource.java @@ -1,18 +1,19 @@ package org.springframework.batch.io.driving; -import org.springframework.batch.io.InputSource; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.batch.restart.RestartData; import org.springframework.batch.restart.Restartable; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.jdbc.core.JdbcTemplate; -class FooInputSource implements InputSource, Restartable, DisposableBean, InitializingBean{ +class FooItemReader extends AbstractItemReader implements ItemReader, Restartable, DisposableBean, InitializingBean{ - DrivingQueryInputSource inputSource; + DrivingQueryItemReader inputSource; FooDao fooDao = new SingleKeyFooDao(); - public FooInputSource(DrivingQueryInputSource inputSource, JdbcTemplate jdbcTemplate) { + public FooItemReader(DrivingQueryItemReader inputSource, JdbcTemplate jdbcTemplate) { this.inputSource = inputSource; fooDao.setJdbcTemplate(jdbcTemplate); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/IbatisInputSourceIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/IbatisItemReaderIntegrationTests.java similarity index 68% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/IbatisInputSourceIntegrationTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/IbatisItemReaderIntegrationTests.java index 2a7e7ef98..f016ee1db 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/IbatisInputSourceIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/IbatisItemReaderIntegrationTests.java @@ -1,21 +1,21 @@ package org.springframework.batch.io.driving; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.driving.support.IbatisKeyGenerator; -import org.springframework.batch.io.support.AbstractDataSourceInputSourceIntegrationTests; +import org.springframework.batch.io.support.AbstractDataSourceItemReaderIntegrationTests; +import org.springframework.batch.item.ItemReader; import org.springframework.core.io.ClassPathResource; import org.springframework.orm.ibatis.SqlMapClientFactoryBean; import com.ibatis.sqlmap.client.SqlMapClient; /** - * Tests for {@link IbatisDrivingQueryInputSource} + * Tests for {@link IbatisDrivingQueryItemReader} * * @author Robert Kasanicky */ -public class IbatisInputSourceIntegrationTests extends AbstractDataSourceInputSourceIntegrationTests { +public class IbatisItemReaderIntegrationTests extends AbstractDataSourceItemReaderIntegrationTests { - protected InputSource createInputSource() throws Exception { + protected ItemReader createItemReader() throws Exception { SqlMapClientFactoryBean factory = new SqlMapClientFactoryBean(); factory.setConfigLocation(new ClassPathResource("ibatis-config.xml", getClass())); @@ -23,7 +23,7 @@ public class IbatisInputSourceIntegrationTests extends AbstractDataSourceInputSo factory.afterPropertiesSet(); SqlMapClient sqlMapClient = (SqlMapClient) factory.getObject(); - IbatisDrivingQueryInputSource inputSource = new IbatisDrivingQueryInputSource(); + IbatisDrivingQueryItemReader inputSource = new IbatisDrivingQueryItemReader(); IbatisKeyGenerator keyGenerator = new IbatisKeyGenerator(); keyGenerator.setDrivingQueryId("getAllFooIds"); inputSource.setDetailsQueryId("getFooById"); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/MultipleColumnJdbcDrivingQueryInputSourceIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/MultipleColumnJdbcDrivingQueryItemReaderIntegrationTests.java similarity index 77% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/MultipleColumnJdbcDrivingQueryInputSourceIntegrationTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/MultipleColumnJdbcDrivingQueryItemReaderIntegrationTests.java index 1f16b3fb4..a15d398e3 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/MultipleColumnJdbcDrivingQueryInputSourceIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/MultipleColumnJdbcDrivingQueryItemReaderIntegrationTests.java @@ -15,29 +15,29 @@ */ package org.springframework.batch.io.driving; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.driving.support.MultipleColumnJdbcKeyGenerator; -import org.springframework.batch.io.sql.AbstractJdbcInputSourceIntegrationTests; +import org.springframework.batch.io.sql.AbstractJdbcItemReaderIntegrationTests; +import org.springframework.batch.item.ItemReader; /** * @author Lucas Ward * */ -public class MultipleColumnJdbcDrivingQueryInputSourceIntegrationTests extends - AbstractJdbcInputSourceIntegrationTests { +public class MultipleColumnJdbcDrivingQueryItemReaderIntegrationTests extends + AbstractJdbcItemReaderIntegrationTests { - protected InputSource createInputSource() throws Exception { + protected ItemReader createItemReader() throws Exception { MultipleColumnJdbcKeyGenerator keyGenerator = new MultipleColumnJdbcKeyGenerator(getJdbcTemplate(), "SELECT ID, VALUE from T_FOOS order by ID, VALUE"); keyGenerator.setRestartQuery("SELECT ID, VALUE from T_FOOS where ID > ? and VALUE > ? order by ID"); - DrivingQueryInputSource inputSource = new DrivingQueryInputSource(); + DrivingQueryItemReader inputSource = new DrivingQueryItemReader(); inputSource.setKeyGenerator(keyGenerator); - FooInputSource fooInputSource = new FooInputSource(inputSource, getJdbcTemplate()); - fooInputSource.setFooDao(new CompositeKeyFooDao(getJdbcTemplate())); - return fooInputSource; + FooItemReader fooItemReader = new FooItemReader(inputSource, getJdbcTemplate()); + fooItemReader.setFooDao(new CompositeKeyFooDao(getJdbcTemplate())); + return fooItemReader; } // private static class FooRestartDataConverter implements RestartDataRowMapper{ diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/SingleColumnJdbcDrivingQueryInputSourceIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/SingleColumnJdbcDrivingQueryInputSourceIntegrationTests.java deleted file mode 100644 index 65044c36f..000000000 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/SingleColumnJdbcDrivingQueryInputSourceIntegrationTests.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.springframework.batch.io.driving; - -import org.springframework.batch.io.InputSource; -import org.springframework.batch.io.driving.support.SingleColumnJdbcKeyGenerator; -import org.springframework.batch.io.sql.AbstractJdbcInputSourceIntegrationTests; - -public class SingleColumnJdbcDrivingQueryInputSourceIntegrationTests extends AbstractJdbcInputSourceIntegrationTests { - - protected InputSource source; - - - /** - * @return input source with all necessary dependencies set - */ - protected InputSource createInputSource() throws Exception { - - SingleColumnJdbcKeyGenerator keyStrategy = new SingleColumnJdbcKeyGenerator(getJdbcTemplate(), - "SELECT ID from T_FOOS order by ID"); - keyStrategy.setRestartSql("SELECT ID from T_FOOS where ID > ? order by ID"); - DrivingQueryInputSource inputSource = new DrivingQueryInputSource(); - inputSource.setKeyGenerator(keyStrategy); - - return new FooInputSource(inputSource, getJdbcTemplate()); - - } -} diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/SingleColumnJdbcDrivingQueryItemReaderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/SingleColumnJdbcDrivingQueryItemReaderIntegrationTests.java new file mode 100644 index 000000000..5f0d9d3a4 --- /dev/null +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/SingleColumnJdbcDrivingQueryItemReaderIntegrationTests.java @@ -0,0 +1,26 @@ +package org.springframework.batch.io.driving; + +import org.springframework.batch.io.driving.support.SingleColumnJdbcKeyGenerator; +import org.springframework.batch.io.sql.AbstractJdbcItemReaderIntegrationTests; +import org.springframework.batch.item.ItemReader; + +public class SingleColumnJdbcDrivingQueryItemReaderIntegrationTests extends AbstractJdbcItemReaderIntegrationTests { + + protected ItemReader source; + + + /** + * @return input source with all necessary dependencies set + */ + protected ItemReader createItemReader() throws Exception { + + SingleColumnJdbcKeyGenerator keyStrategy = new SingleColumnJdbcKeyGenerator(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(); + inputSource.setKeyGenerator(keyStrategy); + + return new FooItemReader(inputSource, getJdbcTemplate()); + + } +} diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/DefaultFlatFileInputSourceTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/DefaultFlatFileItemReaderTests.java similarity index 96% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/DefaultFlatFileInputSourceTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/DefaultFlatFileItemReaderTests.java index d74acd31c..43bdd7a0e 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/DefaultFlatFileInputSourceTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/DefaultFlatFileItemReaderTests.java @@ -22,7 +22,7 @@ import junit.framework.TestCase; import org.springframework.batch.io.file.FieldSet; import org.springframework.batch.io.file.FieldSetMapper; -import org.springframework.batch.io.file.support.DefaultFlatFileInputSource; +import org.springframework.batch.io.file.support.DefaultFlatFileItemReader; import org.springframework.batch.io.file.support.transform.LineTokenizer; import org.springframework.batch.restart.RestartData; import org.springframework.core.io.ByteArrayResource; @@ -30,17 +30,17 @@ import org.springframework.core.io.Resource; import org.springframework.transaction.support.TransactionSynchronization; /** - * Tests for {@link DefaultFlatFileInputSource} + * Tests for {@link DefaultFlatFileItemReader} * * @author robert.kasanicky * * TODO only regular reading is tested currently, add exception cases, restart, * skip, validation... */ -public class DefaultFlatFileInputSourceTests extends TestCase { +public class DefaultFlatFileItemReaderTests extends TestCase { // object under test - private DefaultFlatFileInputSource inputSource = new DefaultFlatFileInputSource(); + private DefaultFlatFileItemReader inputSource = new DefaultFlatFileItemReader(); // common value used for writing to a file private String TEST_STRING = "FlatFileInputTemplate-TestData"; @@ -156,7 +156,7 @@ public class DefaultFlatFileInputSourceTests extends TestCase { } public void testRestartWithNullReader() throws Exception { - inputSource = new DefaultFlatFileInputSource(); + inputSource = new DefaultFlatFileItemReader(); inputSource.setResource(getInputResource(TEST_STRING)); inputSource.setFieldSetMapper(fieldSetMapper); // do not open the template... diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/SimpleFlatFileInputSourceTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/SimpleFlatFileItemReaderTests.java similarity index 88% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/SimpleFlatFileInputSourceTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/SimpleFlatFileItemReaderTests.java index cac08570d..896e9e10b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/SimpleFlatFileInputSourceTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/SimpleFlatFileItemReaderTests.java @@ -34,15 +34,15 @@ import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; /** - * Tests for {@link SimpleFlatFileInputSourceTests} + * Tests for {@link SimpleFlatFileItemReaderTests} * * @author Dave Syer * */ -public class SimpleFlatFileInputSourceTests extends TestCase { +public class SimpleFlatFileItemReaderTests extends TestCase { // object under test - private SimpleFlatFileInputSource inputSource = new SimpleFlatFileInputSource(); + private SimpleFlatFileItemReader inputSource = new SimpleFlatFileItemReader(); // common value used for writing to a file private String TEST_STRING = "FlatFileInputTemplate-TestData"; @@ -135,14 +135,14 @@ public class SimpleFlatFileInputSourceTests extends TestCase { } public void testReadBeforeOpen() throws Exception { - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); inputSource.setResource(getInputResource(TEST_STRING)); inputSource.setFieldSetMapper(fieldSetMapper); assertEquals("[FlatFileInputTemplate-TestData]", inputSource.read().toString()); } public void testCloseBeforeOpen() throws Exception { - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); inputSource.setResource(getInputResource(TEST_STRING)); inputSource.setFieldSetMapper(fieldSetMapper); inputSource.close(); @@ -152,7 +152,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { public void testCloseOnDestroy() throws Exception { final List list = new ArrayList(); - inputSource = new SimpleFlatFileInputSource() { + inputSource = new SimpleFlatFileItemReader() { public void close() { list.add("close"); } @@ -162,7 +162,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { } public void testInitializationWithNullResource() throws Exception { - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); try { inputSource.afterPropertiesSet(); fail("Expected IllegalArgumentException"); @@ -178,7 +178,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { } public void testSetValidEncoding() throws Exception { - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); inputSource.setEncoding("UTF-8"); inputSource.setResource(getInputResource(TEST_STRING)); inputSource.setFieldSetMapper(fieldSetMapper); @@ -186,7 +186,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { } public void testSetNullEncoding() throws Exception { - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); inputSource.setEncoding(null); inputSource.setResource(getInputResource(TEST_STRING)); try { @@ -199,7 +199,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { } public void testSetInvalidEncoding() throws Exception { - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); inputSource.setEncoding("foo"); inputSource.setResource(getInputResource(TEST_STRING)); try { @@ -229,7 +229,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { } public void testInvalidFile() throws IOException { - DefaultFlatFileInputSource ffit = new DefaultFlatFileInputSource(); + DefaultFlatFileItemReader ffit = new DefaultFlatFileItemReader(); FileSystemResource resource = new FileSystemResource("FooDummy.txt"); assertTrue(!resource.exists()); @@ -251,7 +251,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { public void testColumnNamesInHeader() throws Exception { final String INPUT = "name1|name2\nvalue1|value2\nvalue3|value4"; - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); inputSource.setResource(getInputResource(INPUT)); inputSource.setTokenizer(new DelimitedLineTokenizer('|')); inputSource.setFieldSetMapper(fieldSetMapper); @@ -274,7 +274,7 @@ public class SimpleFlatFileInputSourceTests extends TestCase { public void testLinesToSkip() throws Exception { final String INPUT = "foo bar spam\none two\nthree four"; - inputSource = new SimpleFlatFileInputSource(); + inputSource = new SimpleFlatFileItemReader(); inputSource.setResource(getInputResource(INPUT)); inputSource.setTokenizer(new DelimitedLineTokenizer(' ')); inputSource.setFieldSetMapper(fieldSetMapper); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/StaxEventReaderInputSourceTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/StaxEventReaderItemReaderTests.java similarity index 88% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/StaxEventReaderInputSourceTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/StaxEventReaderItemReaderTests.java index 002aaf715..2e80a74fa 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/StaxEventReaderInputSourceTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/support/StaxEventReaderItemReaderTests.java @@ -15,7 +15,7 @@ import javax.xml.stream.events.XMLEvent; import junit.framework.TestCase; -import org.springframework.batch.io.file.support.StaxEventReaderInputSource; +import org.springframework.batch.io.file.support.StaxEventReaderItemReader; import org.springframework.batch.io.file.support.stax.FragmentDeserializer; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; @@ -26,14 +26,14 @@ import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.transaction.support.TransactionSynchronization; /** - * Tests for {@link StaxEventReaderInputSource}. + * Tests for {@link StaxEventReaderItemReader}. * * @author Robert Kasanicky */ -public class StaxEventReaderInputSourceTests extends TestCase { +public class StaxEventReaderItemReaderTests extends TestCase { // object under test - private StaxEventReaderInputSource source; + private StaxEventReaderItemReader source; // test xml input private String xml = " testString "; @@ -83,7 +83,7 @@ public class StaxEventReaderInputSourceTests extends TestCase { /** * Regular usage scenario. - * InputSource should pass XML fragments to deserializer wrapped with + * ItemReader should pass XML fragments to deserializer wrapped with * StartDocument and EndDocument events. */ public void testFragmentWrapping() throws Exception { @@ -120,7 +120,7 @@ public class StaxEventReaderInputSourceTests extends TestCase { source.read(); RestartData restartData = source.getRestartData(); assertEquals("1", restartData.getProperties(). - getProperty("StaxEventReaderInputSource.recordcount")); + getProperty("StaxEventReaderItemReader.recordcount")); List expectedAfterRestart = (List) source.read(); source = createNewInputSouce(); @@ -136,7 +136,7 @@ public class StaxEventReaderInputSourceTests extends TestCase { public void testInvalidRestore() { Properties props = new Properties() {{ final String MORE_RECORDS_THAN_INPUT_CONTAINS = "100000"; - setProperty("StaxEventReaderInputSource.recordcount", MORE_RECORDS_THAN_INPUT_CONTAINS); + setProperty("StaxEventReaderItemReader.recordcount", MORE_RECORDS_THAN_INPUT_CONTAINS); }}; try { source.restoreFrom(new GenericRestartData(props)); @@ -219,7 +219,7 @@ public class StaxEventReaderInputSourceTests extends TestCase { public void testClose() throws Exception{ - MockStaxEventReaderInputSource newSource = new MockStaxEventReaderInputSource(); + MockStaxEventReaderItemReader newSource = new MockStaxEventReaderItemReader(); Resource resource = new ByteArrayResource(xml.getBytes()); newSource.setResource(resource); @@ -258,13 +258,13 @@ public class StaxEventReaderInputSourceTests extends TestCase { private int extractRecordCountFrom(Properties statistics) { return Integer.valueOf( - source.getStatistics().getProperty(StaxEventReaderInputSource.READ_COUNT_STATISTICS_NAME)).intValue(); + source.getStatistics().getProperty(StaxEventReaderItemReader.READ_COUNT_STATISTICS_NAME)).intValue(); } - private StaxEventReaderInputSource createNewInputSouce() { + private StaxEventReaderItemReader createNewInputSouce() { Resource resource = new ByteArrayResource(xml.getBytes()); - StaxEventReaderInputSource newSource = new StaxEventReaderInputSource(); + StaxEventReaderItemReader newSource = new StaxEventReaderItemReader(); newSource.setResource(resource); newSource.setFragmentRootElementName(FRAGMENT_ROOT_ELEMENT); @@ -282,7 +282,7 @@ public class StaxEventReaderInputSourceTests extends TestCase { /** * A simple mapFragment implementation checking the - * StaxEventReaderInputSource basic read functionality. + * StaxEventReaderItemReader basic read functionality. * @param eventReader * @return list of the events from fragment body */ @@ -349,7 +349,7 @@ public class StaxEventReaderInputSourceTests extends TestCase { } - private static class MockStaxEventReaderInputSource extends StaxEventReaderInputSource { + private static class MockStaxEventReaderItemReader extends StaxEventReaderItemReader { private boolean openCalled = false; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcInputSourceIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcItemReaderIntegrationTests.java similarity index 80% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcInputSourceIntegrationTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcItemReaderIntegrationTests.java index f0c2d4fe9..01e65078f 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcInputSourceIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcItemReaderIntegrationTests.java @@ -2,8 +2,8 @@ package org.springframework.batch.io.sql; import java.util.Properties; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.sample.domain.Foo; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; @@ -17,20 +17,20 @@ import org.springframework.transaction.support.TransactionSynchronizationUtils; import org.springframework.util.Assert; /** - * Common scenarios for testing {@link InputSource} implementations which read data from database. + * Common scenarios for testing {@link ItemReader} implementations which read data from database. * * @author Lucas Ward * @author Robert Kasanicky */ -public abstract class AbstractJdbcInputSourceIntegrationTests extends AbstractTransactionalDataSourceSpringContextTests { +public abstract class AbstractJdbcItemReaderIntegrationTests extends AbstractTransactionalDataSourceSpringContextTests { - protected InputSource source; + protected ItemReader source; /** * @return input source with all necessary dependencies set */ - protected abstract InputSource createInputSource() throws Exception; + protected abstract ItemReader createItemReader() throws Exception; protected String[] getConfigLocations(){ return new String[] { "org/springframework/batch/io/sql/data-source-context.xml"}; @@ -39,7 +39,7 @@ public abstract class AbstractJdbcInputSourceIntegrationTests extends AbstractTr protected void onSetUp()throws Exception{ super.onSetUp(); BatchTransactionSynchronizationManager.clearSynchronizations(); - source = createInputSource(); + source = createItemReader(); getAsInitializingBean(source).afterPropertiesSet(); } @@ -88,7 +88,7 @@ public abstract class AbstractJdbcInputSourceIntegrationTests extends AbstractTr RestartData restartData = getAsRestartable(source).getRestartData(); // create new input source - source = createInputSource(); + source = createItemReader(); getAsRestartable(source).restoreFrom(restartData); @@ -110,7 +110,7 @@ public abstract class AbstractJdbcInputSourceIntegrationTests extends AbstractTr RestartData restartData = getAsRestartable(source).getRestartData(); // create new input source - source = createInputSource(); + source = createItemReader(); Foo foo = (Foo) source.read(); assertEquals(1, foo.getValue()); @@ -126,8 +126,9 @@ public abstract class AbstractJdbcInputSourceIntegrationTests extends AbstractTr /** * Empty restart data should be handled gracefully. + * @throws Exception */ - public void testRestoreFromEmptyData() { + public void testRestoreFromEmptyData() throws Exception { RestartData restartData = new GenericRestartData(new Properties()); getAsRestartable(source).restoreFrom(restartData); @@ -138,8 +139,9 @@ public abstract class AbstractJdbcInputSourceIntegrationTests extends AbstractTr /** * Rollback scenario. + * @throws Exception */ - public void testRollback() { + public void testRollback() throws Exception { Foo foo1 = (Foo) source.read(); commit(); @@ -168,15 +170,15 @@ public abstract class AbstractJdbcInputSourceIntegrationTests extends AbstractTr TransactionSynchronization.STATUS_ROLLED_BACK); } - private Restartable getAsRestartable(InputSource source) { + private Restartable getAsRestartable(ItemReader source) { return (Restartable) source; } - private InitializingBean getAsInitializingBean(InputSource source) { + private InitializingBean getAsInitializingBean(ItemReader source) { return (InitializingBean) source; } - private DisposableBean getAsDisposableBean(InputSource source) { + private DisposableBean getAsDisposableBean(ItemReader source) { return (DisposableBean) source; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceInputSourceIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceItemReaderIntegrationTests.java similarity index 82% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceInputSourceIntegrationTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceItemReaderIntegrationTests.java index dae774387..b18f83e8a 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceInputSourceIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceItemReaderIntegrationTests.java @@ -2,9 +2,9 @@ package org.springframework.batch.io.support; import java.util.Properties; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.Skippable; import org.springframework.batch.io.sample.domain.Foo; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; @@ -18,20 +18,20 @@ import org.springframework.transaction.support.TransactionSynchronizationUtils; import org.springframework.util.Assert; /** - * Common scenarios for testing {@link InputSource} implementations which read data from database. + * Common scenarios for testing {@link ItemReader} implementations which read data from database. * * @author Lucas Ward * @author Robert Kasanicky */ -public abstract class AbstractDataSourceInputSourceIntegrationTests extends AbstractTransactionalDataSourceSpringContextTests { +public abstract class AbstractDataSourceItemReaderIntegrationTests extends AbstractTransactionalDataSourceSpringContextTests { - protected InputSource source; + protected ItemReader source; /** * @return configured input source ready for use */ - protected abstract InputSource createInputSource() throws Exception; + protected abstract ItemReader createItemReader() throws Exception; protected String[] getConfigLocations(){ return new String[] { "org/springframework/batch/io/sql/data-source-context.xml"}; @@ -43,7 +43,7 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst protected void onSetUpInTransaction() throws Exception { super.onSetUpInTransaction(); BatchTransactionSynchronizationManager.clearSynchronizations(); - source = createInputSource(); + source = createItemReader(); } /* (non-Javadoc) @@ -95,7 +95,7 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst RestartData restartData = getAsRestartable(source).getRestartData(); // create new input source - source = createInputSource(); + source = createItemReader(); getAsRestartable(source).restoreFrom(restartData); @@ -117,7 +117,7 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst RestartData restartData = getAsRestartable(source).getRestartData(); // create new input source - source = createInputSource(); + source = createItemReader(); Foo foo = (Foo) source.read(); assertEquals(1, foo.getValue()); @@ -133,8 +133,9 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst /** * Empty restart data should be handled gracefully. + * @throws Exception */ - public void testRestoreFromEmptyData() { + public void testRestoreFromEmptyData() throws Exception { RestartData restartData = new GenericRestartData(new Properties()); getAsRestartable(source).restoreFrom(restartData); @@ -145,8 +146,9 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst /** * Rollback scenario - input source rollbacks to last commit point. + * @throws Exception */ - public void testRollback() { + public void testRollback() throws Exception { Foo foo1 = (Foo) source.read(); commit(); @@ -164,8 +166,9 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst /** * Rollback scenario with skip - input source rollbacks to last commit point. + * @throws Exception */ - public void testRollbackAndSkip() { + public void testRollbackAndSkip() throws Exception { if (!(source instanceof Skippable)) { return; @@ -217,7 +220,7 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst RestartData restartData = getAsRestartable(source).getRestartData(); // create new input source - source = createInputSource(); + source = createItemReader(); getAsRestartable(source).restoreFrom(restartData); @@ -238,19 +241,19 @@ public abstract class AbstractDataSourceInputSourceIntegrationTests extends Abst TransactionSynchronization.STATUS_ROLLED_BACK); } - private Skippable getAsSkippable(InputSource source) { + private Skippable getAsSkippable(ItemReader source) { return (Skippable) source; } - private Restartable getAsRestartable(InputSource source) { + private Restartable getAsRestartable(ItemReader source) { return (Restartable) source; } - private InitializingBean getAsInitializingBean(InputSource source) { + private InitializingBean getAsInitializingBean(ItemReader source) { return (InitializingBean) source; } - private DisposableBean getAsDisposableBean(InputSource source) { + private DisposableBean getAsDisposableBean(ItemReader source) { return (DisposableBean) source; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractTransactionalIoSourceTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractTransactionalIoSourceTests.java index cf8c62767..134558582 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractTransactionalIoSourceTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractTransactionalIoSourceTests.java @@ -43,7 +43,7 @@ public class AbstractTransactionalIoSourceTests extends TestCase { TransactionSynchronizationManager.initSynchronization(); } - //AbstractInputSource should synchronize on first call to read. + //AbstractItemReader should synchronize on first call to read. public void testSynchronizationRegistration(){ source.registerSynchronization(); @@ -97,7 +97,7 @@ public class AbstractTransactionalIoSourceTests extends TestCase { assertFalse(source.rollbackCalled); } - private static class MockIoSource extends AbstractTransactionalIoSource{ + private static class MockIoSource extends AbstractTransactionalIoSource { private boolean commitCalled = false; private boolean rollbackCalled = false; @@ -110,7 +110,11 @@ public class AbstractTransactionalIoSourceTests extends TestCase { protected void transactionRolledBack() { Assert.isTrue(!rollbackCalled, "Rollback aleady called"); rollbackCalled = true; - } + } + + public Object read() throws Exception { + return null; + } } private void commit() { diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/ItemProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/ItemProviderTests.java index 5ad83f0d1..24f55b8b1 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/ItemProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/ItemProviderTests.java @@ -18,18 +18,18 @@ package org.springframework.batch.item; import junit.framework.TestCase; -import org.springframework.batch.item.provider.AbstractItemProvider; +import org.springframework.batch.item.provider.AbstractItemReader; public class ItemProviderTests extends TestCase { - ItemProvider provider = new AbstractItemProvider() { - public Object next() { + ItemReader provider = new AbstractItemReader() { + public Object read() { return "foo"; } }; public void testNext() throws Exception { - assertEquals("foo", provider.next()); + assertEquals("foo", provider.read()); } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/processor/DelegatingItemProcessorIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/processor/DelegatingItemProcessorIntegrationTests.java index 3ad6d30f1..c2f5eb4b3 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/processor/DelegatingItemProcessorIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/processor/DelegatingItemProcessorIntegrationTests.java @@ -7,13 +7,13 @@ import org.springframework.batch.io.sample.domain.FooService; import org.springframework.test.AbstractDependencyInjectionSpringContextTests; /** - * Tests for {@link DelegatingItemProcessor}. + * Tests for {@link ItemProcessorAdapter}. * * @author Robert Kasanicky */ public class DelegatingItemProcessorIntegrationTests extends AbstractDependencyInjectionSpringContextTests { - private DelegatingItemProcessor processor; + private ItemProcessorAdapter processor; private FooService fooService; @@ -44,7 +44,7 @@ public class DelegatingItemProcessorIntegrationTests extends AbstractDependencyI } //setter for auto-injection - public void setProcessor(DelegatingItemProcessor processor) { + public void setProcessor(ItemProcessorAdapter processor) { this.processor = processor; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/AggregateItemProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/AggregateItemReaderTests.java similarity index 66% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/AggregateItemProviderTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/AggregateItemReaderTests.java index 462f14c1d..46d89814b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/AggregateItemProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/AggregateItemReaderTests.java @@ -6,27 +6,27 @@ import java.util.Iterator; import junit.framework.TestCase; import org.easymock.MockControl; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.file.FieldSetMapper; +import org.springframework.batch.item.ItemReader; -public class AggregateItemProviderTests extends TestCase { +public class AggregateItemReaderTests extends TestCase { private MockControl inputControl; - private InputSource input; - private AggregateItemProvider provider; + private ItemReader input; + private AggregateItemReader provider; public void setUp() { //create mock for input - inputControl = MockControl.createControl(InputSource.class); - input = (InputSource) inputControl.getMock(); + inputControl = MockControl.createControl(ItemReader.class); + input = (ItemReader) inputControl.getMock(); //create provider - provider = new AggregateItemProvider(); - provider.setInputSource(input); + provider = new AggregateItemReader(); + provider.setItemReader(input); } - public void testNext() { + public void testNext() throws Exception { //set-up mock input input.read(); @@ -40,7 +40,7 @@ public class AggregateItemProviderTests extends TestCase { inputControl.replay(); //read object - Object result = provider.next(); + Object result = provider.read(); //it should be collection of 3 strings "line" assertTrue(result instanceof Collection); @@ -52,7 +52,7 @@ public class AggregateItemProviderTests extends TestCase { } //read object again - it should return null - assertNull(provider.next()); + assertNull(provider.read()); //verify method calls inputControl.verify(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemProviderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemReaderIntegrationTests.java similarity index 77% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemProviderIntegrationTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemReaderIntegrationTests.java index f7bf58c01..3881a8ba9 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemProviderIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemReaderIntegrationTests.java @@ -7,13 +7,13 @@ import org.springframework.batch.io.sample.domain.FooService; import org.springframework.test.AbstractDependencyInjectionSpringContextTests; /** - * Tests for {@link DelegatingItemProvider}. + * Tests for {@link ItemReaderAdapter}. * * @author Robert Kasanicky */ -public class DelegatingItemProviderIntegrationTests extends AbstractDependencyInjectionSpringContextTests { +public class DelegatingItemReaderIntegrationTests extends AbstractDependencyInjectionSpringContextTests { - private DelegatingItemProvider provider; + private ItemReaderAdapter provider; private FooService fooService; @@ -29,7 +29,7 @@ public class DelegatingItemProviderIntegrationTests extends AbstractDependencyIn public void testNext() throws Exception { List returnedItems = new ArrayList(); Object item; - while ((item = provider.next()) != null) { + while ((item = provider.read()) != null) { returnedItems.add(item); } @@ -57,7 +57,7 @@ public class DelegatingItemProviderIntegrationTests extends AbstractDependencyIn assertFalse(provider.recover(null, null)); } - public void setProvider(DelegatingItemProvider provider) { + public void setProvider(ItemReaderAdapter provider) { this.provider = provider; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/InputSourceItemProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemReaderTests.java similarity index 73% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/InputSourceItemProviderTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemReaderTests.java index c5b084198..27493b345 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/InputSourceItemProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/DelegatingItemReaderTests.java @@ -20,8 +20,8 @@ import java.util.Properties; import junit.framework.TestCase; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.Skippable; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.restart.GenericRestartData; import org.springframework.batch.restart.RestartData; import org.springframework.batch.restart.Restartable; @@ -29,21 +29,21 @@ import org.springframework.batch.statistics.StatisticsProvider; import org.springframework.batch.support.PropertiesConverter; /** - * Unit test for {@link InputSourceItemProvider} + * Unit test for {@link DelegatingItemReader} * * @author Robert Kasanicky */ -public class InputSourceItemProviderTests extends TestCase { +public class DelegatingItemReaderTests extends TestCase { // object under test - private InputSourceItemProvider itemProvider = new InputSourceItemProvider(); + private DelegatingItemReader itemProvider = new DelegatingItemReader(); - private InputSource source; + private ItemReader source; // create input template and inject it to data provider protected void setUp() throws Exception { - source = new MockInputSource(this); - itemProvider.setInputSource(source); + source = new MockItemReader(this); + itemProvider.setItemReader(source); } public void testAfterPropertiesSet()throws Exception{ @@ -51,9 +51,9 @@ public class InputSourceItemProviderTests extends TestCase { itemProvider.afterPropertiesSet(); } - public void testNullInputSource(){ + public void testNullItemReader(){ try{ - itemProvider.setInputSource(null); + itemProvider.setItemReader(null); itemProvider.afterPropertiesSet(); fail(); }catch(Exception ex){ @@ -63,9 +63,10 @@ public class InputSourceItemProviderTests extends TestCase { /** * Uses input template to provide the domain object. + * @throws Exception */ - public void testNext() { - Object result = itemProvider.next(); + public void testNext() throws Exception { + Object result = itemProvider.read(); assertSame("domain object is provided by the input template", this, result); } @@ -87,18 +88,19 @@ public class InputSourceItemProviderTests extends TestCase { /** * Forwared restart data to input template + * @throws Exception */ - public void testRestoreFrom() { + public void testRestoreFrom() throws Exception { itemProvider.restoreFrom(new GenericRestartData(PropertiesConverter.stringToProperties("value=bar"))); - assertEquals("bar", itemProvider.next()); + assertEquals("bar", itemProvider.read()); } - public void testSkip() { + public void testSkip() throws Exception { itemProvider.skip(); - assertEquals("after skip", itemProvider.next()); + assertEquals("after skip", itemProvider.read()); } - private static class MockInputSource implements InputSource, StatisticsProvider, Restartable, Skippable { + private static class MockItemReader extends AbstractItemReader implements ItemReader, StatisticsProvider, Restartable, Skippable { private Object value; @@ -114,7 +116,7 @@ public class InputSourceItemProviderTests extends TestCase { value = data.getProperties().getProperty("value"); } - public MockInputSource(Object value) { + public MockItemReader(Object value) { this.value = value; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/JmsItemProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/JmsItemReaderTests.java similarity index 95% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/JmsItemProviderTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/JmsItemReaderTests.java index 28c50e2ce..f4a937097 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/JmsItemProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/JmsItemReaderTests.java @@ -27,9 +27,9 @@ import junit.framework.TestCase; import org.easymock.MockControl; import org.springframework.jms.core.JmsOperations; -public class JmsItemProviderTests extends TestCase { +public class JmsItemReaderTests extends TestCase { - JmsItemProvider itemProvider = new JmsItemProvider(); + JmsItemReader itemProvider = new JmsItemReader(); public void testNoItemTypeSunnyDay() { MockControl templateControl = MockControl.createControl(JmsOperations.class); @@ -38,7 +38,7 @@ public class JmsItemProviderTests extends TestCase { templateControl.replay(); itemProvider.setJmsTemplate(jmsTemplate); - assertEquals("foo", itemProvider.next()); + assertEquals("foo", itemProvider.read()); templateControl.verify(); } @@ -50,7 +50,7 @@ public class JmsItemProviderTests extends TestCase { itemProvider.setJmsTemplate(jmsTemplate); itemProvider.setItemType(String.class); - assertEquals("foo", itemProvider.next()); + assertEquals("foo", itemProvider.read()); templateControl.verify(); } @@ -64,7 +64,7 @@ public class JmsItemProviderTests extends TestCase { itemProvider.setJmsTemplate(jmsTemplate); itemProvider.setItemType(Date.class); - assertEquals(date, itemProvider.next()); + assertEquals(date, itemProvider.read()); templateControl.verify(); } @@ -77,7 +77,7 @@ public class JmsItemProviderTests extends TestCase { itemProvider.setJmsTemplate(jmsTemplate); itemProvider.setItemType(Date.class); try { - itemProvider.next(); + itemProvider.read(); fail("Expected IllegalStateException"); } catch (IllegalStateException e) { @@ -97,7 +97,7 @@ public class JmsItemProviderTests extends TestCase { itemProvider.setJmsTemplate(jmsTemplate); itemProvider.setItemType(Message.class); - assertEquals(message, itemProvider.next()); + assertEquals(message, itemProvider.read()); templateControl.verify(); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ListItemProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ListItemReaderTests.java similarity index 70% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ListItemProviderTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ListItemReaderTests.java index 871aec2e6..4ec61ddc7 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ListItemProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ListItemReaderTests.java @@ -22,23 +22,23 @@ import java.util.List; import junit.framework.TestCase; -public class ListItemProviderTests extends TestCase { +public class ListItemReaderTests extends TestCase { - ListItemProvider provider = new ListItemProvider(Arrays.asList(new String[] { "a", "b", "c" })); + ListItemReader provider = new ListItemReader(Arrays.asList(new String[] { "a", "b", "c" })); public void testNext() throws Exception { - assertEquals("a", provider.next()); - assertEquals("b", provider.next()); - assertEquals("c", provider.next()); - assertEquals(null, provider.next()); + assertEquals("a", provider.read()); + assertEquals("b", provider.read()); + assertEquals("c", provider.read()); + assertEquals(null, provider.read()); } public void testChangeList() throws Exception { List list = new ArrayList(Arrays.asList(new String[] { "a", "b", "c" })); - provider = new ListItemProvider(list); - assertEquals("a", provider.next()); + provider = new ListItemReader(list); + assertEquals("a", provider.read()); list.clear(); assertEquals(0, list.size()); - assertEquals("b", provider.next()); + assertEquals("b", provider.read()); } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/TransactionAwareListItemProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/TransactionAwareListItemReaderTests.java similarity index 85% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/TransactionAwareListItemProviderTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/TransactionAwareListItemReaderTests.java index 4e492dbc7..ff773390f 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/TransactionAwareListItemProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/TransactionAwareListItemReaderTests.java @@ -29,25 +29,25 @@ import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionTemplate; -public class TransactionAwareListItemProviderTests extends TestCase { +public class TransactionAwareListItemReaderTests extends TestCase { // TransactionAwareListItemProvider provider = new // TransactionAwareListItemProvider(Arrays.asList(new String[] { "a", // "b", "c" })); - ListItemProvider provider; + ListItemReader provider; protected void setUp() throws Exception { super.setUp(); TransactionAwareProxyFactory factory = new TransactionAwareProxyFactory(Arrays.asList(new String[] { "a", "b", "c" })); - provider = new ListItemProvider((List) factory.createInstance()); + provider = new ListItemReader((List) factory.createInstance()); } public void testNext() throws Exception { - assertEquals("a", provider.next()); - assertEquals("b", provider.next()); - assertEquals("c", provider.next()); - assertEquals(null, provider.next()); + assertEquals("a", provider.read()); + assertEquals("b", provider.read()); + assertEquals("c", provider.read()); + assertEquals(null, provider.read()); } public void testCommit() throws Exception { @@ -56,7 +56,7 @@ public class TransactionAwareListItemProviderTests extends TestCase { try { new TransactionTemplate(transactionManager).execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { - taken.add(provider.next()); + taken.add(provider.read()); return null; } }); @@ -68,10 +68,10 @@ public class TransactionAwareListItemProviderTests extends TestCase { assertEquals(1, taken.size()); assertEquals("a", taken.get(0)); taken.clear(); - Object next = provider.next(); + Object next = provider.read(); while (next != null) { taken.add(next); - next = provider.next(); + next = provider.read(); } // System.err.println(taken); assertFalse(taken.contains("a")); @@ -82,10 +82,10 @@ public class TransactionAwareListItemProviderTests extends TestCase { final List taken = new ArrayList(); new TransactionTemplate(transactionManager).execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { - Object next = provider.next(); + Object next = provider.read(); while (next != null) { taken.add(next); - next = provider.next(); + next = provider.read(); } return null; } @@ -100,7 +100,7 @@ public class TransactionAwareListItemProviderTests extends TestCase { try { new TransactionTemplate(transactionManager).execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { - taken.add(provider.next()); + taken.add(provider.read()); throw new RuntimeException("Rollback!"); } }); @@ -112,10 +112,10 @@ public class TransactionAwareListItemProviderTests extends TestCase { assertEquals(1, taken.size()); assertEquals("a", taken.get(0)); taken.clear(); - Object next = provider.next(); + Object next = provider.read(); while (next != null) { taken.add(next); - next = provider.next(); + next = provider.read(); } System.err.println(taken); assertTrue(taken.contains("a")); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ValidatingItemProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ValidatingItemReaderTests.java similarity index 69% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ValidatingItemProviderTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ValidatingItemReaderTests.java index a57dbeada..ed968e516 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ValidatingItemProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/provider/ValidatingItemReaderTests.java @@ -18,18 +18,18 @@ package org.springframework.batch.item.provider; import junit.framework.TestCase; import org.easymock.MockControl; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.exception.ValidationException; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.validator.Validator; /** * @author Lucas Ward * */ -public class ValidatingItemProviderTests extends TestCase { +public class ValidatingItemReaderTests extends TestCase { - InputSource inputSource; - ValidatingItemProvider itemProvider; + ItemReader inputSource; + ValidatingItemReader itemProvider; Validator validator; MockControl validatorControl = MockControl.createControl(Validator.class); @@ -39,20 +39,20 @@ public class ValidatingItemProviderTests extends TestCase { protected void setUp() throws Exception { super.setUp(); - inputSource = new MockInputSource(this); + inputSource = new MockItemReader(this); validator = (Validator)validatorControl.getMock(); - itemProvider = new ValidatingItemProvider(); - itemProvider.setInputSource(inputSource); + itemProvider = new ValidatingItemReader(); + itemProvider.setItemReader(inputSource); itemProvider.setValidator(validator); } /* * Super class' afterPropertieSet should be called to - * ensure InputSource is set. + * ensure ItemReader is set. */ - public void testInputSourcePropertiesSet(){ + public void testItemReaderPropertiesSet(){ try{ - itemProvider.setInputSource(null); + itemProvider.setItemReader(null); itemProvider.afterPropertiesSet(); fail(); }catch(Exception ex){ @@ -70,40 +70,40 @@ public class ValidatingItemProviderTests extends TestCase { } } - public void testValidation(){ + public void testValidation() throws Exception{ validator.validate(this); validatorControl.replay(); - assertEquals(itemProvider.next(), this); + assertEquals(itemProvider.read(), this); validatorControl.verify(); } - public void testValidationException(){ + public void testValidationException() throws Exception{ validator.validate(this); validatorControl.setThrowable(new ValidationException("")); validatorControl.replay(); try{ - itemProvider.next(); + itemProvider.read(); fail(); }catch(ValidationException ex){ //expected } } - public void testNullInput(){ + public void testNullInput() throws Exception{ validatorControl.replay(); - itemProvider.setInputSource(new MockInputSource(null)); - assertNull(itemProvider.next()); + itemProvider.setItemReader(new MockItemReader(null)); + assertNull(itemProvider.read()); //assert validator wasn't called. validatorControl.verify(); } - private static class MockInputSource implements InputSource{ + private static class MockItemReader extends AbstractItemReader { Object value; - public MockInputSource(Object value){ + public MockItemReader(Object value){ this.value = value; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/callback/ItemProviderRepeatCallbackTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/callback/ItemReaderRepeatCallbackTests.java similarity index 72% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/callback/ItemProviderRepeatCallbackTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/callback/ItemReaderRepeatCallbackTests.java index 9302fdd09..055376890 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/callback/ItemProviderRepeatCallbackTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/callback/ItemReaderRepeatCallbackTests.java @@ -23,16 +23,16 @@ import java.util.List; import junit.framework.TestCase; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.provider.ListItemProvider; +import org.springframework.batch.item.provider.ListItemReader; -public class ItemProviderRepeatCallbackTests extends TestCase { +public class ItemReaderRepeatCallbackTests extends TestCase { - ItemProviderRepeatCallback callback; + ItemReaderRepeatCallback callback; List list = new ArrayList(); public void testDoWithRepeat() throws Exception { - callback = new ItemProviderRepeatCallback(new ListItemProvider(Arrays.asList(new String[] { "foo", "bar" })), + callback = new ItemReaderRepeatCallback(new ListItemReader(Arrays.asList(new String[] { "foo", "bar" })), new ItemProcessor() { public void process(Object data) { list.add(data); @@ -44,11 +44,11 @@ public class ItemProviderRepeatCallbackTests extends TestCase { } public void testDoWithRepeatNullProcessor() throws Exception { - ListItemProvider provider = new ListItemProvider(Arrays.asList(new String[] { "foo", "bar" })); - callback = new ItemProviderRepeatCallback(provider); + ListItemReader provider = new ListItemReader(Arrays.asList(new String[] { "foo", "bar" })); + callback = new ItemReaderRepeatCallback(provider); callback.doInIteration(null); assertEquals(0, list.size()); - assertEquals("bar", provider.next()); + assertEquals("bar", provider.read()); } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java index cae0434e2..a0ee5eacd 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java @@ -20,9 +20,9 @@ import junit.framework.TestCase; import org.springframework.batch.io.file.FieldSet; import org.springframework.batch.io.file.FieldSetMapper; -import org.springframework.batch.io.file.support.SimpleFlatFileInputSource; +import org.springframework.batch.io.file.support.SimpleFlatFileItemReader; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.provider.InputSourceItemProvider; +import org.springframework.batch.item.provider.DelegatingItemReader; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; @@ -40,26 +40,26 @@ public abstract class AbstractTradeBatchTests extends TestCase { protected TradeProcessor processor = new TradeProcessor(); - protected TradeItemProvider provider; + protected TradeItemReader provider; protected void setUp() throws Exception { super.setUp(); - provider = new TradeItemProvider(resource); + provider = new TradeItemReader(resource); } - protected static class TradeItemProvider extends InputSourceItemProvider { + protected static class TradeItemReader extends DelegatingItemReader { - protected TradeItemProvider(Resource resource) throws Exception { + protected TradeItemReader(Resource resource) throws Exception { super(); - SimpleFlatFileInputSource inputSource = new SimpleFlatFileInputSource(); + SimpleFlatFileItemReader inputSource = new SimpleFlatFileItemReader(); inputSource.setResource(resource); inputSource.setFieldSetMapper(new TradeMapper()); inputSource.afterPropertiesSet(); - setInputSource(inputSource); + setItemReader(inputSource); } - public synchronized Object next() { - return super.next(); + public synchronized Object read() throws Exception { + return super.read(); } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AsynchronousRepeatTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AsynchronousRepeatTests.java index 92af4fdbb..3d136984c 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AsynchronousRepeatTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AsynchronousRepeatTests.java @@ -22,7 +22,7 @@ import java.util.Set; import org.springframework.batch.repeat.RepeatCallback; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.ExitStatus; -import org.springframework.batch.repeat.callback.ItemProviderRepeatCallback; +import org.springframework.batch.repeat.callback.ItemReaderRepeatCallback; import org.springframework.core.task.SimpleAsyncTaskExecutor; public class AsynchronousRepeatTests extends AbstractTradeBatchTests { @@ -41,7 +41,7 @@ public class AsynchronousRepeatTests extends AbstractTradeBatchTests { final String threadName = Thread.currentThread().getName(); final Set threadNames = new HashSet(); - final RepeatCallback callback = new ItemProviderRepeatCallback(provider, processor) { + final RepeatCallback callback = new ItemReaderRepeatCallback(provider, processor) { public ExitStatus doInIteration(RepeatContext context) throws Exception { assertNotSame(threadName, Thread.currentThread().getName()); threadNames.add(Thread.currentThread().getName()); @@ -72,7 +72,7 @@ public class AsynchronousRepeatTests extends AbstractTradeBatchTests { final String threadName = Thread.currentThread().getName(); final Set threadNames = new HashSet(); - final RepeatCallback stepCallback = new ItemProviderRepeatCallback(provider, processor) { + final RepeatCallback stepCallback = new ItemReaderRepeatCallback(provider, processor) { public ExitStatus doInIteration(RepeatContext context) throws Exception { assertNotSame(threadName, Thread.currentThread().getName()); threadNames.add(Thread.currentThread().getName()); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/ChunkedRepeatTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/ChunkedRepeatTests.java index 6e99d0aa2..3219d2bda 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/ChunkedRepeatTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/ChunkedRepeatTests.java @@ -16,12 +16,12 @@ package org.springframework.batch.repeat.support; -import org.springframework.batch.item.ItemProvider; -import org.springframework.batch.item.provider.AbstractItemProvider; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.batch.repeat.RepeatCallback; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.ExitStatus; -import org.springframework.batch.repeat.callback.ItemProviderRepeatCallback; +import org.springframework.batch.repeat.callback.ItemReaderRepeatCallback; import org.springframework.batch.repeat.callback.NestedRepeatCallback; import org.springframework.batch.repeat.policy.SimpleCompletionPolicy; import org.springframework.core.task.SimpleAsyncTaskExecutor; @@ -46,7 +46,7 @@ public class ChunkedRepeatTests extends AbstractTradeBatchTests { public void testChunkedBatchWithTerminationPolicy() throws Exception { RepeatTemplate repeatTemplate = new RepeatTemplate(); - final RepeatCallback callback = new ItemProviderRepeatCallback(provider, processor); + final RepeatCallback callback = new ItemReaderRepeatCallback(provider, processor); final RepeatTemplate chunkTemplate = new RepeatTemplate(); // The policy is resettable so we only have to resolve this dependency @@ -80,7 +80,7 @@ public class ChunkedRepeatTests extends AbstractTradeBatchTests { public void testAsynchronousChunkedBatchWithCompletionPolicy() throws Exception { RepeatTemplate repeatTemplate = new RepeatTemplate(); - final RepeatCallback callback = new ItemProviderRepeatCallback(provider, processor); + final RepeatCallback callback = new ItemReaderRepeatCallback(provider, processor); final TaskExecutorRepeatTemplate chunkTemplate = new TaskExecutorRepeatTemplate(); // The policy is resettable so we only have to resolve this dependency @@ -148,17 +148,17 @@ public class ChunkedRepeatTests extends AbstractTradeBatchTests { while (!chunker.ready()) { - ItemProvider truncated = new AbstractItemProvider() { + ItemReader truncated = new AbstractItemReader() { int count = 0; - public Object next() throws Exception { + public Object read() throws Exception { if (count++ < 2) - return provider.next(); + return provider.read(); return null; } }; chunker.reset(); - template.iterate(new ItemProviderRepeatCallback(truncated, processor) { + template.iterate(new ItemReaderRepeatCallback(truncated, processor) { public ExitStatus doInIteration(RepeatContext context) throws Exception { ExitStatus result = super.doInIteration(context); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/SimpleRepeatTemplateTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/SimpleRepeatTemplateTests.java index 7b8044caf..7633d7a45 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/SimpleRepeatTemplateTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/SimpleRepeatTemplateTests.java @@ -22,7 +22,7 @@ import java.util.List; import org.springframework.batch.repeat.RepeatCallback; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.ExitStatus; -import org.springframework.batch.repeat.callback.ItemProviderRepeatCallback; +import org.springframework.batch.repeat.callback.ItemReaderRepeatCallback; import org.springframework.batch.repeat.callback.NestedRepeatCallback; import org.springframework.batch.repeat.context.RepeatContextSupport; import org.springframework.batch.repeat.exception.handler.ExceptionHandler; @@ -44,7 +44,7 @@ public class SimpleRepeatTemplateTests extends AbstractTradeBatchTests { } public void testExecute() throws Exception { - template.iterate(new ItemProviderRepeatCallback(provider, processor)); + template.iterate(new ItemReaderRepeatCallback(provider, processor)); assertEquals(NUMBER_OF_ITEMS, processor.count); } @@ -57,7 +57,7 @@ public class SimpleRepeatTemplateTests extends AbstractTradeBatchTests { template.setCompletionPolicy(new SimpleCompletionPolicy(2)); - template.iterate(new ItemProviderRepeatCallback(provider, processor)); + template.iterate(new ItemReaderRepeatCallback(provider, processor)); assertEquals(2, processor.count); @@ -197,7 +197,7 @@ public class SimpleRepeatTemplateTests extends AbstractTradeBatchTests { */ public void testEarlyCompletionWithContext() throws Exception { - ExitStatus result = template.iterate(new ItemProviderRepeatCallback(provider, processor) { + ExitStatus result = template.iterate(new ItemReaderRepeatCallback(provider, processor) { public ExitStatus doInIteration(RepeatContext context) throws Exception { ExitStatus result = super.doInIteration(context); @@ -225,7 +225,7 @@ public class SimpleRepeatTemplateTests extends AbstractTradeBatchTests { */ public void testEarlyCompletionWithContextTerminated() throws Exception { - ExitStatus result = template.iterate(new ItemProviderRepeatCallback(provider, processor) { + ExitStatus result = template.iterate(new ItemReaderRepeatCallback(provider, processor) { public ExitStatus doInIteration(RepeatContext context) throws Exception { ExitStatus result = super.doInIteration(context); @@ -321,7 +321,7 @@ public class SimpleRepeatTemplateTests extends AbstractTradeBatchTests { * @throws Exception */ public void testResult() throws Exception { - ExitStatus result = template.iterate(new ItemProviderRepeatCallback(provider, processor)); + ExitStatus result = template.iterate(new ItemReaderRepeatCallback(provider, processor)); assertEquals(NUMBER_OF_ITEMS, processor.count); // We are complete - do not expect to be called again assertFalse(result.isContinuable()); @@ -360,7 +360,7 @@ public class SimpleRepeatTemplateTests extends AbstractTradeBatchTests { ExitStatus result = ExitStatus.FINISHED; try { - result = template.iterate(new ItemProviderRepeatCallback(provider, processor) { + result = template.iterate(new ItemReaderRepeatCallback(provider, processor) { public ExitStatus doInIteration(RepeatContext context) throws Exception { ExitStatus result = super.doInIteration(context); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/ListItemProviderRecoverer.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/ListItemReaderRecoverer.java similarity index 76% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/ListItemProviderRecoverer.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/ListItemReaderRecoverer.java index e917ee990..e0209f3cf 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/ListItemProviderRecoverer.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/ListItemReaderRecoverer.java @@ -18,23 +18,23 @@ package org.springframework.batch.retry; import java.util.List; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemRecoverer; -import org.springframework.batch.item.provider.ListItemProvider; +import org.springframework.batch.item.provider.ListItemReader; -public class ListItemProviderRecoverer extends ListItemProvider implements ItemProvider, ItemRecoverer { +public class ListItemReaderRecoverer extends ListItemReader implements ItemReader, ItemRecoverer { /** * Delegate to super class constructor. * @param list */ - public ListItemProviderRecoverer(List list) { + public ListItemReaderRecoverer(List list) { super(list); } /** * Do nothing. Subclassses should override to implement recovery behaviour. * - * @see org.springframework.batch.item.ItemProvider#recover(java.lang.Object, + * @see org.springframework.batch.item.ItemReader#recover(java.lang.Object, * Throwable) * * @return false if nothing can be done (the default), or true if the item diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/callback/ItemProviderRetryCallbackTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/callback/ItemReaderRetryCallbackTests.java similarity index 86% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/callback/ItemProviderRetryCallbackTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/callback/ItemReaderRetryCallbackTests.java index a6701b84f..23a1f2325 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/callback/ItemProviderRetryCallbackTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/callback/ItemReaderRetryCallbackTests.java @@ -23,8 +23,8 @@ import java.util.List; import junit.framework.TestCase; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.provider.ListItemProvider; -import org.springframework.batch.retry.ListItemProviderRecoverer; +import org.springframework.batch.item.provider.ListItemReader; +import org.springframework.batch.retry.ListItemReaderRecoverer; import org.springframework.batch.retry.RetryContext; import org.springframework.batch.retry.context.RetryContextSupport; import org.springframework.batch.retry.exception.RetryException; @@ -32,7 +32,7 @@ import org.springframework.batch.retry.exception.TerminatedRetryException; import org.springframework.batch.retry.policy.NeverRetryPolicy; import org.springframework.batch.retry.support.RetryTemplate; -public class ItemProviderRetryCallbackTests extends TestCase { +public class ItemReaderRetryCallbackTests extends TestCase { List calls = new ArrayList(); @@ -40,14 +40,14 @@ public class ItemProviderRetryCallbackTests extends TestCase { RetryTemplate template; - ListItemProvider provider; + ListItemReader provider; - ItemProviderRetryCallback callback; + ItemReaderRetryCallback callback; protected void setUp() throws Exception { super.setUp(); template = new RetryTemplate(); - provider = new ListItemProviderRecoverer(Arrays.asList(new String[] { "foo", "bar" })) { + provider = new ListItemReaderRecoverer(Arrays.asList(new String[] { "foo", "bar" })) { public boolean recover(Object data, Throwable cause) { count++; calls.add(data); @@ -57,7 +57,7 @@ public class ItemProviderRetryCallbackTests extends TestCase { return "key" + (count++); } }; - callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; if (data.equals("bar")) { @@ -73,8 +73,8 @@ public class ItemProviderRetryCallbackTests extends TestCase { } public void testDataExhausted() throws Exception { - provider.next(); - provider.next(); // line up a null data item... + provider.read(); + provider.read(); // line up a null data item... try { template.execute(callback); @@ -90,12 +90,12 @@ public class ItemProviderRetryCallbackTests extends TestCase { public void testContextInitializedWithItemAndCanRetry() throws Exception { // We can use the policy to intercept the context and do something with // the item... - provider.next(); // line up an unsuccessful call... + provider.read(); // line up an unsuccessful call... assertEquals(0, calls.size()); template.setRetryPolicy(new NeverRetryPolicy() { public boolean canRetry(RetryContext context) { // ...register the failed item - calls.add("item(" + count + ")=" + context.getAttribute(ItemProviderRetryCallback.ITEM)); + calls.add("item(" + count + ")=" + context.getAttribute(ItemReaderRetryCallback.ITEM)); // Do not call the base class method - the attempt counts as // successful now if (count < 2) // only retry once @@ -121,12 +121,12 @@ public class ItemProviderRetryCallbackTests extends TestCase { public void testContextInitializedWithItemAndRegisterThrowable() throws Exception { // We can use the policy to intercept the context and do something with // the item... - provider.next(); // line up an unsuccessful call... + provider.read(); // line up an unsuccessful call... assertEquals(0, calls.size()); template.setRetryPolicy(new NeverRetryPolicy() { public void registerThrowable(RetryContext context, Throwable throwable) throws TerminatedRetryException { // ...register the failed item - calls.add("item=" + context.getAttribute(ItemProviderRetryCallback.ITEM)); + calls.add("item=" + context.getAttribute(ItemReaderRetryCallback.ITEM)); // Call the base class method so that the next attempt is a // failure. super.registerThrowable(context, throwable); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/policy/ItemProviderRetryPolicyTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/policy/ItemReaderRetryPolicyTests.java similarity index 79% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/policy/ItemProviderRetryPolicyTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/policy/ItemReaderRetryPolicyTests.java index 459d03464..4eea2feff 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/policy/ItemProviderRetryPolicyTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/policy/ItemReaderRetryPolicyTests.java @@ -25,23 +25,23 @@ import junit.framework.TestCase; import org.springframework.batch.item.FailedItemIdentifier; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; -import org.springframework.batch.item.provider.ListItemProvider; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.provider.ListItemReader; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.context.RepeatContextSupport; import org.springframework.batch.repeat.synch.RepeatSynchronizationManager; -import org.springframework.batch.retry.ListItemProviderRecoverer; +import org.springframework.batch.retry.ListItemReaderRecoverer; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; -import org.springframework.batch.retry.callback.ItemProviderRetryCallback; +import org.springframework.batch.retry.callback.ItemReaderRetryCallback; import org.springframework.batch.retry.context.RetryContextSupport; import org.springframework.batch.retry.support.RetryTemplate; -public class ItemProviderRetryPolicyTests extends TestCase { +public class ItemReaderRetryPolicyTests extends TestCase { - private ItemProviderRetryPolicy policy = new ItemProviderRetryPolicy(); + private ItemReaderRetryPolicy policy = new ItemReaderRetryPolicy(); - private ItemProvider provider; + private ItemReader provider; private int count = 0; @@ -51,7 +51,7 @@ public class ItemProviderRetryPolicyTests extends TestCase { super.setUp(); // The list simulates a failed delivery, redelivery of the same message, // then a new message... - provider = new ListItemProviderRecoverer(Arrays.asList(new String[] { "foo", "foo", "bar" })) { + provider = new ListItemReaderRecoverer(Arrays.asList(new String[] { "foo", "foo", "bar" })) { public boolean recover(Object data, Throwable cause) { count++; list.add(data); @@ -61,7 +61,7 @@ public class ItemProviderRetryPolicyTests extends TestCase { } public void testOpenSunnyDay() throws Exception { - RetryContext context = policy.open(new ItemProviderRetryCallback(provider, new ItemProcessor() { + RetryContext context = policy.open(new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; list.add(data); @@ -71,8 +71,8 @@ public class ItemProviderRetryPolicyTests extends TestCase { // we haven't called the processor yet... assertEquals(0, count); // but the provider has been accessed: - assertEquals("foo", provider.next()); - assertEquals("bar", provider.next()); + assertEquals("foo", provider.read()); + assertEquals("bar", provider.read()); } public void testOpenWithWrongCallbackType() { @@ -92,7 +92,7 @@ public class ItemProviderRetryPolicyTests extends TestCase { public void testCanRetry() { policy.setDelegate(new AlwaysRetryPolicy()); - RetryContext context = policy.open(new ItemProviderRetryCallback(provider, new ItemProcessor() { + RetryContext context = policy.open(new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; } @@ -105,7 +105,7 @@ public class ItemProviderRetryPolicyTests extends TestCase { public void testRegisterThrowable() { policy.setDelegate(new NeverRetryPolicy()); - RetryContext context = policy.open(new ItemProviderRetryCallback(provider, new ItemProcessor() { + RetryContext context = policy.open(new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; list.add(data); @@ -118,7 +118,7 @@ public class ItemProviderRetryPolicyTests extends TestCase { public void testClose() throws Exception { policy.setDelegate(new NeverRetryPolicy()); - RetryContext context = policy.open(new ItemProviderRetryCallback(provider, new ItemProcessor() { + RetryContext context = policy.open(new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; list.add(data); @@ -132,12 +132,12 @@ public class ItemProviderRetryPolicyTests extends TestCase { // (not that this would happen in practice)... assertFalse(policy.canRetry(context)); // The provider has been accessed only once: - assertEquals("foo", provider.next()); - assertEquals("bar", provider.next()); + assertEquals("foo", provider.read()); + assertEquals("bar", provider.read()); } public void testOpenTwice() throws Exception { - ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; list.add(data); @@ -162,13 +162,13 @@ public class ItemProviderRetryPolicyTests extends TestCase { // The provider has been accessed twice, so this // mimics a message receive by repeating the value of the first // message... - assertEquals("bar", provider.next()); + assertEquals("bar", provider.read()); } public void testRecover() throws Exception { - policy = new ItemProviderRetryPolicy(); + policy = new ItemReaderRetryPolicy(); policy.setDelegate(new SimpleRetryPolicy(1)); - ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { } }); @@ -196,18 +196,18 @@ public class ItemProviderRetryPolicyTests extends TestCase { } public void testFailedItemIdentifier() throws Exception { - policy = new ItemProviderRetryPolicy(); + policy = new ItemReaderRetryPolicy(); policy.setDelegate(new SimpleRetryPolicy(1)); MockFailedItemProvider provider = new MockFailedItemProvider(Collections.EMPTY_LIST); - ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, null); + ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, null); policy.open(callback); assertEquals(1, provider.hasFailedCount); } public void testRecoverWithTemplate() throws Exception { - policy = new ItemProviderRetryPolicy(); + policy = new ItemReaderRetryPolicy(); policy.setDelegate(new SimpleRetryPolicy(1)); - ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { throw new RuntimeException("Barf!"); } @@ -230,7 +230,7 @@ public class ItemProviderRetryPolicyTests extends TestCase { } public void testExhaustedClearsHistoryAfterLastAttempt() throws Exception { - ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; list.add(data); @@ -256,9 +256,9 @@ public class ItemProviderRetryPolicyTests extends TestCase { } public void testRetryCount() throws Exception { - policy = new ItemProviderRetryPolicy(); + policy = new ItemReaderRetryPolicy(); policy.setDelegate(new SimpleRetryPolicy(1)); - RetryContext context = policy.open(new ItemProviderRetryCallback(provider, new ItemProcessor() { + RetryContext context = policy.open(new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; list.add(data); @@ -273,14 +273,14 @@ public class ItemProviderRetryPolicyTests extends TestCase { } public void testRetryCountPreservedBetweenRetries() throws Exception { - ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(Object data) { count++; list.add(data); } }); - policy = new ItemProviderRetryPolicy(); + policy = new ItemReaderRetryPolicy(); policy.setDelegate(new SimpleRetryPolicy(1)); RetryContext context = policy.open(callback); assertNotNull(context); @@ -299,7 +299,7 @@ public class ItemProviderRetryPolicyTests extends TestCase { assertTrue(policy.hasFailed(provider, "foo")); } - private static class MockFailedItemProvider extends ListItemProvider implements FailedItemIdentifier { + private static class MockFailedItemProvider extends ListItemReader implements FailedItemIdentifier { private int hasFailedCount = 0; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/AbstractDelegatorTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/AbstractDelegatorTests.java index b52e4bce2..cff7032d9 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/AbstractDelegatorTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/AbstractDelegatorTests.java @@ -8,16 +8,16 @@ import org.springframework.batch.io.sample.domain.FooService; import org.springframework.util.Assert; /** - * Tests for {@link AbstractDelegator} + * Tests for {@link AbstractMethodInvokingDelegator} * * @author Robert Kasanicky */ public class AbstractDelegatorTests extends TestCase { - private static class ConcreteDelegator extends AbstractDelegator { + private static class ConcreteDelegator extends AbstractMethodInvokingDelegator { } - private AbstractDelegator delegator = new ConcreteDelegator(); + private AbstractMethodInvokingDelegator delegator = new ConcreteDelegator(); private Foo foo = new Foo(0, "foo", 1); diff --git a/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/processor/delegating-item-processor.xml b/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/processor/delegating-item-processor.xml index a29cc09c3..9aaab0e0a 100644 --- a/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/processor/delegating-item-processor.xml +++ b/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/processor/delegating-item-processor.xml @@ -2,7 +2,7 @@ - + diff --git a/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/provider/delegating-item-provider.xml b/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/provider/delegating-item-provider.xml index 741704896..7d0057b9f 100644 --- a/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/provider/delegating-item-provider.xml +++ b/spring-batch-infrastructure/src/test/resources/org/springframework/batch/item/provider/delegating-item-provider.xml @@ -2,7 +2,7 @@ - + diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/AbstractStaxEventReaderInputSourceTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/AbstractStaxEventReaderItemReaderTests.java similarity index 90% rename from spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/AbstractStaxEventReaderInputSourceTests.java rename to spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/AbstractStaxEventReaderItemReaderTests.java index 5db2e9d4f..3e98dc376 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/AbstractStaxEventReaderInputSourceTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/AbstractStaxEventReaderItemReaderTests.java @@ -6,16 +6,16 @@ import java.util.List; import junit.framework.TestCase; -import org.springframework.batch.io.file.support.StaxEventReaderInputSource; +import org.springframework.batch.io.file.support.StaxEventReaderItemReader; import org.springframework.batch.io.file.support.oxm.UnmarshallingFragmentDeserializer; import org.springframework.batch.io.oxm.domain.Trade; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.oxm.Unmarshaller; -public abstract class AbstractStaxEventReaderInputSourceTests extends TestCase { +public abstract class AbstractStaxEventReaderItemReaderTests extends TestCase { - private StaxEventReaderInputSource source = new StaxEventReaderInputSource(); + private StaxEventReaderItemReader source = new StaxEventReaderItemReader(); protected Resource resource = new ClassPathResource( "org/springframework/batch/io/oxm/input.xml"); diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/CastorUnmarshallingTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/CastorUnmarshallingTests.java index 25ba7efee..30892f8c5 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/CastorUnmarshallingTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/CastorUnmarshallingTests.java @@ -4,7 +4,7 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.oxm.Unmarshaller; import org.springframework.oxm.castor.CastorMarshaller; -public class CastorUnmarshallingTests extends AbstractStaxEventReaderInputSourceTests { +public class CastorUnmarshallingTests extends AbstractStaxEventReaderItemReaderTests { protected Unmarshaller getUnmarshaller() throws Exception { CastorMarshaller unmarshaller = new CastorMarshaller(); diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/XStreamUnmarshallingTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/XStreamUnmarshallingTests.java index 89eeba3c1..ee3b498f2 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/XStreamUnmarshallingTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/io/oxm/XStreamUnmarshallingTests.java @@ -6,7 +6,7 @@ import org.springframework.batch.io.oxm.domain.Trade; import org.springframework.oxm.Unmarshaller; import org.springframework.oxm.xstream.XStreamMarshaller; -public class XStreamUnmarshallingTests extends AbstractStaxEventReaderInputSourceTests { +public class XStreamUnmarshallingTests extends AbstractStaxEventReaderItemReaderTests { protected Unmarshaller getUnmarshaller() throws Exception { XStreamMarshaller unmarshaller = new XStreamMarshaller(); diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/jms/ExternalRetryInBatchTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/jms/ExternalRetryInBatchTests.java index 519eff2ec..29168dca0 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/jms/ExternalRetryInBatchTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/jms/ExternalRetryInBatchTests.java @@ -21,16 +21,16 @@ import java.util.List; import javax.sql.DataSource; +import org.springframework.batch.item.AbstractItemReaderRecoverer; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; -import org.springframework.batch.item.provider.AbstractItemProvider; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatCallback; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.policy.SimpleCompletionPolicy; import org.springframework.batch.repeat.support.RepeatTemplate; -import org.springframework.batch.retry.callback.ItemProviderRetryCallback; -import org.springframework.batch.retry.policy.ItemProviderRetryPolicy; +import org.springframework.batch.retry.callback.ItemReaderRetryCallback; +import org.springframework.batch.retry.policy.ItemReaderRetryPolicy; import org.springframework.batch.retry.policy.SimpleRetryPolicy; import org.springframework.batch.retry.support.RetryTemplate; import org.springframework.jdbc.core.JdbcTemplate; @@ -48,7 +48,7 @@ public class ExternalRetryInBatchTests extends AbstractDependencyInjectionSpring private RepeatTemplate repeatTemplate; - private ItemProvider provider; + private ItemReader provider; private JdbcTemplate jdbcTemplate; @@ -80,8 +80,8 @@ public class ExternalRetryInBatchTests extends AbstractDependencyInjectionSpring jdbcTemplate.execute("delete from T_FOOS"); jmsTemplate.convertAndSend("queue", "foo"); jmsTemplate.convertAndSend("queue", "bar"); - provider = new AbstractItemProvider() { - public Object next() { + provider = new AbstractItemReaderRecoverer() { + public Object read() { String text = (String) jmsTemplate.receiveAndConvert("queue"); list.add(text); return text; @@ -112,9 +112,9 @@ public class ExternalRetryInBatchTests extends AbstractDependencyInjectionSpring public void testExternalRetryRecoveryInBatch() throws Exception { assertInitialState(); - retryTemplate.setRetryPolicy(new ItemProviderRetryPolicy(new SimpleRetryPolicy(1))); + retryTemplate.setRetryPolicy(new ItemReaderRetryPolicy(new SimpleRetryPolicy(1))); - final ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + final ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(final Object text) { // No need for transaction here: the whole batch will roll // back. When it comes back for recovery this code is not diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/ExternalRetryTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/ExternalRetryTests.java index 820d7896c..1d014ae52 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/ExternalRetryTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/ExternalRetryTests.java @@ -21,11 +21,11 @@ import java.util.List; import javax.sql.DataSource; +import org.springframework.batch.item.AbstractItemReaderRecoverer; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; -import org.springframework.batch.item.provider.AbstractItemProvider; -import org.springframework.batch.retry.callback.ItemProviderRetryCallback; -import org.springframework.batch.retry.policy.ItemProviderRetryPolicy; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.retry.callback.ItemReaderRetryCallback; +import org.springframework.batch.retry.policy.ItemReaderRetryPolicy; import org.springframework.batch.retry.support.RetryTemplate; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jms.core.JmsTemplate; @@ -41,7 +41,7 @@ public class ExternalRetryTests extends AbstractDependencyInjectionSpringContext private RetryTemplate retryTemplate; - private ItemProvider provider; + private ItemReader provider; private JdbcTemplate jdbcTemplate; @@ -68,8 +68,8 @@ public class ExternalRetryTests extends AbstractDependencyInjectionSpringContext getMessages(); // drain queue jdbcTemplate.execute("delete from T_FOOS"); jmsTemplate.convertAndSend("queue", "foo"); - provider = new AbstractItemProvider() { - public Object next() { + provider = new AbstractItemReaderRecoverer() { + public Object read() { String text = (String) jmsTemplate.receiveAndConvert("queue"); list.add(text); return text; @@ -102,9 +102,9 @@ public class ExternalRetryTests extends AbstractDependencyInjectionSpringContext assertInitialState(); - retryTemplate.setRetryPolicy(new ItemProviderRetryPolicy()); + retryTemplate.setRetryPolicy(new ItemReaderRetryPolicy()); - final ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + final ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(final Object text) { jdbcTemplate.update("INSERT into T_FOOS (id,name,foo_date) values (?,?,null)", new Object[] { Integer.valueOf(list.size()), text }); @@ -167,9 +167,9 @@ public class ExternalRetryTests extends AbstractDependencyInjectionSpringContext assertInitialState(); - retryTemplate.setRetryPolicy(new ItemProviderRetryPolicy()); + retryTemplate.setRetryPolicy(new ItemReaderRetryPolicy()); - final ItemProviderRetryCallback callback = new ItemProviderRetryCallback(provider, new ItemProcessor() { + final ItemReaderRetryCallback callback = new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(final Object text) { jdbcTemplate.update("INSERT into T_FOOS (id,name,foo_date) values (?,?,null)", new Object[] { Integer.valueOf(list.size()), text }); diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/SynchronousTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/SynchronousTests.java index fabfcef20..14045554e 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/SynchronousTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/retry/jms/SynchronousTests.java @@ -20,10 +20,10 @@ import java.util.ArrayList; import java.util.List; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.provider.JmsItemProvider; +import org.springframework.batch.item.provider.JmsItemReader; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; -import org.springframework.batch.retry.callback.ItemProviderRetryCallback; +import org.springframework.batch.retry.callback.ItemReaderRetryCallback; import org.springframework.batch.retry.support.RetryTemplate; import org.springframework.jms.core.JmsTemplate; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; @@ -142,12 +142,12 @@ public class SynchronousTests extends AbstractTransactionalDataSourceSpringConte assertInitialState(); - JmsItemProvider provider = new JmsItemProvider(); + JmsItemReader provider = new JmsItemReader(); // provider.setItemType(Message.class); provider.setJmsTemplate(jmsTemplate); jmsTemplate.setDefaultDestinationName("queue"); - retryTemplate.execute(new ItemProviderRetryCallback(provider, new ItemProcessor() { + retryTemplate.execute(new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(final Object text) { TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); diff --git a/spring-batch-integration/src/test/java/org/springframework/retry/jms/SynchronousTests.java b/spring-batch-integration/src/test/java/org/springframework/retry/jms/SynchronousTests.java index 0e33ff376..5b34ec4ae 100644 --- a/spring-batch-integration/src/test/java/org/springframework/retry/jms/SynchronousTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/retry/jms/SynchronousTests.java @@ -20,10 +20,10 @@ import java.util.ArrayList; import java.util.List; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.provider.JmsItemProvider; +import org.springframework.batch.item.provider.JmsItemReader; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; -import org.springframework.batch.retry.callback.ItemProviderRetryCallback; +import org.springframework.batch.retry.callback.ItemReaderRetryCallback; import org.springframework.batch.retry.support.RetryTemplate; import org.springframework.jms.core.JmsTemplate; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; @@ -138,12 +138,12 @@ public class SynchronousTests extends AbstractTransactionalDataSourceSpringConte assertInitialState(); - JmsItemProvider provider = new JmsItemProvider(); + JmsItemReader provider = new JmsItemReader(); // provider.setItemType(Message.class); provider.setJmsTemplate(jmsTemplate); jmsTemplate.setDefaultDestinationName("queue"); - retryTemplate.execute(new ItemProviderRetryCallback(provider, new ItemProcessor() { + retryTemplate.execute(new ItemReaderRetryCallback(provider, new ItemProcessor() { public void process(final Object text) { TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/PersonService.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/PersonService.java index df8da60ee..cf0b97c18 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/PersonService.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/PersonService.java @@ -20,12 +20,12 @@ import java.util.ArrayList; import java.util.List; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; /** * Custom class that contains logic that would normally be - * be contained in {@link ItemProvider} (getData()) and + * be contained in {@link ItemReader} (getData()) and * {@link ItemProcessor} (processData(..)). * * @author tomas.slanina diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/OrderItemProvider.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/OrderItemReader.java similarity index 92% rename from spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/OrderItemProvider.java rename to spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/OrderItemReader.java index 65bb1ee67..d8881a460 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/OrderItemProvider.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/OrderItemReader.java @@ -22,10 +22,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.batch.core.configuration.StepConfiguration; import org.springframework.batch.core.domain.StepExecution; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.file.FieldSet; import org.springframework.batch.io.file.FieldSetMapper; -import org.springframework.batch.item.provider.AbstractItemProvider; +import org.springframework.batch.item.ItemReader; +import org.springframework.batch.item.provider.AbstractItemReader; import org.springframework.batch.item.validator.Validator; import org.springframework.batch.sample.domain.Address; import org.springframework.batch.sample.domain.BillingInfo; @@ -40,9 +40,9 @@ import org.springframework.batch.sample.domain.ShippingInfo; * @author peter.zozom * */ -public class OrderItemProvider extends AbstractItemProvider { - private static Log log = LogFactory.getLog(OrderItemProvider.class); - private InputSource inputSource; +public class OrderItemReader extends AbstractItemReader { + private static Log log = LogFactory.getLog(OrderItemReader.class); + private ItemReader inputSource; private Order order; private boolean recordFinished; private FieldSetMapper headerMapper; @@ -54,9 +54,10 @@ public class OrderItemProvider extends AbstractItemProvider { private Validator validator; /** - * @see org.springframework.batch.item.ItemProvider#next() + * @throws Exception + * @see org.springframework.batch.item.ItemReader#read() */ - public Object next() { + public Object read() throws Exception { recordFinished = false; while (!recordFinished) { @@ -190,7 +191,7 @@ public class OrderItemProvider extends AbstractItemProvider { this.headerMapper = headerMapper; } - public void setInputSource(InputSource inputSource) { + public void setItemReader(ItemReader inputSource) { this.inputSource = inputSource; } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemProvider.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemReader.java similarity index 87% rename from spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemProvider.java rename to spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemReader.java index 1a101f655..41f7ca7b1 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemProvider.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/provider/StagingItemReader.java @@ -11,7 +11,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.batch.execution.scope.StepContext; import org.springframework.batch.execution.scope.StepContextAware; -import org.springframework.batch.item.ItemProvider; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; import org.springframework.batch.sample.item.processor.StagingItemProcessor; @@ -26,14 +26,14 @@ import org.springframework.transaction.support.TransactionSynchronizationAdapter import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.util.Assert; -public class StagingItemProvider extends JdbcDaoSupport implements - ItemProvider, ResourceLifecycle, DisposableBean, +public class StagingItemReader extends JdbcDaoSupport implements + ItemReader, ResourceLifecycle, DisposableBean, StepContextAware { // Key for buffer in transaction synchronization manager - private static final String BUFFER_KEY = StagingItemProvider.class.getName()+".BUFFER"; + private static final String BUFFER_KEY = StagingItemReader.class.getName()+".BUFFER"; - private static Log logger = LogFactory.getLog(StagingItemProvider.class); + private static Log logger = LogFactory.getLog(StagingItemReader.class); private StepContext stepContext; @@ -49,7 +49,7 @@ public class StagingItemProvider extends JdbcDaoSupport implements /** * - * @see org.springframework.batch.io.driving.DrivingQueryInputSource#close() + * @see org.springframework.batch.io.driving.DrivingQueryItemReader#close() */ public void close() { initialized = false; @@ -61,7 +61,7 @@ public class StagingItemProvider extends JdbcDaoSupport implements /** * @throws Exception - * @see org.springframework.batch.io.driving.DrivingQueryInputSource#destroy() + * @see org.springframework.batch.io.driving.DrivingQueryItemReader#destroy() */ public void destroy() throws Exception { close(); @@ -69,7 +69,7 @@ public class StagingItemProvider extends JdbcDaoSupport implements /** * - * @see org.springframework.batch.io.driving.DrivingQueryInputSource#open() + * @see org.springframework.batch.io.driving.DrivingQueryItemReader#open() */ public void open() { Assert.state(keys == null || initialized, @@ -122,8 +122,8 @@ public class StagingItemProvider extends JdbcDaoSupport implements return item; } - public Object next() throws Exception { - Long id = read(); + public Object read() throws Exception { + Long id = doRead(); if (id == null) { return null; @@ -152,7 +152,7 @@ public class StagingItemProvider extends JdbcDaoSupport implements return result; } - private Long read() { + private Long doRead() { if (!initialized) { open(); } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTasklet.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTasklet.java index 819245e02..bb5cf3dc7 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTasklet.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTasklet.java @@ -18,7 +18,7 @@ package org.springframework.batch.sample.tasklet; import org.springframework.batch.core.tasklet.Tasklet; -import org.springframework.batch.execution.tasklet.RestartableItemProviderTasklet; +import org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet; import org.springframework.batch.io.exception.BatchCriticalException; import org.springframework.batch.repeat.ExitStatus; @@ -29,7 +29,7 @@ import org.springframework.batch.repeat.ExitStatus; * @author Robert Kasanicky * */ -public class ExceptionRestartableTasklet extends RestartableItemProviderTasklet { +public class ExceptionRestartableTasklet extends RestartableItemOrientedTasklet { private int counter = 0; private int throwExceptionOnRecordNumber = 4; diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeTasklet.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeTasklet.java index 4156fdc1b..c2d49fe2c 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeTasklet.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeTasklet.java @@ -19,8 +19,8 @@ package org.springframework.batch.sample.tasklet; import java.util.Properties; import org.springframework.batch.core.tasklet.Tasklet; -import org.springframework.batch.execution.tasklet.ItemProviderProcessTasklet; -import org.springframework.batch.io.file.support.DefaultFlatFileInputSource; +import org.springframework.batch.execution.tasklet.ItemOrientedTasklet; +import org.springframework.batch.io.file.support.DefaultFlatFileItemReader; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.sample.dao.TradeWriter; import org.springframework.batch.sample.domain.Trade; @@ -31,7 +31,7 @@ import org.springframework.batch.statistics.StatisticsProvider; * and processing of input data. This can be viable in cases, when the input * reading and processing logic need not to be reused in different contexts. In * general it is recommended to separate these two concerns using an - * {@link ItemProviderProcessTasklet}. + * {@link ItemOrientedTasklet}. * * Note this class is thread-safe, as per the 'standard' module implementations * provided by the framework. @@ -45,7 +45,7 @@ public class SimpleTradeTasklet implements Tasklet, StatisticsProvider { /* * reads the data from input file */ - private DefaultFlatFileInputSource inputSource; + private DefaultFlatFileItemReader inputSource; /* * writes a Trade object to output @@ -76,7 +76,7 @@ public class SimpleTradeTasklet implements Tasklet, StatisticsProvider { return ExitStatus.CONTINUABLE; } - public void setInputSource(DefaultFlatFileInputSource inputTemplate) { + public void setItemReader(DefaultFlatFileItemReader inputTemplate) { this.inputSource = inputTemplate; } diff --git a/spring-batch-samples/src/main/resources/jobs/beanWrapperMapperSampleJob.xml b/spring-batch-samples/src/main/resources/jobs/beanWrapperMapperSampleJob.xml index 7939d7082..55f51621f 100644 --- a/spring-batch-samples/src/main/resources/jobs/beanWrapperMapperSampleJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/beanWrapperMapperSampleJob.xml @@ -16,11 +16,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.ValidatingItemReader"> + @@ -35,11 +35,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -55,7 +55,7 @@ - @@ -63,7 +63,7 @@ - diff --git a/spring-batch-samples/src/main/resources/jobs/compositeProcessorSampleJob.xml b/spring-batch-samples/src/main/resources/jobs/compositeProcessorSampleJob.xml index 2421f8e05..333f5d837 100644 --- a/spring-batch-samples/src/main/resources/jobs/compositeProcessorSampleJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/compositeProcessorSampleJob.xml @@ -15,11 +15,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.ValidatingItemReader"> + @@ -46,7 +46,7 @@ - diff --git a/spring-batch-samples/src/main/resources/jobs/delegatingJob.xml b/spring-batch-samples/src/main/resources/jobs/delegatingJob.xml index 9a1cb2c60..7631e768a 100644 --- a/spring-batch-samples/src/main/resources/jobs/delegatingJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/delegatingJob.xml @@ -22,9 +22,9 @@ + class="org.springframework.batch.execution.tasklet.ItemOrientedTasklet"> - + diff --git a/spring-batch-samples/src/main/resources/jobs/fixedLengthImportJob.xml b/spring-batch-samples/src/main/resources/jobs/fixedLengthImportJob.xml index a166f806a..339342d35 100644 --- a/spring-batch-samples/src/main/resources/jobs/fixedLengthImportJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/fixedLengthImportJob.xml @@ -15,11 +15,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.ValidatingItemReader"> + @@ -37,7 +37,7 @@ - + diff --git a/spring-batch-samples/src/main/resources/jobs/footballJob.xml b/spring-batch-samples/src/main/resources/jobs/footballJob.xml index 4243177df..ba4302609 100644 --- a/spring-batch-samples/src/main/resources/jobs/footballJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/footballJob.xml @@ -26,12 +26,12 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -56,12 +56,12 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -86,11 +86,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + @@ -113,8 +113,8 @@ - + @@ -130,8 +130,8 @@ - + @@ -148,7 +148,7 @@ + class="org.springframework.batch.io.cursor.JdbcCursorItemReader" scope="step"> diff --git a/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml b/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml index 3f5bc90cd..c77a50680 100644 --- a/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml @@ -20,12 +20,12 @@ class="org.springframework.batch.execution.step.RepeatOperationsStepConfiguration"> + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -76,8 +76,8 @@ - diff --git a/spring-batch-samples/src/main/resources/jobs/ibatisJob.xml b/spring-batch-samples/src/main/resources/jobs/ibatisJob.xml index 1be1d4c27..3c2231fe8 100644 --- a/spring-batch-samples/src/main/resources/jobs/ibatisJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/ibatisJob.xml @@ -19,10 +19,10 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - - + + @@ -43,7 +43,7 @@ - diff --git a/spring-batch-samples/src/main/resources/jobs/multilineJob.xml b/spring-batch-samples/src/main/resources/jobs/multilineJob.xml index 115234332..4ed756a3a 100644 --- a/spring-batch-samples/src/main/resources/jobs/multilineJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/multilineJob.xml @@ -15,12 +15,12 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.AggregateItemReader"> + @@ -43,8 +43,8 @@ - - diff --git a/spring-batch-samples/src/main/resources/jobs/multilineOrderJob.xml b/spring-batch-samples/src/main/resources/jobs/multilineOrderJob.xml index 2b1ab1ce1..0f1cba672 100644 --- a/spring-batch-samples/src/main/resources/jobs/multilineOrderJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/multilineOrderJob.xml @@ -18,10 +18,10 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - - + + diff --git a/spring-batch-samples/src/main/resources/jobs/parallelJob.xml b/spring-batch-samples/src/main/resources/jobs/parallelJob.xml index 19c6dd49b..a3accb12a 100644 --- a/spring-batch-samples/src/main/resources/jobs/parallelJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/parallelJob.xml @@ -21,12 +21,12 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -56,10 +56,10 @@ class="org.springframework.batch.execution.step.RepeatOperationsStepConfiguration"> + class="org.springframework.batch.execution.tasklet.ItemOrientedTasklet"> + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -139,11 +139,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + @@ -166,8 +166,8 @@ - - diff --git a/spring-batch-samples/src/main/resources/jobs/restartSample.xml b/spring-batch-samples/src/main/resources/jobs/restartSample.xml index f5f532312..c00657657 100644 --- a/spring-batch-samples/src/main/resources/jobs/restartSample.xml +++ b/spring-batch-samples/src/main/resources/jobs/restartSample.xml @@ -18,8 +18,8 @@ - + class="org.springframework.batch.item.provider.ValidatingItemReader"> + @@ -38,7 +38,7 @@ - diff --git a/spring-batch-samples/src/main/resources/jobs/rollbackJob.xml b/spring-batch-samples/src/main/resources/jobs/rollbackJob.xml index f921f0189..e4a407860 100644 --- a/spring-batch-samples/src/main/resources/jobs/rollbackJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/rollbackJob.xml @@ -43,11 +43,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + @@ -64,11 +64,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> + class="org.springframework.batch.item.provider.DelegatingItemReader" + p:item-reader-ref="tradeSqlItemReader" /> - @@ -94,8 +94,8 @@ - diff --git a/spring-batch-samples/src/main/resources/jobs/simpleTaskletJob.xml b/spring-batch-samples/src/main/resources/jobs/simpleTaskletJob.xml index e9cc97f6e..a119137d8 100644 --- a/spring-batch-samples/src/main/resources/jobs/simpleTaskletJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/simpleTaskletJob.xml @@ -17,8 +17,8 @@ - + @@ -39,13 +39,13 @@ - + - diff --git a/spring-batch-samples/src/main/resources/jobs/tradeJob.xml b/spring-batch-samples/src/main/resources/jobs/tradeJob.xml index 1aee2415d..1b76e6d8a 100644 --- a/spring-batch-samples/src/main/resources/jobs/tradeJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/tradeJob.xml @@ -19,11 +19,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + @@ -40,12 +40,12 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -59,11 +59,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - + class="org.springframework.batch.item.provider.DelegatingItemReader"> + @@ -78,8 +78,8 @@ - @@ -92,7 +92,7 @@ - diff --git a/spring-batch-samples/src/main/resources/jobs/tradeJobIo.xml b/spring-batch-samples/src/main/resources/jobs/tradeJobIo.xml index df86ead6f..baf0e447e 100644 --- a/spring-batch-samples/src/main/resources/jobs/tradeJobIo.xml +++ b/spring-batch-samples/src/main/resources/jobs/tradeJobIo.xml @@ -36,7 +36,7 @@ diff --git a/spring-batch-samples/src/main/resources/jobs/xmlStaxJob.xml b/spring-batch-samples/src/main/resources/jobs/xmlStaxJob.xml index 9b91a1f82..071fd14c0 100644 --- a/spring-batch-samples/src/main/resources/jobs/xmlStaxJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/xmlStaxJob.xml @@ -17,11 +17,11 @@ + class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet"> - - - + + + diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java index 217c4f75d..fce1b0f7d 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java @@ -21,7 +21,7 @@ import java.io.FileReader; import java.sql.ResultSet; import java.sql.SQLException; -import org.springframework.batch.io.file.support.DefaultFlatFileInputSource; +import org.springframework.batch.io.file.support.DefaultFlatFileItemReader; import org.springframework.batch.sample.domain.Trade; import org.springframework.core.io.Resource; import org.springframework.jdbc.core.JdbcOperations; @@ -35,7 +35,7 @@ public class FixedLengthImportJobFunctionalTests extends AbstractValidatingBatch //auto-injected attributes private JdbcOperations jdbcTemplate; private Resource fileLocator; - private DefaultFlatFileInputSource inputSource; + private DefaultFlatFileItemReader inputSource; protected void onSetUp() throws Exception { super.onSetUp(); @@ -89,7 +89,7 @@ public class FixedLengthImportJobFunctionalTests extends AbstractValidatingBatch this.fileLocator = fileLocator; } - public void setDefaultFlatFileInputSource(DefaultFlatFileInputSource inputSource){ + public void setDefaultFlatFileItemReader(DefaultFlatFileItemReader inputSource){ this.inputSource = inputSource; } } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/OrderItemProviderTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/OrderItemReaderTests.java similarity index 88% rename from spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/OrderItemProviderTests.java rename to spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/OrderItemReaderTests.java index 1b42bc187..813dee49a 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/OrderItemProviderTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/OrderItemReaderTests.java @@ -5,9 +5,9 @@ import java.util.Iterator; import junit.framework.TestCase; import org.easymock.MockControl; -import org.springframework.batch.io.InputSource; import org.springframework.batch.io.file.FieldSet; import org.springframework.batch.io.file.FieldSetMapper; +import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.validator.Validator; import org.springframework.batch.sample.domain.Address; import org.springframework.batch.sample.domain.BillingInfo; @@ -15,13 +15,12 @@ import org.springframework.batch.sample.domain.Customer; import org.springframework.batch.sample.domain.LineItem; import org.springframework.batch.sample.domain.Order; import org.springframework.batch.sample.domain.ShippingInfo; -import org.springframework.batch.sample.item.provider.OrderItemProvider; -public class OrderItemProviderTests extends TestCase { +public class OrderItemReaderTests extends TestCase { - private OrderItemProvider provider; + private OrderItemReader provider; private MockControl inputControl; - private InputSource input; + private ItemReader input; private MockControl mapperControl; private FieldSetMapper mapper; private MockControl validatorControl; @@ -29,11 +28,11 @@ public class OrderItemProviderTests extends TestCase { public void setUp() { - inputControl = MockControl.createControl(InputSource.class); - input = (InputSource)inputControl.getMock(); + inputControl = MockControl.createControl(ItemReader.class); + input = (ItemReader)inputControl.getMock(); - provider = new OrderItemProvider(); - provider.setInputSource(input); + provider = new OrderItemReader(); + provider.setItemReader(input); } /* @@ -47,7 +46,7 @@ public class OrderItemProviderTests extends TestCase { * In testNext method we are going to test these responsibilities. So we need create mock * objects for input source, mapper and validator. */ - public void testNext() { + public void testNext() throws Exception { //create fieldsets and set return values for input source FieldSet headerFS = new FieldSet(new String[] {Order.LINE_ID_HEADER}); @@ -127,7 +126,7 @@ public class OrderItemProviderTests extends TestCase { provider.setShippingMapper(mapper); //call tested method - Object result = provider.next(); + Object result = provider.read(); //verify result assertNotNull(result); @@ -152,7 +151,7 @@ public class OrderItemProviderTests extends TestCase { } //try to retrieve next object - nothing should be returned - assertNull(provider.next()); + assertNull(provider.read()); //verify method calls on input source, mapper and validator inputControl.verify(); diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/StagingItemProviderTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/StagingItemReaderTests.java similarity index 90% rename from spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/StagingItemProviderTests.java rename to spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/StagingItemReaderTests.java index f1b4ab64a..066c31c76 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/StagingItemProviderTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/provider/StagingItemReaderTests.java @@ -14,18 +14,18 @@ import org.springframework.batch.sample.item.processor.StagingItemProcessor; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; import org.springframework.util.ClassUtils; -public class StagingItemProviderTests extends +public class StagingItemReaderTests extends AbstractTransactionalDataSourceSpringContextTests { private StagingItemProcessor processor; - private StagingItemProvider provider; + private StagingItemReader provider; private Long jobId; public void setProcessor(StagingItemProcessor processor) { this.processor = processor; } - public void setProvider(StagingItemProvider provider) { + public void setProvider(StagingItemReader provider) { this.provider = provider; } @@ -66,7 +66,7 @@ public class StagingItemProviderTests extends new Object[] { new Long(id) }, String.class); assertEquals(StagingItemProcessor.NEW, before); - Object item = provider.next(); + Object item = provider.read(); assertEquals("FOO", item); String after = (String) getJdbcTemplate().queryForObject( @@ -103,27 +103,27 @@ public class StagingItemProviderTests extends new Object[] { jobId, StagingItemProcessor.NEW }); assertEquals(4, count); - Object item = provider.next(); + Object item = provider.read(); assertEquals("FOO", item); - item = provider.next(); + item = provider.read(); assertEquals("BAR", item); endTransaction(); startNewTransaction(); BatchTransactionSynchronizationManager.resynchronize(); - item = provider.next(); + item = provider.read(); assertEquals("FOO", item); - item = provider.next(); + item = provider.read(); assertEquals("BAR", item); - item = provider.next(); + item = provider.read(); assertEquals("SPAM", item); endTransaction(); startNewTransaction(); BatchTransactionSynchronizationManager.resynchronize(); - item = provider.next(); + item = provider.read(); assertEquals("FOO", item); } @@ -144,7 +144,7 @@ public class StagingItemProviderTests extends new Object[] { new Long(id) }, String.class); assertEquals(StagingItemProcessor.NEW, before); - Object item = provider.next(); + Object item = provider.read(); assertEquals("FOO", item); endTransaction(); @@ -157,7 +157,7 @@ public class StagingItemProviderTests extends new Object[] { new Long(id) }, String.class); assertEquals(StagingItemProcessor.NEW, after); - item = provider.next(); + item = provider.read(); assertEquals("FOO", item); } } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTaskletTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTaskletTests.java index 196e18e60..9b99f8c25 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTaskletTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/ExceptionRestartableTaskletTests.java @@ -7,7 +7,7 @@ import junit.framework.TestCase; import org.easymock.MockControl; import org.springframework.batch.io.exception.BatchCriticalException; import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.provider.ListItemProvider; +import org.springframework.batch.item.provider.ListItemReader; import org.springframework.batch.repeat.context.RepeatContextSupport; import org.springframework.batch.repeat.synch.RepeatSynchronizationManager; import org.springframework.batch.sample.tasklet.ExceptionRestartableTasklet; @@ -38,7 +38,7 @@ public class ExceptionRestartableTaskletTests extends TestCase { module.setItemProcessor(itemProcessor); module.setThrowExceptionOnRecordNumber(ITER_COUNT + 1); - module.setItemProvider(new ListItemProvider(new ArrayList() {{ + module.setItemProvider(new ListItemReader(new ArrayList() {{ add("a"); add("b"); add("c"); diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/SimpleTradeTaskletTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/SimpleTradeTaskletTests.java index ed7ffea3a..efb2f23f6 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/SimpleTradeTaskletTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/tasklet/SimpleTradeTaskletTests.java @@ -4,7 +4,7 @@ import java.math.BigDecimal; import junit.framework.TestCase; -import org.springframework.batch.io.file.support.DefaultFlatFileInputSource; +import org.springframework.batch.io.file.support.DefaultFlatFileItemReader; import org.springframework.batch.sample.dao.TradeWriter; import org.springframework.batch.sample.domain.Trade; @@ -16,7 +16,7 @@ public class SimpleTradeTaskletTests extends TestCase { public void testReadAndProcess() throws Exception { //create input - DefaultFlatFileInputSource input = new DefaultFlatFileInputSource() { + DefaultFlatFileItemReader input = new DefaultFlatFileItemReader() { private boolean done = false; @@ -46,7 +46,7 @@ public class SimpleTradeTaskletTests extends TestCase { //create module SimpleTradeTasklet module = new SimpleTradeTasklet(); - module.setInputSource(input); + module.setItemReader(input); module.setTradeDao(writer); //call tested methods diff --git a/spring-batch-samples/src/test/resources/org/springframework/batch/sample/item/processor/staging-test-context.xml b/spring-batch-samples/src/test/resources/org/springframework/batch/sample/item/processor/staging-test-context.xml index 32792fa62..ea9ad0a49 100644 --- a/spring-batch-samples/src/test/resources/org/springframework/batch/sample/item/processor/staging-test-context.xml +++ b/spring-batch-samples/src/test/resources/org/springframework/batch/sample/item/processor/staging-test-context.xml @@ -24,7 +24,7 @@