Class DeriveConfigBuilder


  • final class DeriveConfigBuilder
    extends java.lang.Object
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private javax.lang.model.element.ExecutableElement arguments  
      private javax.lang.model.element.TypeElement dataAnnotation  
      private javax.lang.model.element.TypeElement deriveAnnotation  
      private javax.lang.model.element.ExecutableElement deriveValue  
      private javax.lang.model.element.ExecutableElement extend  
      private javax.lang.model.element.ExecutableElement flavour  
      private static javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​java.lang.Void> getValue  
      private javax.lang.model.element.ExecutableElement inClass  
      private javax.lang.model.element.ExecutableElement instances  
      private javax.lang.model.element.ExecutableElement instancesClasses  
      private javax.lang.model.element.ExecutableElement instancesInClass  
      private javax.lang.model.element.ExecutableElement instancesSelector  
      private javax.lang.model.element.ExecutableElement make  
      private static java.util.function.Function<Make,​java.util.stream.Stream<Make>> makeDependencies  
      private javax.lang.model.element.ExecutableElement withVisibility  
    • Constructor Summary

      Constructors 
      Constructor Description
      DeriveConfigBuilder​(javax.lang.model.util.Elements elements)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private java.util.function.Function<DeriveConfig,​DeriveConfig> addToDeriveConfig​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)  
      private java.util.stream.Stream<java.util.function.Function<DeriveConfig,​DeriveConfig>> annotationConfig​(javax.lang.model.element.TypeElement typeElement, javax.lang.model.element.AnnotationMirror annotationMirror)  
      private static java.lang.String autoGeneratedClassName​(java.lang.String adtClassName)  
      private java.util.function.Function<DeriveConfig,​DeriveConfig> dataConfig​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)  
      (package private) com.squareup.javapoet.ClassName deduceDerivedClassName​(java.lang.String inClassAnnotationValue, javax.lang.model.element.TypeElement typeElement)  
      private static DeriveVisibility deduceDeriveVisibility​(javax.lang.model.element.TypeElement typeElement, Visibility visibility)  
      private static DeriveConfig defaultConfig​(javax.lang.model.element.TypeElement typeElement)  
      private java.util.function.Function<DeriveConfig,​DeriveConfig> deriveConfig​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)  
      private java.util.stream.Stream<java.util.function.Function<DeriveConfig,​DeriveConfig>> deriveConfigs​(javax.lang.model.element.TypeElement typeElement, javax.lang.model.element.Element element, java.util.HashSet<javax.lang.model.element.AnnotationMirror> seenAnnotations)  
      private java.util.Optional<java.util.function.Function<DeriveConfig,​DeriveConfig>> extend​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)  
      (package private) java.util.Optional<P2<javax.lang.model.element.TypeElement,​DeriveConfig>> findDeriveConfig​(javax.lang.model.element.TypeElement typeElement)  
      private java.util.Optional<java.util.function.Function<DeriveConfig,​DeriveConfig>> inClass​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)  
      private java.util.Optional<java.util.function.Function<java.util.Map<com.squareup.javapoet.ClassName,​DerivedInstanceConfig>,​java.util.Map<com.squareup.javapoet.ClassName,​DerivedInstanceConfig>>> instances​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)  
      private static java.util.Set<Make> makeWithDependencies​(java.util.stream.Stream<Make> makes)  
      private java.util.Map<com.squareup.javapoet.ClassName,​DerivedInstanceConfig> parseInstanceConfig​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> instanceAnnotation)  
      private static javax.lang.model.element.ExecutableElement unsafeGetExecutableElement​(javax.lang.model.element.TypeElement typeElement, java.lang.String methodName)  
      private java.util.Optional<java.util.function.Function<DeriveConfig,​DeriveConfig>> visibility​(javax.lang.model.element.TypeElement typeElement, java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • getValue

        private static final javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​java.lang.Void> getValue
      • makeDependencies

        private static final java.util.function.Function<Make,​java.util.stream.Stream<Make>> makeDependencies
      • dataAnnotation

        private final javax.lang.model.element.TypeElement dataAnnotation
      • deriveAnnotation

        private final javax.lang.model.element.TypeElement deriveAnnotation
      • flavour

        private final javax.lang.model.element.ExecutableElement flavour
      • arguments

        private final javax.lang.model.element.ExecutableElement arguments
      • deriveValue

        private final javax.lang.model.element.ExecutableElement deriveValue
      • inClass

        private final javax.lang.model.element.ExecutableElement inClass
      • withVisibility

        private final javax.lang.model.element.ExecutableElement withVisibility
      • extend

        private final javax.lang.model.element.ExecutableElement extend
      • make

        private final javax.lang.model.element.ExecutableElement make
      • instances

        private final javax.lang.model.element.ExecutableElement instances
      • instancesClasses

        private final javax.lang.model.element.ExecutableElement instancesClasses
      • instancesInClass

        private final javax.lang.model.element.ExecutableElement instancesInClass
      • instancesSelector

        private final javax.lang.model.element.ExecutableElement instancesSelector
    • Constructor Detail

      • DeriveConfigBuilder

        DeriveConfigBuilder​(javax.lang.model.util.Elements elements)
    • Method Detail

      • findDeriveConfig

        java.util.Optional<P2<javax.lang.model.element.TypeElement,​DeriveConfig>> findDeriveConfig​(javax.lang.model.element.TypeElement typeElement)
      • deduceDerivedClassName

        com.squareup.javapoet.ClassName deduceDerivedClassName​(java.lang.String inClassAnnotationValue,
                                                               javax.lang.model.element.TypeElement typeElement)
      • annotationConfig

        private java.util.stream.Stream<java.util.function.Function<DeriveConfig,​DeriveConfig>> annotationConfig​(javax.lang.model.element.TypeElement typeElement,
                                                                                                                       javax.lang.model.element.AnnotationMirror annotationMirror)
      • deriveConfigs

        private java.util.stream.Stream<java.util.function.Function<DeriveConfig,​DeriveConfig>> deriveConfigs​(javax.lang.model.element.TypeElement typeElement,
                                                                                                                    javax.lang.model.element.Element element,
                                                                                                                    java.util.HashSet<javax.lang.model.element.AnnotationMirror> seenAnnotations)
      • deriveConfig

        private java.util.function.Function<DeriveConfig,​DeriveConfig> deriveConfig​(javax.lang.model.element.TypeElement typeElement,
                                                                                          java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)
      • addToDeriveConfig

        private java.util.function.Function<DeriveConfig,​DeriveConfig> addToDeriveConfig​(javax.lang.model.element.TypeElement typeElement,
                                                                                               java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)
      • visibility

        private java.util.Optional<java.util.function.Function<DeriveConfig,​DeriveConfig>> visibility​(javax.lang.model.element.TypeElement typeElement,
                                                                                                            java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)
      • inClass

        private java.util.Optional<java.util.function.Function<DeriveConfig,​DeriveConfig>> inClass​(javax.lang.model.element.TypeElement typeElement,
                                                                                                         java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)
      • extend

        private java.util.Optional<java.util.function.Function<DeriveConfig,​DeriveConfig>> extend​(javax.lang.model.element.TypeElement typeElement,
                                                                                                        java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)
      • instances

        private java.util.Optional<java.util.function.Function<java.util.Map<com.squareup.javapoet.ClassName,​DerivedInstanceConfig>,​java.util.Map<com.squareup.javapoet.ClassName,​DerivedInstanceConfig>>> instances​(javax.lang.model.element.TypeElement typeElement,
                                                                                                                                                                                                                                       java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)
      • parseInstanceConfig

        private java.util.Map<com.squareup.javapoet.ClassName,​DerivedInstanceConfig> parseInstanceConfig​(javax.lang.model.element.TypeElement typeElement,
                                                                                                               java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> instanceAnnotation)
      • dataConfig

        private java.util.function.Function<DeriveConfig,​DeriveConfig> dataConfig​(javax.lang.model.element.TypeElement typeElement,
                                                                                        java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> elementValues)
      • defaultConfig

        private static DeriveConfig defaultConfig​(javax.lang.model.element.TypeElement typeElement)
      • deduceDeriveVisibility

        private static DeriveVisibility deduceDeriveVisibility​(javax.lang.model.element.TypeElement typeElement,
                                                               Visibility visibility)
      • unsafeGetExecutableElement

        private static javax.lang.model.element.ExecutableElement unsafeGetExecutableElement​(javax.lang.model.element.TypeElement typeElement,
                                                                                             java.lang.String methodName)
      • autoGeneratedClassName

        private static java.lang.String autoGeneratedClassName​(java.lang.String adtClassName)
      • makeWithDependencies

        private static java.util.Set<Make> makeWithDependencies​(java.util.stream.Stream<Make> makes)