Update annotation docs

- Relates #637
This commit is contained in:
Janne Valkealahti
2023-05-01 09:25:23 +01:00
parent 9d27466c6a
commit 755cf66350
3 changed files with 126 additions and 22 deletions

View File

@@ -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]
----
====

View File

@@ -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]
----
====

View File

@@ -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[]
}
}