Package org.derive4j.processor
Class DerivingProcessor
- java.lang.Object
-
- javax.annotation.processing.AbstractProcessor
-
- org.derive4j.processor.DerivingProcessor
-
- All Implemented Interfaces:
javax.annotation.processing.Processor
@AutoService(javax.annotation.processing.Processor.class) @SupportedAnnotationTypes("*") public final class DerivingProcessor extends javax.annotation.processing.AbstractProcessor
-
-
Field Summary
Fields Modifier and Type Field Description private AdtParser
adtParser
private Derivator
builtinDerivator
private java.util.Map<P2<com.squareup.javapoet.ClassName,java.util.Optional<java.lang.String>>,Derivator>
derivators
private DeriveConfigBuilder
deriveConfigBuilder
private DeriveUtilsImpl
deriveUtils
private java.util.List<Extension>
extensions
private java.util.ArrayList<P2<java.lang.String,java.lang.RuntimeException>>
remainingElements
private static java.util.Set<javax.lang.model.element.ElementKind>
scannedElementKinds
-
Constructor Summary
Constructors Constructor Description DerivingProcessor()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private IO<Unit>
derivation(javax.lang.model.element.TypeElement element, DeriveConfig deriveConfig)
private java.util.Map<com.squareup.javapoet.ClassName,P2<java.util.stream.Stream<DeriveMessage>,DerivedCodeSpec>>
derivedInstances(AlgebraicDataType adt)
private static java.util.stream.Stream<javax.lang.model.element.Element>
findAllElements(java.util.stream.Stream<? extends javax.lang.model.element.Element> elements)
javax.lang.model.SourceVersion
getSupportedSourceVersion()
void
init(javax.annotation.processing.ProcessingEnvironment processingEnv)
private static java.util.Map<P2<com.squareup.javapoet.ClassName,java.util.Optional<java.lang.String>>,Derivator>
loadDerivators(DeriveUtils deriveUtils)
private static java.util.List<Extension>
loadEextensions(DeriveUtils deriveUtils)
private java.util.function.Function<DeriveMessage,IO<Unit>>
mesagePrint(javax.lang.model.element.TypeElement element)
private void
printErrorMessage(java.lang.String typeElement, java.lang.Throwable error)
boolean
process(java.util.Set<? extends javax.lang.model.element.TypeElement> annotations, javax.annotation.processing.RoundEnvironment roundEnv)
private static java.lang.String
showStackTrace(java.lang.Throwable t)
private com.squareup.javapoet.TypeSpec.Builder
toTypeSpec(DeriveConfig deriveConfig, com.squareup.javapoet.ClassName targetClassName, DerivedCodeSpec codeSpec)
-
-
-
Field Detail
-
scannedElementKinds
private static final java.util.Set<javax.lang.model.element.ElementKind> scannedElementKinds
-
remainingElements
private final java.util.ArrayList<P2<java.lang.String,java.lang.RuntimeException>> remainingElements
-
deriveUtils
private DeriveUtilsImpl deriveUtils
-
builtinDerivator
private Derivator builtinDerivator
-
adtParser
private AdtParser adtParser
-
deriveConfigBuilder
private DeriveConfigBuilder deriveConfigBuilder
-
extensions
private java.util.List<Extension> extensions
-
-
Method Detail
-
getSupportedSourceVersion
public javax.lang.model.SourceVersion getSupportedSourceVersion()
- Specified by:
getSupportedSourceVersion
in interfacejavax.annotation.processing.Processor
- Overrides:
getSupportedSourceVersion
in classjavax.annotation.processing.AbstractProcessor
-
init
public void init(javax.annotation.processing.ProcessingEnvironment processingEnv)
- Specified by:
init
in interfacejavax.annotation.processing.Processor
- Overrides:
init
in classjavax.annotation.processing.AbstractProcessor
-
process
public boolean process(java.util.Set<? extends javax.lang.model.element.TypeElement> annotations, javax.annotation.processing.RoundEnvironment roundEnv)
- Specified by:
process
in interfacejavax.annotation.processing.Processor
- Specified by:
process
in classjavax.annotation.processing.AbstractProcessor
-
derivation
private IO<Unit> derivation(javax.lang.model.element.TypeElement element, DeriveConfig deriveConfig)
-
mesagePrint
private java.util.function.Function<DeriveMessage,IO<Unit>> mesagePrint(javax.lang.model.element.TypeElement element)
-
toTypeSpec
private com.squareup.javapoet.TypeSpec.Builder toTypeSpec(DeriveConfig deriveConfig, com.squareup.javapoet.ClassName targetClassName, DerivedCodeSpec codeSpec)
-
derivedInstances
private java.util.Map<com.squareup.javapoet.ClassName,P2<java.util.stream.Stream<DeriveMessage>,DerivedCodeSpec>> derivedInstances(AlgebraicDataType adt)
-
printErrorMessage
private void printErrorMessage(java.lang.String typeElement, java.lang.Throwable error)
-
loadEextensions
private static java.util.List<Extension> loadEextensions(DeriveUtils deriveUtils)
-
loadDerivators
private static java.util.Map<P2<com.squareup.javapoet.ClassName,java.util.Optional<java.lang.String>>,Derivator> loadDerivators(DeriveUtils deriveUtils)
-
findAllElements
private static java.util.stream.Stream<javax.lang.model.element.Element> findAllElements(java.util.stream.Stream<? extends javax.lang.model.element.Element> elements)
-
showStackTrace
private static java.lang.String showStackTrace(java.lang.Throwable t)
-
-