diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java index c3ed02e3..6edc2d92 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java @@ -36,9 +36,9 @@ import cloud.commandframework.meta.CommandMeta; import cloud.commandframework.meta.SimpleCommandMeta; import io.leangen.geantyref.TypeToken; import cloud.commandframework.arguments.parser.ParserParameters; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.lang.reflect.Parameter; @@ -75,9 +75,9 @@ public final class AnnotationParser { * {@link ParserParameter}. Mappers for the * parser parameters can be registered using {@link #registerAnnotationMapper(Class, Function)} */ - public AnnotationParser(@Nonnull final CommandManager manager, - @Nonnull final Class commandSenderClass, - @Nonnull final Function metaMapper) { + public AnnotationParser(@NonNull final CommandManager manager, + @NonNull final Class commandSenderClass, + @NonNull final Function<@NonNull ParserParameters, @NonNull CommandMeta> metaMapper) { this.commandSenderClass = commandSenderClass; this.manager = manager; this.metaFactory = new MetaFactory(this, metaMapper); @@ -93,8 +93,9 @@ public final class AnnotationParser { * @param mapper Mapping function * @param Annotation type */ - public void registerAnnotationMapper(@Nonnull final Class annotation, - @Nonnull final Function mapper) { + public void registerAnnotationMapper(@NonNull final Class annotation, + @NonNull final Function<@NonNull A, + @NonNull ParserParameters> mapper) { this.annotationMappers.put(annotation, mapper); } @@ -106,8 +107,7 @@ public final class AnnotationParser { * @param Type of the instance * @return Collection of parsed annotations */ - @Nonnull - public Collection> parse(@Nonnull final T instance) { + public @NonNull Collection<@NonNull Command> parse(@NonNull final T instance) { final Method[] methods = instance.getClass().getDeclaredMethods(); final Collection commandMethodPairs = new ArrayList<>(); for (final Method method : methods) { @@ -133,10 +133,10 @@ public final class AnnotationParser { return commands; } - @Nonnull @SuppressWarnings("unchecked") - private Collection> construct(@Nonnull final Object instance, - @Nonnull final Collection methodPairs) { + private @NonNull Collection<@NonNull Command> construct( + @NonNull final Object instance, + @NonNull final Collection<@NonNull CommandMethodPair> methodPairs) { final Collection> commands = new ArrayList<>(); for (final CommandMethodPair commandMethodPair : methodPairs) { final CommandMethod commandMethod = commandMethodPair.getCommandMethod(); @@ -239,11 +239,10 @@ public final class AnnotationParser { return commands; } - @Nonnull @SuppressWarnings("unchecked") - private CommandArgument buildArgument(@Nonnull final Method method, - @Nullable final SyntaxFragment syntaxFragment, - @Nonnull final ArgumentParameterPair argumentPair) { + private @NonNull CommandArgument buildArgument(@NonNull final Method method, + @Nullable final SyntaxFragment syntaxFragment, + @NonNull final ArgumentParameterPair argumentPair) { final Parameter parameter = argumentPair.getParameter(); final Collection annotations = Arrays.asList(parameter.getAnnotations()); final TypeToken token = TypeToken.get(parameter.getParameterizedType()); @@ -291,8 +290,8 @@ public final class AnnotationParser { return argumentBuilder.manager(this.manager).withParser(parser).build(); } - @Nonnull - Map, Function> getAnnotationMappers() { + @NonNull Map<@NonNull Class<@NonNull ? extends Annotation>, + @NonNull Function<@NonNull ? extends Annotation, @NonNull ParserParameters>> getAnnotationMappers() { return this.annotationMappers; } diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentExtractor.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentExtractor.java index 9da65bc1..cef1d247 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentExtractor.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentExtractor.java @@ -23,7 +23,8 @@ // package cloud.commandframework.annotations; -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; + import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.ArrayList; @@ -34,10 +35,10 @@ import java.util.function.Function; * Utility that extract {@link Argument arguments} from * {@link java.lang.reflect.Method method} {@link java.lang.reflect.Parameter parameters} */ -class ArgumentExtractor implements Function> { +class ArgumentExtractor implements Function<@NonNull Method, Collection<@NonNull ArgumentParameterPair>> { @Override - public Collection apply(@Nonnull final Method method) { + public @NonNull Collection<@NonNull ArgumentParameterPair> apply(@NonNull final Method method) { final Collection arguments = new ArrayList<>(); for (final Parameter parameter : method.getParameters()) { if (!parameter.isAnnotationPresent(Argument.class)) { diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentParameterPair.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentParameterPair.java index 9d2e7c76..c836da36 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentParameterPair.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/ArgumentParameterPair.java @@ -23,7 +23,8 @@ // package cloud.commandframework.annotations; -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; + import java.lang.reflect.Parameter; final class ArgumentParameterPair { @@ -31,18 +32,17 @@ final class ArgumentParameterPair { private final Parameter parameter; private final Argument argument; - ArgumentParameterPair(@Nonnull final Parameter parameter, @Nonnull final Argument argument) { + ArgumentParameterPair(@NonNull final Parameter parameter, + @NonNull final Argument argument) { this.parameter = parameter; this.argument = argument; } - @Nonnull - Parameter getParameter() { + @NonNull Parameter getParameter() { return this.parameter; } - @Nonnull - Argument getArgument() { + @NonNull Argument getArgument() { return this.argument; } diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandMethodPair.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandMethodPair.java index 26ba8a6f..e569ec82 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandMethodPair.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandMethodPair.java @@ -23,7 +23,8 @@ // package cloud.commandframework.annotations; -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; + import java.lang.reflect.Method; final class CommandMethodPair { @@ -31,18 +32,17 @@ final class CommandMethodPair { private final Method method; private final CommandMethod commandMethod; - CommandMethodPair(@Nonnull final Method method, @Nonnull final CommandMethod commandMethod) { + CommandMethodPair(@NonNull final Method method, + @NonNull final CommandMethod commandMethod) { this.method = method; this.commandMethod = commandMethod; } - @Nonnull - Method getMethod() { + @NonNull Method getMethod() { return this.method; } - @Nonnull - CommandMethod getCommandMethod() { + @NonNull CommandMethod getCommandMethod() { return this.commandMethod; } diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/MetaFactory.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/MetaFactory.java index b8551339..f84d205f 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/MetaFactory.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/MetaFactory.java @@ -25,24 +25,24 @@ package cloud.commandframework.annotations; import cloud.commandframework.arguments.parser.ParserParameters; import cloud.commandframework.meta.CommandMeta; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.lang.annotation.Annotation; import java.util.function.Function; -class MetaFactory implements Function { +class MetaFactory implements Function<@NonNull Annotation @NonNull [], @NonNull CommandMeta> { private final AnnotationParser annotationParser; private final Function metaMapper; - MetaFactory(@Nonnull final AnnotationParser annotationParser, - @Nonnull final Function metaMapper) { + MetaFactory(@NonNull final AnnotationParser annotationParser, + @NonNull final Function<@NonNull ParserParameters, @NonNull CommandMeta> metaMapper) { this.annotationParser = annotationParser; this.metaMapper = metaMapper; } @Override - public CommandMeta apply(@Nonnull final Annotation[] annotations) { + public @NonNull CommandMeta apply(@NonNull final Annotation @NonNull [] annotations) { final ParserParameters parameters = ParserParameters.empty(); for (final Annotation annotation : annotations) { @SuppressWarnings("ALL") final Function function = this.annotationParser.getAnnotationMappers() diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/MethodCommandExecutionHandler.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/MethodCommandExecutionHandler.java index 38f8c018..31a5f040 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/MethodCommandExecutionHandler.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/MethodCommandExecutionHandler.java @@ -26,8 +26,8 @@ package cloud.commandframework.annotations; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.context.CommandContext; import cloud.commandframework.execution.CommandExecutionHandler; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.reflect.Method; @@ -42,9 +42,10 @@ class MethodCommandExecutionHandler implements CommandExecutionHandler { private final MethodHandle methodHandle; private final Map> commandArguments; - MethodCommandExecutionHandler(@Nonnull final Object instance, - @Nonnull final Map> commandArguments, - @Nonnull final Method method) throws Exception { + MethodCommandExecutionHandler(@NonNull final Object instance, + @NonNull final Map<@NonNull String, + @NonNull CommandArgument<@NonNull C, @NonNull ?>> commandArguments, + @NonNull final Method method) throws Exception { this.commandArguments = commandArguments; method.setAccessible(true); this.methodHandle = MethodHandles.lookup().unreflect(method).bindTo(instance); @@ -52,7 +53,7 @@ class MethodCommandExecutionHandler implements CommandExecutionHandler { } @Override - public void execute(@Nonnull final CommandContext commandContext) { + public void execute(@NonNull final CommandContext commandContext) { final List arguments = new ArrayList<>(this.parameters.length); /* Bind parameters to context */ diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/ProxiedBy.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/ProxiedBy.java index 101c81d2..232c6f16 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/ProxiedBy.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/ProxiedBy.java @@ -24,8 +24,8 @@ package cloud.commandframework.annotations; import cloud.commandframework.Command; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -44,7 +44,7 @@ public @interface ProxiedBy { * * @return Proxy syntax */ - @Nonnull String value(); + @NonNull String value(); /** * Whether or not the proxying command should be {@link Hidden} diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxFragment.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxFragment.java index 1c1ea1eb..7dd9511b 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxFragment.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxFragment.java @@ -23,7 +23,8 @@ // package cloud.commandframework.annotations; -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; + import java.util.List; final class SyntaxFragment { @@ -32,26 +33,23 @@ final class SyntaxFragment { private final List minor; private final ArgumentMode argumentMode; - SyntaxFragment(@Nonnull final String major, - @Nonnull final List minor, - @Nonnull final ArgumentMode argumentMode) { + SyntaxFragment(@NonNull final String major, + @NonNull final List<@NonNull String> minor, + @NonNull final ArgumentMode argumentMode) { this.major = major; this.minor = minor; this.argumentMode = argumentMode; } - @Nonnull - String getMajor() { + @NonNull String getMajor() { return this.major; } - @Nonnull - List getMinor() { + @NonNull List<@NonNull String> getMinor() { return this.minor; } - @Nonnull - ArgumentMode getArgumentMode() { + @NonNull ArgumentMode getArgumentMode() { return this.argumentMode; } diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxParser.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxParser.java index c7d8eb17..9338f890 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxParser.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/SyntaxParser.java @@ -23,7 +23,8 @@ // package cloud.commandframework.annotations; -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; + import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashMap; @@ -36,7 +37,7 @@ import java.util.regex.Pattern; /** * Parses command syntax into syntax fragments */ -final class SyntaxParser implements Function> { +final class SyntaxParser implements Function<@NonNull String, @NonNull LinkedHashMap<@NonNull String, @NonNull SyntaxFragment>> { private static final Predicate PATTERN_ARGUMENT_LITERAL = Pattern.compile("([A-Za-z0-9]+)(|([A-Za-z0-9]+))*") .asPredicate(); @@ -46,7 +47,7 @@ final class SyntaxParser implements Function apply(@Nonnull final String syntax) { + public @NonNull LinkedHashMap<@NonNull String, @NonNull SyntaxFragment> apply(@NonNull final String syntax) { final StringTokenizer stringTokenizer = new StringTokenizer(syntax, " "); final LinkedHashMap map = new LinkedHashMap<>(); while (stringTokenizer.hasMoreTokens()) { diff --git a/cloud-annotations/src/test/java/cloud/commandframework/annotations/AnnotationParserTest.java b/cloud-annotations/src/test/java/cloud/commandframework/annotations/AnnotationParserTest.java index 500e4a34..0785dc5f 100644 --- a/cloud-annotations/src/test/java/cloud/commandframework/annotations/AnnotationParserTest.java +++ b/cloud-annotations/src/test/java/cloud/commandframework/annotations/AnnotationParserTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.concurrent.CompletionException; @@ -63,9 +62,9 @@ class AnnotationParserTest { @ProxiedBy("proxycommand") @CommandMethod("test|t literal [string]") - public void testCommand(@Nonnull final TestCommandSender sender, + public void testCommand(final TestCommandSender sender, @Argument("int") @Range(max = "100") final int argument, - @Nonnull @Argument(value = "string", defaultValue = "potato", parserName = "potato") + @Argument(value = "string", defaultValue = "potato", parserName = "potato") final String string) { System.out.printf("Received int: %d and string '%s'\n", argument, string); } diff --git a/cloud-annotations/src/test/java/cloud/commandframework/annotations/TestCommandManager.java b/cloud-annotations/src/test/java/cloud/commandframework/annotations/TestCommandManager.java index c6e87164..cf53b87d 100644 --- a/cloud-annotations/src/test/java/cloud/commandframework/annotations/TestCommandManager.java +++ b/cloud-annotations/src/test/java/cloud/commandframework/annotations/TestCommandManager.java @@ -28,23 +28,20 @@ import cloud.commandframework.execution.CommandExecutionCoordinator; import cloud.commandframework.internal.CommandRegistrationHandler; import cloud.commandframework.meta.SimpleCommandMeta; -import javax.annotation.Nonnull; - public class TestCommandManager extends CommandManager { protected TestCommandManager() { super(CommandExecutionCoordinator.simpleCoordinator(), CommandRegistrationHandler.nullCommandRegistrationHandler()); } - @Nonnull @Override public final SimpleCommandMeta createDefaultCommandMeta() { return SimpleCommandMeta.empty(); } @Override - public final boolean hasPermission(@Nonnull final TestCommandSender sender, - @Nonnull final String permission) { + public final boolean hasPermission(final TestCommandSender sender, + final String permission) { return !permission.equalsIgnoreCase("no"); } diff --git a/cloud-core/src/main/java/cloud/commandframework/Command.java b/cloud-core/src/main/java/cloud/commandframework/Command.java index dc6a6656..a7e72254 100644 --- a/cloud-core/src/main/java/cloud/commandframework/Command.java +++ b/cloud-core/src/main/java/cloud/commandframework/Command.java @@ -34,7 +34,7 @@ import cloud.commandframework.permission.CommandPermission; import cloud.commandframework.permission.Permission; import cloud.commandframework.types.tuples.Pair; import cloud.commandframework.types.tuples.Triplet; -import com.google.common.reflect.TypeToken; +import io.leangen.geantyref.TypeToken; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -391,11 +391,10 @@ public class Command { * @param Second type * @return Builder instance with the argument inserted */ - @Nonnull - public Builder argumentPair(@Nonnull final String name, - @Nonnull final Pair names, - @Nonnull final Pair, Class> parserPair, - @Nonnull final Description description) { + public @NonNull Builder argumentPair(@NonNull final String name, + @NonNull final Pair<@NonNull String, @NonNull String> names, + @NonNull final Pair<@NonNull Class, @NonNull Class> parserPair, + @NonNull final Description description) { if (this.commandManager == null) { throw new IllegalStateException("This cannot be called from a command that has no command manager attached"); } @@ -422,13 +421,13 @@ public class Command { * @param Output type * @return Builder instance with the argument inserted */ - @Nonnull - public Builder argumentPair(@Nonnull final String name, - @Nonnull final TypeToken outputType, - @Nonnull final Pair names, - @Nonnull final Pair, Class> parserPair, - @Nonnull final Function, O> mapper, - @Nonnull final Description description) { + public @NonNull Builder argumentPair(@NonNull final String name, + @NonNull final TypeToken outputType, + @NonNull final Pair<@NonNull String, @NonNull String> names, + @NonNull final Pair<@NonNull Class, @NonNull Class> parserPair, + @NonNull final Function, + @NonNull O> mapper, + @NonNull final Description description) { if (this.commandManager == null) { throw new IllegalStateException("This cannot be called from a command that has no command manager attached"); } @@ -455,11 +454,12 @@ public class Command { * @param Third type * @return Builder instance with the argument inserted */ - @Nonnull - public Builder argumentTriplet(@Nonnull final String name, - @Nonnull final Triplet names, - @Nonnull final Triplet, Class, Class> parserTriplet, - @Nonnull final Description description) { + public @NonNull Builder argumentTriplet(@NonNull final String name, + @NonNull final Triplet<@NonNull String, + @NonNull String, @NonNull String> names, + @NonNull final Triplet<@NonNull Class, + @NonNull Class, @NonNull Class> parserTriplet, + @NonNull final Description description) { if (this.commandManager == null) { throw new IllegalStateException("This cannot be called from a command that has no command manager attached"); } @@ -487,13 +487,15 @@ public class Command { * @param Output type * @return Builder instance with the argument inserted */ - @Nonnull - public Builder argumentTriplet(@Nonnull final String name, - @Nonnull final TypeToken outputType, - @Nonnull final Triplet names, - @Nonnull final Triplet, Class, Class> parserTriplet, - @Nonnull final Function, O> mapper, - @Nonnull final Description description) { + public @NonNull Builder argumentTriplet(@NonNull final String name, + @NonNull final TypeToken outputType, + @NonNull final Triplet<@NonNull String, + @NonNull String, @NonNull String> names, + @NonNull final Triplet<@NonNull Class, + @NonNull Class, @NonNull Class> parserTriplet, + @NonNull final Function<@NonNull Triplet<@NonNull U, + @NonNull V, @NonNull W>, @NonNull O> mapper, + @NonNull final Description description) { if (this.commandManager == null) { throw new IllegalStateException("This cannot be called from a command that has no command manager attached"); } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/CommandArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/CommandArgument.java index b48c9716..1ad0f4a1 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/CommandArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/CommandArgument.java @@ -125,12 +125,13 @@ public class CommandArgument implements Comparable> * @param suggestionsProvider Suggestions provider */ public CommandArgument(final boolean required, - @Nonnull final String name, - @Nonnull final ArgumentParser parser, - @Nonnull final String defaultValue, - @Nonnull final Class valueType, - @Nullable final BiFunction, String, List> suggestionsProvider) { - this(required, name, parser, defaultValue, TypeToken.of(valueType), suggestionsProvider); + @NonNull final String name, + @NonNull final ArgumentParser parser, + @NonNull final String defaultValue, + @NonNull final Class valueType, + @Nullable final BiFunction<@NonNull CommandContext, + @NonNull String, @NonNull List<@NonNull String>> suggestionsProvider) { + this(required, name, parser, defaultValue, TypeToken.get(valueType), suggestionsProvider); } /** @@ -162,9 +163,8 @@ public class CommandArgument implements Comparable> * @param Argument Type. Used to make the compiler happy. * @return Argument builder */ - @Nonnull - public static CommandArgument.Builder ofType(@Nonnull final TypeToken clazz, - @Nonnull final String name) { + public static CommandArgument.@NonNull Builder ofType(@NonNull final TypeToken clazz, + @NonNull final String name) { return new Builder<>(clazz, name); } @@ -352,9 +352,9 @@ public class CommandArgument implements Comparable> this.name = name; } - protected Builder(@Nonnull final Class valueType, - @Nonnull final String name) { - this(TypeToken.of(valueType), name); + protected Builder(@NonNull final Class valueType, + @NonNull final String name) { + this(TypeToken.get(valueType), name); } /** diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java index 05dccab8..eeff8505 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java @@ -23,14 +23,14 @@ // package cloud.commandframework.arguments.compound; -import com.google.common.reflect.TypeToken; import cloud.commandframework.CommandManager; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ParserParameters; import cloud.commandframework.arguments.parser.ParserRegistry; import cloud.commandframework.types.tuples.Pair; +import io.leangen.geantyref.TypeToken; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.function.Function; /** @@ -55,12 +55,12 @@ public class ArgumentPair extends CompoundArgument, C, O> * @param valueType The output type */ protected ArgumentPair(final boolean required, - @Nonnull final String name, - @Nonnull final Pair names, - @Nonnull final Pair, Class> types, - @Nonnull final Pair, ArgumentParser> parserPair, - @Nonnull final Function, O> mapper, - @Nonnull final TypeToken valueType) { + @NonNull final String name, + @NonNull final Pair<@NonNull String, @NonNull String> names, + @NonNull final Pair<@NonNull Class, @NonNull Class> types, + @NonNull final Pair<@NonNull ArgumentParser, @NonNull ArgumentParser> parserPair, + @NonNull final Function<@NonNull Pair<@NonNull U, @NonNull V>, @NonNull O> mapper, + @NonNull final TypeToken valueType) { super(required, name, names, parserPair, types, mapper, o -> Pair.of((U) o[0], (V) o[1]), valueType); } @@ -78,17 +78,18 @@ public class ArgumentPair extends CompoundArgument, C, O> * @param Second parsed type * @return Intermediary builder */ - @Nonnull - public static ArgumentPairIntermediaryBuilder required(@Nonnull final CommandManager manager, - @Nonnull final String name, - @Nonnull final Pair names, - @Nonnull final Pair, Class> types) { + public static @NonNull ArgumentPairIntermediaryBuilder required(@NonNull final CommandManager manager, + @NonNull final String name, + @NonNull final Pair<@NonNull String, + @NonNull String> names, + @NonNull final Pair<@NonNull Class, + @NonNull Class> types) { final ParserRegistry parserRegistry = manager.getParserRegistry(); - final ArgumentParser firstParser = parserRegistry.createParser(TypeToken.of(types.getFirst()), + final ArgumentParser firstParser = parserRegistry.createParser(TypeToken.get(types.getFirst()), ParserParameters.empty()).orElseThrow(() -> new IllegalArgumentException( "Could not create parser for primary type")); - final ArgumentParser secondaryParser = parserRegistry.createParser(TypeToken.of(types.getSecond()), + final ArgumentParser secondaryParser = parserRegistry.createParser(TypeToken.get(types.getSecond()), ParserParameters.empty()).orElseThrow(() -> new IllegalArgumentException( "Could not create parser for secondary type")); @@ -105,10 +106,11 @@ public class ArgumentPair extends CompoundArgument, C, O> private final Pair, Class> types; private ArgumentPairIntermediaryBuilder(final boolean required, - @Nonnull final String name, - @Nonnull final Pair names, - @Nonnull final Pair, ArgumentParser> parserPair, - @Nonnull final Pair, Class> types) { + @NonNull final String name, + @NonNull final Pair<@NonNull String, @NonNull String> names, + @NonNull final Pair<@NonNull ArgumentParser<@NonNull C, @NonNull U>, + @NonNull ArgumentParser<@NonNull C, @NonNull V>> parserPair, + @NonNull final Pair<@NonNull Class, @NonNull Class> types) { this.required = required; this.name = name; this.names = names; @@ -121,8 +123,7 @@ public class ArgumentPair extends CompoundArgument, C, O> * * @return Argument pair */ - @Nonnull - public ArgumentPair> simple() { + public @NonNull ArgumentPair<@NonNull C, @NonNull U, @NonNull V, @NonNull Pair<@NonNull U, @NonNull V>> simple() { return new ArgumentPair>(this.required, this.name, this.names, @@ -141,9 +142,9 @@ public class ArgumentPair extends CompoundArgument, C, O> * @param Output type * @return Created pair */ - @Nonnull - public ArgumentPair withMapper(@Nonnull final TypeToken clazz, - @Nonnull final Function, O> mapper) { + public @NonNull ArgumentPair withMapper(@NonNull final TypeToken clazz, + @NonNull final Function<@NonNull Pair<@NonNull U, + @NonNull V>, @NonNull O> mapper) { return new ArgumentPair(this.required, this.name, this.names, this.types, this.parserPair, mapper, clazz); } @@ -155,10 +156,10 @@ public class ArgumentPair extends CompoundArgument, C, O> * @param Output type * @return Created pair */ - @Nonnull - public ArgumentPair withMapper(@Nonnull final Class clazz, - @Nonnull final Function, O> mapper) { - return this.withMapper(TypeToken.of(clazz), mapper); + public @NonNull ArgumentPair<@NonNull C, @NonNull U, @NonNull V, @NonNull O> withMapper( + @NonNull final Class clazz, + @NonNull final Function<@NonNull Pair<@NonNull U, @NonNull V>, @NonNull O> mapper) { + return this.withMapper(TypeToken.get(clazz), mapper); } } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java index 9be2f6b8..73a7de1d 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java @@ -28,9 +28,9 @@ import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ParserParameters; import cloud.commandframework.arguments.parser.ParserRegistry; import cloud.commandframework.types.tuples.Triplet; -import com.google.common.reflect.TypeToken; +import io.leangen.geantyref.TypeToken; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.function.Function; /** @@ -56,13 +56,13 @@ public class ArgumentTriplet extends CompoundArgument names, - @Nonnull final Triplet, Class, Class> types, - @Nonnull final Triplet, ArgumentParser, - ArgumentParser> parserTriplet, - @Nonnull final Function, O> mapper, - @Nonnull final TypeToken valueType) { + @NonNull final String name, + @NonNull final Triplet<@NonNull String, @NonNull String, @NonNull String> names, + @NonNull final Triplet<@NonNull Class, @NonNull Class, @NonNull Class> types, + @NonNull final Triplet<@NonNull ArgumentParser, @NonNull ArgumentParser, + @NonNull ArgumentParser> parserTriplet, + @NonNull final Function<@NonNull Triplet, @NonNull O> mapper, + @NonNull final TypeToken valueType) { super(required, name, names, parserTriplet, types, mapper, o -> Triplet.of((U) o[0], (V) o[1], (W) o[2]), valueType); } @@ -81,22 +81,21 @@ public class ArgumentTriplet extends CompoundArgument Third type * @return Intermediary builder */ - @Nonnull - public static ArgumentTripletIntermediaryBuilder - required(@Nonnull final CommandManager manager, - @Nonnull final String name, - @Nonnull final Triplet names, - @Nonnull final Triplet, Class, Class> types) { + public static @NonNull ArgumentTripletIntermediaryBuilder<@NonNull C, @NonNull U, @NonNull V, @NonNull W> + required(@NonNull final CommandManager manager, + @NonNull final String name, + @NonNull final Triplet<@NonNull String, @NonNull String, @NonNull String> names, + @NonNull final Triplet<@NonNull Class, @NonNull Class, @NonNull Class> types) { final ParserRegistry parserRegistry = manager.getParserRegistry(); - final ArgumentParser firstParser = parserRegistry.createParser(TypeToken.of(types.getFirst()), + final ArgumentParser firstParser = parserRegistry.createParser(TypeToken.get(types.getFirst()), ParserParameters.empty()).orElseThrow(() -> new IllegalArgumentException( "Could not create parser for primary type")); - final ArgumentParser secondaryParser = parserRegistry.createParser(TypeToken.of(types.getSecond()), + final ArgumentParser secondaryParser = parserRegistry.createParser(TypeToken.get(types.getSecond()), ParserParameters.empty()).orElseThrow(() -> new IllegalArgumentException( "Could not create parser for secondary type")); - final ArgumentParser tertiaryParser = parserRegistry.createParser(TypeToken.of(types.getThird()), + final ArgumentParser tertiaryParser = parserRegistry.createParser(TypeToken.get(types.getThird()), ParserParameters.empty()).orElseThrow(() -> new IllegalArgumentException( "Could not create parser for tertiary type")); @@ -114,11 +113,14 @@ public class ArgumentTriplet extends CompoundArgument, Class, Class> types; private ArgumentTripletIntermediaryBuilder(final boolean required, - @Nonnull final String name, - @Nonnull final Triplet names, - @Nonnull final Triplet, - ArgumentParser, ArgumentParser> parserTriplet, - @Nonnull final Triplet, Class, Class> types) { + @NonNull final String name, + @NonNull final Triplet<@NonNull String, @NonNull String, + @NonNull String> names, + @NonNull final Triplet<@NonNull ArgumentParser, + @NonNull ArgumentParser, + @NonNull ArgumentParser> parserTriplet, + @NonNull final Triplet<@NonNull Class, + @NonNull Class, @NonNull Class> types) { this.required = required; this.name = name; this.names = names; @@ -131,8 +133,8 @@ public class ArgumentTriplet extends CompoundArgument> simple() { + public @NonNull ArgumentTriplet<@NonNull C, @NonNull U, @NonNull V, + @NonNull W, Triplet<@NonNull U, @NonNull V, @NonNull W>> simple() { return new ArgumentTriplet<>(this.required, this.name, this.names, @@ -151,9 +153,10 @@ public class ArgumentTriplet extends CompoundArgument Output type * @return Created triplet */ - @Nonnull - public ArgumentTriplet withMapper(@Nonnull final TypeToken clazz, - @Nonnull final Function, O> mapper) { + public @NonNull ArgumentTriplet<@NonNull C, @NonNull U, @NonNull V, + @NonNull W, @NonNull O> withMapper(@NonNull final TypeToken clazz, + @NonNull final Function<@NonNull Triplet<@NonNull U, + @NonNull V, @NonNull W>, @NonNull O> mapper) { return new ArgumentTriplet<>(this.required, this.name, this.names, this.types, this.parserTriplet, mapper, clazz); } @@ -165,11 +168,11 @@ public class ArgumentTriplet extends CompoundArgument Output type * @return Created triplet */ - @Nonnull - public ArgumentTriplet withMapper(@Nonnull final Class clazz, - @Nonnull final Function, O> mapper) { + public @NonNull ArgumentTriplet withMapper(@NonNull final Class clazz, + @NonNull final Function<@NonNull Triplet<@NonNull U, + @NonNull V, @NonNull W>, @NonNull O> mapper) { return new ArgumentTriplet<>(this.required, this.name, this.names, this.types, - this.parserTriplet, mapper, TypeToken.of(clazz)); + this.parserTriplet, mapper, TypeToken.get(clazz)); } } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java index 43020e55..76d16e56 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java @@ -28,9 +28,9 @@ import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; import cloud.commandframework.types.tuples.Tuple; -import com.google.common.reflect.TypeToken; +import io.leangen.geantyref.TypeToken; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.List; import java.util.Queue; import java.util.function.Function; @@ -49,13 +49,13 @@ public class CompoundArgument extends CommandArgument mapper, - @Nonnull final Function tupleFactory, - @Nonnull final TypeToken valueType) { + @NonNull final String name, + @NonNull final Tuple names, + @NonNull final Tuple parserTuple, + @NonNull final Tuple types, + @NonNull final Function<@NonNull T, @NonNull O> mapper, + @NonNull final Function<@NonNull Object[], @NonNull T> tupleFactory, + @NonNull final TypeToken valueType) { super(required, name, new CompoundParser<>(parserTuple, mapper, tupleFactory), @@ -72,8 +72,7 @@ public class CompoundArgument extends CommandArgument extends CommandArgument extends CommandArgument extends CommandArgument mapper; private final Function tupleFactory; - private CompoundParser(@Nonnull final Tuple parserTuple, - @Nonnull final Function mapper, - @Nonnull final Function tupleFactory) { + private CompoundParser(@NonNull final Tuple parserTuple, + @NonNull final Function<@NonNull T, @NonNull O> mapper, + @NonNull final Function<@NonNull Object[], @NonNull T> tupleFactory) { this.parsers = parserTuple.toArray(); this.mapper = mapper; this.tupleFactory = tupleFactory; } - @Nonnull @Override - public ArgumentParseResult parse(@Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse(@NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final Object[] output = new Object[this.parsers.length]; for (int i = 0; i < this.parsers.length; i++) { - @SuppressWarnings("unchecked") - final ArgumentParser parser = (ArgumentParser) this.parsers[i]; + @SuppressWarnings("unchecked") final ArgumentParser parser = (ArgumentParser) this.parsers[i]; final ArgumentParseResult result = parser.parse(commandContext, inputQueue); if (result.getFailure().isPresent()) { /* Return the failure */ @@ -129,8 +124,8 @@ public class CompoundArgument extends CommandArgument extends CommandArgument suggestions(@Nonnull final CommandContext commandContext, - @Nonnull final String input) { + public @NonNull List<@NonNull String> suggestions(@NonNull final CommandContext commandContext, + @NonNull final String input) { /* This method will be called n times, each time for each of the internal types. The problem is that we need to then know which of the parsers to forward the diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java index 6708abe3..f0601fd0 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java @@ -27,9 +27,9 @@ import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Arrays; import java.util.List; import java.util.Queue; @@ -39,9 +39,12 @@ import java.util.function.BiFunction; public final class BooleanArgument extends CommandArgument { private final boolean liberal; - private BooleanArgument(final boolean required, @Nonnull final String name, - final boolean liberal, @Nonnull final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + private BooleanArgument(final boolean required, + @NonNull final String name, + final boolean liberal, + @NonNull final String defaultValue, + @Nullable final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new BooleanParser<>(liberal), defaultValue, Boolean.class, suggestionsProvider); this.liberal = liberal; } @@ -53,8 +56,7 @@ public final class BooleanArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static Builder newBuilder(@Nonnull final String name) { + public static @NonNull Builder newBuilder(@NonNull final String name) { return new Builder<>(name); } @@ -65,8 +67,7 @@ public final class BooleanArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return BooleanArgument.newBuilder(name).asRequired().build(); } @@ -77,8 +78,7 @@ public final class BooleanArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return BooleanArgument.newBuilder(name).asOptional().build(); } @@ -90,9 +90,8 @@ public final class BooleanArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final boolean defaultBoolean) { + public static @NonNull CommandArgument optional(@NonNull final String name, + final boolean defaultBoolean) { return BooleanArgument.newBuilder(name).asOptionalWithDefault(Boolean.toString(defaultBoolean)).build(); } @@ -109,7 +108,7 @@ public final class BooleanArgument extends CommandArgument { private boolean liberal = false; - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(Boolean.class, name); } @@ -119,8 +118,7 @@ public final class BooleanArgument extends CommandArgument { * @param liberal liberal value * @return Builder instance */ - @Nonnull - public Builder withLiberal(final boolean liberal) { + public @NonNull Builder withLiberal(final boolean liberal) { this.liberal = liberal; return this; } @@ -130,9 +128,8 @@ public final class BooleanArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public BooleanArgument build() { + public @NonNull BooleanArgument build() { return new BooleanArgument<>(this.isRequired(), this.getName(), this.liberal, this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -156,10 +153,9 @@ public final class BooleanArgument extends CommandArgument { this.liberal = liberal; } - @Nonnull @Override - public ArgumentParseResult parse(@Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse(@NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -191,10 +187,9 @@ public final class BooleanArgument extends CommandArgument { return ArgumentParseResult.failure(new BooleanParseException(input, true)); } - @Nonnull @Override - public List suggestions(@Nonnull final CommandContext commandContext, - @Nonnull final String input) { + public @NonNull List<@NonNull String> suggestions(@NonNull final CommandContext commandContext, + @NonNull final String input) { if (!liberal) { return Arrays.asList("TRUE", "FALSE"); } @@ -223,7 +218,8 @@ public final class BooleanArgument extends CommandArgument { * @param input String input * @param liberal Liberal value */ - public BooleanParseException(@Nonnull final String input, final boolean liberal) { + public BooleanParseException(@NonNull final String input, + final boolean liberal) { this.input = input; this.liberal = liberal; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/ByteArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/ByteArgument.java index 186561c0..ae1c38ae 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/ByteArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/ByteArgument.java @@ -23,14 +23,14 @@ // package cloud.commandframework.arguments.standard; -import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.exceptions.parsing.NumberParseException; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.Queue; import java.util.function.BiFunction; @@ -41,9 +41,13 @@ public final class ByteArgument extends CommandArgument { private final byte min; private final byte max; - private ByteArgument(final boolean required, @Nonnull final String name, final byte min, - final byte max, final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + private ByteArgument(final boolean required, + @NonNull final String name, + final byte min, + final byte max, + @NonNull final String defaultValue, + @Nullable final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new ByteParser<>(min, max), defaultValue, Byte.class, suggestionsProvider); this.min = min; this.max = max; @@ -56,8 +60,7 @@ public final class ByteArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static Builder newBuilder(@Nonnull final String name) { + public static @NonNull Builder newBuilder(@NonNull final String name) { return new Builder<>(name); } @@ -68,8 +71,7 @@ public final class ByteArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return ByteArgument.newBuilder(name).asRequired().build(); } @@ -80,8 +82,7 @@ public final class ByteArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return ByteArgument.newBuilder(name).asOptional().build(); } @@ -93,9 +94,8 @@ public final class ByteArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final byte defaultNum) { + public static @NonNull CommandArgument optional(@NonNull final String name, + final byte defaultNum) { return ByteArgument.newBuilder(name).asOptionalWithDefault(Byte.toString(defaultNum)).build(); } @@ -122,7 +122,7 @@ public final class ByteArgument extends CommandArgument { private byte min = Byte.MIN_VALUE; private byte max = Byte.MAX_VALUE; - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(Byte.class, name); } @@ -132,8 +132,7 @@ public final class ByteArgument extends CommandArgument { * @param min Minimum value * @return Builder instance */ - @Nonnull - public Builder withMin(final byte min) { + public @NonNull Builder withMin(final byte min) { this.min = min; return this; } @@ -144,8 +143,7 @@ public final class ByteArgument extends CommandArgument { * @param max Maximum value * @return Builder instance */ - @Nonnull - public Builder withMax(final byte max) { + public @NonNull Builder withMax(final byte max) { this.max = max; return this; } @@ -155,9 +153,8 @@ public final class ByteArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public ByteArgument build() { + public @NonNull ByteArgument build() { return new ByteArgument<>(this.isRequired(), this.getName(), this.min, this.max, this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -180,11 +177,10 @@ public final class ByteArgument extends CommandArgument { this.max = max; } - @Nonnull @Override - public ArgumentParseResult parse( - @Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse( + @NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -211,10 +207,9 @@ public final class ByteArgument extends CommandArgument { return true; } - @Nonnull @Override - public List suggestions(@Nonnull final CommandContext commandContext, - @Nonnull final String input) { + public @NonNull List<@NonNull String> suggestions(@NonNull final CommandContext commandContext, + @NonNull final String input) { return IntegerArgument.IntegerParser.getSuggestions(this.min, this.max, input); } @@ -251,7 +246,7 @@ public final class ByteArgument extends CommandArgument { * @param min Minimum value * @param max Maximum value */ - public ByteParseException(@Nonnull final String input, final byte min, final byte max) { + public ByteParseException(@NonNull final String input, final byte min, final byte max) { super(input, min, max); } @@ -266,8 +261,7 @@ public final class ByteArgument extends CommandArgument { } @Override - @Nonnull - public String getNumberType() { + public @NonNull String getNumberType() { return "byte"; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/CharArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/CharArgument.java index 71bc8c55..f4907080 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/CharArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/CharArgument.java @@ -24,12 +24,12 @@ package cloud.commandframework.arguments.standard; import cloud.commandframework.arguments.CommandArgument; -import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParseResult; +import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.Queue; import java.util.function.BiFunction; @@ -37,9 +37,11 @@ import java.util.function.BiFunction; @SuppressWarnings("unused") public final class CharArgument extends CommandArgument { - private CharArgument(final boolean required, @Nonnull final String name, - @Nonnull final String defaultValue, @Nullable - final BiFunction, String, List> suggestionsProvider) { + private CharArgument(final boolean required, + @NonNull final String name, + @NonNull final String defaultValue, + @Nullable final BiFunction<@NonNull CommandContext, + @NonNull String, @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new CharacterParser<>(), defaultValue, Character.class, suggestionsProvider); } @@ -50,8 +52,7 @@ public final class CharArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static CharArgument.Builder newBuilder(@Nonnull final String name) { + public static CharArgument.@NonNull Builder newBuilder(@NonNull final String name) { return new CharArgument.Builder<>(name); } @@ -62,8 +63,7 @@ public final class CharArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return CharArgument.newBuilder(name).asRequired().build(); } @@ -74,8 +74,7 @@ public final class CharArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return CharArgument.newBuilder(name).asOptional().build(); } @@ -87,16 +86,15 @@ public final class CharArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final String defaultNum) { + public static @NonNull CommandArgument optional(@NonNull final String name, + @NonNull final String defaultNum) { return CharArgument.newBuilder(name).asOptionalWithDefault(defaultNum).build(); } public static final class Builder extends CommandArgument.Builder { - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(Character.class, name); } @@ -105,9 +103,8 @@ public final class CharArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public CharArgument build() { + public @NonNull CharArgument build() { return new CharArgument<>(this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -117,10 +114,9 @@ public final class CharArgument extends CommandArgument { public static final class CharacterParser implements ArgumentParser { - @Nonnull @Override - public ArgumentParseResult parse(@Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse(@NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -153,7 +149,7 @@ public final class CharArgument extends CommandArgument { * * @param input String input */ - public CharParseException(final String input) { + public CharParseException(@NonNull final String input) { this.input = input; } @@ -162,7 +158,7 @@ public final class CharArgument extends CommandArgument { * * @return Input value */ - public String getInput() { + public @NonNull String getInput() { return input; } } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/DoubleArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/DoubleArgument.java index c4b0568e..475643db 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/DoubleArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/DoubleArgument.java @@ -24,13 +24,13 @@ package cloud.commandframework.arguments.standard; import cloud.commandframework.arguments.CommandArgument; -import cloud.commandframework.arguments.parser.ArgumentParser; -import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.arguments.parser.ArgumentParseResult; +import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.exceptions.parsing.NumberParseException; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.Queue; import java.util.function.BiFunction; @@ -42,11 +42,12 @@ public final class DoubleArgument extends CommandArgument { private final double max; private DoubleArgument(final boolean required, - @Nonnull final String name, + @NonNull final String name, final double min, final double max, final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + @Nullable final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new DoubleParser<>(min, max), defaultValue, Double.class, suggestionsProvider); this.min = min; this.max = max; @@ -59,8 +60,7 @@ public final class DoubleArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static Builder newBuilder(@Nonnull final String name) { + public static @NonNull Builder newBuilder(@NonNull final String name) { return new Builder<>(name); } @@ -71,8 +71,7 @@ public final class DoubleArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return DoubleArgument.newBuilder(name).asRequired().build(); } @@ -83,8 +82,7 @@ public final class DoubleArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return DoubleArgument.newBuilder(name).asOptional().build(); } @@ -96,9 +94,8 @@ public final class DoubleArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final double defaultNum) { + public static @NonNull CommandArgument optional(@NonNull final String name, + final double defaultNum) { return DoubleArgument.newBuilder(name).asOptionalWithDefault(Double.toString(defaultNum)).build(); } @@ -125,7 +122,7 @@ public final class DoubleArgument extends CommandArgument { private double min = Double.MIN_VALUE; private double max = Double.MAX_VALUE; - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(Double.class, name); } @@ -135,8 +132,7 @@ public final class DoubleArgument extends CommandArgument { * @param min Minimum value * @return Builder instance */ - @Nonnull - public Builder withMin(final int min) { + public @NonNull Builder withMin(final int min) { this.min = min; return this; } @@ -147,8 +143,7 @@ public final class DoubleArgument extends CommandArgument { * @param max Maximum value * @return Builder instance */ - @Nonnull - public Builder withMax(final int max) { + public @NonNull Builder withMax(final int max) { this.max = max; return this; } @@ -158,9 +153,8 @@ public final class DoubleArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public DoubleArgument build() { + public @NonNull DoubleArgument build() { return new DoubleArgument<>(this.isRequired(), this.getName(), this.min, this.max, this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -183,11 +177,10 @@ public final class DoubleArgument extends CommandArgument { this.max = max; } - @Nonnull @Override - public ArgumentParseResult parse( - @Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse( + @NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -239,7 +232,7 @@ public final class DoubleArgument extends CommandArgument { * @param min Minimum value * @param max Maximum value */ - public DoubleParseException(@Nonnull final String input, final double min, final double max) { + public DoubleParseException(@NonNull final String input, final double min, final double max) { super(input, min, max); } @@ -254,8 +247,7 @@ public final class DoubleArgument extends CommandArgument { } @Override - @Nonnull - public String getNumberType() { + public @NonNull String getNumberType() { return "double"; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/EnumArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/EnumArgument.java index f19598d7..a7de0390 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/EnumArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/EnumArgument.java @@ -27,9 +27,9 @@ import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.EnumSet; import java.util.List; import java.util.Queue; @@ -45,11 +45,12 @@ import java.util.stream.Collectors; @SuppressWarnings("unused") public class EnumArgument> extends CommandArgument { - protected EnumArgument(@Nonnull final Class enumClass, + protected EnumArgument(@NonNull final Class enumClass, final boolean required, - @Nonnull final String name, - @Nonnull final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + @NonNull final String name, + @NonNull final String defaultValue, + @Nullable final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new EnumParser<>(enumClass), defaultValue, enumClass, suggestionsProvider); } @@ -62,9 +63,9 @@ public class EnumArgument> extends CommandArgument { * @param Enum type * @return Created builder */ - @Nonnull - public static > EnumArgument.Builder newBuilder( - @Nonnull final Class enumClass, @Nonnull final String name) { + public static > EnumArgument.@NonNull Builder newBuilder( + @NonNull final Class enumClass, + @NonNull final String name) { return new EnumArgument.Builder<>(name, enumClass); } @@ -77,9 +78,9 @@ public class EnumArgument> extends CommandArgument { * @param Enum type * @return Created argument */ - @Nonnull - public static > CommandArgument required( - @Nonnull final Class enumClass, @Nonnull final String name) { + public static > @NonNull CommandArgument required( + @NonNull final Class enumClass, + @NonNull final String name) { return EnumArgument.newBuilder(enumClass, name).asRequired().build(); } @@ -92,9 +93,9 @@ public class EnumArgument> extends CommandArgument { * @param Enum type * @return Created argument */ - @Nonnull - public static > CommandArgument optional( - @Nonnull final Class enumClass, @Nonnull final String name) { + public static > @NonNull CommandArgument optional( + @NonNull final Class enumClass, + @NonNull final String name) { return EnumArgument.newBuilder(enumClass, name).asOptional().build(); } @@ -108,9 +109,10 @@ public class EnumArgument> extends CommandArgument { * @param Enum type * @return Created argument */ - @Nonnull - public static > CommandArgument optional( - @Nonnull final Class enumClass, @Nonnull final String name, @Nonnull final E defaultValue) { + public static > @NonNull CommandArgument optional( + @NonNull final Class enumClass, + @NonNull final String name, + @NonNull final E defaultValue) { return EnumArgument.newBuilder(enumClass, name).asOptionalWithDefault(defaultValue.name().toLowerCase()).build(); } @@ -119,14 +121,13 @@ public class EnumArgument> extends CommandArgument { private final Class enumClass; - protected Builder(@Nonnull final String name, @Nonnull final Class enumClass) { + protected Builder(@NonNull final String name, @NonNull final Class enumClass) { super(enumClass, name); this.enumClass = enumClass; } - @Nonnull @Override - public CommandArgument build() { + public @NonNull CommandArgument build() { return new EnumArgument<>(this.enumClass, this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -143,15 +144,14 @@ public class EnumArgument> extends CommandArgument { * * @param enumClass Enum class */ - public EnumParser(@Nonnull final Class enumClass) { + public EnumParser(@NonNull final Class enumClass) { this.enumClass = enumClass; this.allowedValues = EnumSet.allOf(enumClass); } - @Nonnull @Override - public ArgumentParseResult parse(@Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse(@NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -167,9 +167,9 @@ public class EnumArgument> extends CommandArgument { return ArgumentParseResult.failure(new EnumParseException(input, this.enumClass)); } - @Nonnull @Override - public List suggestions(@Nonnull final CommandContext commandContext, @Nonnull final String input) { + public @NonNull List<@NonNull String> suggestions(@NonNull final CommandContext commandContext, + @NonNull final String input) { return EnumSet.allOf(this.enumClass).stream().map(e -> e.name().toLowerCase()).collect(Collectors.toList()); } @@ -191,14 +191,14 @@ public class EnumArgument> extends CommandArgument { * @param input Input * @param enumClass Enum class */ - public EnumParseException(@Nonnull final String input, @Nonnull final Class> enumClass) { + public EnumParseException(@NonNull final String input, + @NonNull final Class> enumClass) { this.input = input; this.enumClass = enumClass; } - @Nonnull @SuppressWarnings("all") - private static String join(@Nonnull final Class clazz) { + private static @NonNull String join(@NonNull final Class clazz) { final EnumSet enumSet = EnumSet.allOf(clazz); return enumSet.stream() .map(e -> e.toString().toLowerCase()) @@ -210,8 +210,7 @@ public class EnumArgument> extends CommandArgument { * * @return Input */ - @Nonnull - public String getInput() { + public @NonNull String getInput() { return this.input; } @@ -220,7 +219,7 @@ public class EnumArgument> extends CommandArgument { * * @return Enum class */ - public Class> getEnumClass() { + public @NonNull Class> getEnumClass() { return this.enumClass; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/FloatArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/FloatArgument.java index 116461e7..07869273 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/FloatArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/FloatArgument.java @@ -23,14 +23,14 @@ // package cloud.commandframework.arguments.standard; -import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.exceptions.parsing.NumberParseException; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.Queue; import java.util.function.BiFunction; @@ -42,11 +42,12 @@ public final class FloatArgument extends CommandArgument { private final float max; private FloatArgument(final boolean required, - @Nonnull final String name, + @NonNull final String name, final float min, final float max, - final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + @NonNull final String defaultValue, + @Nullable final BiFunction<@NonNull CommandContext, + @NonNull String, @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new FloatParser<>(min, max), defaultValue, Float.class, suggestionsProvider); this.min = min; this.max = max; @@ -59,8 +60,7 @@ public final class FloatArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static Builder newBuilder(@Nonnull final String name) { + public static @NonNull Builder newBuilder(@NonNull final String name) { return new Builder<>(name); } @@ -71,8 +71,7 @@ public final class FloatArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return FloatArgument.newBuilder(name).asRequired().build(); } @@ -83,8 +82,7 @@ public final class FloatArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return FloatArgument.newBuilder(name).asOptional().build(); } @@ -96,9 +94,8 @@ public final class FloatArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final float defaultNum) { + public static @NonNull CommandArgument optional(@NonNull final String name, + final float defaultNum) { return FloatArgument.newBuilder(name).asOptionalWithDefault(Float.toString(defaultNum)).build(); } @@ -125,7 +122,7 @@ public final class FloatArgument extends CommandArgument { private float min = Float.MIN_VALUE; private float max = Float.MAX_VALUE; - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(Float.class, name); } @@ -135,8 +132,7 @@ public final class FloatArgument extends CommandArgument { * @param min Minimum value * @return Builder instance */ - @Nonnull - public Builder withMin(final int min) { + public @NonNull Builder withMin(final int min) { this.min = min; return this; } @@ -147,8 +143,7 @@ public final class FloatArgument extends CommandArgument { * @param max Maximum value * @return Builder instance */ - @Nonnull - public Builder withMax(final int max) { + public @NonNull Builder withMax(final int max) { this.max = max; return this; } @@ -158,9 +153,8 @@ public final class FloatArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public FloatArgument build() { + public @NonNull FloatArgument build() { return new FloatArgument<>(this.isRequired(), this.getName(), this.min, this.max, this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -183,11 +177,10 @@ public final class FloatArgument extends CommandArgument { this.max = max; } - @Nonnull @Override - public ArgumentParseResult parse( - @Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse( + @NonNull final CommandContext commandContext, + @NonNull final Queue inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -239,7 +232,7 @@ public final class FloatArgument extends CommandArgument { * @param min Minimum value * @param max Maximum value */ - public FloatParseException(@Nonnull final String input, final float min, final float max) { + public FloatParseException(@NonNull final String input, final float min, final float max) { super(input, min, max); } @@ -254,8 +247,7 @@ public final class FloatArgument extends CommandArgument { } @Override - @Nonnull - public String getNumberType() { + public @NonNull String getNumberType() { return "float"; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/IntegerArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/IntegerArgument.java index 197068c1..4baa1b84 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/IntegerArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/IntegerArgument.java @@ -23,14 +23,14 @@ // package cloud.commandframework.arguments.standard; -import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.exceptions.parsing.NumberParseException; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -49,11 +49,12 @@ public final class IntegerArgument extends CommandArgument { private final int max; private IntegerArgument(final boolean required, - @Nonnull final String name, + @NonNull final String name, final int min, final int max, final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + @Nullable final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new IntegerParser<>(min, max), defaultValue, Integer.class, suggestionsProvider); this.min = min; this.max = max; @@ -66,8 +67,7 @@ public final class IntegerArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static Builder newBuilder(@Nonnull final String name) { + public static @NonNull Builder newBuilder(@NonNull final String name) { return new Builder<>(name); } @@ -78,8 +78,7 @@ public final class IntegerArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return IntegerArgument.newBuilder(name).asRequired().build(); } @@ -90,8 +89,7 @@ public final class IntegerArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return IntegerArgument.newBuilder(name).asOptional().build(); } @@ -103,9 +101,8 @@ public final class IntegerArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final int defaultNum) { + public static @NonNull CommandArgument optional(@NonNull final String name, + final int defaultNum) { return IntegerArgument.newBuilder(name).asOptionalWithDefault(Integer.toString(defaultNum)).build(); } @@ -132,7 +129,7 @@ public final class IntegerArgument extends CommandArgument { private int min = Integer.MIN_VALUE; private int max = Integer.MAX_VALUE; - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(Integer.class, name); } @@ -142,8 +139,7 @@ public final class IntegerArgument extends CommandArgument { * @param min Minimum value * @return Builder instance */ - @Nonnull - public Builder withMin(final int min) { + public @NonNull Builder withMin(final int min) { this.min = min; return this; } @@ -154,8 +150,7 @@ public final class IntegerArgument extends CommandArgument { * @param max Maximum value * @return Builder instance */ - @Nonnull - public Builder withMax(final int max) { + public @NonNull Builder withMax(final int max) { this.max = max; return this; } @@ -165,9 +160,8 @@ public final class IntegerArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public IntegerArgument build() { + public @NonNull IntegerArgument build() { return new IntegerArgument<>(this.isRequired(), this.getName(), this.min, this.max, this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -190,8 +184,7 @@ public final class IntegerArgument extends CommandArgument { this.max = max; } - @Nonnull - static List getSuggestions(final long min, final long max, @Nonnull final String input) { + static @NonNull List<@NonNull String> getSuggestions(final long min, final long max, @NonNull final String input) { if (input.isEmpty()) { return IntStream.range(0, MAX_SUGGESTIONS_INCREMENT).mapToObj(Integer::toString).collect(Collectors.toList()); } @@ -213,11 +206,10 @@ public final class IntegerArgument extends CommandArgument { } } - @Nonnull @Override - public ArgumentParseResult parse( - @Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse( + @NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -257,10 +249,9 @@ public final class IntegerArgument extends CommandArgument { return true; } - @Nonnull @Override - public List suggestions(@Nonnull final CommandContext commandContext, - @Nonnull final String input) { + public @NonNull List<@NonNull String> suggestions(@NonNull final CommandContext commandContext, + @NonNull final String input) { return getSuggestions(this.min, this.max, input); } @@ -276,7 +267,7 @@ public final class IntegerArgument extends CommandArgument { * @param min Minimum value * @param max Maximum value */ - public IntegerParseException(@Nonnull final String input, final int min, final int max) { + public IntegerParseException(@NonNull final String input, final int min, final int max) { super(input, min, max); } @@ -291,8 +282,7 @@ public final class IntegerArgument extends CommandArgument { } @Override - @Nonnull - public String getNumberType() { + public @NonNull String getNumberType() { return "integer"; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/LongArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/LongArgument.java index cb1e2e5c..870d12cd 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/LongArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/LongArgument.java @@ -23,14 +23,14 @@ // package cloud.commandframework.arguments.standard; -import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.exceptions.parsing.NumberParseException; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.Queue; import java.util.function.BiFunction; @@ -42,11 +42,12 @@ public final class LongArgument extends CommandArgument { private final long max; private LongArgument(final boolean required, - @Nonnull final String name, + @NonNull final String name, final long min, final long max, final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + @Nullable final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new LongParser<>(min, max), defaultValue, Long.class, suggestionsProvider); this.min = min; this.max = max; @@ -59,8 +60,7 @@ public final class LongArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static LongArgument.Builder newBuilder(@Nonnull final String name) { + public static LongArgument.@NonNull Builder newBuilder(@NonNull final String name) { return new Builder<>(name); } @@ -71,8 +71,7 @@ public final class LongArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return LongArgument.newBuilder(name).asRequired().build(); } @@ -83,8 +82,7 @@ public final class LongArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return LongArgument.newBuilder(name).asOptional().build(); } @@ -96,9 +94,8 @@ public final class LongArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final long defaultNum) { + public static @NonNull CommandArgument optional(@NonNull final String name, + final long defaultNum) { return LongArgument.newBuilder(name).asOptionalWithDefault(Long.toString(defaultNum)).build(); } @@ -125,7 +122,7 @@ public final class LongArgument extends CommandArgument { private long min = Long.MIN_VALUE; private long max = Long.MAX_VALUE; - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(Long.class, name); } @@ -135,8 +132,7 @@ public final class LongArgument extends CommandArgument { * @param min Minimum value * @return Builder instance */ - @Nonnull - public Builder withMin(final long min) { + public @NonNull Builder withMin(final long min) { this.min = min; return this; } @@ -147,8 +143,7 @@ public final class LongArgument extends CommandArgument { * @param max Maximum value * @return Builder instance */ - @Nonnull - public Builder withMax(final long max) { + public @NonNull Builder withMax(final long max) { this.max = max; return this; } @@ -158,9 +153,8 @@ public final class LongArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public LongArgument build() { + public @NonNull LongArgument build() { return new LongArgument<>(this.isRequired(), this.getName(), this.min, this.max, this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -177,11 +171,10 @@ public final class LongArgument extends CommandArgument { this.max = max; } - @Nonnull @Override - public ArgumentParseResult parse( - @Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse( + @NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -203,10 +196,9 @@ public final class LongArgument extends CommandArgument { return true; } - @Nonnull @Override - public List suggestions(@Nonnull final CommandContext commandContext, - @Nonnull final String input) { + public @NonNull List<@NonNull String> suggestions(@NonNull final CommandContext commandContext, + @NonNull final String input) { return IntegerArgument.IntegerParser.getSuggestions(this.min, this.max, input); } @@ -222,7 +214,7 @@ public final class LongArgument extends CommandArgument { * @param min Minimum value * @param max Maximum value */ - public LongParseException(@Nonnull final String input, final long min, final long max) { + public LongParseException(@NonNull final String input, final long min, final long max) { super(input, min, max); } @@ -237,8 +229,7 @@ public final class LongArgument extends CommandArgument { } @Override - @Nonnull - public String getNumberType() { + public @NonNull String getNumberType() { return "long"; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java index f59720e4..42df178e 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java @@ -27,8 +27,8 @@ import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collections; import java.util.List; import java.util.Queue; @@ -41,10 +41,11 @@ public final class StringArgument extends CommandArgument { private final StringMode stringMode; private StringArgument(final boolean required, - @Nonnull final String name, - @Nonnull final StringMode stringMode, - @Nonnull final String defaultValue, - @Nonnull final BiFunction, String, List> suggestionsProvider) { + @NonNull final String name, + @NonNull final StringMode stringMode, + @NonNull final String defaultValue, + @NonNull final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new StringParser<>(stringMode, suggestionsProvider), defaultValue, String.class, suggestionsProvider); this.stringMode = stringMode; @@ -57,8 +58,7 @@ public final class StringArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static StringArgument.Builder newBuilder(@Nonnull final String name) { + public static StringArgument.@NonNull Builder newBuilder(@NonNull final String name) { return new StringArgument.Builder<>(name); } @@ -69,8 +69,7 @@ public final class StringArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return StringArgument.newBuilder(name).single().asRequired().build(); } @@ -82,8 +81,8 @@ public final class StringArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument required(@Nonnull final String name, @Nonnull final StringMode stringMode) { + public static @NonNull CommandArgument required(@NonNull final String name, + @NonNull final StringMode stringMode) { return StringArgument.newBuilder(name).withMode(stringMode).asRequired().build(); } @@ -94,8 +93,7 @@ public final class StringArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return StringArgument.newBuilder(name).single().asOptional().build(); } @@ -107,23 +105,22 @@ public final class StringArgument extends CommandArgument { * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, @Nonnull final StringMode stringMode) { + public static @NonNull CommandArgument optional(@NonNull final String name, + @NonNull final StringMode stringMode) { return StringArgument.newBuilder(name).withMode(stringMode).asOptional().build(); } /** * Create a new required command argument with a default value * - * @param name Argument name - * @param defaultNum Default num - * @param Command sender type + * @param name Argument name + * @param defaultString Default string + * @param Command sender type * @return Created argument */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final String defaultNum) { - return StringArgument.newBuilder(name).asOptionalWithDefault(defaultNum).build(); + public static @NonNull CommandArgument optional(@NonNull final String name, + @NonNull String defaultString) { + return StringArgument.newBuilder(name).asOptionalWithDefault(defaultString).build(); } /** @@ -131,8 +128,7 @@ public final class StringArgument extends CommandArgument { * * @return String mode */ - @Nonnull - public StringMode getStringMode() { + public @NonNull StringMode getStringMode() { return this.stringMode; } @@ -149,12 +145,11 @@ public final class StringArgument extends CommandArgument { private StringMode stringMode = StringMode.SINGLE; private BiFunction, String, List> suggestionsProvider = (v1, v2) -> Collections.emptyList(); - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(String.class, name); } - @Nonnull - private Builder withMode(@Nonnull final StringMode stringMode) { + private @NonNull Builder withMode(@NonNull final StringMode stringMode) { this.stringMode = stringMode; return this; } @@ -164,8 +159,7 @@ public final class StringArgument extends CommandArgument { * * @return Builder instance */ - @Nonnull - public Builder greedy() { + public @NonNull Builder greedy() { this.stringMode = StringMode.GREEDY; return this; } @@ -175,8 +169,7 @@ public final class StringArgument extends CommandArgument { * * @return Builder instance */ - @Nonnull - public Builder single() { + public @NonNull Builder single() { this.stringMode = StringMode.SINGLE; return this; } @@ -186,8 +179,7 @@ public final class StringArgument extends CommandArgument { * * @return Builder instance */ - @Nonnull - public Builder quoted() { + public @NonNull Builder quoted() { this.stringMode = StringMode.QUOTED; return this; } @@ -198,9 +190,8 @@ public final class StringArgument extends CommandArgument { * @param suggestionsProvider Suggestions provider * @return Builder instance */ - @Nonnull - public Builder withSuggestionsProvider(@Nonnull final BiFunction, - String, List> suggestionsProvider) { + public @NonNull Builder withSuggestionsProvider(@NonNull final BiFunction<@NonNull CommandContext, + @NonNull String, @NonNull List<@NonNull String>> suggestionsProvider) { this.suggestionsProvider = suggestionsProvider; return this; } @@ -210,9 +201,8 @@ public final class StringArgument extends CommandArgument { * * @return Constructed argument */ - @Nonnull @Override - public StringArgument build() { + public @NonNull StringArgument build() { return new StringArgument<>(this.isRequired(), this.getName(), this.stringMode, this.getDefaultValue(), this.suggestionsProvider); } @@ -231,16 +221,16 @@ public final class StringArgument extends CommandArgument { * @param stringMode String parsing mode * @param suggestionsProvider Suggestions provider */ - public StringParser(@Nonnull final StringMode stringMode, - @Nonnull final BiFunction, String, List> suggestionsProvider) { + public StringParser(@NonNull final StringMode stringMode, + @NonNull final BiFunction<@NonNull CommandContext, @NonNull String, + @NonNull List<@NonNull String>> suggestionsProvider) { this.stringMode = stringMode; this.suggestionsProvider = suggestionsProvider; } - @Nonnull @Override - public ArgumentParseResult parse(@Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse(@NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -303,9 +293,9 @@ public final class StringArgument extends CommandArgument { return ArgumentParseResult.success(sj.toString()); } - @Nonnull @Override - public List suggestions(@Nonnull final CommandContext commandContext, @Nonnull final String input) { + public @NonNull List<@NonNull String> suggestions(@NonNull final CommandContext commandContext, + @NonNull final String input) { return this.suggestionsProvider.apply(commandContext, input); } @@ -319,8 +309,7 @@ public final class StringArgument extends CommandArgument { * * @return String mode */ - @Nonnull - public StringMode getStringMode() { + public @NonNull StringMode getStringMode() { return this.stringMode; } } @@ -337,7 +326,7 @@ public final class StringArgument extends CommandArgument { * @param input Input * @param stringMode String mode */ - public StringParseException(@Nonnull final String input, @Nonnull final StringMode stringMode) { + public StringParseException(@NonNull final String input, @NonNull final StringMode stringMode) { this.input = input; this.stringMode = stringMode; } @@ -348,8 +337,7 @@ public final class StringArgument extends CommandArgument { * * @return Input */ - @Nonnull - public String getInput() { + public @NonNull String getInput() { return this.input; } @@ -358,8 +346,7 @@ public final class StringArgument extends CommandArgument { * * @return String mode */ - @Nonnull - public StringMode getStringMode() { + public @NonNull StringMode getStringMode() { return this.stringMode; } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/UUIDArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/UUIDArgument.java index 7437c405..0520c8d8 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/UUIDArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/UUIDArgument.java @@ -27,9 +27,9 @@ import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.context.CommandContext; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; import java.util.Queue; import java.util.UUID; @@ -39,9 +39,10 @@ import java.util.function.BiFunction; public final class UUIDArgument extends CommandArgument { private UUIDArgument(final boolean required, - @Nonnull final String name, - @Nonnull final String defaultValue, - @Nullable final BiFunction, String, List> suggestionsProvider) { + @NonNull final String name, + @NonNull final String defaultValue, + @Nullable final BiFunction<@NonNull CommandContext, + @NonNull String, @NonNull List<@NonNull String>> suggestionsProvider) { super(required, name, new UUIDParser<>(), defaultValue, UUID.class, suggestionsProvider); } @@ -52,8 +53,7 @@ public final class UUIDArgument extends CommandArgument { * @param Command sender type * @return Created builder */ - @Nonnull - public static Builder newBuilder(@Nonnull final String name) { + public static @NonNull Builder newBuilder(@NonNull final String name) { return new Builder<>(name); } @@ -64,8 +64,7 @@ public final class UUIDArgument extends CommandArgument { * @param Command sender type * @return Created component */ - @Nonnull - public static CommandArgument required(@Nonnull final String name) { + public static @NonNull CommandArgument required(@NonNull final String name) { return UUIDArgument.newBuilder(name).asRequired().build(); } @@ -76,8 +75,7 @@ public final class UUIDArgument extends CommandArgument { * @param Command sender type * @return Created component */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name) { + public static @NonNull CommandArgument optional(@NonNull final String name) { return UUIDArgument.newBuilder(name).asOptional().build(); } @@ -89,16 +87,15 @@ public final class UUIDArgument extends CommandArgument { * @param Command sender type * @return Created component */ - @Nonnull - public static CommandArgument optional(@Nonnull final String name, - final UUID defaultUUID) { + public static @NonNull CommandArgument optional(@NonNull final String name, + @NonNull final UUID defaultUUID) { return UUIDArgument.newBuilder(name).asOptionalWithDefault(defaultUUID.toString()).build(); } public static final class Builder extends CommandArgument.Builder { - protected Builder(@Nonnull final String name) { + protected Builder(@NonNull final String name) { super(UUID.class, name); } @@ -107,9 +104,8 @@ public final class UUIDArgument extends CommandArgument { * * @return Constructed component */ - @Nonnull @Override - public UUIDArgument build() { + public @NonNull UUIDArgument build() { return new UUIDArgument<>(this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); } @@ -118,11 +114,10 @@ public final class UUIDArgument extends CommandArgument { private static final class UUIDParser implements ArgumentParser { - @Nonnull @Override - public ArgumentParseResult parse( - @Nonnull final CommandContext commandContext, - @Nonnull final Queue inputQueue) { + public @NonNull ArgumentParseResult parse( + @NonNull final CommandContext commandContext, + @NonNull final Queue<@NonNull String> inputQueue) { final String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); @@ -151,7 +146,7 @@ public final class UUIDArgument extends CommandArgument { * * @param input String input */ - public UUIDParseException(@Nonnull final String input) { + public UUIDParseException(@NonNull final String input) { super(input); } diff --git a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Pair.java b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Pair.java index 8b7ce2de..2674bce5 100644 --- a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Pair.java +++ b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Pair.java @@ -101,12 +101,11 @@ public class Pair implements Tuple { @Override public final int getSize() { - return Tuples.SIZE_PAIR; + return 2; } - @Nonnull @Override - public final Object[] toArray() { + public final @NonNull Object @NonNull [] toArray() { final Object[] array = new Object[2]; array[0] = this.first; array[1] = this.second; diff --git a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quartet.java b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quartet.java index e34d8bdf..0c8c3789 100644 --- a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quartet.java +++ b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quartet.java @@ -135,12 +135,11 @@ public class Quartet implements Tuple { @Override public final int getSize() { - return Tuples.SIZE_QUARTET; + return 4; } - @Nonnull @Override - public final Object[] toArray() { + public final @NonNull Object @NonNull [] toArray() { final Object[] array = new Object[4]; array[0] = this.first; array[1] = this.second; diff --git a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quintet.java b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quintet.java index d7567fbf..0e47d934 100644 --- a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quintet.java +++ b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Quintet.java @@ -153,12 +153,11 @@ public class Quintet implements Tuple { @Override public final int getSize() { - return Tuples.SIZE_QUINTET; + return 5; } - @Nonnull @Override - public final Object[] toArray() { + public final @NonNull Object @NonNull [] toArray() { final Object[] array = new Object[5]; array[0] = this.first; array[1] = this.second; diff --git a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Sextet.java b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Sextet.java index 42631255..b1e7246a 100644 --- a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Sextet.java +++ b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Sextet.java @@ -171,12 +171,11 @@ public class Sextet implements Tuple { @Override public final int getSize() { - return Tuples.SIZE_SEXTET; + return 6; } - @Nonnull @Override - public final Object[] toArray() { + public @NonNull final Object @NonNull [] toArray() { final Object[] array = new Object[6]; array[0] = this.first; array[1] = this.second; diff --git a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Triplet.java b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Triplet.java index f3fe04bc..fb280e7d 100644 --- a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Triplet.java +++ b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Triplet.java @@ -118,12 +118,11 @@ public class Triplet implements Tuple { @Override public final int getSize() { - return Tuples.SIZE_TRIPLET; + return 3; } - @Nonnull @Override - public final Object[] toArray() { + public final @NonNull Object @NonNull [] toArray() { final Object[] array = new Object[3]; array[0] = this.first; array[1] = this.second; diff --git a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Tuple.java b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Tuple.java index 474d0faf..66976903 100644 --- a/cloud-core/src/main/java/cloud/commandframework/types/tuples/Tuple.java +++ b/cloud-core/src/main/java/cloud/commandframework/types/tuples/Tuple.java @@ -23,7 +23,7 @@ // package cloud.commandframework.types.tuples; -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Tuple type @@ -42,7 +42,6 @@ public interface Tuple { * * @return Created array */ - @Nonnull - Object[] toArray(); + @NonNull Object @NonNull [] toArray(); } diff --git a/cloud-jline/src/main/java/cloud/commandframework/jline/JLineCommandManager.java b/cloud-jline/src/main/java/cloud/commandframework/jline/JLineCommandManager.java index 1c5b8099..b2c15b96 100644 --- a/cloud-jline/src/main/java/cloud/commandframework/jline/JLineCommandManager.java +++ b/cloud-jline/src/main/java/cloud/commandframework/jline/JLineCommandManager.java @@ -32,6 +32,7 @@ import cloud.commandframework.exceptions.NoSuchCommandException; import cloud.commandframework.execution.CommandExecutionCoordinator; import cloud.commandframework.internal.CommandRegistrationHandler; import cloud.commandframework.meta.SimpleCommandMeta; +import org.checkerframework.checker.nullness.qual.NonNull; import org.jline.reader.Candidate; import org.jline.reader.Completer; import org.jline.reader.LineReader; @@ -40,7 +41,6 @@ import org.jline.reader.ParsedLine; import org.jline.terminal.Terminal; import org.jline.terminal.TerminalBuilder; -import javax.annotation.Nonnull; import java.util.List; import java.util.function.Function; @@ -54,7 +54,7 @@ public class JLineCommandManager extends CommandManager impl * * @param executionCoordinatorFunction Function producing a new coordinator */ - public JLineCommandManager(@Nonnull final Function, + public JLineCommandManager(@NonNull final Function, CommandExecutionCoordinator> executionCoordinatorFunction) { super(executionCoordinatorFunction, CommandRegistrationHandler.nullCommandRegistrationHandler()); } @@ -138,9 +138,9 @@ public class JLineCommandManager extends CommandManager impl } @Override - public final void complete(@Nonnull final LineReader lineReader, - @Nonnull final ParsedLine parsedLine, - @Nonnull final List list) { + public final void complete(@NonNull final LineReader lineReader, + @NonNull final ParsedLine parsedLine, + @NonNull final List<@NonNull Candidate> list) { final String line = parsedLine.line(); if (line == null || line.isEmpty() || !line.startsWith("/")) { System.out.println("Cannot suggest: empty line"); @@ -149,14 +149,14 @@ public class JLineCommandManager extends CommandManager impl System.out.printf("Trying to complete '%s'\n", line); } - @Nonnull @Override - public final SimpleCommandMeta createDefaultCommandMeta() { + public final @NonNull SimpleCommandMeta createDefaultCommandMeta() { return SimpleCommandMeta.empty(); } @Override - public final boolean hasPermission(@Nonnull final JLineCommandSender sender, @Nonnull final String permission) { + public final boolean hasPermission(@NonNull final JLineCommandSender sender, + @NonNull final String permission) { return true; } diff --git a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java index 3cc628ac..f1c5e7e2 100644 --- a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java +++ b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java @@ -57,9 +57,9 @@ import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import com.mojang.brigadier.tree.LiteralCommandNode; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; @@ -94,8 +94,8 @@ public final class CloudBrigadierManager { * @param commandManager Command manager * @param dummyContextProvider Provider of dummy context for completions */ - public CloudBrigadierManager(@Nonnull final CommandManager commandManager, - @Nonnull final Supplier> + public CloudBrigadierManager(@NonNull final CommandManager commandManager, + @NonNull final Supplier<@NonNull CommandContext> dummyContextProvider) { this.mappers = new HashMap<>(); this.defaultArgumentTypeSuppliers = new HashMap<>(); @@ -194,9 +194,9 @@ public final class CloudBrigadierManager { * @param cloud argument type * @param Brigadier argument type value */ - public , O> void registerMapping(@Nonnull final TypeToken argumentType, - @Nonnull final Function> mapper) { + public , O> void registerMapping(@NonNull final TypeToken argumentType, + @NonNull final Function<@NonNull ? extends K, + @NonNull ? extends ArgumentType> mapper) { this.mappers.put(GenericTypeReflector.erase(argumentType.getType()), mapper); } @@ -206,17 +206,16 @@ public final class CloudBrigadierManager { * @param clazz Type to map * @param supplier Supplier that supplies the argument type */ - public void registerDefaultArgumentTypeSupplier(@Nonnull final Class clazz, - @Nonnull final Supplier> supplier) { + public void registerDefaultArgumentTypeSupplier(@NonNull final Class clazz, + @NonNull final Supplier<@NonNull ArgumentType> supplier) { this.defaultArgumentTypeSuppliers.put(clazz, supplier); } - @Nullable @SuppressWarnings("all") - private > Pair, Boolean> getArgument( - @Nonnull final TypeToken valueType, - @Nonnull final TypeToken argumentType, - @Nonnull final K argument) { + private > @Nullable Pair<@NonNull ArgumentType, @NonNull Boolean> getArgument( + @NonNull final TypeToken valueType, + @NonNull final TypeToken argumentType, + @NonNull final K argument) { final ArgumentParser commandArgument = (ArgumentParser) argument; Function function = this.mappers.get(GenericTypeReflector.erase(argumentType.getType())); if (function == null) { @@ -225,11 +224,11 @@ public final class CloudBrigadierManager { return new Pair<>((ArgumentType) function.apply(commandArgument), !(argument instanceof StringArgument.StringParser)); } - @Nonnull - private > Pair, Boolean> createDefaultMapper( - @Nonnull final TypeToken clazz, - @Nonnull final ArgumentParser argument) { - final Supplier> argumentTypeSupplier = this.defaultArgumentTypeSuppliers.get(clazz.getRawType()); + private > @NonNull Pair<@NonNull ArgumentType, @NonNull Boolean> createDefaultMapper( + @NonNull final TypeToken clazz, + @NonNull final ArgumentParser argument) { + final Supplier> argumentTypeSupplier = this.defaultArgumentTypeSuppliers + .get(GenericTypeReflector.erase(clazz.getType())); if (argumentTypeSupplier != null) { return new Pair<>(argumentTypeSupplier.get(), true); } @@ -245,10 +244,11 @@ public final class CloudBrigadierManager { * @param executor Command executor * @return Literal command node */ - public LiteralCommandNode createLiteralCommandNode(@Nonnull final String label, - @Nonnull final Command cloudCommand, - @Nonnull final BiPredicate permissionChecker, - @Nonnull final com.mojang.brigadier.Command executor) { + public @NonNull LiteralCommandNode createLiteralCommandNode(@NonNull final String label, + @NonNull final Command cloudCommand, + @NonNull final BiPredicate<@NonNull S, + @NonNull CommandPermission> permissionChecker, + final com.mojang.brigadier.@NonNull Command executor) { final CommandTree.Node> node = this.commandManager .getCommandTree().getNamedNode(cloudCommand.getArguments().get(0).getName()); final SuggestionProvider provider = (context, builder) -> this.buildSuggestions(node.getValue(), context, builder); @@ -275,12 +275,12 @@ public final class CloudBrigadierManager { * @param permissionChecker Permission checker * @return Constructed literal command node */ - @Nonnull - public LiteralCommandNode createLiteralCommandNode(@Nonnull final CommandTree.Node> cloudCommand, - @Nonnull final LiteralCommandNode root, - @Nonnull final SuggestionProvider suggestionProvider, - @Nonnull final com.mojang.brigadier.Command executor, - @Nonnull final BiPredicate permissionChecker) { + public @NonNull LiteralCommandNode createLiteralCommandNode( + final CommandTree.@NonNull Node<@NonNull CommandArgument> cloudCommand, + @NonNull final LiteralCommandNode root, + @NonNull final SuggestionProvider suggestionProvider, + final com.mojang.brigadier.@NonNull Command executor, + @NonNull final BiPredicate<@NonNull S, @NonNull CommandPermission> permissionChecker) { final LiteralArgumentBuilder literalArgumentBuilder = LiteralArgumentBuilder.literal(root.getLiteral()) .requires(sender -> permissionChecker.test(sender, (CommandPermission) cloudCommand.getNodeMeta() .getOrDefault("permission", Permission.empty()))); @@ -295,11 +295,12 @@ public final class CloudBrigadierManager { return constructedRoot; } - private ArgumentBuilder constructCommandNode(final boolean forceExecutor, - @Nonnull final CommandTree.Node> root, - @Nonnull final BiPredicate permissionChecker, - @Nonnull final com.mojang.brigadier.Command executor, - @Nonnull final SuggestionProvider suggestionProvider) { + private @NonNull ArgumentBuilder constructCommandNode( + final boolean forceExecutor, + final CommandTree.@NonNull Node> root, + @NonNull final BiPredicate<@NonNull S, @NonNull CommandPermission> permissionChecker, + final com.mojang.brigadier.@NonNull Command executor, + final SuggestionProvider suggestionProvider) { if (root.getValue() instanceof CompoundArgument) { @SuppressWarnings("unchecked") final CompoundArgument compoundArgument = (CompoundArgument) root.getValue(); @@ -313,8 +314,8 @@ public final class CloudBrigadierManager { for (int i = parsers.length - 1; i >= 0; i--) { @SuppressWarnings("unchecked") final ArgumentParser parser = (ArgumentParser) parsers[i]; - final Pair, Boolean> pair = this.getArgument(TypeToken.of((Class) types[i]), - TypeToken.of(parser.getClass()), + final Pair, Boolean> pair = this.getArgument(TypeToken.get((Class) types[i]), + TypeToken.get(parser.getClass()), parser); final SuggestionProvider provider = pair.getRight() ? null : suggestionProvider; final ArgumentBuilder fragmentBuilder = RequiredArgumentBuilder @@ -369,10 +370,10 @@ public final class CloudBrigadierManager { return argumentBuilder; } - @Nonnull - private CompletableFuture buildSuggestions(@Nonnull final CommandArgument argument, - @Nonnull final com.mojang.brigadier.context.CommandContext s, - @Nonnull final SuggestionsBuilder builder) { + private @NonNull CompletableFuture buildSuggestions( + @NonNull final CommandArgument argument, + final com.mojang.brigadier.context.@NonNull CommandContext s, + @NonNull final SuggestionsBuilder builder) { final CommandContext commandContext = this.dummyContextProvider.get(); final LinkedList inputQueue = new LinkedList<>(Collections.singletonList(builder.getInput())); final CommandPreprocessingContext commandPreprocessingContext = @@ -416,18 +417,17 @@ public final class CloudBrigadierManager { private final L left; private final R right; - private Pair(@Nonnull final L left, @Nonnull final R right) { + private Pair(@NonNull final L left, + @NonNull final R right) { this.left = left; this.right = right; } - @Nonnull - private L getLeft() { + private @NonNull L getLeft() { return this.left; } - @Nonnull - private R getRight() { + private @NonNull R getRight() { return this.right; } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java index 984f789d..81613fc3 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java @@ -34,8 +34,8 @@ import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.command.PluginIdentifiableCommand; import org.bukkit.plugin.Plugin; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.List; import java.util.concurrent.CompletionException; @@ -51,11 +51,11 @@ final class BukkitCommand extends org.bukkit.command.Command implements Plugi private final Command cloudCommand; @SuppressWarnings("unchecked") - BukkitCommand(@Nonnull final String label, - @Nonnull final List aliases, - @Nonnull final Command cloudCommand, - @Nonnull final CommandArgument command, - @Nonnull final BukkitCommandManager manager) { + BukkitCommand(@NonNull final String label, + @NonNull final List<@NonNull String> aliases, + @NonNull final Command cloudCommand, + @NonNull final CommandArgument command, + @NonNull final BukkitCommandManager manager) { super(label, cloudCommand.getCommandMeta().getOrDefault("description", ""), "", diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java index a749bbc1..b964edbc 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java @@ -34,8 +34,8 @@ import org.bukkit.Material; import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.EnumSet; import java.util.Set; import java.util.function.Function; @@ -71,11 +71,11 @@ public class BukkitCommandManager extends CommandManager { * @param backwardsCommandSenderMapper Function that maps the command sender type to {@link CommandSender} * @throws Exception If the construction of the manager fails */ - public BukkitCommandManager(@Nonnull final Plugin owningPlugin, - @Nonnull final Function, - CommandExecutionCoordinator> commandExecutionCoordinator, - @Nonnull final Function commandSenderMapper, - @Nonnull final Function backwardsCommandSenderMapper) + public BukkitCommandManager(@NonNull final Plugin owningPlugin, + @NonNull final Function<@NonNull CommandTree, + @NonNull CommandExecutionCoordinator> commandExecutionCoordinator, + @NonNull final Function<@NonNull CommandSender, @NonNull C> commandSenderMapper, + @NonNull final Function<@NonNull C, @NonNull CommandSender> backwardsCommandSenderMapper) throws Exception { super(commandExecutionCoordinator, new BukkitPluginRegistrationHandler<>()); ((BukkitPluginRegistrationHandler) this.getCommandRegistrationHandler()).initialize(this); @@ -117,8 +117,7 @@ public class BukkitCommandManager extends CommandManager { * * @return Owning plugin */ - @Nonnull - public Plugin getOwningPlugin() { + public @NonNull Plugin getOwningPlugin() { return this.owningPlugin; } @@ -127,9 +126,8 @@ public class BukkitCommandManager extends CommandManager { * * @return Meta data */ - @Nonnull @Override - public BukkitCommandMeta createDefaultCommandMeta() { + public @NonNull BukkitCommandMeta createDefaultCommandMeta() { return BukkitCommandMetaBuilder.builder().withDescription("").build(); } @@ -138,13 +136,12 @@ public class BukkitCommandManager extends CommandManager { * * @return Command sender mapper */ - @Nonnull - public final Function getCommandSenderMapper() { + public final @NonNull Function<@NonNull CommandSender, @NonNull C> getCommandSenderMapper() { return this.commandSenderMapper; } @Override - public final boolean hasPermission(@Nonnull final C sender, @Nonnull final String permission) { + public final boolean hasPermission(@NonNull final C sender, @NonNull final String permission) { if (permission.isEmpty()) { return true; } @@ -172,7 +169,7 @@ public class BukkitCommandManager extends CommandManager { * @param capability Capability * @return {@code true} if the manager has the given capability, else {@code false} */ - public final boolean queryCapability(@Nonnull final CloudBukkitCapabilities capability) { + public final boolean queryCapability(@NonNull final CloudBukkitCapabilities capability) { return this.queryCapabilities().contains(capability); } @@ -181,7 +178,7 @@ public class BukkitCommandManager extends CommandManager { * * @return A set containing all capabilities of the instance */ - public final Set queryCapabilities() { + public final @NonNull Set<@NonNull CloudBukkitCapabilities> queryCapabilities() { if (this.paper) { if (this.minecraftVersion >= BRIGADIER_MINIMAL_VERSION) { if (this.minecraftVersion >= PAPER_BRIGADIER_VERSION) { @@ -226,8 +223,7 @@ public class BukkitCommandManager extends CommandManager { * * @return The backwards command sender mapper */ - @Nonnull - public final Function getBackwardsCommandSenderMapper() { + public final @NonNull Function<@NonNull C, @NonNull CommandSender> getBackwardsCommandSenderMapper() { return this.backwardsCommandSenderMapper; } @@ -248,7 +244,7 @@ public class BukkitCommandManager extends CommandManager { * * @param reason Reason */ - public BrigadierFailureException(@Nonnull final BrigadierFailureReason reason) { + public BrigadierFailureException(@NonNull final BrigadierFailureReason reason) { this.reason = reason; } @@ -258,7 +254,7 @@ public class BukkitCommandManager extends CommandManager { * @param reason Reason * @param cause Cause */ - public BrigadierFailureException(@Nonnull final BrigadierFailureReason reason, @Nonnull final Throwable cause) { + public BrigadierFailureException(@NonNull final BrigadierFailureReason reason, @NonNull final Throwable cause) { super(cause); this.reason = reason; } @@ -268,8 +264,7 @@ public class BukkitCommandManager extends CommandManager { * * @return Reason */ - @Nonnull - public BrigadierFailureReason getReason() { + public @NonNull BrigadierFailureReason getReason() { return this.reason; } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandSender.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandSender.java index 0c4bb01f..cb1d78ba 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandSender.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandSender.java @@ -25,8 +25,7 @@ package cloud.commandframework.bukkit; import com.google.common.base.Objects; import org.bukkit.entity.Player; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Command sender that proxies {@link org.bukkit.command.CommandSender} @@ -41,7 +40,7 @@ public abstract class BukkitCommandSender { * * @param internalSender Bukkit command sender */ - public BukkitCommandSender(@Nonnull final org.bukkit.command.CommandSender internalSender) { + public BukkitCommandSender(final org.bukkit.command.@NonNull CommandSender internalSender) { this.internalSender = internalSender; } @@ -51,8 +50,7 @@ public abstract class BukkitCommandSender { * @param player Player instance * @return Constructed command sender */ - @Nonnull - public static BukkitCommandSender player(@Nonnull final Player player) { + public static @NonNull BukkitCommandSender player(@NonNull final Player player) { return new BukkitPlayerSender(player); } @@ -61,8 +59,7 @@ public abstract class BukkitCommandSender { * * @return Constructed command sender */ - @Nonnull - public static BukkitCommandSender console() { + public static @NonNull BukkitCommandSender console() { return new BukkitConsoleSender(); } @@ -72,8 +69,7 @@ public abstract class BukkitCommandSender { * @param sender Bukkit command sender * @return Constructed command sender */ - @Nonnull - public static BukkitCommandSender of(@Nonnull final org.bukkit.command.CommandSender sender) { + public static @NonNull BukkitCommandSender of(final org.bukkit.command.@NonNull CommandSender sender) { if (sender instanceof Player) { return player((Player) sender); } @@ -102,8 +98,7 @@ public abstract class BukkitCommandSender { * * @return Proxied command sneder */ - @Nonnull - public org.bukkit.command.CommandSender getInternalSender() { + public org.bukkit.command.@NonNull CommandSender getInternalSender() { return this.internalSender; } @@ -120,15 +115,14 @@ public abstract class BukkitCommandSender { * * @return Player object */ - @Nonnull - public abstract Player asPlayer(); + public abstract @NonNull Player asPlayer(); /** * Send a message to the command sender * * @param message Message to send */ - public void sendMessage(@Nonnull final String message) { + public void sendMessage(@NonNull final String message) { this.internalSender.sendMessage(message); } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPlayerSender.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPlayerSender.java index f1d5d24e..1b786119 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPlayerSender.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPlayerSender.java @@ -24,12 +24,11 @@ package cloud.commandframework.bukkit; import org.bukkit.entity.Player; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; final class BukkitPlayerSender extends BukkitCommandSender { - BukkitPlayerSender(@Nonnull final Player player) { + BukkitPlayerSender(@NonNull final Player player) { super(player); } @@ -38,9 +37,8 @@ final class BukkitPlayerSender extends BukkitCommandSender { return true; } - @Nonnull @Override - public Player asPlayer() { + public @NonNull Player asPlayer() { return (Player) this.getInternalSender(); } } diff --git a/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommand.java b/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommand.java index c5790bc6..e49ef1fa 100644 --- a/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommand.java +++ b/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommand.java @@ -35,8 +35,8 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.TabExecutor; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.concurrent.CompletionException; public final class BungeeCommand extends Command implements TabExecutor { @@ -51,9 +51,9 @@ public final class BungeeCommand extends Command implements TabExecutor { private final cloud.commandframework.Command cloudCommand; @SuppressWarnings("unchecked") - BungeeCommand(@Nonnull final cloud.commandframework.Command cloudCommand, - @Nonnull final CommandArgument command, - @Nonnull final BungeeCommandManager manager) { + BungeeCommand(final cloud.commandframework.@NonNull Command cloudCommand, + @NonNull final CommandArgument command, + @NonNull final BungeeCommandManager manager) { super(command.getName(), cloudCommand.getCommandPermission().toString(), ((StaticArgument) command).getAlternativeAliases().toArray(new String[0])); diff --git a/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommandManager.java b/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommandManager.java index c2082978..ac701d0d 100644 --- a/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommandManager.java +++ b/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeeCommandManager.java @@ -29,8 +29,8 @@ import cloud.commandframework.execution.CommandExecutionCoordinator; import cloud.commandframework.meta.SimpleCommandMeta; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.plugin.Plugin; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.function.Function; public class BungeeCommandManager extends CommandManager { @@ -48,11 +48,11 @@ public class BungeeCommandManager extends CommandManager { * @param backwardsCommandSenderMapper Function that maps the command sender type to {@link CommandSender} * @throws Exception If the construction of the manager fails */ - public BungeeCommandManager(@Nonnull final Plugin owningPlugin, - @Nonnull final Function, - CommandExecutionCoordinator> commandExecutionCoordinator, - @Nonnull final Function commandSenderMapper, - @Nonnull final Function backwardsCommandSenderMapper) + public BungeeCommandManager(@NonNull final Plugin owningPlugin, + @NonNull final Function<@NonNull CommandTree, + @NonNull CommandExecutionCoordinator> commandExecutionCoordinator, + @NonNull final Function<@NonNull CommandSender, @NonNull C> commandSenderMapper, + @NonNull final Function<@NonNull C, @NonNull CommandSender> backwardsCommandSenderMapper) throws Exception { super(commandExecutionCoordinator, new BungeePluginRegistrationHandler<>()); ((BungeePluginRegistrationHandler) this.getCommandRegistrationHandler()).initialize(this); @@ -62,22 +62,20 @@ public class BungeeCommandManager extends CommandManager { } @Override - public final boolean hasPermission(@Nonnull final C sender, - @Nonnull final String permission) { + public final boolean hasPermission(@NonNull final C sender, + @NonNull final String permission) { if (permission.isEmpty()) { return true; } return this.backwardsCommandSenderMapper.apply(sender).hasPermission(permission); } - @Nonnull @Override - public final SimpleCommandMeta createDefaultCommandMeta() { + public final @NonNull SimpleCommandMeta createDefaultCommandMeta() { return SimpleCommandMeta.empty(); } - @Nonnull - final Function getCommandSenderMapper() { + final @NonNull Function<@NonNull CommandSender, @NonNull C> getCommandSenderMapper() { return this.commandSenderMapper; } @@ -86,8 +84,7 @@ public class BungeeCommandManager extends CommandManager { * * @return Owning plugin */ - @Nonnull - public Plugin getOwningPlugin() { + public @NonNull Plugin getOwningPlugin() { return this.owningPlugin; } diff --git a/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeePluginRegistrationHandler.java b/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeePluginRegistrationHandler.java index b3fa7a25..b3c6d244 100644 --- a/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeePluginRegistrationHandler.java +++ b/cloud-minecraft/cloud-bungee/src/main/java/cloud/commandframework/bungee/BungeePluginRegistrationHandler.java @@ -26,8 +26,8 @@ package cloud.commandframework.bungee; import cloud.commandframework.Command; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.internal.CommandRegistrationHandler; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.HashMap; import java.util.Map; @@ -40,12 +40,12 @@ final class BungeePluginRegistrationHandler implements CommandRegistrationHan BungeePluginRegistrationHandler() { } - void initialize(@Nonnull final BungeeCommandManager bungeeCommandManager) { + void initialize(@NonNull final BungeeCommandManager bungeeCommandManager) { this.bungeeCommandManager = bungeeCommandManager; } @Override - public boolean registerCommand(@Nonnull final Command command) { + public boolean registerCommand(@NonNull final Command command) { /* We only care about the root command argument */ final CommandArgument commandArgument = command.getArguments().get(0); if (this.registeredCommands.containsKey(commandArgument)) { diff --git a/cloud-minecraft/cloud-cloudburst-test/src/main/java/cloud/commandframework/cloudburst/CloudCloudburstTest.java b/cloud-minecraft/cloud-cloudburst-test/src/main/java/cloud/commandframework/cloudburst/CloudCloudburstTest.java index 68bc2c81..b812bd09 100644 --- a/cloud-minecraft/cloud-cloudburst-test/src/main/java/cloud/commandframework/cloudburst/CloudCloudburstTest.java +++ b/cloud-minecraft/cloud-cloudburst-test/src/main/java/cloud/commandframework/cloudburst/CloudCloudburstTest.java @@ -29,11 +29,11 @@ import cloud.commandframework.annotations.CommandMethod; import cloud.commandframework.annotations.specifier.Range; import cloud.commandframework.execution.CommandExecutionCoordinator; import cloud.commandframework.meta.SimpleCommandMeta; +import org.checkerframework.checker.nullness.qual.NonNull; import org.cloudburstmc.server.command.CommandSender; import org.cloudburstmc.server.plugin.PluginBase; import org.cloudburstmc.server.utils.TextFormat; -import javax.annotation.Nonnull; import java.util.function.Function; /** @@ -61,8 +61,8 @@ public final class CloudCloudburstTest extends PluginBase { } @CommandMethod("test [str]") - private void testCommand(@Nonnull @Argument(value = "str", defaultValue = "potato") final String string, - @Nonnull final CommandSender source, + private void testCommand(@NonNull @Argument(value = "str", defaultValue = "potato") final String string, + @NonNull final CommandSender source, @Argument("num") @Range(min = "10", max = "33") final int num) { source.sendMessage(TextFormat.RED + "You said: " + TextFormat.GOLD + string diff --git a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommand.java b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommand.java index 7ab8e4ea..218f8786 100644 --- a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommand.java +++ b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommand.java @@ -24,18 +24,18 @@ package cloud.commandframework.cloudburst; import cloud.commandframework.Command; -import cloud.commandframework.exceptions.InvalidSyntaxException; -import cloud.commandframework.exceptions.NoPermissionException; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.exceptions.ArgumentParseException; import cloud.commandframework.exceptions.InvalidCommandSenderException; +import cloud.commandframework.exceptions.InvalidSyntaxException; +import cloud.commandframework.exceptions.NoPermissionException; import cloud.commandframework.exceptions.NoSuchCommandException; +import org.checkerframework.checker.nullness.qual.NonNull; import org.cloudburstmc.server.command.CommandSender; import org.cloudburstmc.server.command.PluginCommand; import org.cloudburstmc.server.command.data.CommandData; import org.cloudburstmc.server.plugin.Plugin; -import javax.annotation.Nonnull; import java.util.List; import java.util.concurrent.CompletionException; @@ -50,11 +50,11 @@ final class CloudburstCommand extends PluginCommand { private final CloudburstCommandManager manager; private final Command cloudCommand; - CloudburstCommand(@Nonnull final String label, - @Nonnull final List aliases, - @Nonnull final Command cloudCommand, - @Nonnull final CommandArgument command, - @Nonnull final CloudburstCommandManager manager) { + CloudburstCommand(@NonNull final String label, + @NonNull final List<@NonNull String> aliases, + @NonNull final Command cloudCommand, + @NonNull final CommandArgument command, + @NonNull final CloudburstCommandManager manager) { super(manager.getOwningPlugin(), CommandData.builder(label) .addAliases(aliases.toArray(new String[0])) .addPermission(cloudCommand.getCommandPermission().toString()) diff --git a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java index d58f405c..b7fce105 100644 --- a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java +++ b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java @@ -28,10 +28,10 @@ import cloud.commandframework.CommandTree; import cloud.commandframework.execution.CommandExecutionCoordinator; import cloud.commandframework.meta.CommandMeta; import cloud.commandframework.meta.SimpleCommandMeta; +import org.checkerframework.checker.nullness.qual.NonNull; import org.cloudburstmc.server.command.CommandSender; import org.cloudburstmc.server.plugin.Plugin; -import javax.annotation.Nonnull; import java.util.function.Function; /** @@ -54,11 +54,11 @@ public class CloudburstCommandManager extends CommandManager { * @param commandSenderMapper Function that maps {@link CommandSender} to the command sender type * @param backwardsCommandSenderMapper Function that maps the command sender type to {@link CommandSender} */ - public CloudburstCommandManager(@Nonnull final Plugin owningPlugin, - @Nonnull final Function, - CommandExecutionCoordinator> commandExecutionCoordinator, - @Nonnull final Function commandSenderMapper, - @Nonnull final Function backwardsCommandSenderMapper) { + public CloudburstCommandManager(@NonNull final Plugin owningPlugin, + @NonNull final Function<@NonNull CommandTree, + @NonNull CommandExecutionCoordinator> commandExecutionCoordinator, + @NonNull final Function<@NonNull CommandSender, @NonNull C> commandSenderMapper, + @NonNull final Function<@NonNull C, @NonNull CommandSender> backwardsCommandSenderMapper) { super(commandExecutionCoordinator, new CloudburstPluginRegistrationHandler<>()); ((CloudburstPluginRegistrationHandler) this.getCommandRegistrationHandler()).initialize(this); this.commandSenderMapper = commandSenderMapper; @@ -67,19 +67,17 @@ public class CloudburstCommandManager extends CommandManager { } @Override - public final boolean hasPermission(@Nonnull final C sender, - @Nonnull final String permission) { + public final boolean hasPermission(@NonNull final C sender, + @NonNull final String permission) { return this.backwardsCommandSenderMapper.apply(sender).hasPermission(permission); } - @Nonnull @Override - public final CommandMeta createDefaultCommandMeta() { + public final @NonNull CommandMeta createDefaultCommandMeta() { return SimpleCommandMeta.builder().build(); } - @Nonnull - final Function getCommandSenderMapper() { + final @NonNull Function<@NonNull CommandSender, @NonNull C> getCommandSenderMapper() { return this.commandSenderMapper; } @@ -88,8 +86,7 @@ public class CloudburstCommandManager extends CommandManager { * * @return Owning plugin */ - @Nonnull - public final Plugin getOwningPlugin() { + public final @NonNull Plugin getOwningPlugin() { return this.owningPlugin; } diff --git a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstPluginRegistrationHandler.java b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstPluginRegistrationHandler.java index dbad7406..534c1f3c 100644 --- a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstPluginRegistrationHandler.java +++ b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstPluginRegistrationHandler.java @@ -23,14 +23,14 @@ // package cloud.commandframework.cloudburst; -import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.Command; +import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.StaticArgument; import cloud.commandframework.internal.CommandRegistrationHandler; +import org.checkerframework.checker.nullness.qual.NonNull; import org.cloudburstmc.server.Server; import org.cloudburstmc.server.plugin.Plugin; -import javax.annotation.Nonnull; import java.util.HashMap; import java.util.Map; @@ -43,12 +43,12 @@ class CloudburstPluginRegistrationHandler implements CommandRegistrationHandl CloudburstPluginRegistrationHandler() { } - void initialize(@Nonnull final CloudburstCommandManager cloudburstCommandManager) { + void initialize(@NonNull final CloudburstCommandManager cloudburstCommandManager) { this.cloudburstCommandManager = cloudburstCommandManager; } @Override - public final boolean registerCommand(@Nonnull final Command command) { + public final boolean registerCommand(@NonNull final Command command) { /* We only care about the root command argument */ final CommandArgument commandArgument = command.getArguments().get(0); if (this.registeredCommands.containsKey(commandArgument)) { diff --git a/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/AudienceProvider.java b/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/AudienceProvider.java index 7c8e5baa..f05e5bfb 100644 --- a/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/AudienceProvider.java +++ b/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/AudienceProvider.java @@ -24,8 +24,8 @@ package cloud.commandframework; import net.kyori.adventure.audience.Audience; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.function.Function; /** @@ -34,7 +34,7 @@ import java.util.function.Function; * @param Command sender type */ @FunctionalInterface -public interface AudienceProvider extends Function { +public interface AudienceProvider extends Function<@NonNull C, @NonNull Audience> { /** * Convert a command sender to an {@link Audience} @@ -43,7 +43,6 @@ public interface AudienceProvider extends Function { * @return Mapped audience */ @Override - @Nonnull - Audience apply(@Nonnull C sender); + @NonNull Audience apply(@NonNull C sender); } diff --git a/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/MinecraftHelp.java b/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/MinecraftHelp.java index 7208b2ad..e9028581 100644 --- a/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/MinecraftHelp.java +++ b/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/MinecraftHelp.java @@ -28,8 +28,8 @@ import cloud.commandframework.arguments.StaticArgument; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; @@ -73,9 +73,9 @@ public final class MinecraftHelp { * @param audienceProvider Provider that maps the command sender type to {@link Audience} * @param commandManager Command manager instance */ - public MinecraftHelp(@Nonnull final String commandPrefix, - @Nonnull final AudienceProvider audienceProvider, - @Nonnull final CommandManager commandManager) { + public MinecraftHelp(@NonNull final String commandPrefix, + @NonNull final AudienceProvider audienceProvider, + @NonNull final CommandManager commandManager) { this.commandPrefix = commandPrefix; this.audienceProvider = audienceProvider; this.commandManager = commandManager; @@ -109,8 +109,7 @@ public final class MinecraftHelp { * * @return Command manager */ - @Nonnull - public CommandManager getCommandManager() { + public @NonNull CommandManager getCommandManager() { return this.commandManager; } @@ -119,8 +118,7 @@ public final class MinecraftHelp { * * @return Audience provider */ - @Nonnull - public AudienceProvider getAudienceProvider() { + public @NonNull AudienceProvider getAudienceProvider() { return this.audienceProvider; } @@ -130,8 +128,7 @@ public final class MinecraftHelp { * @param sender Sender to map * @return Mapped audience */ - @Nonnull - public Audience getAudience(@Nonnull final C sender) { + public @NonNull Audience getAudience(@NonNull final C sender) { return this.audienceProvider.apply(sender); } @@ -141,7 +138,8 @@ public final class MinecraftHelp { * @param key Message key * @param message Message */ - public void setMessage(@Nonnull final String key, @Nonnull final String message) { + public void setMessage(@NonNull final String key, + @NonNull final String message) { this.messageMap.put(key, message); } @@ -151,17 +149,17 @@ public final class MinecraftHelp { * @param query Command query (without leading '/') * @param recipient Recipient */ - public void queryCommands(@Nonnull final String query, - @Nonnull final C recipient) { + public void queryCommands(@NonNull final String query, + @NonNull final C recipient) { final Audience audience = this.getAudience(recipient); audience.sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_HELP_HEADER))); this.printTopic(recipient, query, this.commandManager.getCommandHelpHandler().queryHelp(query)); audience.sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_HELP_FOOTER))); } - private void printTopic(@Nonnull final C sender, - @Nonnull final String query, - @Nonnull final CommandHelpHandler.HelpTopic helpTopic) { + private void printTopic(@NonNull final C sender, + @NonNull final String query, + final CommandHelpHandler.@NonNull HelpTopic helpTopic) { this.getAudience(sender).sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_QUERY_QUERY), Template.of("query", query))); if (helpTopic instanceof CommandHelpHandler.IndexHelpTopic) { @@ -175,7 +173,8 @@ public final class MinecraftHelp { } } - private void printIndexHelpTopic(@Nonnull final C sender, @Nonnull final CommandHelpHandler.IndexHelpTopic helpTopic) { + private void printIndexHelpTopic(@NonNull final C sender, + final CommandHelpHandler.@NonNull IndexHelpTopic helpTopic) { final Audience audience = this.getAudience(sender); audience.sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_QUERY_AVAILABLE_COMMANDS))); final Iterator> iterator = helpTopic.getEntries().iterator(); @@ -202,7 +201,8 @@ public final class MinecraftHelp { } } - private void printMultiHelpTopic(@Nonnull final C sender, @Nonnull final CommandHelpHandler.MultiHelpTopic helpTopic) { + private void printMultiHelpTopic(@NonNull final C sender, + final CommandHelpHandler.@NonNull MultiHelpTopic helpTopic) { final Audience audience = this.getAudience(sender); audience.sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_QUERY_LONGEST_PATH), Template.of("command", helpTopic.getLongestPath()))); @@ -236,7 +236,8 @@ public final class MinecraftHelp { } } - private void printVerboseHelpTopic(@Nonnull final C sender, @Nonnull final CommandHelpHandler.VerboseHelpTopic helpTopic) { + private void printVerboseHelpTopic(@NonNull final C sender, + final CommandHelpHandler.@NonNull VerboseHelpTopic helpTopic) { final Audience audience = this.getAudience(sender); final String command = this.commandManager.getCommandSyntaxFormatter() .apply(helpTopic.getCommand().getArguments(), null);