Github user anandsubbu commented on a diff in the pull request: https://github.com/apache/incubator-metron/pull/516#discussion_r111098953 --- Diff: metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/StringFunctions.java --- @@ -343,4 +343,89 @@ public Object apply(List<Object> args) { return String.format(format, formatArgs); } } + + @Stellar( name="CHOP" + , description = "Remove the last character from a String" + , params = { "the String to chop last character from, may be null"} + , returns = "String without last character, null if null String input" + ) + public static class chop extends BaseStellarFunction { + + @Override + public Object apply(List<Object> strings) { + + if(strings.size() == 0) { + throw new IllegalArgumentException("[CHOP] missing argument: string to be chopped"); --- End diff -- Hi @mattf-horton , with the above change where we check for `strings.get(0) == null || strings.get(0).toString().length() `, the following test results in a failure: `Assert.assertEquals("abc", run("CHOP(msg)", ImmutableMap.of("msg", "abc\r\n")));` Pardon my limited understanding, but this is what I inferred: - The `if` condition for null and 0 length check occurs twice. - In the case of the `msg` test case where we check for `\n\r`, the initial contents of the `strings` is null and the variable substitution for `msg` occurs subsequently. So, this would end up failing for the 1st check. Due to this, I will modify the checks to only verify for `strings == null` and `string.size() == 0`. Please let me know if there is a better way this can be done.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---