diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractor.java index d20dcc6de..773699609 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractor.java @@ -58,6 +58,10 @@ public class PassThroughFieldExtractor implements FieldExtractor { } return args; } + + if (item instanceof FieldSet) { + return ((FieldSet) item).getValues(); + } return new Object[] { item }; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractorTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractorTests.java index 6ec1e2be7..2ce00fec2 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractorTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/PassThroughFieldExtractorTests.java @@ -15,7 +15,7 @@ */ package org.springframework.batch.item.file.transform; -import static junit.framework.Assert.*; +import static junit.framework.Assert.assertTrue; import java.util.Arrays; import java.util.List; @@ -29,21 +29,28 @@ import org.junit.Test; public class PassThroughFieldExtractorTests { @Test - public void testExtract_string() { + public void testExtractString() { PassThroughFieldExtractor extractor = new PassThroughFieldExtractor(); Object[] result = extractor.extract("abc"); assertTrue(Arrays.equals(new Object[] { "abc" }, result)); } @Test - public void testExtract_array() { + public void testExtractArray() { PassThroughFieldExtractor extractor = new PassThroughFieldExtractor(); Object[] result = extractor.extract(new String[] { "a", "b", null, "d" }); assertTrue(Arrays.equals(new Object[] { "a", "b", "", "d" }, result)); } @Test - public void testExtract_collection() { + public void testExtractFieldSet() { + PassThroughFieldExtractor
extractor = new PassThroughFieldExtractor
(); + Object[] result = extractor.extract(new DefaultFieldSet(new String[] { "a", "b", "", "d" })); + assertTrue(Arrays.equals(new Object[] { "a", "b", "", "d" }, result)); + } + + @Test + public void testExtractCollection() { PassThroughFieldExtractor> extractor = new PassThroughFieldExtractor>(); Object[] result = extractor.extract(Arrays.asList("a", "b", null, "d")); assertTrue(Arrays.equals(new Object[] { "a", "b", "", "d" }, result));