ISSUE-3745: Setting key/value variable to original string, when it is not possible to parse it into json
This commit is contained in:
parent
727f38401b
commit
f4c5d3a804
2 changed files with 27 additions and 11 deletions
|
@ -52,8 +52,8 @@ public class MessageFilters {
|
|||
bindings.put("keyAsText", msg.getKey());
|
||||
bindings.put("valueAsText", msg.getContent());
|
||||
bindings.put("headers", msg.getHeaders());
|
||||
bindings.put("key", parseToJsonOrReturnNull(jsonSlurper, msg.getKey()));
|
||||
bindings.put("value", parseToJsonOrReturnNull(jsonSlurper, msg.getContent()));
|
||||
bindings.put("key", parseToJsonOrReturnAsIs(jsonSlurper, msg.getKey()));
|
||||
bindings.put("value", parseToJsonOrReturnAsIs(jsonSlurper, msg.getContent()));
|
||||
var result = compiledScript.eval(bindings);
|
||||
if (result instanceof Boolean) {
|
||||
return (Boolean) result;
|
||||
|
@ -66,14 +66,14 @@ public class MessageFilters {
|
|||
}
|
||||
|
||||
@Nullable
|
||||
private static Object parseToJsonOrReturnNull(JsonSlurper parser, @Nullable String str) {
|
||||
private static Object parseToJsonOrReturnAsIs(JsonSlurper parser, @Nullable String str) {
|
||||
if (str == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return parser.parseText(str);
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -118,10 +118,18 @@ class MessageFiltersTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void keySetToNullIfKeyCantBeParsedToJson() {
|
||||
var f = groovyScriptFilter("key == null");
|
||||
void keySetToKeyStringIfCantBeParsedToJson() {
|
||||
var f = groovyScriptFilter("key == \"not json\"");
|
||||
assertTrue(f.test(msg().key("not json")));
|
||||
assertFalse(f.test(msg().key("{ \"k\" : \"v\" }")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void keyAndKeyAsTextSetToNullIfRecordsKeyIsNull() {
|
||||
var f = groovyScriptFilter("key == null");
|
||||
assertTrue(f.test(msg().key(null)));
|
||||
|
||||
f = groovyScriptFilter("keyAsText == null");
|
||||
assertTrue(f.test(msg().key(null)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -132,10 +140,18 @@ class MessageFiltersTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void valueSetToNullIfKeyCantBeParsedToJson() {
|
||||
var f = groovyScriptFilter("value == null");
|
||||
void valueSetToContentStringIfCantBeParsedToJson() {
|
||||
var f = groovyScriptFilter("value == \"not json\"");
|
||||
assertTrue(f.test(msg().content("not json")));
|
||||
assertFalse(f.test(msg().content("{ \"k\" : \"v\" }")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void valueAndValueAsTextSetToNullIfRecordsContentIsNull() {
|
||||
var f = groovyScriptFilter("value == null");
|
||||
assertTrue(f.test(msg().content(null)));
|
||||
|
||||
f = groovyScriptFilter("valueAsText == null");
|
||||
assertTrue(f.test(msg().content(null)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -185,4 +201,4 @@ class MessageFiltersTest {
|
|||
.partition(1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue