diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/DefaultFieldSet.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/DefaultFieldSet.java index 759eb36ad..958255e57 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/DefaultFieldSet.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/DefaultFieldSet.java @@ -95,6 +95,22 @@ public class DefaultFieldSet implements FieldSet { public String readString(String name) { return readString(indexOf(name)); } + + /* + * (non-Javadoc) + * @see org.springframework.batch.io.file.mapping.IFieldSet#readRawString(int) + */ + public String readRawString(int index) { + return tokens[index]; + } + + /* + * (non-Javadoc) + * @see org.springframework.batch.io.file.mapping.IFieldSet#readRawString(java.lang.String) + */ + public String readRawString(String name) { + return readRawString(indexOf(name)); + } /* * (non-Javadoc) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/FieldSet.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/FieldSet.java index df35b523a..c40b50a6b 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/FieldSet.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/file/mapping/FieldSet.java @@ -61,6 +61,23 @@ public interface FieldSet { */ String readString(String name); + /** + * Read the {@link String} value at index 'index' including + * trailing whitespace (don't trim). + * + * @param index the field index. + * @throws IndexOutOfBoundsException if the index is out of bounds. + */ + String readRawString(int index); + + /** + * Read the {@link String} value from column with given 'name' + * including trailing whitespace (don't trim). + * + * @param name the field name. + */ + String readRawString(String name); + /** * Read the 'boolean' value at index 'index'. * diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java index d2b6359b3..4fceaf14b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java @@ -441,4 +441,13 @@ public class FieldSetTests extends TestCase { long value = fs.readLong(0); assertEquals(value, 9); } + + public void testReadRawString() { + String name = "fieldName"; + String value = " string with trailing whitespace "; + FieldSet fs = new DefaultFieldSet(new String[] { value }, new String[]{ name }); + + assertEquals(value, fs.readRawString(0)); + assertEquals(value, fs.readRawString(name)); + } }