Class 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 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
      • builtinDerivator

        private Derivator builtinDerivator
      • extensions

        private java.util.List<Extension> extensions
      • derivators

        private java.util.Map<P2<com.squareup.javapoet.ClassName,​java.util.Optional<java.lang.String>>,​Derivator> derivators
    • Constructor Detail

      • DerivingProcessor

        public DerivingProcessor()
    • Method Detail

      • getSupportedSourceVersion

        public javax.lang.model.SourceVersion getSupportedSourceVersion()
        Specified by:
        getSupportedSourceVersion in interface javax.annotation.processing.Processor
        Overrides:
        getSupportedSourceVersion in class javax.annotation.processing.AbstractProcessor
      • init

        public void init​(javax.annotation.processing.ProcessingEnvironment processingEnv)
        Specified by:
        init in interface javax.annotation.processing.Processor
        Overrides:
        init in class javax.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 interface javax.annotation.processing.Processor
        Specified by:
        process in class javax.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)
      • 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)