Interface ArgumentTypeHandler<S extends CommandSource>
- Type Parameters:
S- the source type
- All Superinterfaces:
Prioritizable
- All Known Implementing Classes:
ArrayArgumentTypeHandler,CollectionArgumentTypeHandler,CompletableFutureArgumentTypeHandler,EitherArgumentTypeHandler,EnumArgumentTypeHandler,MapArgumentTypeHandler,NumericArgumentTypeHandler,OptionalArgumentTypeHandler,SimpleTypeResolver
Handler for resolving
ArgumentType instances for complex or specialized types.
Implementations of this interface form a chain of responsibility for type resolution.
Each handler declares what types it can handle via canHandle(Type, TypeWrap),
and when applicable, resolves an ArgumentType via resolve(Type, TypeWrap, ArgumentTypeLookup).
Handlers are ordered by Priority - handlers with higher priority are checked first.
This allows for specific handlers to override more general ones.
-
Method Summary
Modifier and TypeMethodDescriptionbooleanDetermines if this handler can resolve the given type.default <T> voidonRegisteringResolver(@NotNull SimpleTypeResolver<S, T> resolver) <T> @Nullable ArgumentType<S,T> resolve(@NotNull Type type, @NotNull TypeWrap<?> wrap, @NotNull ArgumentTypeLookup<S> lookup) Resolves anArgumentTypefor the given type.Methods inherited from interface studio.mevera.imperat.util.priority.Prioritizable
getPriority
-
Method Details
-
canHandle
Determines if this handler can resolve the given type.- Parameters:
type- the raw type to checkwrap- the wrapped type for convenience, providing additional type introspection- Returns:
- true if this handler can handle the type
-
resolve
@Nullable <T> @Nullable ArgumentType<S,T> resolve(@NotNull @NotNull Type type, @NotNull @NotNull TypeWrap<?> wrap, @NotNull @NotNull ArgumentTypeLookup<S> lookup) Resolves anArgumentTypefor the given type.This method is called only if
canHandle(Type, TypeWrap)returns true. The providedArgumentTypeLookupcan be used to recursively resolve component types for generic types (e.g., the element type of a collection).- Type Parameters:
T- the resolved type- Parameters:
type- the type to resolvewrap- the wrapped type for conveniencelookup- the lookup function for resolving nested/component types- Returns:
- the resolved ArgumentType, or null if resolution fails despite canHandle returning true
-
onRegisteringResolver
-