diff --git a/spring-shell-standard/src/main/java/org/springframework/shell/standard/StandardMethodTargetRegistrar.java b/spring-shell-standard/src/main/java/org/springframework/shell/standard/StandardMethodTargetRegistrar.java index c19d4018..c75cda74 100644 --- a/spring-shell-standard/src/main/java/org/springframework/shell/standard/StandardMethodTargetRegistrar.java +++ b/spring-shell-standard/src/main/java/org/springframework/shell/standard/StandardMethodTargetRegistrar.java @@ -157,10 +157,10 @@ public class StandardMethodTargetRegistrar implements MethodTargetRegistrar { } else { if (ClassUtils.isAssignable(boolean.class, parameterType)) { - optionSpec.arity(OptionArity.ZERO); + optionSpec.arity(OptionArity.ZERO_OR_ONE); } else if (ClassUtils.isAssignable(Boolean.class, parameterType)) { - optionSpec.arity(OptionArity.ZERO); + optionSpec.arity(OptionArity.ZERO_OR_ONE); } else { optionSpec.arity(OptionArity.EXACTLY_ONE); @@ -201,10 +201,10 @@ public class StandardMethodTargetRegistrar implements MethodTargetRegistrar { .required() .position(mp.getParameterIndex()); if (ClassUtils.isAssignable(boolean.class, parameterType)) { - optionSpec.arity(OptionArity.ZERO); + optionSpec.arity(OptionArity.ZERO_OR_ONE); } else if (ClassUtils.isAssignable(Boolean.class, parameterType)) { - optionSpec.arity(OptionArity.ZERO); + optionSpec.arity(OptionArity.ZERO_OR_ONE); } else { optionSpec.arity(OptionArity.EXACTLY_ONE); diff --git a/spring-shell-standard/src/test/java/org/springframework/shell/standard/StandardMethodTargetRegistrarTests.java b/spring-shell-standard/src/test/java/org/springframework/shell/standard/StandardMethodTargetRegistrarTests.java index fe7885e6..5c86113a 100644 --- a/spring-shell-standard/src/test/java/org/springframework/shell/standard/StandardMethodTargetRegistrarTests.java +++ b/spring-shell-standard/src/test/java/org/springframework/shell/standard/StandardMethodTargetRegistrarTests.java @@ -417,16 +417,29 @@ public class StandardMethodTargetRegistrarTests { assertThat(catalog.getRegistrations().get("foo1").getOptions()).hasSize(1); assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getDefaultValue()).isEqualTo("false"); assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).isRequired()).isFalse(); + assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getArityMin()).isEqualTo(0); + assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getArityMax()).isEqualTo(1); assertThat(catalog.getRegistrations().get("foo2")).isNotNull(); assertThat(catalog.getRegistrations().get("foo2").getOptions()).hasSize(1); assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).getDefaultValue()).isEqualTo("true"); assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).isRequired()).isFalse(); + assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).getArityMin()).isEqualTo(0); + assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).getArityMax()).isEqualTo(1); assertThat(catalog.getRegistrations().get("foo3")).isNotNull(); assertThat(catalog.getRegistrations().get("foo3").getOptions()).hasSize(1); assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).isRequired()).isFalse(); assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).getDefaultValue()).isEqualTo("false"); + assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).getArityMin()).isEqualTo(0); + assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).getArityMax()).isEqualTo(1); + + assertThat(catalog.getRegistrations().get("foo4")).isNotNull(); + assertThat(catalog.getRegistrations().get("foo4").getOptions()).hasSize(1); + assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).isRequired()).isTrue(); + assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).getDefaultValue()).isNull(); + assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).getArityMin()).isEqualTo(0); + assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).getArityMax()).isEqualTo(1); } @ShellComponent @@ -443,6 +456,10 @@ public class StandardMethodTargetRegistrarTests { @ShellMethod(value = "foo3") public void foo3(@ShellOption boolean arg1) { } + + @ShellMethod(value = "foo4") + public void foo4(boolean arg1) { + } } @Test