Class BaseCommandProcessor
java.lang.Object
javax.annotation.processing.AbstractProcessor
io.github.projectunified.craftcommand.processor.BaseCommandProcessor
- All Implemented Interfaces:
Processor
- Direct Known Subclasses:
BukkitCommandProcessor,PaperCommandProcessor,StandaloneCommandProcessor
Lightweight, human-readable base annotation processor for CraftCommand.
Supports custom validation annotations, parameter resolvers, deep subcommand nesting, and SPI extensions.
-
Field Summary
FieldsFields inherited from class javax.annotation.processing.AbstractProcessor
processingEnv -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddConstructorStatements(com.palantir.javapoet.MethodSpec.Builder constructorBuilder, CommandModel model) protected voidaddPlatformFields(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) protected com.palantir.javapoet.CodeBlockprotected voidbuildBooleanSuggestionHelper(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) protected voidbuildCommandInfo(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) protected voidbuildExecutionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model, String argsVar, String instanceVar, CommandModel rootModel, String returnStatement) protected voidbuildMethodExecution(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, String argsVar, int initialOffset, String instanceVar, CommandModel rootModel) protected com.palantir.javapoet.MethodSpecbuildParameterSuggestionHelper(CommandModel classModel, MethodModel method, ParameterModel p, int index, CommandModel rootModel) protected voidbuildParameterSuggestions(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) protected com.palantir.javapoet.MethodSpecbuildResolverParamSuggestionHelper(CommandModel classModel, MethodModel method, ParameterModel rp, String helperName, CommandModel rootModel) protected voidbuildSenderCastHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) protected voidbuildSubcommandSuggestionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, String argsVar) voidbuildSuggestionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model, String argsVar, String instanceVar, CommandModel rootModel) protected voidbuildWrapperClass(CommandModel model, TypeElement typeElement) protected voidconfigureClass(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) protected static <A extends Annotation>
AfindAnnotationUp(Element element, Class<A> annotationType) findLocalResolver(CommandModel classModel, ParameterModel p, CommandModel rootModel) findModelForClass(CommandModel current, TypeElement targetClass) protected ExecutableElementfindSuggestMethod(TypeElement typeElement, String name) booleanfirstParamIsSender(ExecutableElement method) booleanfirstParamIsSender(ExecutableElement resolverMethod, MethodModel commandMethod) protected abstract voidgenerateEntryMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, TypeElement typeElement) voidgenerateExecuteMethodBody(com.palantir.javapoet.MethodSpec.Builder executeSpec, CommandModel model, String returnStatement) protected voidgenerateHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) protected voidgeneratePlatformHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) voidgenerateResolverInvocation(com.palantir.javapoet.MethodSpec.Builder methodSpec, ExecutableElement localResolver, CommandModel classModel, CommandModel rootModel, com.palantir.javapoet.TypeName pTypeName, String varName, String senderVarName, List<String> resolverArgVarNames, boolean includeSender) protected voidgenerateSubcommandClassExecutors(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) protected voidgenerateSubcommandFieldsAndConstructors(CommandModel model, com.palantir.javapoet.TypeSpec.Builder typeSpec, com.palantir.javapoet.MethodSpec.Builder constructor, String parentFieldName) protected voidgenerateUnknownSubcommandMessage(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model) intgetBuiltInWidth(com.palantir.javapoet.TypeName typeName) getInstanceVarExpression(CommandModel classModel, CommandModel rootModel) intgetLocalResolverMaxWidth(ExecutableElement resolverMethod, MethodModel commandMethod) intgetLocalResolverMinWidth(ExecutableElement resolverMethod, MethodModel commandMethod) protected abstract com.palantir.javapoet.TypeNameprotected StringgetParameterSuggestionMethodName(CommandModel classModel, MethodModel method, int index) getResolverInstanceExpr(ExecutableElement resolver, CommandModel classModel, CommandModel rootModel) protected StringgetResolverParamSuggestionMethodName(CommandModel classModel, MethodModel method, String resolverName, int index) getResolverSenderExpression(ExecutableElement localResolver, String rawSourceExpr, String castSenderVar, com.palantir.javapoet.TypeName commandSenderType) protected com.palantir.javapoet.CodeBlockgetSenderExpression(String senderVar) protected abstract com.palantir.javapoet.ClassNamestatic StringgetSimpleName(com.palantir.javapoet.TypeName typeName) protected Stringprotected static StringgetSubcommandNames(CommandModel model) protected static StringgetUsage(MethodModel method, CommandModel classModel) protected abstract StringbooleanhasAnySuggestions(MethodModel method, CommandModel classModel) protected static Stringvoidinit(ProcessingEnvironment processingEnv) protected booleanisField(TypeElement typeElement, String name) protected static booleanbooleanisParamDirectSuggestionAvailable(ParameterModel p, CommandModel classModel) booleanisParamSuggestionAvailable(ParameterModel p, CommandModel classModel) booleanisPlatformBuiltInType(com.palantir.javapoet.TypeName typeName) booleanbooleanisSenderBaseType(com.palantir.javapoet.TypeName typeName) booleanisSenderParam(com.palantir.javapoet.TypeName typeName, MethodModel method) booleanisSenderType(com.palantir.javapoet.TypeName typeName) protected voidonBeforeExecute(com.palantir.javapoet.MethodSpec.Builder methodSpec, Element element, String returnStatement) booleanprocess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) protected voidregisterTypes(TypeSupport types) voidresolveParameter(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, CommandModel rootModel, ParameterModel p, String varName, String senderVarName, String argsVar, String argIdxVar, boolean hasDynamic, int paramIndex) voidresolveResolverParameters(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, CommandModel rootModel, MethodModel resolverModel, String varName, String senderVarName, String argsVar, String argIdxVar, ParameterModel parentParam, boolean hasDynamic, int paramIndex) voidresolveSender(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, CommandModel rootModel, String senderVarName, ParameterModel senderParam, com.palantir.javapoet.TypeName senderParamTypeName) voidrunParameterAnnotationHandlers(VariableElement param, String varName, String instanceExpr, String senderVar, com.palantir.javapoet.MethodSpec.Builder methodSpec) protected SenderTypeRegistryMethods inherited from class javax.annotation.processing.AbstractProcessor
getCompletions, getSupportedAnnotationTypes, getSupportedOptions, getSupportedSourceVersion, isInitialized
-
Field Details
-
typeSupport
-
-
Constructor Details
-
BaseCommandProcessor
public BaseCommandProcessor()
-
-
Method Details
-
getUsage
-
getSimpleName
-
getSubcommandNames
-
findAnnotationUp
protected static <A extends Annotation> A findAnnotationUp(Element element, Class<A> annotationType) -
isI18nKey
-
i18nKey
-
typeSupport
-
init
- Specified by:
initin interfaceProcessor- Overrides:
initin classAbstractProcessor
-
process
- Specified by:
processin interfaceProcessor- Specified by:
processin classAbstractProcessor
-
registerTypes
-
getWrapperClassSuffix
-
getSenderTypeName
protected abstract com.palantir.javapoet.ClassName getSenderTypeName() -
getManagerType
protected abstract com.palantir.javapoet.TypeName getManagerType() -
configureClass
-
addPlatformFields
protected void addPlatformFields(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) -
addConstructorStatements
protected void addConstructorStatements(com.palantir.javapoet.MethodSpec.Builder constructorBuilder, CommandModel model) -
generateEntryMethods
protected abstract void generateEntryMethods(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, TypeElement typeElement) -
generatePlatformHelpers
protected void generatePlatformHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) -
onBeforeExecute
-
generateUnknownSubcommandMessage
protected void generateUnknownSubcommandMessage(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model) -
getSenderExpression
-
buildWrapperClass
- Throws:
IOException
-
generateHelpers
-
generateSubcommandFieldsAndConstructors
protected void generateSubcommandFieldsAndConstructors(CommandModel model, com.palantir.javapoet.TypeSpec.Builder typeSpec, com.palantir.javapoet.MethodSpec.Builder constructor, String parentFieldName) -
getSubcommandFieldName
-
getInstanceVarExpression
-
getResolverInstanceExpr
public String getResolverInstanceExpr(ExecutableElement resolver, CommandModel classModel, CommandModel rootModel) -
generateExecuteMethodBody
public void generateExecuteMethodBody(com.palantir.javapoet.MethodSpec.Builder executeSpec, CommandModel model, String returnStatement) -
generateSubcommandClassExecutors
protected void generateSubcommandClassExecutors(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) -
buildExecutionRouting
protected void buildExecutionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model, String argsVar, String instanceVar, CommandModel rootModel, String returnStatement) -
buildMethodExecution
protected void buildMethodExecution(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, String argsVar, int initialOffset, String instanceVar, CommandModel rootModel) -
resolveSender
public void resolveSender(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, CommandModel rootModel, String senderVarName, ParameterModel senderParam, com.palantir.javapoet.TypeName senderParamTypeName) -
resolveParameter
public void resolveParameter(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, CommandModel rootModel, ParameterModel p, String varName, String senderVarName, String argsVar, String argIdxVar, boolean hasDynamic, int paramIndex) -
resolveResolverParameters
public void resolveResolverParameters(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, CommandModel rootModel, MethodModel resolverModel, String varName, String senderVarName, String argsVar, String argIdxVar, ParameterModel parentParam, boolean hasDynamic, int paramIndex) -
generateResolverInvocation
public void generateResolverInvocation(com.palantir.javapoet.MethodSpec.Builder methodSpec, ExecutableElement localResolver, CommandModel classModel, CommandModel rootModel, com.palantir.javapoet.TypeName pTypeName, String varName, String senderVarName, List<String> resolverArgVarNames, boolean includeSender) -
isParamDirectSuggestionAvailable
-
isResolverParamSuggestionAvailable
-
isParamSuggestionAvailable
-
hasAnySuggestions
-
buildSuggestionRouting
public void buildSuggestionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model, String argsVar, String instanceVar, CommandModel rootModel) -
buildSubcommandSuggestionRouting
protected void buildSubcommandSuggestionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel classModel, MethodModel method, String argsVar) -
buildParameterSuggestions
protected void buildParameterSuggestions(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model, CommandModel rootModel) -
getParameterSuggestionMethodName
protected String getParameterSuggestionMethodName(CommandModel classModel, MethodModel method, int index) -
getResolverParamSuggestionMethodName
protected String getResolverParamSuggestionMethodName(CommandModel classModel, MethodModel method, String resolverName, int index) -
buildResolverParamSuggestionHelper
protected com.palantir.javapoet.MethodSpec buildResolverParamSuggestionHelper(CommandModel classModel, MethodModel method, ParameterModel rp, String helperName, CommandModel rootModel) -
buildParameterSuggestionHelper
protected com.palantir.javapoet.MethodSpec buildParameterSuggestionHelper(CommandModel classModel, MethodModel method, ParameterModel p, int index, CommandModel rootModel) -
buildBooleanSuggestionHelper
protected void buildBooleanSuggestionHelper(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) -
buildSenderCastHelpers
protected void buildSenderCastHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) -
buildCommandInfo
protected void buildCommandInfo(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) -
findLocalResolver
public ExecutableElement findLocalResolver(CommandModel classModel, ParameterModel p, CommandModel rootModel) -
findSuggestMethod
-
isField
-
findModelForClass
-
getBuiltInWidth
public int getBuiltInWidth(com.palantir.javapoet.TypeName typeName) -
isPlatformBuiltInType
public boolean isPlatformBuiltInType(com.palantir.javapoet.TypeName typeName) -
isSenderType
public boolean isSenderType(com.palantir.javapoet.TypeName typeName) -
isSenderBaseType
public boolean isSenderBaseType(com.palantir.javapoet.TypeName typeName) -
isSenderParam
-
senderTypeRegistry
-
firstParamIsSender
-
firstParamIsSender
-
getLocalResolverMinWidth
-
getLocalResolverMaxWidth
-
getResolverSenderExpression
public String getResolverSenderExpression(ExecutableElement localResolver, String rawSourceExpr, String castSenderVar, com.palantir.javapoet.TypeName commandSenderType) -
buildAliasesExpression
-
runParameterAnnotationHandlers
public void runParameterAnnotationHandlers(VariableElement param, String varName, String instanceExpr, String senderVar, com.palantir.javapoet.MethodSpec.Builder methodSpec)
-