Class BeanBuilder


  • public class BeanBuilder
    extends Object
    Heavy lifter of mr Bean package: class that keeps track of logical POJO properties, and figures out how to create an implementation class.
    • Field Detail

      • _type

        protected final com.fasterxml.jackson.databind.JavaType _type
        Abstract class or interface that the bean is created to extend or implement.
      • _typeDefinition

        protected final com.fasterxml.jackson.databind.introspect.AnnotatedClass _typeDefinition
      • _typeFactory

        protected final com.fasterxml.jackson.databind.type.TypeFactory _typeFactory
    • Constructor Detail

      • BeanBuilder

        public BeanBuilder​(com.fasterxml.jackson.databind.JavaType type,
                           com.fasterxml.jackson.databind.introspect.AnnotatedClass ac,
                           com.fasterxml.jackson.databind.type.TypeFactory tf)
    • Method Detail

      • construct

        public static BeanBuilder construct​(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config,
                                            com.fasterxml.jackson.databind.JavaType type,
                                            com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)
      • build

        public byte[] build​(String className)
        Method that generates byte code for class that implements abstract types requested so far.
        Parameters:
        className - Fully-qualified name of the class to generate
        Returns:
        Byte code Class instance built by this builder
      • hasConcreteOverride

        protected boolean hasConcreteOverride​(Method m0,
                                              com.fasterxml.jackson.databind.JavaType implementedType)
        Helper method used to detect if an abstract method found in a base class may actually be implemented in a (more) concrete sub-class.
        Since:
        2.4
      • getPropertyName

        protected String getPropertyName​(String methodName)
      • buildGetterName

        protected String buildGetterName​(String fieldName)
      • buildSetterName

        protected String buildSetterName​(String fieldName)
      • getInternalClassName

        protected String getInternalClassName​(String className)
      • addGetter

        protected void addGetter​(com.fasterxml.jackson.databind.introspect.TypeResolutionContext ctxt,
                                 Method m)
      • addSetter

        protected void addSetter​(com.fasterxml.jackson.databind.introspect.TypeResolutionContext ctxt,
                                 Method m)
      • findProperty

        protected POJOProperty findProperty​(com.fasterxml.jackson.databind.introspect.TypeResolutionContext ctxt,
                                            String propName)
      • returnsBoolean

        protected static final boolean returnsBoolean​(Method m)
      • generateDefaultConstructor

        protected static void generateDefaultConstructor​(org.objectweb.asm.ClassWriter cw,
                                                         String superName)
        NOTE: only static because it is needed from TypeDetector
      • createField

        protected void createField​(org.objectweb.asm.ClassWriter cw,
                                   POJOProperty prop,
                                   com.fasterxml.jackson.module.mrbean.BeanBuilder.TypeDescription type)
      • createSetter

        protected void createSetter​(org.objectweb.asm.ClassWriter cw,
                                    String internalClassName,
                                    POJOProperty prop,
                                    com.fasterxml.jackson.module.mrbean.BeanBuilder.TypeDescription propertyType)
      • createGetter

        protected void createGetter​(org.objectweb.asm.ClassWriter cw,
                                    String internalClassName,
                                    POJOProperty prop,
                                    com.fasterxml.jackson.module.mrbean.BeanBuilder.TypeDescription propertyType)
      • createUnimplementedMethod

        protected void createUnimplementedMethod​(org.objectweb.asm.ClassWriter cw,
                                                 String internalClassName,
                                                 Method method)
        Builder for methods that just throw an exception, basically "unsupported operation" implementation.
      • buildTypeContext

        protected com.fasterxml.jackson.databind.introspect.TypeResolutionContext buildTypeContext​(com.fasterxml.jackson.databind.JavaType ctxtType)