Skip to content

Commit a52dc9b

Browse files
committed
Account for missing values in to_var() Fix function. (#365)
Also, test edge cases.
1 parent 726d0fa commit a52dc9b

File tree

2 files changed

+39
-12
lines changed

2 files changed

+39
-12
lines changed

metafix/src/main/java/org/metafacture/metafix/FixMethod.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,11 @@ public void apply(final Metafix metafix, final Record record, final List<String>
123123
metafix.getVars().putAll(options);
124124
}
125125
},
126-
127126
to_var {
128127
@Override
129-
130128
public void apply(final Metafix metafix, final Record record, final List<String> params, final Map<String, String> options) {
131-
final String fieldName = params.get(0);
132-
final String variableName = params.get(1);
133-
final String variableValue = record.get(fieldName).toString();
134-
135-
metafix.getVars().put(variableName, variableValue);
129+
final Value value = record.get(params.get(0));
130+
metafix.getVars().put(params.get(1), Value.isNull(value) ? "" : value.toString());
136131
}
137132
},
138133

metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4084,7 +4084,7 @@ public void shouldTransformStringToBase64() {
40844084
);
40854085
}
40864086

4087-
@Test
4087+
@Test // checkstyle-disable-line JavaNCSS
40884088
public void shouldCreateVariableFromLiteralValue() {
40894089
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
40904090
"to_var('data.title','testVar')",
@@ -4098,11 +4098,26 @@ public void shouldCreateVariableFromLiteralValue() {
40984098
i.endRecord();
40994099
i.startRecord("2");
41004100
i.startEntity("data");
4101-
i.literal("title", "second-test");
4101+
i.literal("title", "test1");
4102+
i.literal("title", "test2");
4103+
i.endEntity();
4104+
i.endRecord();
4105+
i.startRecord("3");
4106+
i.startEntity("data");
4107+
i.startEntity("title");
4108+
i.literal("key", "value");
4109+
i.endEntity();
4110+
i.endEntity();
4111+
i.endRecord();
4112+
i.startRecord("4");
4113+
i.endRecord();
4114+
i.startRecord("5");
4115+
i.startEntity("data");
4116+
i.literal("title", "final-test");
41024117
i.endEntity();
41034118
i.endRecord();
41044119
},
4105-
o -> {
4120+
(o, f) -> {
41064121
o.get().startRecord("1");
41074122
o.get().startEntity("data");
41084123
o.get().literal("title", "test");
@@ -4111,9 +4126,26 @@ public void shouldCreateVariableFromLiteralValue() {
41114126
o.get().endRecord();
41124127
o.get().startRecord("2");
41134128
o.get().startEntity("data");
4114-
o.get().literal("title", "second-test");
4129+
o.get().literal("title", "test1");
4130+
o.get().literal("title", "test2");
4131+
o.get().endEntity();
4132+
o.get().literal("testResult", "This is a [test1, test2]");
4133+
o.get().endRecord();
4134+
o.get().startRecord("3");
4135+
o.get().startEntity("data");
4136+
o.get().startEntity("title");
4137+
o.get().literal("key", "value");
4138+
f.apply(2).endEntity();
4139+
o.get().literal("testResult", "This is a {key=value}");
4140+
o.get().endRecord();
4141+
o.get().startRecord("4");
4142+
o.get().literal("testResult", "This is a ");
4143+
o.get().endRecord();
4144+
o.get().startRecord("5");
4145+
o.get().startEntity("data");
4146+
o.get().literal("title", "final-test");
41154147
o.get().endEntity();
4116-
o.get().literal("testResult", "This is a second-test");
4148+
o.get().literal("testResult", "This is a final-test");
41174149
o.get().endRecord();
41184150
}
41194151
);

0 commit comments

Comments
 (0)