IN PROGRESS - issue BATCH-7: Remove transaction synchronization and state management from input/output sources (formerly buffering)
http://jira.springframework.org/browse/BATCH-7 Added ItemStream as base interface for ItemReader/Writer.
This commit is contained in:
@@ -47,15 +47,15 @@ public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implemen
|
||||
StreamContext itemProviderRestartData = null;
|
||||
StreamContext itemProcessorRestartData = null;
|
||||
|
||||
if (itemProvider instanceof ItemStream) {
|
||||
itemProviderRestartData = ((ItemStream) itemProvider).getRestartData();
|
||||
if (itemProvider != null) {
|
||||
itemProviderRestartData = itemProvider.getRestartData();
|
||||
}
|
||||
if (itemWriter != null) {
|
||||
itemProcessorRestartData = itemWriter.getRestartData();
|
||||
}
|
||||
|
||||
if (itemWriter instanceof ItemStream) {
|
||||
itemProcessorRestartData = ((ItemStream) itemWriter).getRestartData();
|
||||
}
|
||||
|
||||
RestartableItemOrientedTaskletRestartData restartData = new RestartableItemOrientedTaskletRestartData(itemProviderRestartData, itemProcessorRestartData);
|
||||
RestartableItemOrientedTaskletRestartData restartData = new RestartableItemOrientedTaskletRestartData(
|
||||
itemProviderRestartData, itemProcessorRestartData);
|
||||
|
||||
return restartData;
|
||||
}
|
||||
@@ -76,11 +76,11 @@ public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implemen
|
||||
moduleRestartData = new RestartableItemOrientedTaskletRestartData(data.getProperties());
|
||||
}
|
||||
|
||||
if (itemProvider instanceof ItemStream) {
|
||||
((ItemStream) itemProvider).restoreFrom(moduleRestartData.readerData);
|
||||
if (itemProvider != null) {
|
||||
itemProvider.restoreFrom(moduleRestartData.readerData);
|
||||
}
|
||||
if (itemWriter instanceof ItemStream) {
|
||||
((ItemStream) itemWriter).restoreFrom(moduleRestartData.writerData);
|
||||
if (itemWriter != null) {
|
||||
itemWriter.restoreFrom(moduleRestartData.writerData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,10 +100,8 @@ public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implemen
|
||||
}
|
||||
|
||||
public RestartableItemOrientedTaskletRestartData(Properties data) {
|
||||
readerData = new GenericStreamContext(PropertiesConverter
|
||||
.stringToProperties(data.getProperty(READER_KEY)));
|
||||
writerData = new GenericStreamContext(PropertiesConverter.stringToProperties(data
|
||||
.getProperty(WRITER_KEY)));
|
||||
readerData = new GenericStreamContext(PropertiesConverter.stringToProperties(data.getProperty(READER_KEY)));
|
||||
writerData = new GenericStreamContext(PropertiesConverter.stringToProperties(data.getProperty(WRITER_KEY)));
|
||||
}
|
||||
|
||||
public Properties getProperties() {
|
||||
@@ -117,4 +115,20 @@ public class RestartableItemOrientedTasklet extends ItemOrientedTasklet implemen
|
||||
return props;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.batch.item.ItemStream#close()
|
||||
*/
|
||||
public void close() throws Exception {
|
||||
// no-op
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.batch.item.ItemStream#open()
|
||||
*/
|
||||
public void open() throws Exception {
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,11 +21,11 @@ import java.util.List;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.batch.item.ItemWriter;
|
||||
import org.springframework.batch.item.writer.AbstractItemWriter;
|
||||
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
|
||||
public class EmptyItemWriter implements ItemWriter, InitializingBean {
|
||||
public class EmptyItemWriter extends AbstractItemWriter implements InitializingBean {
|
||||
|
||||
private boolean failed = false;
|
||||
|
||||
|
||||
@@ -25,10 +25,10 @@ import java.util.Properties;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.batch.core.domain.JobSupport;
|
||||
import org.springframework.batch.core.domain.JobExecution;
|
||||
import org.springframework.batch.core.domain.JobInstance;
|
||||
import org.springframework.batch.core.domain.JobParameters;
|
||||
import org.springframework.batch.core.domain.JobSupport;
|
||||
import org.springframework.batch.core.domain.StepContribution;
|
||||
import org.springframework.batch.core.domain.StepExecution;
|
||||
import org.springframework.batch.core.domain.StepInstance;
|
||||
@@ -40,10 +40,10 @@ import org.springframework.batch.execution.scope.StepScope;
|
||||
import org.springframework.batch.execution.scope.StepSynchronizationManager;
|
||||
import org.springframework.batch.execution.tasklet.ItemOrientedTasklet;
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
import org.springframework.batch.item.ItemStream;
|
||||
import org.springframework.batch.item.ItemWriter;
|
||||
import org.springframework.batch.item.StreamContext;
|
||||
import org.springframework.batch.item.reader.ListItemReader;
|
||||
import org.springframework.batch.item.stream.ItemStreamAdapter;
|
||||
import org.springframework.batch.item.writer.AbstractItemWriter;
|
||||
import org.springframework.batch.repeat.ExitStatus;
|
||||
import org.springframework.batch.repeat.RepeatContext;
|
||||
@@ -455,7 +455,7 @@ public class SimpleStepExecutorTests extends TestCase {
|
||||
assertEquals(0, map.size());
|
||||
}
|
||||
|
||||
private class MockRestartableTasklet implements Tasklet, ItemStream {
|
||||
private class MockRestartableTasklet extends ItemStreamAdapter implements Tasklet {
|
||||
|
||||
private boolean getRestartDataCalled = false;
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ public class ItemOrientedTaskletTests extends TestCase {
|
||||
}
|
||||
}
|
||||
|
||||
private class SkippableItemReader implements KeyedItemReader,
|
||||
private class SkippableItemReader extends AbstractItemReader implements KeyedItemReader,
|
||||
Skippable, StatisticsProvider {
|
||||
public Object read() throws Exception {
|
||||
return itemProvider.read();
|
||||
@@ -287,11 +287,9 @@ public class ItemOrientedTaskletTests extends TestCase {
|
||||
public Properties getStatistics() {
|
||||
return PropertiesConverter.stringToProperties("foo=bar");
|
||||
}
|
||||
public void close() throws Exception {
|
||||
}
|
||||
}
|
||||
|
||||
private class SkippableItemWriter implements ItemWriter, Skippable,
|
||||
private class SkippableItemWriter extends AbstractItemWriter implements ItemWriter, Skippable,
|
||||
StatisticsProvider {
|
||||
String props = "foo=bar";
|
||||
|
||||
|
||||
@@ -21,10 +21,11 @@ import java.util.Properties;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
import org.springframework.batch.item.ItemStream;
|
||||
import org.springframework.batch.item.ItemWriter;
|
||||
import org.springframework.batch.item.StreamContext;
|
||||
import org.springframework.batch.item.reader.AbstractItemReader;
|
||||
import org.springframework.batch.item.stream.GenericStreamContext;
|
||||
import org.springframework.batch.item.writer.AbstractItemWriter;
|
||||
import org.springframework.batch.support.PropertiesConverter;
|
||||
|
||||
/**
|
||||
@@ -32,16 +33,16 @@ import org.springframework.batch.support.PropertiesConverter;
|
||||
*/
|
||||
public class RestartableItemOrientedTaskletTests extends TestCase {
|
||||
|
||||
private static class MockProvider implements ItemReader, ItemStream {
|
||||
private static class MockProvider extends AbstractItemReader {
|
||||
|
||||
StreamContext data = new StreamContext() {
|
||||
|
||||
public Properties getProperties() {
|
||||
return PropertiesConverter.stringToProperties("a=b");
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
public Object read() {
|
||||
return null;
|
||||
}
|
||||
@@ -55,16 +56,9 @@ public class RestartableItemOrientedTaskletTests extends TestCase {
|
||||
assertEquals(this.data.getProperties(), data.getProperties());
|
||||
}
|
||||
|
||||
public boolean recover(Object data, Throwable cause) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void close() throws Exception {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class MockWriter implements ItemWriter, ItemStream {
|
||||
private static class MockWriter extends AbstractItemWriter {
|
||||
|
||||
StreamContext data = new StreamContext() {
|
||||
public Properties getProperties() {
|
||||
@@ -131,7 +125,7 @@ public class RestartableItemOrientedTaskletTests extends TestCase {
|
||||
// restore from restart data (see asserts in mock classes)
|
||||
module.restoreFrom(data);
|
||||
}
|
||||
|
||||
|
||||
public void testRestartFromNotRestartable() {
|
||||
|
||||
// create and set up module
|
||||
@@ -144,7 +138,7 @@ public class RestartableItemOrientedTaskletTests extends TestCase {
|
||||
assertNotNull(data);
|
||||
// restore from restart data (see asserts in mock classes)
|
||||
module.restoreFrom(data);
|
||||
//System.err.println(data.getProperties());
|
||||
// System.err.println(data.getProperties());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user