diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoin.java b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoin.java index c75ed468d..8b63df36c 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoin.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoin.java @@ -98,12 +98,14 @@ private static ISequence execute( * @param items * the items to join in string form * @param separator - * the optional separator to use between joined items + * the optional separator to use between joined items * @return the atomized result */ @NonNull public static IStringItem fnStringJoin(@NonNull List items, IStringItem separator) { - return IStringItem.valueOf(stringJoin(ObjectUtils.notNull(items.stream()), separator == null ? "" : separator.asString())); + return IStringItem + .valueOf(stringJoin(items.stream().map(item -> item == null ? "" : IStringItem.cast(item).asString()), + separator == null ? "" : separator.asString())); } /** @@ -113,13 +115,11 @@ public static IStringItem fnStringJoin(@NonNull List i * @param items * the items to join in string form * @param separator - * the optional separator to use between joined items + * the optional separator to use between joined items * @return the atomized result */ @NonNull - private static String stringJoin(@NonNull Stream items, String separator) { - return ObjectUtils.notNull(items - .map(item -> item == null ? "" : IStringItem.cast(item).asString()) - .collect(Collectors.joining(separator))); + private static String stringJoin(@NonNull Stream items, String separator) { + return ObjectUtils.notNull(items.collect(Collectors.joining(separator))); } } diff --git a/core/src/test/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoinTest.java b/core/src/test/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoinTest.java index a3b4b1f4b..c974c3096 100644 --- a/core/src/test/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoinTest.java +++ b/core/src/test/java/gov/nist/secauto/metaschema/core/metapath/function/library/FnStringJoinTest.java @@ -29,11 +29,11 @@ private static Stream provideValues() { // NOPMD - false positive string("123456789"), "string-join(1 to 9)"), Arguments.of( - string("123456789"), - "string-join(1 to 9, '')"), + string("123456789"), + "string-join(1 to 9, '')"), Arguments.of( - string("123456789"), - "string-join(1 to 9, ())"), + string("123456789"), + "string-join(1 to 9, ())"), Arguments.of( string("Now is the time ..."), "string-join(('Now', 'is', 'the', 'time', '...'), ' ')"), @@ -42,7 +42,10 @@ private static Stream provideValues() { // NOPMD - false positive "string-join((), 'separator')"), Arguments.of( string("1, 2, 3, 4, 5"), - "string-join(1 to 5, ', ')") + "string-join(1 to 5, ', ')"), + Arguments.of( + string("123"), + "string-join((1, '', 2, 3))") // Arguments.of( // string("xml:id=\"xyz\""), // "let $doc :=
\n"