Skip to content

Commit 84c0ac1

Browse files
authored
Merge pull request #337 from metafacture/regexp-ignore-null
Ignore null values in Regexp function.
2 parents b8f5ad5 + e2924b4 commit 84c0ac1

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

metamorph/src/main/java/org/metafacture/metamorph/functions/Regexp.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ public final class Regexp extends AbstractFunction {
3939
public void receive(final String name, final String value,
4040
final NamedValueSource source, final int recordCount,
4141
final int entityCount) {
42+
if (null == value) {
43+
return;
44+
}
4245
matcher.reset(value);
4346
if (null == format) {
4447
while (matcher.find()) {

metamorph/src/test/java/org/metafacture/metamorph/functions/RegexpTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,27 @@ public void shouldIgnoreEmptyMatchGroups() {
9595
ordered.verify(receiver).endRecord();
9696
ordered.verifyNoMoreInteractions();
9797
}
98+
99+
@Test
100+
public void shouldIgnoreNullValues() {
101+
metamorph = InlineMorph.in(this)
102+
.with("<rules>")
103+
.with(" <data source='s'>")
104+
.with(" <regexp match='a.*' />")
105+
.with(" </data>")
106+
.with("</rules>")
107+
.createConnectedTo(receiver);
108+
109+
metamorph.startRecord("1");
110+
metamorph.literal("s", "aaccdd");
111+
metamorph.literal("s", null);
112+
metamorph.endRecord();
113+
114+
final InOrder ordered = inOrder(receiver);
115+
ordered.verify(receiver).startRecord("1");
116+
ordered.verify(receiver).literal("s", "aaccdd");
117+
ordered.verify(receiver).endRecord();
118+
ordered.verifyNoMoreInteractions();
119+
}
120+
98121
}

0 commit comments

Comments
 (0)