diff --git a/samples/20070918.testStream.xmlFileStep.output.xml b/samples/20070918.testStream.xmlFileStep.output.xml
index 50a39a9c9..f13620461 100644
--- a/samples/20070918.testStream.xmlFileStep.output.xml
+++ b/samples/20070918.testStream.xmlFileStep.output.xml
@@ -1 +1 @@
-XYZ0001511.39Customer1XYZ0002272.99Customer2cXYZ0003999.99Customer3XYZ0001511.39Customer1XYZ0002272.99Customer2cXYZ0003999.99Customer3XYZ0001511.39Customer1XYZ0002272.99Customer2cXYZ0003999.99Customer3
\ No newline at end of file
+XYZ0001511.39Customer1XYZ0002272.99Customer2cXYZ0003999.99Customer3XYZ0001511.39Customer1XYZ0002272.99Customer2cXYZ0003999.99Customer3XYZ0001511.39Customer1XYZ0002272.99Customer2cXYZ0003999.99Customer3
\ No newline at end of file
diff --git a/samples/src/main/java/org/springframework/batch/sample/item/provider/CollectionItemProvider.java b/samples/src/main/java/org/springframework/batch/sample/item/provider/CollectionItemProvider.java
index 395f61083..14ef36fd1 100644
--- a/samples/src/main/java/org/springframework/batch/sample/item/provider/CollectionItemProvider.java
+++ b/samples/src/main/java/org/springframework/batch/sample/item/provider/CollectionItemProvider.java
@@ -22,7 +22,6 @@ import java.util.Collection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.io.InputSource;
-import org.springframework.batch.io.file.FieldSet;
import org.springframework.batch.io.file.FieldSetMapper;
import org.springframework.batch.item.ItemProvider;
import org.springframework.batch.item.provider.AbstractItemProvider;
@@ -45,9 +44,6 @@ public class CollectionItemProvider extends AbstractItemProvider {
private InputSource inputSource;
- // maps a single line to a simple record
- private FieldSetMapper fieldSetMapper;
-
/**
* Get the next list of records.
*
@@ -56,7 +52,7 @@ public class CollectionItemProvider extends AbstractItemProvider {
public Object next() {
ResultHolder holder = new ResultHolder();
- while (process((FieldSet)inputSource.read(), holder)) {
+ while (process(inputSource.read(), holder)) {
continue;
}
@@ -67,29 +63,29 @@ public class CollectionItemProvider extends AbstractItemProvider {
}
}
- private boolean process(FieldSet fieldSet, ResultHolder holder) {
+ private boolean process(Object value, ResultHolder holder) {
// finish processing if we hit the end of file
- if (fieldSet == null) {
+ if (value == null) {
log.debug("Exhausted InputSource");
holder.exhausted = true;
return false;
}
// start a new collection
- if (fieldSet.readString(0).equals("BEGIN")) {
+ if (value == FieldSetMapper.BEGIN_RECORD) {
log.debug("Start of new record detected");
return true;
}
// mark we are finished with current collection
- if (fieldSet.readString(0).equals("END")) {
+ if (value == FieldSetMapper.END_RECORD) {
log.debug("End of record detected");
return false;
}
// add a simple record to the current collection
- log.debug("Mapping: " + fieldSet);
- holder.records.add(fieldSetMapper.mapLine(fieldSet));
+ log.debug("Mapping: " + value);
+ holder.records.add(value);
return true;
}
@@ -101,10 +97,6 @@ public class CollectionItemProvider extends AbstractItemProvider {
this.inputSource = inputSource;
}
- public void setFieldSetMapper(FieldSetMapper mapper) {
- this.fieldSetMapper = mapper;
- }
-
/**
* Private class for temporary state management while item is being
* collected.
diff --git a/samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java b/samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java
index 8fcaa0b9a..88522e56a 100644
--- a/samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java
+++ b/samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java
@@ -31,6 +31,14 @@ public class TradeFieldSetMapper implements FieldSetMapper {
public Object mapLine(FieldSet fieldSet) {
+ if ("BEGIN".equals(fieldSet.readString(0))) {
+ return FieldSetMapper.BEGIN_RECORD;
+ }
+
+ if ("END".equals(fieldSet.readString(0))) {
+ return FieldSetMapper.END_RECORD;
+ }
+
Trade trade = new Trade();
trade.setIsin(fieldSet.readString(0));
trade.setQuantity(fieldSet.readLong(1));
diff --git a/samples/src/main/resources/jobs/multilineJob.xml b/samples/src/main/resources/jobs/multilineJob.xml
index 0f589f80b..931785563 100644
--- a/samples/src/main/resources/jobs/multilineJob.xml
+++ b/samples/src/main/resources/jobs/multilineJob.xml
@@ -1,13 +1,16 @@
-
-
-
+
+
@@ -17,18 +20,22 @@
-
-
-
+
+
-
+
-
+
-
+
@@ -39,18 +46,19 @@
-
-
+
-
-
-
+
-
+
@@ -79,7 +87,7 @@
-
+
diff --git a/samples/src/test/java/org/springframework/batch/sample/item/provider/CollectionItemProviderTests.java b/samples/src/test/java/org/springframework/batch/sample/item/provider/CollectionItemProviderTests.java
index 5bc16f0d0..7ae8ae66d 100644
--- a/samples/src/test/java/org/springframework/batch/sample/item/provider/CollectionItemProviderTests.java
+++ b/samples/src/test/java/org/springframework/batch/sample/item/provider/CollectionItemProviderTests.java
@@ -7,15 +7,12 @@ import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.batch.io.InputSource;
-import org.springframework.batch.io.file.FieldSet;
import org.springframework.batch.io.file.FieldSetMapper;
-import org.springframework.batch.sample.item.provider.CollectionItemProvider;
public class CollectionItemProviderTests extends TestCase {
private MockControl inputControl;
private InputSource input;
- private FieldSetMapper mapper;
private CollectionItemProvider provider;
public void setUp() {
@@ -24,26 +21,20 @@ public class CollectionItemProviderTests extends TestCase {
inputControl = MockControl.createControl(InputSource.class);
input = (InputSource) inputControl.getMock();
- //create mock for mapper
- mapper = new FieldSetMapper() {
- public Object mapLine(FieldSet fs) { return fs.readString(0); }
- };
-
//create provider
provider = new CollectionItemProvider();
provider.setInputSource(input);
- provider.setFieldSetMapper(mapper);
}
public void testNext() {
//set-up mock input
input.read();
- inputControl.setReturnValue(new FieldSet(new String[] {"BEGIN"}));
+ inputControl.setReturnValue(FieldSetMapper.BEGIN_RECORD);
input.read();
- inputControl.setReturnValue(new FieldSet(new String[] {"line"}),3);
+ inputControl.setReturnValue("line",3);
input.read();
- inputControl.setReturnValue(new FieldSet(new String[] {"END"}));
+ inputControl.setReturnValue(FieldSetMapper.END_RECORD);
input.read();
inputControl.setReturnValue(null);
inputControl.replay();
diff --git a/samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java b/samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java
index 6a7e25a2f..0d1a1c477 100644
--- a/samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java
+++ b/samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java
@@ -36,5 +36,13 @@ public class TradeFieldSetMapperTests extends AbstractFieldSetMapperTests{
protected FieldSetMapper fieldSetMapper() {
return new TradeFieldSetMapper();
}
+
+ public void testBeginRecord() throws Exception {
+ assertEquals(FieldSetMapper.BEGIN_RECORD, fieldSetMapper().mapLine(new FieldSet(new String[] {"BEGIN"})));
+ }
+
+ public void testEndRecord() throws Exception {
+ assertEquals(FieldSetMapper.END_RECORD, fieldSetMapper().mapLine(new FieldSet(new String[] {"END"})));
+ }
}