diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/domain/Step.java b/spring-batch-core/src/main/java/org/springframework/batch/core/domain/Step.java index 862d42c67..79a0723e2 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/domain/Step.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/domain/Step.java @@ -19,10 +19,9 @@ import org.springframework.batch.io.exception.BatchCriticalException; /** * Batch domain interface representing the configuration of a step. As with the - * (@link Job), step configuration is meant to explicitly represent a the - * configuration of a step by a developer. This allows for the separation of - * what a developer configures from the myriad of concerns required for - * executing a job. + * (@link Job), a {@link Step} is meant to explicitly represent a the + * configuration of a step by a developer, but also the ability to execute the + * step. * * @author Dave Syer * @@ -30,7 +29,7 @@ import org.springframework.batch.io.exception.BatchCriticalException; public interface Step { /** - * @return the name of this step configuration. + * @return the name of this step. */ String getName(); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/domain/StepInstance.java b/spring-batch-core/src/main/java/org/springframework/batch/core/domain/StepInstance.java index 60bc70980..60efbccf8 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/domain/StepInstance.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/domain/StepInstance.java @@ -18,8 +18,8 @@ package org.springframework.batch.core.domain; import java.util.Properties; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; /** *

@@ -52,7 +52,7 @@ public class StepInstance extends Entity { private BatchStatus status; - private RestartData restartData = new GenericRestartData(new Properties()); + private StreamContext streamContext = new GenericStreamContext(new Properties()); private int stepExecutionCount = 0; @@ -87,12 +87,12 @@ public class StepInstance extends Entity { this.stepExecutionCount = stepExecutionCount; } - public RestartData getRestartData() { - return restartData; + public StreamContext getRestartData() { + return streamContext; } - public void setRestartData(RestartData restartData) { - this.restartData = restartData; + public void setRestartData(StreamContext streamContext) { + this.streamContext = streamContext; } public BatchStatus getStatus() { diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepInstanceTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepInstanceTests.java index eb62a81f0..c12bbeb08 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepInstanceTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepInstanceTests.java @@ -19,7 +19,7 @@ import java.util.Properties; import junit.framework.TestCase; -import org.springframework.batch.restart.GenericRestartData; +import org.springframework.batch.stream.GenericStreamContext; /** * @author Dave Syer @@ -51,7 +51,7 @@ public class StepInstanceTests extends TestCase { public void testGetRestartData() { assertNotNull(instance.getRestartData()); assertTrue(instance.getRestartData().getProperties().isEmpty()); - instance.setRestartData(new GenericRestartData(new Properties() {{ + instance.setRestartData(new GenericStreamContext(new Properties() {{ setProperty("foo", "bar"); }})); assertEquals("bar", instance.getRestartData().getProperties().getProperty("foo")); diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/job/simple/SimpleJob.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/job/simple/SimpleJob.java index a3f968330..99ae4003d 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/job/simple/SimpleJob.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/job/simple/SimpleJob.java @@ -129,9 +129,8 @@ public class SimpleJob extends JobSupport { private boolean shouldStart(StepInstance stepInstance, Step step) { if (stepInstance.getStatus() == BatchStatus.COMPLETED && step.isAllowStartIfComplete() == false) { - // step is complete, false should be returned, indicated that the - // step should - // not be started + // step is complete, false should be returned, indicating that the + // step should not be started return false; } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java index d53c964e1..93c722c73 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java @@ -34,7 +34,7 @@ import org.springframework.batch.core.repository.JobExecutionAlreadyRunningExcep import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.execution.repository.dao.JobDao; import org.springframework.batch.execution.repository.dao.StepDao; -import org.springframework.batch.restart.GenericRestartData; +import org.springframework.batch.stream.GenericStreamContext; import org.springframework.transaction.annotation.Isolation; import org.springframework.util.Assert; @@ -304,7 +304,7 @@ public class SimpleJobRepository implements JobRepository { StepInstance stepInstance = stepDao.createStep(job, step.getName()); // Ensure valid restart data is being returned. if (stepInstance.getRestartData() == null || stepInstance.getRestartData().getProperties() == null) { - stepInstance.setRestartData(new GenericRestartData(new Properties())); + stepInstance.setRestartData(new GenericStreamContext(new Properties())); } stepInstances.add(stepInstance); } @@ -327,7 +327,7 @@ public class SimpleJobRepository implements JobRepository { step.setStepExecutionCount(stepDao.getStepExecutionCount(step)); // Ensure valid restart data is being returned. if (step.getRestartData() == null || step.getRestartData().getProperties() == null) { - step.setRestartData(new GenericRestartData(new Properties())); + step.setRestartData(new GenericStreamContext(new Properties())); } stepInstances.add(step); } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcStepDao.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcStepDao.java index 8e2f341c4..da3907cee 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcStepDao.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcStepDao.java @@ -31,8 +31,8 @@ import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.core.domain.StepInstance; import org.springframework.batch.execution.repository.dao.JdbcJobDao.JobExecutionRowMapper; import org.springframework.batch.repeat.ExitStatus; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.PropertiesConverter; import org.springframework.beans.factory.InitializingBean; import org.springframework.dao.IncorrectResultSizeDataAccessException; @@ -161,7 +161,7 @@ public class JdbcStepDao implements StepDao, InitializingBean { StepInstance step = new StepInstance(new Long(rs.getLong(1))); step.setStatus(BatchStatus.getStatus(rs.getString(2))); - step.setRestartData(new GenericRestartData(PropertiesConverter.stringToProperties(rs.getString(3)))); + step.setRestartData(new GenericStreamContext(PropertiesConverter.stringToProperties(rs.getString(3)))); return step; } @@ -243,7 +243,7 @@ public class JdbcStepDao implements StepDao, InitializingBean { StepInstance step = new StepInstance(job, rs.getString(2), new Long(rs.getLong(1))); String status = rs.getString(3); step.setStatus(BatchStatus.getStatus(status)); - step.setRestartData(new GenericRestartData(PropertiesConverter.stringToProperties(rs.getString(3)))); + step.setRestartData(new GenericStreamContext(PropertiesConverter.stringToProperties(rs.getString(3)))); return step; } }; @@ -422,9 +422,9 @@ public class JdbcStepDao implements StepDao, InitializingBean { Assert.notNull(step.getId(), "Step Id cannot be null."); Properties restartProps = null; - RestartData restartData = step.getRestartData(); - if (restartData != null) { - restartProps = restartData.getProperties(); + StreamContext streamContext = step.getRestartData(); + if (streamContext != null) { + restartProps = streamContext.getProperties(); } Object[] parameters = new Object[] { step.getStatus().toString(), diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java index 46026df6b..48f36f4a2 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java @@ -25,7 +25,7 @@ import java.util.Set; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.core.domain.StepInstance; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.transaction.TransactionAwareProxyFactory; public class MapStepDao implements StepDao { @@ -80,8 +80,8 @@ public class MapStepDao implements StepDao { return new ArrayList(steps); } - public RestartData getRestartData(Long stepId) { - return (RestartData) restartsById.get(stepId); + public StreamContext getRestartData(Long stepId) { + return (StreamContext) restartsById.get(stepId); } public int getStepExecutionCount(StepInstance stepInstance) { @@ -99,8 +99,8 @@ public class MapStepDao implements StepDao { executions.add(stepExecution); } - public void saveRestartData(Long stepId, RestartData restartData) { - restartsById.put(stepId, restartData); + public void saveRestartData(Long stepId, StreamContext streamContext) { + restartsById.put(stepId, streamContext); } public List findStepExecutions(StepInstance step) { diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/simple/SimpleStepExecutor.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/simple/SimpleStepExecutor.java index 2e0cb2d97..a358c496e 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/simple/SimpleStepExecutor.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/simple/SimpleStepExecutor.java @@ -43,11 +43,11 @@ import org.springframework.batch.repeat.exception.handler.SimpleLimitExceptionHa import org.springframework.batch.repeat.policy.SimpleCompletionPolicy; import org.springframework.batch.repeat.support.RepeatTemplate; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.SimpleStatisticsService; import org.springframework.batch.statistics.StatisticsProvider; import org.springframework.batch.statistics.StatisticsService; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.transaction.ResourcelessTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionStatus; @@ -391,20 +391,20 @@ public class SimpleStepExecutor { /** * @param tasklet * @return restart data from the {@link Tasklet} if it is - * {@link Restartable} + * {@link ItemStream} */ - private RestartData getRestartData(Tasklet tasklet) { - if (tasklet instanceof Restartable) { - return ((Restartable) tasklet).getRestartData(); + private StreamContext getRestartData(Tasklet tasklet) { + if (tasklet instanceof ItemStream) { + return ((ItemStream) tasklet).getRestartData(); } else { return null; } } - private void restoreFromRestartData(Tasklet tasklet, RestartData restartData) { - if (tasklet instanceof Restartable && restartData != null) { - ((Restartable) tasklet).restoreFrom(restartData); + private void restoreFromRestartData(Tasklet tasklet, StreamContext streamContext) { + if (tasklet instanceof ItemStream && streamContext != null) { + ((ItemStream) tasklet).restoreFrom(streamContext); } } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTasklet.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTasklet.java index 0a07d4d75..40911af5f 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTasklet.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTasklet.java @@ -20,39 +20,39 @@ import java.util.Properties; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.PropertiesConverter; /** * An extension of {@link ItemOrientedTasklet} that delegates calls to - * {@link Restartable} to the reader and writer. + * {@link ItemStream} to the reader and writer. * * @see ItemReader * @see ItemWriter - * @see Restartable + * @see ItemStream * * @author Lucas Ward * @author Dave Syer * */ -public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implements Restartable { +public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implements ItemStream { /** - * @see Restartable#getRestartData() + * @see ItemStream#getRestartData() */ - public RestartData getRestartData() { + public StreamContext getRestartData() { - RestartData itemProviderRestartData = null; - RestartData itemProcessorRestartData = null; + StreamContext itemProviderRestartData = null; + StreamContext itemProcessorRestartData = null; - if (itemProvider instanceof Restartable) { - itemProviderRestartData = ((Restartable) itemProvider).getRestartData(); + if (itemProvider instanceof ItemStream) { + itemProviderRestartData = ((ItemStream) itemProvider).getRestartData(); } - if (itemWriter instanceof Restartable) { - itemProcessorRestartData = ((Restartable) itemWriter).getRestartData(); + if (itemWriter instanceof ItemStream) { + itemProcessorRestartData = ((ItemStream) itemWriter).getRestartData(); } RestartableItemOrientedTaskletRestartData restartData = new RestartableItemOrientedTaskletRestartData(itemProviderRestartData, itemProcessorRestartData); @@ -61,9 +61,9 @@ public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implemen } /** - * @see Restartable#restoreFrom(RestartData) + * @see ItemStream#restoreFrom(StreamContext) */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { if (data == null || data.getProperties() == null) return; @@ -76,33 +76,33 @@ public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implemen moduleRestartData = new RestartableItemOrientedTaskletRestartData(data.getProperties()); } - if (itemProvider instanceof Restartable) { - ((Restartable) itemProvider).restoreFrom(moduleRestartData.readerData); + if (itemProvider instanceof ItemStream) { + ((ItemStream) itemProvider).restoreFrom(moduleRestartData.readerData); } - if (itemWriter instanceof Restartable) { - ((Restartable) itemWriter).restoreFrom(moduleRestartData.writerData); + if (itemWriter instanceof ItemStream) { + ((ItemStream) itemWriter).restoreFrom(moduleRestartData.writerData); } } - private class RestartableItemOrientedTaskletRestartData implements RestartData { + private class RestartableItemOrientedTaskletRestartData implements StreamContext { private static final String READER_KEY = "DATA_PROVIDER"; private static final String WRITER_KEY = "DATA_PROCESSOR"; - private RestartData readerData; + private StreamContext readerData; - private RestartData writerData; + private StreamContext writerData; - public RestartableItemOrientedTaskletRestartData(RestartData providerData, RestartData writerData) { + public RestartableItemOrientedTaskletRestartData(StreamContext providerData, StreamContext writerData) { this.readerData = providerData; this.writerData = writerData; } public RestartableItemOrientedTaskletRestartData(Properties data) { - readerData = new GenericRestartData(PropertiesConverter + readerData = new GenericStreamContext(PropertiesConverter .stringToProperties(data.getProperty(READER_KEY))); - writerData = new GenericRestartData(PropertiesConverter.stringToProperties(data + writerData = new GenericStreamContext(PropertiesConverter.stringToProperties(data .getProperty(WRITER_KEY))); } diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/MockStepDao.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/MockStepDao.java index c0acbf601..10bce2e05 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/MockStepDao.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/MockStepDao.java @@ -22,7 +22,7 @@ import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.core.domain.StepInstance; import org.springframework.batch.execution.repository.dao.StepDao; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; public class MockStepDao implements StepDao { @@ -46,7 +46,7 @@ public class MockStepDao implements StepDao { return newSteps; } - public RestartData getRestartData(Long stepId) { + public StreamContext getRestartData(Long stepId) { return null; } @@ -57,7 +57,7 @@ public class MockStepDao implements StepDao { public void save(StepExecution stepExecution) { } - public void saveRestartData(Long stepId, RestartData restartData) { + public void saveRestartData(Long stepId, StreamContext streamContext) { } public void update(StepInstance step) { diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java index 729983a01..3bb0d0dc5 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java @@ -37,7 +37,7 @@ import org.springframework.batch.core.domain.StepSupport; import org.springframework.batch.core.repository.BatchRestartException; import org.springframework.batch.execution.repository.dao.JobDao; import org.springframework.batch.execution.repository.dao.StepDao; -import org.springframework.batch.restart.GenericRestartData; +import org.springframework.batch.stream.GenericStreamContext; /* * Test SimpleJobRepository. The majority of test cases are tested using EasyMock, @@ -408,7 +408,7 @@ public class SimpleJobRepositoryTests extends TestCase { databaseStep1.setRestartData(null); stepDaoControl.setReturnValue(databaseStep1); stepDao.createStep(databaseJob, "TestStep2"); - databaseStep2.setRestartData(new GenericRestartData(null)); + databaseStep2.setRestartData(new GenericStreamContext(null)); stepDaoControl.setReturnValue(databaseStep2); jobDao.save(new JobExecution(databaseJob)); jobDaoControl.setMatcher(new ArgumentsMatcher(){ @@ -443,7 +443,7 @@ public class SimpleJobRepositoryTests extends TestCase { stepDao.getStepExecutionCount(databaseStep1); stepDaoControl.setReturnValue(1); stepDao.findStep(databaseJob, "TestStep2"); - databaseStep2.setRestartData(new GenericRestartData(null)); + databaseStep2.setRestartData(new GenericStreamContext(null)); stepDaoControl.setReturnValue(databaseStep2); stepDao.getStepExecutionCount(databaseStep2); stepDaoControl.setReturnValue(1); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java index 71e238156..a81378802 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java @@ -30,8 +30,8 @@ import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.core.domain.StepInstance; import org.springframework.batch.core.runtime.ExitCodeExceptionClassifier; import org.springframework.batch.repeat.ExitStatus; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.dao.OptimisticLockingFailureException; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; import org.springframework.util.ClassUtils; @@ -152,13 +152,13 @@ public abstract class AbstractStepDaoTests extends AbstractTransactionalDataSour step1.setStatus(BatchStatus.COMPLETED); Properties data = new Properties(); data.setProperty("restart.key1", "restartData"); - RestartData restartData = new GenericRestartData(data); - step1.setRestartData(restartData); + StreamContext streamContext = new GenericStreamContext(data); + step1.setRestartData(streamContext); stepDao.update(step1); StepInstance tempStep = stepDao.findStep(jobInstance, step1.getName()); assertEquals(tempStep, step1); assertEquals(tempStep.getRestartData().getProperties().toString(), - restartData.getProperties().toString()); + streamContext.getProperties().toString()); } public void testSaveStepExecution(){ diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java index 753bc010a..3dff335ce 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java @@ -27,8 +27,8 @@ import org.springframework.batch.core.domain.JobParameters; import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.core.domain.StepInstance; import org.springframework.batch.execution.repository.dao.MapStepDao; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; public class MapStepDaoTests extends TestCase { @@ -111,13 +111,13 @@ public class MapStepDaoTests extends TestCase { step.setStatus(BatchStatus.COMPLETED); Properties data = new Properties(); data.setProperty("restart.key1", "restartData"); - RestartData restartData = new GenericRestartData(data); - step.setRestartData(restartData); + StreamContext streamContext = new GenericStreamContext(data); + step.setRestartData(streamContext); dao.update(step); StepInstance tempStep = dao.findStep(job, step.getName()); assertEquals(tempStep, step); assertEquals(tempStep.getRestartData().getProperties().toString(), - restartData.getProperties().toString()); + streamContext.getProperties().toString()); } } diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java index 2c16bede2..750f70ebc 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java @@ -50,10 +50,10 @@ import org.springframework.batch.repeat.exception.handler.ExceptionHandler; import org.springframework.batch.repeat.interceptor.RepeatInterceptorAdapter; import org.springframework.batch.repeat.policy.SimpleCompletionPolicy; import org.springframework.batch.repeat.support.RepeatTemplate; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; import org.springframework.batch.statistics.StatisticsService; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.PropertiesConverter; import org.springframework.batch.support.transaction.ResourcelessTransactionManager; @@ -455,7 +455,7 @@ public class SimpleStepExecutorTests extends TestCase { assertEquals(0, map.size()); } - private class MockRestartableTasklet implements Tasklet, Restartable { + private class MockRestartableTasklet implements Tasklet, ItemStream { private boolean getRestartDataCalled = false; @@ -465,12 +465,12 @@ public class SimpleStepExecutorTests extends TestCase { return ExitStatus.FINISHED; } - public RestartData getRestartData() { + public StreamContext getRestartData() { getRestartDataCalled = true; return null; } - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { restoreFromCalled = true; } diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTaskletTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTaskletTests.java index 786c15c25..81f7525c2 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTaskletTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/tasklet/RestartableItemOrientedTaskletTests.java @@ -22,9 +22,9 @@ import junit.framework.TestCase; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.PropertiesConverter; /** @@ -32,9 +32,9 @@ import org.springframework.batch.support.PropertiesConverter; */ public class RestartableItemOrientedTaskletTests extends TestCase { - private static class MockProvider implements ItemReader, Restartable { + private static class MockProvider implements ItemReader, ItemStream { - RestartData data = new RestartData() { + StreamContext data = new StreamContext() { public Properties getProperties() { return PropertiesConverter.stringToProperties("a=b"); @@ -46,11 +46,11 @@ public class RestartableItemOrientedTaskletTests extends TestCase { return null; } - public RestartData getRestartData() { + public StreamContext getRestartData() { return data; } - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { // restart data should be same as returned by getRestartData assertEquals(this.data.getProperties(), data.getProperties()); } @@ -64,9 +64,9 @@ public class RestartableItemOrientedTaskletTests extends TestCase { } - private static class MockWriter implements ItemWriter, Restartable { + private static class MockWriter implements ItemWriter, ItemStream { - RestartData data = new RestartData() { + StreamContext data = new StreamContext() { public Properties getProperties() { return PropertiesConverter.stringToProperties("x=y"); } @@ -75,11 +75,11 @@ public class RestartableItemOrientedTaskletTests extends TestCase { public void write(Object data) { } - public RestartData getRestartData() { + public StreamContext getRestartData() { return data; } - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { // restart data should be same as returned by getRestartData assertEquals(this.data.getProperties(), data.getProperties()); } @@ -107,7 +107,7 @@ public class RestartableItemOrientedTaskletTests extends TestCase { module.setItemWriter(itemWriter); // get restart data - RestartData data = module.getRestartData(); + StreamContext data = module.getRestartData(); assertNotNull(data); // restore from restart data (see asserts in mock classes) module.restoreFrom(data); @@ -125,9 +125,9 @@ public class RestartableItemOrientedTaskletTests extends TestCase { module.setItemWriter(itemWriter); // get restart data - RestartData data = module.getRestartData(); + StreamContext data = module.getRestartData(); assertNotNull(data); - data = new GenericRestartData(data.getProperties()); + data = new GenericStreamContext(data.getProperties()); // restore from restart data (see asserts in mock classes) module.restoreFrom(data); } @@ -140,7 +140,7 @@ public class RestartableItemOrientedTaskletTests extends TestCase { module.setItemWriter(null); // get restart data - RestartData data = module.getRestartData(); + StreamContext data = module.getRestartData(); assertNotNull(data); // restore from restart data (see asserts in mock classes) module.restoreFrom(data); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorItemReader.java index 188bba5b0..ce493babd 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/HibernateCursorItemReader.java @@ -28,9 +28,9 @@ import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.item.reader.AbstractItemReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.transaction.support.TransactionSynchronization; @@ -57,7 +57,7 @@ import org.springframework.util.StringUtils; * @author Robert Kasanicky * @author Dave Syer */ -public class HibernateCursorItemReader extends AbstractItemReader implements ItemReader, Restartable, +public class HibernateCursorItemReader extends AbstractItemReader implements ItemReader, ItemStream, Skippable, InitializingBean, DisposableBean, ResourceLifecycle { private static final String RESTART_DATA_ROW_NUMBER_KEY = ClassUtils @@ -187,20 +187,20 @@ public class HibernateCursorItemReader extends AbstractItemReader implements Ite /** * @return the current row number wrapped as RestartData */ - public RestartData getRestartData() { + public StreamContext getRestartData() { Properties props = new Properties(); props.setProperty(RESTART_DATA_ROW_NUMBER_KEY, ""+currentProcessedRow); String skipped = skippedRows.toString(); props.setProperty(SKIPPED_ROWS, skipped.substring(1, skipped.length() - 1)); - return new GenericRestartData(props); + return new GenericStreamContext(props); } /** * Sets the cursor to the received row number. */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { Assert .state(!initialized, "Cannot restore when already intialized. Call close() first before restore()"); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorItemReader.java index 2f18b1018..0a8e2e2c6 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/cursor/JdbcCursorItemReader.java @@ -33,10 +33,10 @@ import org.springframework.batch.io.Skippable; import org.springframework.batch.io.support.AbstractTransactionalIoSource; import org.springframework.batch.item.KeyedItemReader; import org.springframework.batch.item.ResourceLifecycle; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.dao.DataAccessException; @@ -118,7 +118,7 @@ import org.springframework.util.StringUtils; */ public class JdbcCursorItemReader extends AbstractTransactionalIoSource implements KeyedItemReader, ResourceLifecycle, DisposableBean, - InitializingBean, Restartable, StatisticsProvider, Skippable { + InitializingBean, ItemStream, StatisticsProvider, Skippable { private static Log log = LogFactory.getLog(JdbcCursorItemReader.class); @@ -406,11 +406,11 @@ public class JdbcCursorItemReader extends AbstractTransactionalIoSource * * @see org.springframework.batch.restart.Restartable#getRestartData() */ - public RestartData getRestartData() { + public StreamContext getRestartData() { String skipped = skippedRows.toString(); Properties statistics = getStatistics(); statistics.setProperty(SKIPPED_ROWS, skipped.substring(1,skipped.length()-1)); - return new GenericRestartData(statistics); + return new GenericStreamContext(statistics); } /* @@ -418,7 +418,7 @@ public class JdbcCursorItemReader extends AbstractTransactionalIoSource * * @see org.springframework.batch.restart.Restartable#restoreFrom(org.springframework.batch.restart.RestartData) */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { Assert.state(!initialized); if (data == null) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryItemReader.java index 2f37d3bcc..38014d226 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/DrivingQueryItemReader.java @@ -22,8 +22,8 @@ import org.springframework.batch.io.support.AbstractTransactionalIoSource; import org.springframework.batch.item.KeyedItemReader; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; @@ -52,7 +52,7 @@ import org.springframework.util.Assert; */ public class DrivingQueryItemReader extends AbstractTransactionalIoSource implements KeyedItemReader, ResourceLifecycle, InitializingBean, - DisposableBean, Restartable { + DisposableBean, ItemStream { private boolean initialized = false; @@ -171,7 +171,7 @@ public class DrivingQueryItemReader extends AbstractTransactionalIoSource * @throws IllegalStateException * if the input source has already been initialized. */ - public final void restoreFrom(RestartData data) { + public final void restoreFrom(StreamContext data) { Assert.notNull(data, "RestartData must not be null."); Assert.notNull(data.getProperties(), @@ -192,7 +192,7 @@ public class DrivingQueryItemReader extends AbstractTransactionalIoSource } } - public RestartData getRestartData() { + public StreamContext getRestartData() { return keyGenerator.getKeyAsRestartData(getCurrentKey()); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/KeyGenerator.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/KeyGenerator.java index 719be10de..94a353154 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/KeyGenerator.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/KeyGenerator.java @@ -2,7 +2,7 @@ package org.springframework.batch.io.driving; import java.util.List; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; /** * Strategy interface used to generate keys in driving query input. @@ -24,7 +24,7 @@ public interface KeyGenerator { * @return a list of keys. * @throws IllegalArgumentException is restartData is null. */ - List restoreKeys(RestartData restartData); + List restoreKeys(StreamContext streamContext); /** * Return the provided key as restart data. @@ -34,5 +34,5 @@ public interface KeyGenerator { * @throws IllegalArgumentException if key is null. * @throws IllegalArgumentException if key is an incompatible type. */ - RestartData getKeyAsRestartData(Object key); + StreamContext getKeyAsRestartData(Object key); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapper.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapper.java index 832211bde..9f123403a 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapper.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapper.java @@ -12,7 +12,7 @@ import java.util.Map; import java.util.Properties; import java.util.Map.Entry; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; import org.springframework.core.CollectionFactory; import org.springframework.jdbc.core.ColumnMapRowMapper; import org.springframework.jdbc.core.PreparedStatementSetter; @@ -38,9 +38,9 @@ public class ColumnMapRestartDataRowMapper extends ColumnMapRowMapper implements static final String KEY = ClassUtils.getQualifiedName(ColumnMapRestartDataRowMapper.class) + ".KEY."; - public PreparedStatementSetter createSetter(RestartData restartData) { + public PreparedStatementSetter createSetter(StreamContext streamContext) { - ColumnMapRestartData columnData = new ColumnMapRestartData(restartData.getProperties()); + ColumnMapRestartData columnData = new ColumnMapRestartData(streamContext.getProperties()); List columns = new ArrayList(); for (Iterator iterator = columnData.keys.values().iterator(); iterator.hasNext();) { @@ -51,7 +51,7 @@ public class ColumnMapRestartDataRowMapper extends ColumnMapRowMapper implements return new ArgPreparedStatementSetter(columns.toArray()); } - public RestartData createRestartData(Object key) { + public StreamContext createRestartData(Object key) { Assert.isInstanceOf(Map.class, key, "Key must be of type Map."); Map keys = (Map)key; @@ -60,7 +60,7 @@ public class ColumnMapRestartDataRowMapper extends ColumnMapRowMapper implements } - private static class ColumnMapRestartData implements RestartData{ + private static class ColumnMapRestartData implements StreamContext{ private final Map keys; 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 c71ee530c..d9ac8f203 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 @@ -5,8 +5,8 @@ import java.util.Properties; 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; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.orm.ibatis.SqlMapClientTemplate; import org.springframework.util.Assert; @@ -44,19 +44,19 @@ public class IbatisKeyGenerator implements KeyGenerator { * * @see org.springframework.batch.restart.Restartable#getRestartData() */ - public RestartData getKeyAsRestartData(Object key) { + public StreamContext getKeyAsRestartData(Object key) { Properties props = new Properties(); props.setProperty(RESTART_KEY, key.toString()); - return new GenericRestartData(props); + return new GenericStreamContext(props); } /** * Restore the keys list given the provided restart data. * - * @see org.springframework.batch.io.driving.DrivingQueryItemReader#restoreKeys(org.springframework.batch.restart.RestartData) + * @see org.springframework.batch.io.driving.DrivingQueryItemReader#restoreKeys(org.springframework.batch.stream.StreamContext) */ - public List restoreKeys(RestartData data) { + public List restoreKeys(StreamContext data) { Properties props = data.getProperties(); Object key = props.getProperty(RESTART_KEY); 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 906993caa..62945631c 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 @@ -20,7 +20,7 @@ import java.util.List; import org.springframework.batch.io.driving.DrivingQueryItemReader; import org.springframework.batch.io.driving.KeyGenerator; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -80,14 +80,14 @@ public class MultipleColumnJdbcKeyGenerator implements /* (non-Javadoc) * @see org.springframework.batch.io.sql.scratch.AbstractDrivingQueryItemReader#restoreKeys(org.springframework.batch.restart.RestartData) */ - public List restoreKeys(RestartData restartData) { + public List restoreKeys(StreamContext streamContext) { Assert.state(keyMapper != null, "KeyMapper must not be null."); Assert.state(StringUtils.hasText(restartSql), "The RestartQuery must not be null or empty" + " in order to restart."); - if (restartData.getProperties() != null) { - return jdbcTemplate.query(restartSql, keyMapper.createSetter(restartData), keyMapper); + if (streamContext.getProperties() != null) { + return jdbcTemplate.query(restartSql, keyMapper.createSetter(streamContext), keyMapper); } return new ArrayList(); @@ -96,7 +96,7 @@ public class MultipleColumnJdbcKeyGenerator implements /* (non-Javadoc) * @see org.springframework.batch.restart.Restartable#getRestartData() */ - public RestartData getKeyAsRestartData(Object key) { + public StreamContext getKeyAsRestartData(Object key) { Assert.state(keyMapper != null, "RestartDataConverter must not be null."); return keyMapper.createRestartData(key); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/RestartDataRowMapper.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/RestartDataRowMapper.java index 6bf74acb1..c486f525a 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/RestartDataRowMapper.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/RestartDataRowMapper.java @@ -15,7 +15,7 @@ */ package org.springframework.batch.io.driving.support; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; @@ -40,14 +40,14 @@ public interface RestartDataRowMapper extends RowMapper { * @return ResartData representing the composite key. * @throws IllegalArgumentException if key is null or of an unsupported type. */ - public RestartData createRestartData(Object key); + public StreamContext createRestartData(Object key); /** * Given the provided restart data, return a PreparedStatementSeter that can * be used as parameters to a JdbcTemplate. * - * @param restartData + * @param streamContext * @return an array of objects that can be used as arguments to a JdbcTemplate. */ - public PreparedStatementSetter createSetter(RestartData restartData); + public PreparedStatementSetter createSetter(StreamContext streamContext); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGenerator.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGenerator.java index 669951ce0..91748c748 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGenerator.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGenerator.java @@ -21,8 +21,8 @@ import java.util.Properties; import org.apache.commons.lang.ClassUtils; import org.springframework.batch.io.driving.KeyGenerator; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.SingleColumnRowMapper; @@ -94,34 +94,34 @@ public class SingleColumnJdbcKeyGenerator implements KeyGenerator { * @see KeyGenerator#getKeyAsRestartData() * @throws IllegalArgumentException if key is null. */ - public RestartData getKeyAsRestartData(Object key) { + public StreamContext getKeyAsRestartData(Object key) { Assert.notNull(key, "The key must not be null."); Properties props = new Properties(); props.setProperty(RESTART_KEY, key.toString()); - return new GenericRestartData(props); + return new GenericStreamContext(props); } /** - * Return the remaining to be processed for the provided {@link RestartData}. + * Return the remaining to be processed for the provided {@link StreamContext}. * The RestartData attempting to be restored from must have been obtained from the * same KeyGenerationStrategy as the one * being restored from otherwise it is invalid. * - * @param RestartData obtained by calling getRestartData during a previous + * @param StreamContext obtained by calling getRestartData during a previous * run. * @throws IllegalStateException if restart sql statement is null. * @throws IllegalArgumentException if restart data is null. - * @see KeyGenerator#restoreKeys(org.springframework.batch.restart.RestartData) + * @see KeyGenerator#restoreKeys(org.springframework.batch.stream.StreamContext) */ - public List restoreKeys(RestartData restartData) { + public List restoreKeys(StreamContext streamContext) { - Assert.notNull(restartData, "The restart data must not be null."); + Assert.notNull(streamContext, "The restart data must not be null."); Assert.state(StringUtils.hasText(restartSql), "The RestartQuery must not be null or empty" + " in order to restart."); - String lastProcessedKey = restartData.getProperties().getProperty(RESTART_KEY); + String lastProcessedKey = streamContext.getProperties().getProperty(RESTART_KEY); if (lastProcessedKey != null) { return jdbcTemplate.query(restartSql, new Object[] { lastProcessedKey }, keyMapper); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/DefaultFlatFileItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/DefaultFlatFileItemReader.java index d493bac9a..ba8ac1e75 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/DefaultFlatFileItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/DefaultFlatFileItemReader.java @@ -25,10 +25,10 @@ import org.apache.commons.logging.LogFactory; import org.springframework.batch.io.Skippable; import org.springframework.batch.io.file.separator.LineReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationAdapter; @@ -42,7 +42,7 @@ import org.springframework.transaction.support.TransactionSynchronizationAdapter * @author Tomas Slanina * @author Robert Kasanicky */ -public class DefaultFlatFileItemReader extends SimpleFlatFileItemReader implements Skippable, Restartable, +public class DefaultFlatFileItemReader extends SimpleFlatFileItemReader implements Skippable, ItemStream, StatisticsProvider { private static Log log = LogFactory.getLog(DefaultFlatFileItemReader.class); @@ -77,7 +77,7 @@ public class DefaultFlatFileItemReader extends SimpleFlatFileItemReader implemen * * @param restartData restartData information */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { if (data==null || data.getProperties() == null || @@ -104,8 +104,8 @@ public class DefaultFlatFileItemReader extends SimpleFlatFileItemReader implemen * current Line Count which can be used to re initialise the batch job in * case of restart. */ - public RestartData getRestartData() { - return new GenericRestartData(getStatistics()); + public StreamContext getRestartData() { + return new GenericStreamContext(getStatistics()); } /** diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/FlatFileItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/FlatFileItemWriter.java index 137384479..e47228ae3 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/FlatFileItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/FlatFileItemWriter.java @@ -34,10 +34,10 @@ import org.springframework.batch.io.support.AbstractTransactionalIoSource; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.item.writer.ItemTransformer; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; @@ -61,7 +61,7 @@ import org.springframework.util.Assert; * @author Dave Syer */ public class FlatFileItemWriter extends AbstractTransactionalIoSource implements - ItemWriter, ResourceLifecycle, Restartable, StatisticsProvider, InitializingBean, + ItemWriter, ResourceLifecycle, ItemStream, StatisticsProvider, InitializingBean, DisposableBean { private static final String LINE_SEPARATOR = System.getProperty("line.separator"); @@ -76,7 +76,7 @@ public class FlatFileItemWriter extends AbstractTransactionalIoSource implements private Properties statistics = new Properties(); - private RestartData restartData = new GenericRestartData(new Properties()); + private StreamContext streamContext = new GenericStreamContext(new Properties()); private OutputState state = new OutputState(); @@ -258,19 +258,19 @@ public class FlatFileItemWriter extends AbstractTransactionalIoSource implements } /** - * @see Restartable#getRestartData() + * @see ItemStream#getRestartData() */ - public RestartData getRestartData() { + public StreamContext getRestartData() { final OutputState os = getOutputState(); - restartData.getProperties().setProperty(RESTART_DATA_NAME, String.valueOf(os.position())); - return restartData; + streamContext.getProperties().setProperty(RESTART_DATA_NAME, String.valueOf(os.position())); + return streamContext; } /** - * @see Restartable#restoreFrom(RestartData) + * @see ItemStream#restoreFrom(StreamContext) */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { if (data == null) return; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemReader.java index 11dee7b66..9a18e9532 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemReader.java @@ -21,10 +21,10 @@ import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.item.reader.AbstractItemReader; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; @@ -44,7 +44,7 @@ import org.springframework.util.Assert; * @author Robert Kasanicky */ public class StaxEventItemReader extends AbstractItemReader implements ItemReader, ResourceLifecycle, - Skippable, Restartable, StatisticsProvider, InitializingBean, DisposableBean { + Skippable, ItemStream, StatisticsProvider, InitializingBean, DisposableBean { public static final String READ_COUNT_STATISTICS_NAME = "StaxEventReaderItemReader.readCount"; @@ -192,26 +192,26 @@ public class StaxEventItemReader extends AbstractItemReader implements ItemReade /** * @return wrapped count of records read so far. - * @see Restartable#getRestartData() + * @see ItemStream#getRestartData() */ - public RestartData getRestartData() { + public StreamContext getRestartData() { Properties restartData = new Properties(); restartData.setProperty(RESTART_DATA_NAME, String.valueOf(currentRecordCount)); - return new GenericRestartData(restartData); + return new GenericStreamContext(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. + * @param StreamContext that holds the line count from the last commit. * @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) { + public void restoreFrom(StreamContext data) { Assert.state(!initialized); if (data == null || data.getProperties() == null || data.getProperties().getProperty(RESTART_DATA_NAME) == null) { return; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemWriter.java index 799b47b27..2ddfc4640 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/xml/StaxEventItemWriter.java @@ -19,10 +19,10 @@ import org.springframework.batch.io.xml.stax.NoStartEndDocumentStreamWriter; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.ResourceLifecycle; import org.springframework.batch.repeat.synch.BatchTransactionSynchronizationManager; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; @@ -42,7 +42,7 @@ import org.springframework.util.CollectionUtils; * @author Peter Zozom * */ -public class StaxEventItemWriter implements ItemWriter, ResourceLifecycle, Restartable, +public class StaxEventItemWriter implements ItemWriter, ResourceLifecycle, ItemStream, StatisticsProvider, InitializingBean, DisposableBean { // default encoding @@ -380,23 +380,23 @@ public class StaxEventItemWriter implements ItemWriter, ResourceLifecycle, Resta /** * Get the restart data. * @return the restart data - * @see org.springframework.batch.restart.Restartable#getRestartData() + * @see org.springframework.batch.stream.ItemStream#getRestartData() */ - public RestartData getRestartData() { + public StreamContext getRestartData() { Properties properties = new Properties(); properties.setProperty(RESTART_DATA_NAME, String.valueOf(getPosition())); - return new GenericRestartData(properties); + return new GenericStreamContext(properties); } /** * Restore processing from provided restart data. * @param data the restart data - * @see org.springframework.batch.restart.Restartable#restoreFrom(org.springframework.batch.restart.RestartData) + * @see org.springframework.batch.stream.ItemStream#restoreFrom(org.springframework.batch.stream.StreamContext) */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { long startAtPosition = 0; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/reader/DelegatingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/reader/DelegatingItemReader.java index 6678ea358..60bf9e7b9 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/reader/DelegatingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/reader/DelegatingItemReader.java @@ -18,8 +18,8 @@ package org.springframework.batch.item.reader; 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.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; @@ -30,7 +30,7 @@ import org.springframework.util.Assert; * * @author Dave Syer */ -public class DelegatingItemReader extends AbstractItemReader implements Restartable, Skippable, InitializingBean{ +public class DelegatingItemReader extends AbstractItemReader implements ItemStream, Skippable, InitializingBean{ private ItemReader inputSource; @@ -47,27 +47,27 @@ public class DelegatingItemReader extends AbstractItemReader implements Restarta } /** - * @see Restartable#getRestartData() + * @see ItemStream#getRestartData() * @throws IllegalStateException if the parent template is not itself - * {@link Restartable}. + * {@link ItemStream}. */ - public RestartData getRestartData() { - if (!(inputSource instanceof Restartable)) { + public StreamContext getRestartData() { + if (!(inputSource instanceof ItemStream)) { throw new IllegalStateException("Input Template is not Restartable"); } - return ((Restartable) inputSource).getRestartData(); + return ((ItemStream) inputSource).getRestartData(); } /** - * @see Restartable#restoreFrom(RestartData) + * @see ItemStream#restoreFrom(StreamContext) * @throws IllegalStateException if the parent template is not itself - * {@link Restartable}. + * {@link ItemStream}. */ - public void restoreFrom(RestartData data) { - if (!(inputSource instanceof Restartable)) { + public void restoreFrom(StreamContext data) { + if (!(inputSource instanceof ItemStream)) { throw new IllegalStateException("Input Template is not Restartable"); } - ((Restartable) inputSource).restoreFrom(data); + ((ItemStream) inputSource).restoreFrom(data); } /** diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/CompositeItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/CompositeItemWriter.java index 1776f2b40..9cf54a6d8 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/CompositeItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/CompositeItemWriter.java @@ -8,16 +8,16 @@ import java.util.Properties; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; /** * Runs a collection of ItemProcessors in fixed-order sequence. * * @author Robert Kasanicky */ -public class CompositeItemWriter implements ItemWriter, Restartable { +public class CompositeItemWriter implements ItemWriter, ItemStream { private static final String SEPARATOR = "#"; @@ -36,25 +36,25 @@ public class CompositeItemWriter implements ItemWriter, Restartable { * Compound restart data of all injected (Restartable) ItemProcessors, * property keys are prefixed with list index of the ItemProcessor. */ - public RestartData getRestartData() { + public StreamContext getRestartData() { Properties props = createCompoundProperties(new PropertiesExtractor() { public Properties extractProperties(Object o) { - if (o instanceof Restartable) { - return ((Restartable) o).getRestartData().getProperties(); + if (o instanceof ItemStream) { + return ((ItemStream) o).getRestartData().getProperties(); } else { return null; } } }); - return new GenericRestartData(props); + return new GenericStreamContext(props); } /** * @param data contains values of restart data, property keys are expected * to be prefixed with list index of the ItemProcessor. */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { if (data == null || data.getProperties() == null) { // do nothing return; @@ -64,8 +64,8 @@ public class CompositeItemWriter implements ItemWriter, Restartable { // iterators would make the loop below less readable for (int i = 0; i < delegates.size(); i++) { - if (delegates.get(i) instanceof Restartable) { - ((Restartable) delegates.get(i)).restoreFrom((RestartData) restartDataList.get(i)); + if (delegates.get(i) instanceof ItemStream) { + ((ItemStream) delegates.get(i)).restoreFrom((StreamContext) restartDataList.get(i)); } } @@ -81,7 +81,7 @@ public class CompositeItemWriter implements ItemWriter, Restartable { private List parseProperties(Properties props) { List restartDataList = new ArrayList(delegates.size()); for (int i = 0; i < delegates.size(); i++) { - restartDataList.add(new GenericRestartData(new Properties())); + restartDataList.add(new GenericStreamContext(new Properties())); } for (Iterator iterator = props.entrySet().iterator(); iterator.hasNext();) { @@ -90,7 +90,7 @@ public class CompositeItemWriter implements ItemWriter, Restartable { String value = (String) entry.getValue(); int separatorIndex = key.indexOf(SEPARATOR); int i = Integer.valueOf(key.substring(0, separatorIndex)).intValue(); - ((RestartData) restartDataList.get(i)).getProperties() + ((StreamContext) restartDataList.get(i)).getProperties() .setProperty(key.substring(separatorIndex + 1), value); } return restartDataList; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/DelegatingItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/DelegatingItemWriter.java index 98933e9cf..73b2be94c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/DelegatingItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/writer/DelegatingItemWriter.java @@ -4,20 +4,20 @@ import java.util.Properties; import org.springframework.batch.io.Skippable; import org.springframework.batch.item.ItemWriter; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; /** - * Simple wrapper around {@link ItemWriter} providing {@link Restartable} where + * Simple wrapper around {@link ItemWriter} providing {@link ItemStream} where * the {@link ItemWriter} does. To make sure * * @author Dave Syer * @author Robert Kasanicky */ -public class DelegatingItemWriter implements ItemWriter, Restartable, Skippable, InitializingBean { +public class DelegatingItemWriter implements ItemWriter, ItemStream, Skippable, InitializingBean { private ItemWriter writer; @@ -50,29 +50,29 @@ public class DelegatingItemWriter implements ItemWriter, Restartable, Skippable, } /** - * @see Restartable#getRestartData() + * @see ItemStream#getRestartData() */ - public RestartData getRestartData() { + public StreamContext getRestartData() { Assert.state(writer != null, "Source must not be null."); - if (writer instanceof Restartable) { - return ((Restartable) writer).getRestartData(); + if (writer instanceof ItemStream) { + return ((ItemStream) writer).getRestartData(); } else { - return new GenericRestartData(new Properties()); + return new GenericStreamContext(new Properties()); } } /** - * @see Restartable#restoreFrom(RestartData) + * @see ItemStream#restoreFrom(StreamContext) */ - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { Assert.state(writer != null, "Source must not be null."); - if (writer instanceof Restartable) { - ((Restartable) writer).restoreFrom(data); + if (writer instanceof ItemStream) { + ((ItemStream) writer).restoreFrom(data); } } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/Restartable.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/Restartable.java deleted file mode 100644 index b97db108b..000000000 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/Restartable.java +++ /dev/null @@ -1,56 +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.restart; - -/** - *

Marker interface defining a contract for periodically storing - * state and restoring from that state should an error occur. - *

- * - *

The state that is stored is represented as {@link RestartData} - * which enforces a requirement that any restart data can be represented - * by a Properties object. In general, the contract is that RestartData - * that is returned via the getRestartData method will be given back to - * the restoreFrom method, exactly as it was provided. However, since - * it is primarily stored in a database, there is almost no way to know - * the whether a blank column in the database refers to null data, - * null properties, or empty properties. Therefore, any class implementing - * this interface should assume that no restart data is equivalent to - * data with empty Properties. - *

- * - * @author Lucas Ward - * - */ -public interface Restartable { - - /** - * Get RestartData representing this object's current state. Ideally, - * if no state should be stored, RestartData.getProperties should return - * an empty Properties object. - * - * @return RestartData representing current state. - */ - RestartData getRestartData(); - - /** - * Restart state given the provided RestartData. - * - * @param data - */ - void restoreFrom(RestartData data); -} diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/GenericRestartData.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/GenericStreamContext.java similarity index 83% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/GenericRestartData.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/GenericStreamContext.java index 3a260cd6d..7e8012eaf 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/GenericRestartData.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/GenericStreamContext.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package org.springframework.batch.restart; +package org.springframework.batch.stream; import java.util.Properties; -public class GenericRestartData implements RestartData { +public class GenericStreamContext implements StreamContext { private Properties data; - public GenericRestartData(Properties data){ + public GenericStreamContext(Properties data){ this.data = data; } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/ItemStream.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/ItemStream.java new file mode 100644 index 000000000..30f54da92 --- /dev/null +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/ItemStream.java @@ -0,0 +1,53 @@ +/* + * 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.stream; + +/** + *

+ * Marker interface defining a contract for periodically storing state and + * restoring from that state should an error occur. + *

+ * + *

+ * The state that is stored is represented as {@link StreamContext} which + * enforces a requirement that any restart data can be represented by a + * Properties object. In general, the contract is that {@link StreamContext} + * that is returned via the {@link #getRestartData()} method will be given back + * to the {@link #restoreFrom(StreamContext)} method, exactly as it was + * provided. + *

+ * + * @author Lucas Ward + * + */ +public interface ItemStream { + + /** + * Get {@link StreamContext} representing this object's current state. + * Should not return null even if there is no state. + * + * @return {@link StreamContext} representing current state. + */ + StreamContext getRestartData(); + + /** + * Restart state given the provided {@link StreamContext}. + * + * @param data + */ + void restoreFrom(StreamContext data); +} diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/RestartData.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/StreamContext.java similarity index 91% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/RestartData.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/StreamContext.java index 475ac1982..36e1f04a1 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/RestartData.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/StreamContext.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package org.springframework.batch.restart; +package org.springframework.batch.stream; import java.util.Properties; /** * Interface for representing data necessary to recover state after restart. */ -public interface RestartData { +public interface StreamContext { Properties getProperties(); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/package.html b/spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/package.html similarity index 100% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/restart/package.html rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/stream/package.html diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryItemReaderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryItemReaderTests.java index 906cd0529..c768808a0 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryItemReaderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/DrivingQueryItemReaderTests.java @@ -8,9 +8,9 @@ import junit.framework.TestCase; 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; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.InitializingBean; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationManager; @@ -76,12 +76,12 @@ public class DrivingQueryItemReaderTests extends TestCase { Foo foo2 = (Foo) source.read(); assertEquals(2, foo2.getValue()); - RestartData restartData = getAsRestartable(source).getRestartData(); + StreamContext streamContext = getAsRestartable(source).getRestartData(); // create new input source source = createItemReader(); - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); Foo fooAfterRestart = (Foo) source.read(); assertEquals(3, fooAfterRestart.getValue()); @@ -98,7 +98,7 @@ public class DrivingQueryItemReaderTests extends TestCase { Foo foo2 = (Foo) source.read(); assertEquals(2, foo2.getValue()); - RestartData restartData = getAsRestartable(source).getRestartData(); + StreamContext streamContext = getAsRestartable(source).getRestartData(); // create new input source source = createItemReader(); @@ -107,7 +107,7 @@ public class DrivingQueryItemReaderTests extends TestCase { assertEquals(1, foo.getValue()); try { - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); fail(); } catch (IllegalStateException ex) { @@ -120,9 +120,9 @@ public class DrivingQueryItemReaderTests extends TestCase { * @throws Exception */ public void testRestoreFromEmptyData() throws Exception { - RestartData restartData = new GenericRestartData(new Properties()); + StreamContext streamContext = new GenericStreamContext(new Properties()); - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); Foo foo = (Foo) source.read(); assertEquals(1, foo.getValue()); @@ -165,13 +165,13 @@ public class DrivingQueryItemReaderTests extends TestCase { return (InitializingBean) source; } - private Restartable getAsRestartable(ItemReader source) { - return (Restartable) source; + private ItemStream getAsRestartable(ItemReader source) { + return (ItemStream) source; } private static class MockKeyGenerator implements KeyGenerator{ - static RestartData restartData; + static StreamContext streamContext; List keys; List restartKeys; @@ -180,7 +180,7 @@ public class DrivingQueryItemReaderTests extends TestCase { //restart data properties cannot be empty. props.setProperty("", ""); - restartData = new GenericRestartData(props); + streamContext = new GenericStreamContext(props); } public MockKeyGenerator() { @@ -198,13 +198,13 @@ public class DrivingQueryItemReaderTests extends TestCase { restartKeys.add(new Foo(5, "5", 5)); } - public RestartData getKeyAsRestartData(Object key) { - return restartData; + public StreamContext getKeyAsRestartData(Object key) { + return streamContext; } - public List restoreKeys(RestartData restartData) { + public List restoreKeys(StreamContext streamContext) { - assertEquals(MockKeyGenerator.restartData, restartData); + assertEquals(MockKeyGenerator.streamContext, streamContext); return restartKeys; } 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 0da0be0db..3fb4b8b61 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 @@ -2,13 +2,13 @@ package org.springframework.batch.io.driving; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.reader.AbstractItemReader; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.jdbc.core.JdbcTemplate; -class FooItemReader extends AbstractItemReader implements ItemReader, Restartable, DisposableBean, InitializingBean{ +class FooItemReader extends AbstractItemReader implements ItemReader, ItemStream, DisposableBean, InitializingBean{ DrivingQueryItemReader inputSource; FooDao fooDao = new SingleKeyFooDao(); @@ -27,11 +27,11 @@ class FooItemReader extends AbstractItemReader implements ItemReader, Restartabl } } - public RestartData getRestartData() { + public StreamContext getRestartData() { return inputSource.getRestartData(); } - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { inputSource.restoreFrom(data); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapperTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapperTests.java index c733712a9..38151b1a8 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapperTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/ColumnMapRestartDataRowMapperTests.java @@ -11,8 +11,8 @@ import java.util.Properties; import junit.framework.TestCase; import org.easymock.MockControl; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.core.CollectionFactory; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.util.ClassUtils; @@ -63,16 +63,16 @@ public class ColumnMapRestartDataRowMapperTests extends TestCase { public void testCreateRestartData() throws Exception { - RestartData restartData = mapper.createRestartData(key); - Properties props = restartData.getProperties(); + StreamContext streamContext = mapper.createRestartData(key); + Properties props = streamContext.getProperties(); assertEquals("1", props.getProperty(KEY + "0")); assertEquals("2", props.getProperty(KEY + "1")); } public void testCreateRestartDataFromEmptyKeys() throws Exception { - RestartData restartData = mapper.createRestartData(new HashMap()); - assertEquals(0, restartData.getProperties().size()); + StreamContext streamContext = mapper.createRestartData(new HashMap()); + assertEquals(0, streamContext.getProperties().size()); } public void testCreateSetter() throws Exception { @@ -80,8 +80,8 @@ public class ColumnMapRestartDataRowMapperTests extends TestCase { Properties props = new Properties(); props.setProperty(KEY + "0", "1"); props.setProperty(KEY + "1", "2"); - RestartData restartData = new GenericRestartData(props); - PreparedStatementSetter setter = mapper.createSetter(restartData); + StreamContext streamContext = new GenericStreamContext(props); + PreparedStatementSetter setter = mapper.createSetter(streamContext); ps = (PreparedStatement)psControl.getMock(); ps.setString(1, "1"); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGeneratorIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGeneratorIntegrationTests.java index 0314f0716..3eb4114d8 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGeneratorIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/MultipleColumnJdbcKeyGeneratorIntegrationTests.java @@ -7,8 +7,8 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.core.CollectionFactory; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; @@ -49,9 +49,9 @@ public class MultipleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTran Properties props = new Properties(); props.setProperty(ColumnMapRestartDataRowMapper.KEY + "0", "3"); props.setProperty(ColumnMapRestartDataRowMapper.KEY + "1", "3"); - RestartData restartData = new GenericRestartData(props); + StreamContext streamContext = new GenericStreamContext(props); - List keys = keyStrategy.restoreKeys(restartData); + List keys = keyStrategy.restoreKeys(streamContext); assertEquals(2, keys.size()); Map key = (Map)keys.get(0); @@ -68,8 +68,8 @@ public class MultipleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTran key.put("ID", new Long(3)); key.put("VALUE", new Integer(3)); - RestartData restartData = keyStrategy.getKeyAsRestartData(key); - Properties props = restartData.getProperties(); + StreamContext streamContext = keyStrategy.getKeyAsRestartData(key); + Properties props = streamContext.getProperties(); assertEquals(2, props.size()); assertEquals("3", props.get(ColumnMapRestartDataRowMapper.KEY + "0")); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGeneratorIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGeneratorIntegrationTests.java index 8ab0c7cfd..bbf3a28e1 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGeneratorIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/driving/support/SingleColumnJdbcKeyGeneratorIntegrationTests.java @@ -3,8 +3,8 @@ package org.springframework.batch.io.driving.support; import java.util.List; import java.util.Properties; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; /** @@ -44,9 +44,9 @@ public class SingleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTransa Properties props = new Properties(); props.setProperty(SingleColumnJdbcKeyGenerator.RESTART_KEY, "3"); - RestartData restartData = new GenericRestartData(props); + StreamContext streamContext = new GenericStreamContext(props); - List keys = keyStrategy.restoreKeys(restartData); + List keys = keyStrategy.restoreKeys(streamContext); assertEquals(2, keys.size()); assertEquals(new Long(4), keys.get(0)); @@ -55,8 +55,8 @@ public class SingleColumnJdbcKeyGeneratorIntegrationTests extends AbstractTransa public void testGetKeyAsRestartData(){ - RestartData restartData = keyStrategy.getKeyAsRestartData(new Long(3)); - Properties props = restartData.getProperties(); + StreamContext streamContext = keyStrategy.getKeyAsRestartData(new Long(3)); + Properties props = streamContext.getProperties(); assertEquals(1, props.size()); assertEquals("3", props.get(SingleColumnJdbcKeyGenerator.RESTART_KEY)); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/DefaultFlatFileItemReaderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/DefaultFlatFileItemReaderTests.java index 945e4c350..212d2633b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/DefaultFlatFileItemReaderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/DefaultFlatFileItemReaderTests.java @@ -26,7 +26,7 @@ import org.springframework.batch.io.file.mapping.DefaultFieldSet; import org.springframework.batch.io.file.mapping.FieldSetMapper; import org.springframework.batch.io.file.mapping.FieldSet; import org.springframework.batch.io.file.transform.LineTokenizer; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; import org.springframework.transaction.support.TransactionSynchronization; @@ -204,8 +204,8 @@ public class DefaultFlatFileItemReaderTests extends TestCase { inputSource.read(); // get restart data - RestartData restartData = inputSource.getRestartData(); - assertEquals("4", (String) restartData.getProperties().getProperty( + StreamContext streamContext = inputSource.getRestartData(); + assertEquals("4", (String) streamContext.getProperties().getProperty( DefaultFlatFileItemReader.READ_STATISTICS_NAME)); // close input inputSource.close(); @@ -214,7 +214,7 @@ public class DefaultFlatFileItemReaderTests extends TestCase { // init for restart inputSource.open(); - inputSource.restoreFrom(restartData); + inputSource.restoreFrom(streamContext); // read remaining records assertEquals("[testLine5]", inputSource.read().toString()); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FlatFileItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FlatFileItemWriterTests.java index b4f5584f7..b49c6d124 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FlatFileItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FlatFileItemWriterTests.java @@ -26,7 +26,7 @@ import java.util.Properties; import junit.framework.TestCase; import org.springframework.batch.item.writer.ItemTransformer; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; import org.springframework.core.io.FileSystemResource; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationManager; @@ -320,7 +320,7 @@ public class FlatFileItemWriterTests extends TestCase { commit(); // get restart data - RestartData restartData = inputSource.getRestartData(); + StreamContext restartData = inputSource.getRestartData(); // close template inputSource.close(); @@ -373,10 +373,10 @@ public class FlatFileItemWriterTests extends TestCase { public void testDefaultRestartData() throws Exception { inputSource = new FlatFileItemWriter(); - RestartData restartData = inputSource.getRestartData(); - assertNotNull(restartData); - assertEquals(1, restartData.getProperties().size()); - assertEquals("0", restartData.getProperties().getProperty(FlatFileItemWriter.RESTART_DATA_NAME)); + StreamContext streamContext = inputSource.getRestartData(); + assertNotNull(streamContext); + assertEquals(1, streamContext.getProperties().size()); + assertEquals("0", streamContext.getProperties().getProperty(FlatFileItemWriter.RESTART_DATA_NAME)); } private void commit() { diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcItemReaderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcItemReaderIntegrationTests.java index 01e65078f..59ba9896e 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcItemReaderIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/sql/AbstractJdbcItemReaderIntegrationTests.java @@ -5,9 +5,9 @@ import java.util.Properties; 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; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; @@ -85,12 +85,12 @@ public abstract class AbstractJdbcItemReaderIntegrationTests extends AbstractTra Foo foo2 = (Foo) source.read(); assertEquals(2, foo2.getValue()); - RestartData restartData = getAsRestartable(source).getRestartData(); + StreamContext streamContext = getAsRestartable(source).getRestartData(); // create new input source source = createItemReader(); - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); Foo fooAfterRestart = (Foo) source.read(); assertEquals(3, fooAfterRestart.getValue()); @@ -107,7 +107,7 @@ public abstract class AbstractJdbcItemReaderIntegrationTests extends AbstractTra Foo foo2 = (Foo) source.read(); assertEquals(2, foo2.getValue()); - RestartData restartData = getAsRestartable(source).getRestartData(); + StreamContext streamContext = getAsRestartable(source).getRestartData(); // create new input source source = createItemReader(); @@ -116,7 +116,7 @@ public abstract class AbstractJdbcItemReaderIntegrationTests extends AbstractTra assertEquals(1, foo.getValue()); try { - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); fail(); } catch (IllegalStateException ex) { @@ -129,9 +129,9 @@ public abstract class AbstractJdbcItemReaderIntegrationTests extends AbstractTra * @throws Exception */ public void testRestoreFromEmptyData() throws Exception { - RestartData restartData = new GenericRestartData(new Properties()); + StreamContext streamContext = new GenericStreamContext(new Properties()); - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); Foo foo = (Foo) source.read(); assertEquals(1, foo.getValue()); @@ -170,8 +170,8 @@ public abstract class AbstractJdbcItemReaderIntegrationTests extends AbstractTra TransactionSynchronization.STATUS_ROLLED_BACK); } - private Restartable getAsRestartable(ItemReader source) { - return (Restartable) source; + private ItemStream getAsRestartable(ItemReader source) { + return (ItemStream) source; } private InitializingBean getAsInitializingBean(ItemReader source) { diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceItemReaderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceItemReaderIntegrationTests.java index b18f83e8a..46bc3e8ce 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceItemReaderIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/AbstractDataSourceItemReaderIntegrationTests.java @@ -6,9 +6,9 @@ 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; -import org.springframework.batch.restart.Restartable; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests; @@ -92,12 +92,12 @@ public abstract class AbstractDataSourceItemReaderIntegrationTests extends Abstr Foo foo2 = (Foo) source.read(); assertEquals(2, foo2.getValue()); - RestartData restartData = getAsRestartable(source).getRestartData(); + StreamContext streamContext = getAsRestartable(source).getRestartData(); // create new input source source = createItemReader(); - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); Foo fooAfterRestart = (Foo) source.read(); assertEquals(3, fooAfterRestart.getValue()); @@ -114,7 +114,7 @@ public abstract class AbstractDataSourceItemReaderIntegrationTests extends Abstr Foo foo2 = (Foo) source.read(); assertEquals(2, foo2.getValue()); - RestartData restartData = getAsRestartable(source).getRestartData(); + StreamContext streamContext = getAsRestartable(source).getRestartData(); // create new input source source = createItemReader(); @@ -123,7 +123,7 @@ public abstract class AbstractDataSourceItemReaderIntegrationTests extends Abstr assertEquals(1, foo.getValue()); try { - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); fail(); } catch (IllegalStateException ex) { @@ -136,9 +136,9 @@ public abstract class AbstractDataSourceItemReaderIntegrationTests extends Abstr * @throws Exception */ public void testRestoreFromEmptyData() throws Exception { - RestartData restartData = new GenericRestartData(new Properties()); + StreamContext streamContext = new GenericStreamContext(new Properties()); - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); Foo foo = (Foo) source.read(); assertEquals(1, foo.getValue()); @@ -217,12 +217,12 @@ public abstract class AbstractDataSourceItemReaderIntegrationTests extends Abstr rollback(); - RestartData restartData = getAsRestartable(source).getRestartData(); + StreamContext streamContext = getAsRestartable(source).getRestartData(); // create new input source source = createItemReader(); - getAsRestartable(source).restoreFrom(restartData); + getAsRestartable(source).restoreFrom(streamContext); assertEquals(foo2, source.read()); Foo foo4 = (Foo) source.read(); @@ -245,8 +245,8 @@ public abstract class AbstractDataSourceItemReaderIntegrationTests extends Abstr return (Skippable) source; } - private Restartable getAsRestartable(ItemReader source) { - return (Restartable) source; + private ItemStream getAsRestartable(ItemReader source) { + return (ItemStream) source; } private InitializingBean getAsInitializingBean(ItemReader source) { diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventReaderItemReaderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventReaderItemReaderTests.java index 8ef669fcf..273c7b5f8 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventReaderItemReaderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventReaderItemReaderTests.java @@ -16,8 +16,8 @@ import javax.xml.stream.events.XMLEvent; import junit.framework.TestCase; import org.springframework.batch.io.xml.StaxEventItemReader; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.StreamContext; import org.springframework.core.io.AbstractResource; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; @@ -117,13 +117,13 @@ public class StaxEventReaderItemReaderTests extends TestCase { */ public void testRestart() { source.read(); - RestartData restartData = source.getRestartData(); - assertEquals("1", restartData.getProperties(). + StreamContext streamContext = source.getRestartData(); + assertEquals("1", streamContext.getProperties(). getProperty("StaxEventReaderItemReader.recordcount")); List expectedAfterRestart = (List) source.read(); source = createNewInputSouce(); - source.restoreFrom(restartData); + source.restoreFrom(streamContext); List afterRestart = (List) source.read(); assertEquals(expectedAfterRestart.size(), afterRestart.size()); } @@ -138,7 +138,7 @@ public class StaxEventReaderItemReaderTests extends TestCase { setProperty("StaxEventReaderItemReader.recordcount", MORE_RECORDS_THAN_INPUT_CONTAINS); }}; try { - source.restoreFrom(new GenericRestartData(props)); + source.restoreFrom(new GenericStreamContext(props)); fail(); } catch (IllegalStateException e) { @@ -148,7 +148,7 @@ public class StaxEventReaderItemReaderTests extends TestCase { source = createNewInputSouce(); source.open(); try { - source.restoreFrom(new GenericRestartData(new Properties())); + source.restoreFrom(new GenericStreamContext(new Properties())); fail(); } catch (IllegalStateException e) { diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventWriterItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventWriterItemWriterTests.java index 2fd0638ba..d62d72063 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventWriterItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/xml/StaxEventWriterItemWriterTests.java @@ -13,7 +13,7 @@ import junit.framework.TestCase; import org.apache.commons.io.FileUtils; import org.springframework.batch.io.xml.StaxEventItemWriter; import org.springframework.batch.io.xml.oxm.MarshallingEventWriterSerializer; -import org.springframework.batch.restart.RestartData; +import org.springframework.batch.stream.StreamContext; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.oxm.Marshaller; @@ -92,11 +92,11 @@ public class StaxEventWriterItemWriterTests extends TestCase { // write records writer.write(record); writer.getSynchronization().afterCompletion(TransactionSynchronization.STATUS_COMMITTED); - RestartData restartData = writer.getRestartData(); + StreamContext streamContext = writer.getRestartData(); // create new writer from saved restart data and continue writing writer = createItemWriter(); - writer.restoreFrom(restartData); + writer.restoreFrom(streamContext); writer.write(record); writer.destroy(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/reader/DelegatingItemReaderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/reader/DelegatingItemReaderTests.java index 3a6fec2ab..1e2ce84aa 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/reader/DelegatingItemReaderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/reader/DelegatingItemReaderTests.java @@ -24,10 +24,10 @@ import org.springframework.batch.io.Skippable; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.reader.AbstractItemReader; import org.springframework.batch.item.reader.DelegatingItemReader; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.PropertiesConverter; /** @@ -85,7 +85,7 @@ public class DelegatingItemReaderTests extends TestCase { * @throws Exception */ public void testRestoreFrom() throws Exception { - itemProvider.restoreFrom(new GenericRestartData(PropertiesConverter.stringToProperties("value=bar"))); + itemProvider.restoreFrom(new GenericStreamContext(PropertiesConverter.stringToProperties("value=bar"))); assertEquals("bar", itemProvider.read()); } @@ -94,7 +94,7 @@ public class DelegatingItemReaderTests extends TestCase { assertEquals("after skip", itemProvider.read()); } - private static class MockItemReader extends AbstractItemReader implements ItemReader, StatisticsProvider, Restartable, Skippable { + private static class MockItemReader extends AbstractItemReader implements ItemReader, StatisticsProvider, ItemStream, Skippable { private Object value; @@ -102,11 +102,11 @@ public class DelegatingItemReaderTests extends TestCase { return PropertiesConverter.stringToProperties("a=b"); } - public RestartData getRestartData() { - return new GenericRestartData(PropertiesConverter.stringToProperties("value=foo")); + public StreamContext getRestartData() { + return new GenericStreamContext(PropertiesConverter.stringToProperties("value=foo")); } - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { value = data.getProperties().getProperty("value"); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/CompositeItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/CompositeItemWriterTests.java index f3d37b22d..9eb624e37 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/CompositeItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/CompositeItemWriterTests.java @@ -10,10 +10,10 @@ import junit.framework.TestCase; import org.easymock.MockControl; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.writer.CompositeItemWriter; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; /** * Tests for {@link CompositeItemWriter} @@ -75,7 +75,7 @@ public class CompositeItemWriterTests extends TestCase { }}; itemProcessor.setItemWriters(itemProcessors); - RestartData rd = itemProcessor.getRestartData(); + StreamContext rd = itemProcessor.getRestartData(); itemProcessor.restoreFrom(rd); for (Iterator iterator = itemProcessors.iterator(); iterator.hasNext();) { @@ -120,7 +120,7 @@ public class CompositeItemWriterTests extends TestCase { * Stub for testing restart. Checks the restart data received is the same that was returned by * getRestartData() */ - private static class ItemWriterStub implements ItemWriter, Restartable, StatisticsProvider { + private static class ItemWriterStub implements ItemWriter, ItemStream, StatisticsProvider { private static final String RESTART_KEY = "restartData"; private static final String STATS_KEY = "stats"; @@ -130,14 +130,14 @@ public class CompositeItemWriterTests extends TestCase { private final int hashCode = this.hashCode(); - public RestartData getRestartData() { + public StreamContext getRestartData() { Properties props = new Properties(){{ setProperty(RESTART_KEY, String.valueOf(hashCode)); }}; - return new GenericRestartData(props); + return new GenericStreamContext(props); } - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { if (Integer.valueOf(data.getProperties().getProperty(RESTART_KEY)).intValue() != hashCode()) { fail("received restart data is not the same which was saved"); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/ItemWriterItemProcessorTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/ItemWriterItemProcessorTests.java index b2aac6e77..e444616a8 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/ItemWriterItemProcessorTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/writer/ItemWriterItemProcessorTests.java @@ -24,10 +24,10 @@ import junit.framework.TestCase; import org.springframework.batch.io.Skippable; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.writer.DelegatingItemWriter; -import org.springframework.batch.restart.GenericRestartData; -import org.springframework.batch.restart.RestartData; -import org.springframework.batch.restart.Restartable; import org.springframework.batch.statistics.StatisticsProvider; +import org.springframework.batch.stream.GenericStreamContext; +import org.springframework.batch.stream.ItemStream; +import org.springframework.batch.stream.StreamContext; import org.springframework.batch.support.PropertiesConverter; /** @@ -69,7 +69,7 @@ public class ItemWriterItemProcessorTests extends TestCase { * @throws Exception */ public void testRestoreFrom() throws Exception { - processor.restoreFrom(new GenericRestartData(PropertiesConverter.stringToProperties("value=bar"))); + processor.restoreFrom(new GenericStreamContext(PropertiesConverter.stringToProperties("value=bar"))); processor.write("foo"); assertEquals("bar:foo", list.get(0)); } @@ -96,7 +96,7 @@ public class ItemWriterItemProcessorTests extends TestCase { public void testRestoreFromWithoutRestartable() throws Exception { processor.setDelegate(null); try { - processor.restoreFrom(new GenericRestartData(PropertiesConverter.stringToProperties("value=bar"))); + processor.restoreFrom(new GenericStreamContext(PropertiesConverter.stringToProperties("value=bar"))); fail("Expected IllegalStateException"); } catch (IllegalStateException e) { @@ -130,7 +130,7 @@ public class ItemWriterItemProcessorTests extends TestCase { * @author Dave Syer * */ - public class MockOutputSource implements ItemWriter, StatisticsProvider, Restartable, Skippable { + public class MockOutputSource implements ItemWriter, StatisticsProvider, ItemStream, Skippable { private String value; @@ -152,11 +152,11 @@ public class ItemWriterItemProcessorTests extends TestCase { return PropertiesConverter.stringToProperties("a=b"); } - public RestartData getRestartData() { - return new GenericRestartData(PropertiesConverter.stringToProperties("value=foo")); + public StreamContext getRestartData() { + return new GenericStreamContext(PropertiesConverter.stringToProperties("value=foo")); } - public void restoreFrom(RestartData data) { + public void restoreFrom(StreamContext data) { value = data.getProperties().getProperty("value"); }