Skip to content

Commit

Permalink
Nobody likes optionals.
Browse files Browse the repository at this point in the history
  • Loading branch information
Revxrsal committed Oct 8, 2021
1 parent a245e3c commit 94a5925
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import revxrsal.commands.process.ValueResolver.ValueResolverContext;

import java.util.List;
import java.util.Optional;

public final class BaseCommandDispatcher {

Expand Down Expand Up @@ -223,20 +222,20 @@ private static abstract class ParamResolverContext implements ParameterResolverC
return parameter.getCommandHandler();
}

@Override public <T> Optional<T> getResolvedParameter(@NotNull CommandParameter parameter) {
@Override public <T> @NotNull T getResolvedParameter(@NotNull CommandParameter parameter) {
try {
return (Optional<T>) Optional.of(resolved[parameter.getMethodIndex()]);
return (T) resolved[parameter.getMethodIndex()];
} catch (Throwable throwable) {
return Optional.empty();
throw new IllegalArgumentException("This parameter has not been resolved yet!");
}
}

@Override public <T> Optional<T> getResolvedArgument(@NotNull Class<T> type) {
@Override public <T> @NotNull T getResolvedArgument(@NotNull Class<T> type) {
for (Object o : resolved) {
if (type.isInstance(o))
return (Optional<T>) Optional.of(o);
return (T) o;
}
return Optional.empty();
throw new IllegalArgumentException("This parameter has not been resolved yet!");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import revxrsal.commands.process.ValueResolver.ValueResolverContext;

import java.util.List;
import java.util.Optional;

/**
* Represents a resolver for a {@link CommandParameter}. Instances of this
Expand Down Expand Up @@ -89,24 +88,26 @@ interface ParameterResolverContext {
/**
* Returns the last resolved value of the given parameter type. If
* no parameter matches the given type, or if the parameter was not resolved yet,
* this will return an empty {@link Optional}.
* this will throw an {@link IllegalStateException}.
*
* @param type The parameter type to fetch for.
* @param <T> The resolved type
* @throws IllegalStateException If no parameter of this type was resolved.
* @return The last resolved value matching the given type.
*/
<T> Optional<T> getResolvedArgument(@NotNull Class<T> type);
<T> @NotNull T getResolvedArgument(@NotNull Class<T> type);

/**
* Returns the last resolved value of the given parameter type. If
* no parameter matches the given type, or if the parameter was not resolved yet,
* this will return an empty {@link Optional}.
* this will throw an {@link IllegalStateException}.
*
* @param parameter The parameter to fetch for.
* @param <T> The resolved type
* @throws IllegalStateException If no parameter of this type was resolved.
* @return The last resolved value matching the given type.
*/
<T> Optional<T> getResolvedParameter(@NotNull CommandParameter parameter);
<T> @NotNull T getResolvedParameter(@NotNull CommandParameter parameter);

}

Expand Down

0 comments on commit 94a5925

Please sign in to comment.