BATCH-1033: Updated to account for the possibility of a null key in the map
This commit is contained in:
@@ -56,13 +56,14 @@ public class PrefixMatchingCompositeLineTokenizer implements LineTokenizer, Init
|
||||
|
||||
if (line != null) {
|
||||
for (String key : delegates.keySet()) {
|
||||
if ("".equals(key)) {
|
||||
defaultDelegate = delegates.get(key);
|
||||
// don't break here or the delegate may not be found
|
||||
}
|
||||
else if (line.startsWith(key)) {
|
||||
delegate = delegates.get(key);
|
||||
break;
|
||||
if (key != null) {
|
||||
if ("".equals(key)) {
|
||||
defaultDelegate = delegates.get(key);
|
||||
}
|
||||
else if (line.startsWith(key)) {
|
||||
delegate = delegates.get(key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,16 +49,41 @@ public class PrefixMatchingCompositeLineTokenizerTests {
|
||||
@Test
|
||||
public void testNullLineWithKey() throws Exception {
|
||||
Map<String, LineTokenizer> map = new HashMap<String, LineTokenizer>();
|
||||
map.put(null, new DelimitedLineTokenizer());
|
||||
map.put(null, new LineTokenizer() {
|
||||
public FieldSet tokenize(String line) {
|
||||
return new DefaultFieldSet(new String[] { "a" });
|
||||
}
|
||||
});
|
||||
map.put("foo", new LineTokenizer() {
|
||||
public FieldSet tokenize(String line) {
|
||||
return null;
|
||||
return new DefaultFieldSet(new String[] { "b" });
|
||||
}
|
||||
});
|
||||
tokenizer.setTokenizers(map);
|
||||
tokenizer.afterPropertiesSet();
|
||||
FieldSet fields = tokenizer.tokenize(null);
|
||||
assertEquals(0, fields.getFieldCount());
|
||||
assertEquals(1, fields.getFieldCount());
|
||||
assertEquals("a", fields.readString(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNullKey() throws Exception {
|
||||
Map<String, LineTokenizer> map = new HashMap<String, LineTokenizer>();
|
||||
map.put(null, new LineTokenizer() {
|
||||
public FieldSet tokenize(String line) {
|
||||
return new DefaultFieldSet(new String[] { "a" });
|
||||
}
|
||||
});
|
||||
map.put("foo", new LineTokenizer() {
|
||||
public FieldSet tokenize(String line) {
|
||||
return new DefaultFieldSet(new String[] { "b" });
|
||||
}
|
||||
});
|
||||
tokenizer.setTokenizers(map);
|
||||
tokenizer.afterPropertiesSet();
|
||||
FieldSet fields = tokenizer.tokenize("foo");
|
||||
assertEquals(1, fields.getFieldCount());
|
||||
assertEquals("b", fields.readString(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user