Class MethodRetrievalProcessor

    • Constructor Detail

      • MethodRetrievalProcessor

        public MethodRetrievalProcessor()
    • Method Detail

      • process

        public java.util.List<SourceMethod> process​(ModelElementProcessor.ProcessorContext context,
                                                    javax.lang.model.element.TypeElement mapperTypeElement,
                                                    java.lang.Void sourceModel)
        Description copied from interface: ModelElementProcessor
        Processes the given source element, representing a Java bean mapper in one form or another.
        Specified by:
        process in interface ModelElementProcessor<java.lang.Void,​java.util.List<SourceMethod>>
        Parameters:
        context - Context providing common infrastructure objects.
        mapperTypeElement - The original type element from which the given mapper object is derived.
        sourceModel - The current representation of the bean mapper. Never null (the very first processor receives the original type element).
        Returns:
        The resulting representation of the bean mapper; may be the same as the source representation, e.g. if a given implementation just performs some sort of validity check. Implementations must never return null except for the very last processor which generates the resulting Java source file.
      • getPriority

        public int getPriority()
        Description copied from interface: ModelElementProcessor
        Returns the priority value of this processor which must be between 1 (highest priority) and 10000 (lowest priority). Processors are invoked in order from highest to lowest priority, starting with the mapping method retrieval processor (priority 1) and finishing with the code generation processor (priority 10000). Processors working on the built Mapper model must have a priority > 1000.
        Specified by:
        getPriority in interface ModelElementProcessor<java.lang.Void,​java.util.List<SourceMethod>>
        Returns:
        The priority value of this processor.
      • retrievePrototypeMethods

        private java.util.List<SourceMethod> retrievePrototypeMethods​(javax.lang.model.element.TypeElement mapperTypeElement,
                                                                      MapperOptions mapperAnnotation)
      • retrieveMethods

        private java.util.List<SourceMethod> retrieveMethods​(javax.lang.model.element.TypeElement usedMapper,
                                                             javax.lang.model.element.TypeElement mapperToImplement,
                                                             MapperOptions mapperOptions,
                                                             java.util.List<SourceMethod> prototypeMethods)
        Retrieves the mapping methods declared by the given mapper type.
        Parameters:
        usedMapper - The type of interest (either the mapper to implement or a used mapper via @uses annotation)
        mapperToImplement - the top level type (mapper) that requires implementation
        mapperOptions - the mapper config
        prototypeMethods - prototype methods defined in mapper config type
        Returns:
        All mapping methods declared by the given type
      • asTypeElement

        private javax.lang.model.element.TypeElement asTypeElement​(javax.lang.model.type.DeclaredType type)
      • getMethod

        private SourceMethod getMethod​(javax.lang.model.element.TypeElement usedMapper,
                                       javax.lang.model.element.ExecutableElement method,
                                       javax.lang.model.element.TypeElement mapperToImplement,
                                       MapperOptions mapperOptions,
                                       java.util.List<SourceMethod> prototypeMethods)
      • getMethodRequiringImplementation

        private SourceMethod getMethodRequiringImplementation​(javax.lang.model.type.ExecutableType methodType,
                                                              javax.lang.model.element.ExecutableElement method,
                                                              java.util.List<Parameter> parameters,
                                                              boolean containsTargetTypeParameter,
                                                              MapperOptions mapperOptions,
                                                              java.util.List<SourceMethod> prototypeMethods,
                                                              javax.lang.model.element.TypeElement mapperToImplement)
      • retrieveContextProvidedMethods

        private ParameterProvidedMethods retrieveContextProvidedMethods​(java.util.List<Parameter> contextParameters,
                                                                        javax.lang.model.element.TypeElement mapperToImplement,
                                                                        MapperOptions mapperConfig)
      • getReferencedMethod

        private SourceMethod getReferencedMethod​(javax.lang.model.element.TypeElement usedMapper,
                                                 javax.lang.model.type.ExecutableType methodType,
                                                 javax.lang.model.element.ExecutableElement method,
                                                 javax.lang.model.element.TypeElement mapperToImplement,
                                                 java.util.List<Parameter> parameters)
      • isValidLifecycleCallbackMethod

        private boolean isValidLifecycleCallbackMethod​(javax.lang.model.element.ExecutableElement method)
      • isValidReferencedMethod

        private boolean isValidReferencedMethod​(java.util.List<Parameter> parameters)
      • isValidFactoryMethod

        private boolean isValidFactoryMethod​(javax.lang.model.element.ExecutableElement method,
                                             java.util.List<Parameter> parameters,
                                             Type returnType)
      • hasFactoryAnnotation

        private boolean hasFactoryAnnotation​(javax.lang.model.element.ExecutableElement method)
      • isValidPresenceCheckMethod

        private boolean isValidPresenceCheckMethod​(javax.lang.model.element.ExecutableElement method,
                                                   Type returnType)
      • hasConditionAnnotation

        private boolean hasConditionAnnotation​(javax.lang.model.element.ExecutableElement method)
      • isVoid

        private boolean isVoid​(Type returnType)
      • isBoolean

        private boolean isBoolean​(Type returnType)
      • isValidReferencedOrFactoryMethod

        private boolean isValidReferencedOrFactoryMethod​(int sourceParamCount,
                                                         int targetParamCount,
                                                         java.util.List<Parameter> parameters)
      • extractTargetParameter

        private Parameter extractTargetParameter​(java.util.List<Parameter> parameters)
      • selectResultType

        private Type selectResultType​(Type returnType,
                                      Parameter targetParameter)
      • checkParameterAndReturnType

        private boolean checkParameterAndReturnType​(javax.lang.model.element.ExecutableElement method,
                                                    java.util.List<Parameter> sourceParameters,
                                                    Parameter targetParameter,
                                                    java.util.List<Parameter> contextParameters,
                                                    Type resultType,
                                                    Type returnType,
                                                    boolean containsTargetTypeParameter)
      • isStreamTypeOrIterableFromJavaStdLib

        private boolean isStreamTypeOrIterableFromJavaStdLib​(Type type)
      • getMappings

        private java.util.Set<MappingOptions> getMappings​(javax.lang.model.element.ExecutableElement method,
                                                          BeanMappingOptions beanMapping)
        Retrieves the mappings configured via @Mapping from the given method.
        Parameters:
        method - The method of interest
        beanMapping - options coming from bean mapping method
        Returns:
        The mappings for the given method, keyed by target property name
      • getSubclassMappings

        private java.util.Set<SubclassMappingOptions> getSubclassMappings​(java.util.List<Parameter> sourceParameters,
                                                                          Type resultType,
                                                                          javax.lang.model.element.ExecutableElement method,
                                                                          BeanMappingOptions beanMapping,
                                                                          SubclassValidator validator)
        Retrieves the subclass mappings configured via @SubclassMapping from the given method.
        Parameters:
        method - The method of interest
        beanMapping - options coming from bean mapping method
        Returns:
        The subclass mappings for the given method
      • getValueMappings

        private java.util.List<ValueMappingOptions> getValueMappings​(javax.lang.model.element.ExecutableElement method)
        Retrieves the mappings configured via @ValueMapping from the given method.
        Parameters:
        method - The method of interest
        Returns:
        The mappings for the given method, keyed by target property name