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 voidbuildCommandInfo(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) protected voidbuildSenderCastHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Generates the sender cast helpers a command class needs, delegating to the suggestion generator.protected voidbuildSuggestionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model, String argsVar, String instanceVar, CommandModel rootModel) Generates tab completion for a command class, delegating to the suggestion generator.protected voidbuildWrapperClass(CommandModel model, TypeElement typeElement) protected voidconfigureClass(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) 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, MethodModel resolverModel, CommandModel rootModel, com.palantir.javapoet.TypeName pTypeName, String varName, String senderVarName, List<String> resolverArgVarNames, boolean includeSender) Emits the call to a resolver method that produces a parameter value, delegating to the execution generator.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(MethodModel resolverModel, MethodModel commandMethod) intgetLocalResolverMinWidth(MethodModel resolverModel, MethodModel commandMethod) protected abstract com.palantir.javapoet.TypeNameprotected StringgetParameterSuggestionMethodName(CommandModel classModel, MethodModel method, int index) The generated helper name for a parameter's suggestions.getResolverInstanceExpr(MethodModel resolver, CommandModel rootModel) protected StringgetResolverParamSuggestionMethodName(CommandModel classModel, MethodModel method, String resolverName, int index) The generated helper name for a resolver parameter's suggestions.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) protected abstract Stringprotected static Stringvoidinit(ProcessingEnvironment processingEnv) protected booleanisField(TypeElement typeElement, String name) protected static booleanbooleanisPlatformBuiltInType(com.palantir.javapoet.TypeName typeName) booleanisSenderBaseType(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) voidrunParameterAnnotationHandlers(ParameterModel param, String varName, String instanceExpr, String senderVar, com.palantir.javapoet.MethodSpec.Builder methodSpec) Runs the SPI parameter handlers of a resolved parameter, delegating to the execution generator.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
-
isI18nKey
-
i18nKey
-
typeSupport
-
init
- Specified by:
initin interfaceProcessor- Overrides:
initin classAbstractProcessor
-
process
- Specified by:
processin interfaceProcessor- Specified by:
processin classAbstractProcessor
-
registerTypes
-
runParameterAnnotationHandlers
public void runParameterAnnotationHandlers(ParameterModel param, String varName, String instanceExpr, String senderVar, com.palantir.javapoet.MethodSpec.Builder methodSpec) Runs the SPI parameter handlers of a resolved parameter, delegating to the execution generator.- Parameters:
param- the parameter that was resolvedvarName- the generated local holding its valueinstanceExpr- the command instance expressionsenderVar- the local holding the command sendermethodSpec- the method being generated
-
generateResolverInvocation
public void generateResolverInvocation(com.palantir.javapoet.MethodSpec.Builder methodSpec, MethodModel resolverModel, CommandModel rootModel, com.palantir.javapoet.TypeName pTypeName, String varName, String senderVarName, List<String> resolverArgVarNames, boolean includeSender) Emits the call to a resolver method that produces a parameter value, delegating to the execution generator.- Parameters:
methodSpec- the method being generatedresolverModel- the resolver methodrootModel- the root command modelpTypeName- the resolved parameter typevarName- the local receiving the resolved valuesenderVarName- the local holding the command senderresolverArgVarNames- the locals holding the resolver argumentsincludeSender- whether the sender is passed to the resolver
-
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
-
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) -
buildSuggestionRouting
protected void buildSuggestionRouting(com.palantir.javapoet.MethodSpec.Builder methodSpec, CommandModel model, String argsVar, String instanceVar, CommandModel rootModel) Generates tab completion for a command class, delegating to the suggestion generator.- Parameters:
methodSpec- the entry method being generatedmodel- the command classargsVar- the argument array in scopeinstanceVar- the command instance expressionrootModel- the root command model
-
buildSenderCastHelpers
protected void buildSenderCastHelpers(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) Generates the sender cast helpers a command class needs, delegating to the suggestion generator.- Parameters:
typeSpec- the wrapper class being generatedmodel- the command class
-
getParameterSuggestionMethodName
protected String getParameterSuggestionMethodName(CommandModel classModel, MethodModel method, int index) The generated helper name for a parameter's suggestions. -
getResolverParamSuggestionMethodName
protected String getResolverParamSuggestionMethodName(CommandModel classModel, MethodModel method, String resolverName, int index) The generated helper name for a resolver parameter's suggestions. -
buildCommandInfo
protected void buildCommandInfo(com.palantir.javapoet.TypeSpec.Builder typeSpec, CommandModel model) -
isField
-
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
-