Add AbstractSWCommand.OptionalValue.onlyUINIG
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Dieser Commit ist enthalten in:
Ursprung
6cb3bc5ff5
Commit
3829cd6706
@ -386,6 +386,11 @@ public abstract class AbstractSWCommand<T> {
|
|||||||
* Will pe parsed against the TypeMapper specified by the parameter or annotation.
|
* Will pe parsed against the TypeMapper specified by the parameter or annotation.
|
||||||
*/
|
*/
|
||||||
String value();
|
String value();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method name stands for 'onlyUseIfNoneIsGiven'.
|
||||||
|
*/
|
||||||
|
boolean onlyUINIG() default false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@ -23,7 +23,6 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -52,6 +51,9 @@ class CommandPart<T> {
|
|||||||
@Setter
|
@Setter
|
||||||
private boolean ignoreAsArgument = false;
|
private boolean ignoreAsArgument = false;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
private boolean onlyUseIfNoneIsGiven = false;
|
||||||
|
|
||||||
public CommandPart(AbstractSWCommand<T> command, AbstractTypeMapper<T, ?> typeMapper, AbstractValidator<T, Object> validator, AbstractGuardChecker<T> guardChecker, Class<?> varArgType, String optional, GuardCheckType guardCheckType) {
|
public CommandPart(AbstractSWCommand<T> command, AbstractTypeMapper<T, ?> typeMapper, AbstractValidator<T, Object> validator, AbstractGuardChecker<T> guardChecker, Class<?> varArgType, String optional, GuardCheckType guardCheckType) {
|
||||||
this.command = command;
|
this.command = command;
|
||||||
this.typeMapper = typeMapper;
|
this.typeMapper = typeMapper;
|
||||||
@ -113,7 +115,11 @@ class CommandPart<T> {
|
|||||||
}
|
}
|
||||||
if (!validArgument.success) {
|
if (!validArgument.success) {
|
||||||
if (!ignoreAsArgument) {
|
if (!ignoreAsArgument) {
|
||||||
current.add(typeMapper.map(sender, EMPTY_ARRAY, optional));
|
if (!onlyUseIfNoneIsGiven) {
|
||||||
|
current.add(typeMapper.map(sender, EMPTY_ARRAY, optional));
|
||||||
|
} else if(startIndex >= args.length) {
|
||||||
|
current.add(typeMapper.map(sender, EMPTY_ARRAY, optional));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (next != null) {
|
if (next != null) {
|
||||||
next.generateArgumentArray(errors, current, sender, args, startIndex);
|
next.generateArgumentArray(errors, current, sender, args, startIndex);
|
||||||
|
@ -101,6 +101,7 @@ public class SWCommandUtils {
|
|||||||
AbstractSWCommand.OptionalValue optionalValue = parameter.getAnnotation(AbstractSWCommand.OptionalValue.class);
|
AbstractSWCommand.OptionalValue optionalValue = parameter.getAnnotation(AbstractSWCommand.OptionalValue.class);
|
||||||
|
|
||||||
CommandPart<T> commandPart = new CommandPart<>(command, typeMapper, validator, guardChecker, varArgType, optionalValue != null ? optionalValue.value() : null, help ? GuardCheckType.HELP_COMMAND : GuardCheckType.COMMAND);
|
CommandPart<T> commandPart = new CommandPart<>(command, typeMapper, validator, guardChecker, varArgType, optionalValue != null ? optionalValue.value() : null, help ? GuardCheckType.HELP_COMMAND : GuardCheckType.COMMAND);
|
||||||
|
commandPart.setOnlyUseIfNoneIsGiven(optionalValue != null && optionalValue.onlyUINIG());
|
||||||
if (current != null) {
|
if (current != null) {
|
||||||
current.setNext(commandPart);
|
current.setNext(commandPart);
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren