From 0867ac57772b6ea8f1a9baa43a3c1af9785b9054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn?= Date: Mon, 31 Jul 2017 15:31:29 +0200 Subject: [PATCH] Fix handling of empty/null arguments See gh-9916 --- .../springframework/boot/maven/RunArguments.java | 8 ++++++-- .../boot/maven/RunArgumentsTests.java | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunArguments.java b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunArguments.java index 6888043c6a..ed2d40d4fc 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunArguments.java +++ b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunArguments.java @@ -21,6 +21,8 @@ import java.util.LinkedList; import org.codehaus.plexus.util.cli.CommandLineUtils; +import org.springframework.util.StringUtils; + /** * Parse and expose arguments specified in a single string. * @@ -31,14 +33,16 @@ class RunArguments { private static final String[] NO_ARGS = {}; - private final LinkedList args; + private final LinkedList args = new LinkedList<>(); RunArguments(String arguments) { this(parseArgs(arguments)); } RunArguments(String[] args) { - this.args = new LinkedList<>(Arrays.asList(args)); + if (args != null) { + Arrays.stream(args).filter(StringUtils::hasLength).forEach(this.args::add); + } } public LinkedList getArgs() { diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/RunArgumentsTests.java b/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/RunArgumentsTests.java index 486270258c..e2184f0a9c 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/RunArgumentsTests.java +++ b/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/RunArgumentsTests.java @@ -34,6 +34,20 @@ public class RunArgumentsTests { assertThat(args.length).isEqualTo(0); } + @Test + public void parseNullArray() { + String[] args = new RunArguments((String[]) null).asArray(); + assertThat(args).isNotNull(); + assertThat(args.length).isEqualTo(0); + } + + @Test + public void parseArrayContainingNullValue() { + String[] args = new RunArguments(new String[]{null}).asArray(); + assertThat(args).isNotNull(); + assertThat(args.length).isEqualTo(0); + } + @Test public void parseEmpty() { String[] args = parseArgs(" ");