Class AutoProtoSchemaBuilderAnnotationProcessor
java.lang.Object
javax.annotation.processing.AbstractProcessor
org.infinispan.protostream.annotations.impl.processor.AutoProtoSchemaBuilderAnnotationProcessor
- All Implemented Interfaces:
Processor
@SupportedOptions({"protostream.debug","protostream.fullyqualifiedannotations"})
@SupportedAnnotationTypes({"org.infinispan.protostream.annotations.AutoProtoSchemaBuilder","org.infinispan.protostream.annotations.ProtoSchema"})
@AutoService(javax.annotation.processing.Processor.class)
public final class AutoProtoSchemaBuilderAnnotationProcessor
extends AbstractProcessor
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringActivate debug logging.private Elementsprivate Filerstatic final Stringprivate GeneratedFilesWriterprivate booleanprivate MessagerKeep track of what we process so we do not get into a dependency loop and cause a stack overflow.private final ServiceLoaderFileGeneratorprivate MirrorTypeFactoryprivate TypesFields inherited from class javax.annotation.processing.AbstractProcessor
processingEnv -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static voidaddGeneratedClassHeader(IndentWriter iw, String... classes) private voidaddGeneratedClassHeader(IndentWriter iw, Collection<? extends TypeMirror> classes) private static voidaddSchemaBuilderAnnotation(IndentWriter iw, String className, String schemaFileName, ProtoSchemaAnnotation annotation, String schemaPackageName, Collection<? extends TypeMirror> classes, Set<String> dependsOn, boolean marshallersOnly) private voidprivate StringgenerateSerializationContextInitializer(Element annotatedElement, String annotatedElementFQN, ProtoSchemaAnnotation annotation, Set<String> serCtxInitDeps, Collection<? extends TypeMirror> classes, Set<String> generatedMarshallerClasses, String packageName, String initializerClassName, String fileName, String protobufPackageName, String schemaSrc, String schemaResource) private ProtoSchemaAnnotationgetBuilderAnnotation(Element annotatedElement) private StringgetProtobufFileName(Element element, ProtoSchemaAnnotation annotation) private static StringgetStackTraceAsString(Throwable throwable) voidinit(ProcessingEnvironment processingEnv) private voidLog a debug message, only if debug option is enabled.private StringmakeNestedClassName(TypeElement e, String className) private Stringbooleanprocess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) private voidprocessClass(RoundEnvironment roundEnv, SerializationContext serCtx, TypeElement typeElement, ProtoSchemaAnnotation annotation, AnnotatedClassScanner classScanner, AutoProtoSchemaBuilderAnnotationProcessor.ProcessorContext processorContext) processDependencies(RoundEnvironment roundEnv, SerializationContext serCtx, Element annotatedElement, ProtoSchemaAnnotation builderAnnotation) private voidprocessElement(RoundEnvironment roundEnv, SerializationContext serCtx, Element annotatedElement, ProtoSchemaAnnotation annotation, AutoProtoSchemaBuilderAnnotationProcessor.ProcessorContext processorContext) private voidprocessPackage(RoundEnvironment roundEnv, SerializationContext serCtx, PackageElement packageElement, ProtoSchemaAnnotation builderAnnotation, AnnotatedClassScanner classScanner, AutoProtoSchemaBuilderAnnotationProcessor.ProcessorContext processorContext) private voidreportError(Element e, String message, Object... msgParams) Issue a compilation error.private voidIssue a compilation error.private voidreportWarning(Element e, String message, Object... msgParams) Issue a compilation warning.private voidwarnOverrideExistingMethod(XClass xclass, String methodName, XClass... argTypes) private voidwarnOverrideExistingMethods(TypeElement typeElement) private voidwriteSerializationContextInitializer(Element annotatedElement, String annotatedElementFQN, ProtoSchemaAnnotation annotation, Set<String> serCtxInitDeps, Collection<? extends TypeMirror> classes, Set<String> generatedMarshallerClasses, String packageName, String initializerClassName, String initializerFQN, String fileName, String protobufPackageName, String schemaSrc) Methods inherited from class javax.annotation.processing.AbstractProcessor
getCompletions, getSupportedAnnotationTypes, getSupportedOptions, isInitialized
-
Field Details
-
DEBUG_OPTION
Activate debug logging.- See Also:
-
FULLY_QUALIFIED_ANNOTATIONS
- See Also:
-
serviceLoaderFileGenerator
-
generatedFilesWriter
-
isDebugEnabled
private boolean isDebugEnabled -
typeFactory
-
processedElementsFQN
Keep track of what we process so we do not get into a dependency loop and cause a stack overflow. -
types
-
elements
-
filer
-
messager
-
-
Constructor Details
-
AutoProtoSchemaBuilderAnnotationProcessor
public AutoProtoSchemaBuilderAnnotationProcessor()
-
-
Method Details
-
init
- Specified by:
initin interfaceProcessor- Overrides:
initin classAbstractProcessor
-
getSupportedSourceVersion
- Specified by:
getSupportedSourceVersionin interfaceProcessor- Overrides:
getSupportedSourceVersionin classAbstractProcessor
-
reportError
Issue a compilation error. -
reportError
Issue a compilation error. -
reportWarning
Issue a compilation warning. -
logDebug
Log a debug message, only if debug option is enabled. -
process
- Specified by:
processin interfaceProcessor- Specified by:
processin classAbstractProcessor
-
getBuilderAnnotation
-
ensureRequiredEnv
private void ensureRequiredEnv() -
getStackTraceAsString
-
processElement
private void processElement(RoundEnvironment roundEnv, SerializationContext serCtx, Element annotatedElement, ProtoSchemaAnnotation annotation, AutoProtoSchemaBuilderAnnotationProcessor.ProcessorContext processorContext) throws IOException - Throws:
IOException
-
processPackage
private void processPackage(RoundEnvironment roundEnv, SerializationContext serCtx, PackageElement packageElement, ProtoSchemaAnnotation builderAnnotation, AnnotatedClassScanner classScanner, AutoProtoSchemaBuilderAnnotationProcessor.ProcessorContext processorContext) throws IOException - Throws:
IOException
-
processClass
private void processClass(RoundEnvironment roundEnv, SerializationContext serCtx, TypeElement typeElement, ProtoSchemaAnnotation annotation, AnnotatedClassScanner classScanner, AutoProtoSchemaBuilderAnnotationProcessor.ProcessorContext processorContext) throws IOException - Throws:
IOException
-
getProtobufFileName
-
processDependencies
private AutoProtoSchemaBuilderAnnotationProcessor.ProcessorContext processDependencies(RoundEnvironment roundEnv, SerializationContext serCtx, Element annotatedElement, ProtoSchemaAnnotation builderAnnotation) throws IOException - Throws:
IOException
-
warnOverrideExistingMethods
-
warnOverrideExistingMethod
-
writeSerializationContextInitializer
private void writeSerializationContextInitializer(Element annotatedElement, String annotatedElementFQN, ProtoSchemaAnnotation annotation, Set<String> serCtxInitDeps, Collection<? extends TypeMirror> classes, Set<String> generatedMarshallerClasses, String packageName, String initializerClassName, String initializerFQN, String fileName, String protobufPackageName, String schemaSrc) throws IOException - Throws:
IOException
-
generateSerializationContextInitializer
private String generateSerializationContextInitializer(Element annotatedElement, String annotatedElementFQN, ProtoSchemaAnnotation annotation, Set<String> serCtxInitDeps, Collection<? extends TypeMirror> classes, Set<String> generatedMarshallerClasses, String packageName, String initializerClassName, String fileName, String protobufPackageName, String schemaSrc, String schemaResource) -
addGeneratedClassHeader
-
addGeneratedClassHeader
-
addSchemaBuilderAnnotation
private static void addSchemaBuilderAnnotation(IndentWriter iw, String className, String schemaFileName, ProtoSchemaAnnotation annotation, String schemaPackageName, Collection<? extends TypeMirror> classes, Set<String> dependsOn, boolean marshallersOnly) -
makeStringLiteral
-
makeNestedClassName
-