From d4c2c8954c4d60f362c8f9308319657f6aa9d656 Mon Sep 17 00:00:00 2001 From: dsyer Date: Wed, 7 Nov 2007 15:15:45 +0000 Subject: [PATCH] BATCH-191: added accessor for names in FieldSet. --- .../batch/io/file/FieldSet.java | 15 ++++++++++++++ .../batch/io/file/FieldSetTests.java | 20 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/infrastructure/src/main/java/org/springframework/batch/io/file/FieldSet.java b/infrastructure/src/main/java/org/springframework/batch/io/file/FieldSet.java index 27a13d4f8..03d8a3069 100644 --- a/infrastructure/src/main/java/org/springframework/batch/io/file/FieldSet.java +++ b/infrastructure/src/main/java/org/springframework/batch/io/file/FieldSet.java @@ -58,6 +58,21 @@ public final class FieldSet { this.tokens = (String[]) tokens.clone(); this.names = Arrays.asList(names); } + + /** + * Public accessor for the names property. + * + * @return the names + * + * @throws IllegalStateException if the names are not defined + */ + public String[] getNames() { + if (names == null) { + throw new IllegalStateException( + "Field names are not known"); + } + return (String[]) names.toArray(); + } /** * Read the {@link String} value at index 'index'. diff --git a/infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java b/infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java index 9b702f4d7..f351fb673 100644 --- a/infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java +++ b/infrastructure/src/test/java/org/springframework/batch/io/file/FieldSetTests.java @@ -39,9 +39,23 @@ public class FieldSetTests extends TestCase { "BigDecimal", "Null", "Date", "DatePattern", "BlankInput" }; fieldSet = new FieldSet(tokens, names); - assertTrue(fieldSet.getFieldCount() == 14); + assertEquals(14, fieldSet.getFieldCount()); } + + public void testNames() throws Exception { + assertEquals(fieldSet.getFieldCount(), fieldSet.getNames().length); + } + + public void testNamesNotKnown() throws Exception { + fieldSet = new FieldSet(new String[]{"foo"}); + try { + fieldSet.getNames(); + fail("Expected IllegalStateException"); + } catch (IllegalStateException e) { + // expected + } + } public void testReadString() throws ParseException { @@ -315,6 +329,10 @@ public class FieldSetTests extends TestCase { assertEquals(fs1, fs2); } + public void testNullField() { + assertEquals(null, fieldSet.readString(10)); + } + public void testEqualsNull() { assertFalse(fieldSet.equals(null)); }