IN PROGRESS - BATCH-520: Add a Delegating File Reader For Multiple Files
added the common 'foo' tests for both flatfile and xml added setter for 'saveState'
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package org.springframework.batch.item;
|
||||
|
||||
import org.springframework.batch.item.file.FlatFileItemReader;
|
||||
import org.springframework.batch.item.file.mapping.FieldSet;
|
||||
import org.springframework.batch.item.file.mapping.FieldSetMapper;
|
||||
import org.springframework.batch.item.sample.Foo;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
public class MultiResourceItemReaderFlatFileTests extends CommonItemStreamItemReaderTests {
|
||||
|
||||
protected ItemReader getItemReader() throws Exception {
|
||||
|
||||
MultiResourceItemReader multiReader = new MultiResourceItemReader();
|
||||
FlatFileItemReader fileReader = new FlatFileItemReader();
|
||||
|
||||
fileReader.setFieldSetMapper(new FieldSetMapper() {
|
||||
public Object mapLine(FieldSet fs) {
|
||||
Foo foo = new Foo();
|
||||
foo.setValue(fs.readInt(0));
|
||||
return foo;
|
||||
}
|
||||
});
|
||||
fileReader.setSaveState(true);
|
||||
|
||||
multiReader.setDelegate(fileReader);
|
||||
|
||||
Resource r1 = new ByteArrayResource("1\n2\n".getBytes());
|
||||
Resource r2 = new ByteArrayResource("".getBytes());
|
||||
Resource r3 = new ByteArrayResource("3\n".getBytes());
|
||||
Resource r4 = new ByteArrayResource("4\n5\n".getBytes());
|
||||
|
||||
multiReader.setResources(new Resource[] { r1, r2, r3, r4 });
|
||||
multiReader.setSaveState(true);
|
||||
multiReader.afterPropertiesSet();
|
||||
|
||||
return multiReader;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -112,6 +112,7 @@ public class MultiResourceItemReaderIntegrationTests extends TestCase {
|
||||
public void testRestart() throws Exception {
|
||||
|
||||
itemReader.setSaveState(true);
|
||||
tested.setSaveState(true);
|
||||
|
||||
tested.open(ctx);
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package org.springframework.batch.item;
|
||||
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.events.Attribute;
|
||||
import javax.xml.stream.events.StartElement;
|
||||
|
||||
import org.springframework.batch.item.sample.Foo;
|
||||
import org.springframework.batch.item.xml.EventReaderDeserializer;
|
||||
import org.springframework.batch.item.xml.StaxEventItemReader;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
public class MultiResourceItemReaderXmlTests extends CommonItemStreamItemReaderTests {
|
||||
|
||||
protected ItemReader getItemReader() throws Exception {
|
||||
MultiResourceItemReader multiReader = new MultiResourceItemReader();
|
||||
|
||||
StaxEventItemReader reader = new StaxEventItemReader();
|
||||
|
||||
reader.setFragmentRootElementName("foo");
|
||||
reader.setFragmentDeserializer(new EventReaderDeserializer() {
|
||||
public Object deserializeFragment(XMLEventReader eventReader) {
|
||||
Attribute attr;
|
||||
try {
|
||||
assertTrue(eventReader.nextEvent().isStartDocument());
|
||||
StartElement event = eventReader.nextEvent().asStartElement();
|
||||
attr = (Attribute) event.getAttributes().next();
|
||||
}
|
||||
catch (XMLStreamException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
Foo foo = new Foo();
|
||||
foo.setValue(Integer.parseInt(attr.getValue()));
|
||||
return foo;
|
||||
}
|
||||
});
|
||||
|
||||
reader.setSaveState(true);
|
||||
|
||||
Resource r1 = new ByteArrayResource("<foos> <foo value=\"1\"/> <foo value=\"2\"/> </foos>".getBytes());
|
||||
Resource r2 = new ByteArrayResource("<foos> </foos>".getBytes());
|
||||
Resource r3 = new ByteArrayResource("<foos> <foo value=\"3\"/> </foos>".getBytes());
|
||||
Resource r4 = new ByteArrayResource("<foos> <foo value=\"4\"/> <foo value=\"5\"/> </foos>".getBytes());
|
||||
|
||||
multiReader.setDelegate(reader);
|
||||
multiReader.setResources(new Resource[] { r1, r2, r3, r4 });
|
||||
multiReader.setSaveState(true);
|
||||
multiReader.afterPropertiesSet();
|
||||
|
||||
return multiReader;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user