@@ -7,18 +7,20 @@ Having a default value for an option is somewhat related to
|
||||
may want to know if the user defined an option and change behavior
|
||||
based on a default value:
|
||||
|
||||
====
|
||||
[source, java, indent=0]
|
||||
[source,java,indent=0,role="primary"]
|
||||
.Programmatic
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-registration-default]
|
||||
include::{snippets}/OptionSnippets.java[tag=option-default-programmatic]
|
||||
----
|
||||
====
|
||||
|
||||
The annotation model also supports defining default values:
|
||||
[source,java,indent=0,role="secondary"]
|
||||
.Annotation
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-default-annotation]
|
||||
----
|
||||
|
||||
====
|
||||
[source, java, indent=0]
|
||||
[source,java,indent=0,role="secondary"]
|
||||
.Legacy Annotation
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-with-annotation-default]
|
||||
include::{snippets}/OptionSnippets.java[tag=option-default-legacyannotation]
|
||||
----
|
||||
====
|
||||
|
||||
@@ -3,21 +3,44 @@
|
||||
ifndef::snippets[:snippets: ../../test/java/org/springframework/shell/docs]
|
||||
|
||||
An option is either required or not and, generally speaking, how it behaves depends on
|
||||
a command target:
|
||||
a command target.
|
||||
|
||||
====
|
||||
[source, java, indent=0]
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-registration-optional]
|
||||
----
|
||||
====
|
||||
Making option optional.
|
||||
|
||||
In the annotation model, there is no direct way to define if argument is
|
||||
optional. Instead, it is instructed to be `NULL`:
|
||||
[source,java,indent=0,role="primary"]
|
||||
.Programmatic
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-optional-programmatic]
|
||||
----
|
||||
|
||||
====
|
||||
[source, java, indent=0]
|
||||
[source,java,indent=0,role="secondary"]
|
||||
.Annotation
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-with-annotation-optional]
|
||||
include::{snippets}/OptionSnippets.java[tag=option-optional-annotation]
|
||||
----
|
||||
|
||||
[source,java,indent=0,role="secondary"]
|
||||
.Legacy Annotation
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-optional-legacyannotation]
|
||||
----
|
||||
|
||||
Making option mandatory.
|
||||
|
||||
[source,java,indent=0,role="primary"]
|
||||
.Programmatic
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-mandatory-programmatic]
|
||||
----
|
||||
|
||||
[source,java,indent=0,role="secondary"]
|
||||
.Annotation
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-mandatory-annotation]
|
||||
----
|
||||
|
||||
[source,java,indent=0,role="secondary"]
|
||||
.Legacy Annotation
|
||||
----
|
||||
include::{snippets}/OptionSnippets.java[tag=option-mandatory-legacyannotation]
|
||||
----
|
||||
====
|
||||
|
||||
@@ -307,6 +307,28 @@ public class OptionSnippets {
|
||||
return String.format("Hi '%s'", arg);
|
||||
}
|
||||
// end::option-registration-zerooronewithminmax-legacyannotation[]
|
||||
|
||||
// tag::option-optional-legacyannotation[]
|
||||
void optionalOption(
|
||||
@ShellOption(defaultValue = ShellOption.NULL) String arg
|
||||
) {
|
||||
}
|
||||
// end::option-optional-legacyannotation[]
|
||||
|
||||
// tag::option-mandatory-legacyannotation[]
|
||||
void mandatoryOption(
|
||||
@ShellOption() String arg
|
||||
) {
|
||||
}
|
||||
// end::option-mandatory-legacyannotation[]
|
||||
|
||||
// tag::option-default-legacyannotation[]
|
||||
void defaultOption(
|
||||
@ShellOption(defaultValue = "default") String arg
|
||||
) {
|
||||
}
|
||||
// end::option-default-legacyannotation[]
|
||||
|
||||
}
|
||||
|
||||
static class Annotation {
|
||||
@@ -329,6 +351,27 @@ public class OptionSnippets {
|
||||
}
|
||||
// end::option-registration-zerooronewithminmax-annotation[]
|
||||
|
||||
// tag::option-optional-annotation[]
|
||||
void optionalOption(
|
||||
@Option(required = false) String arg
|
||||
) {
|
||||
}
|
||||
// end::option-optional-annotation[]
|
||||
|
||||
// tag::option-mandatory-annotation[]
|
||||
void mandatoryOption(
|
||||
@Option(required = true) String arg
|
||||
) {
|
||||
}
|
||||
// end::option-mandatory-annotation[]
|
||||
|
||||
// tag::option-default-annotation[]
|
||||
void defaultOption(
|
||||
@Option(defaultValue = "default") String arg
|
||||
) {
|
||||
}
|
||||
// end::option-default-annotation[]
|
||||
|
||||
}
|
||||
|
||||
static class Registration {
|
||||
@@ -357,5 +400,41 @@ public class OptionSnippets {
|
||||
}
|
||||
// end::option-registration-zerooronewithminmax-programmatic[]
|
||||
|
||||
// tag::option-optional-programmatic[]
|
||||
CommandRegistration optionalOption() {
|
||||
return CommandRegistration.builder()
|
||||
.command("optionalOption")
|
||||
.withOption()
|
||||
.longNames("arg")
|
||||
.required(false)
|
||||
.and()
|
||||
.build();
|
||||
}
|
||||
// end::option-optional-programmatic[]
|
||||
|
||||
// tag::option-mandatory-programmatic[]
|
||||
CommandRegistration mandatoryOption() {
|
||||
return CommandRegistration.builder()
|
||||
.command("optionalOption")
|
||||
.withOption()
|
||||
.longNames("arg")
|
||||
.required()
|
||||
.and()
|
||||
.build();
|
||||
}
|
||||
// end::option-mandatory-programmatic[]
|
||||
|
||||
// tag::option-default-programmatic[]
|
||||
CommandRegistration defaultOption() {
|
||||
return CommandRegistration.builder()
|
||||
.command("defaultOption")
|
||||
.withOption()
|
||||
.longNames("arg")
|
||||
.defaultValue("default")
|
||||
.and()
|
||||
.build();
|
||||
}
|
||||
// end::option-default-programmatic[]
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user