Class BeanBuilder
- java.lang.Object
-
- com.fasterxml.jackson.module.mrbean.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 Summary
Fields Modifier and Type Field Description protected Map<String,POJOProperty>_beanPropertiesprotected com.fasterxml.jackson.databind.JavaType_typeAbstract class or interface that the bean is created to extend or implement.protected com.fasterxml.jackson.databind.introspect.AnnotatedClass_typeDefinitionprotected com.fasterxml.jackson.databind.type.TypeFactory_typeFactoryprotected LinkedHashMap<String,Method>_unsupportedMethods
-
Constructor Summary
Constructors Constructor Description BeanBuilder(com.fasterxml.jackson.databind.JavaType type, com.fasterxml.jackson.databind.introspect.AnnotatedClass ac, com.fasterxml.jackson.databind.type.TypeFactory tf)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddGetter(com.fasterxml.jackson.databind.introspect.TypeResolutionContext ctxt, Method m)protected voidaddSetter(com.fasterxml.jackson.databind.introspect.TypeResolutionContext ctxt, Method m)byte[]build(String className)Method that generates byte code for class that implements abstract types requested so far.protected StringbuildGetterName(String fieldName)protected StringbuildSetterName(String fieldName)protected com.fasterxml.jackson.databind.introspect.TypeResolutionContextbuildTypeContext(com.fasterxml.jackson.databind.JavaType ctxtType)protected Stringcap(String prefix, String name)static BeanBuilderconstruct(com.fasterxml.jackson.databind.cfg.MapperConfig<?> config, com.fasterxml.jackson.databind.JavaType type, com.fasterxml.jackson.databind.introspect.AnnotatedClass ac)protected voidcreateField(org.objectweb.asm.ClassWriter cw, POJOProperty prop, com.fasterxml.jackson.module.mrbean.BeanBuilder.TypeDescription type)protected voidcreateGetter(org.objectweb.asm.ClassWriter cw, String internalClassName, POJOProperty prop, com.fasterxml.jackson.module.mrbean.BeanBuilder.TypeDescription propertyType)protected voidcreateSetter(org.objectweb.asm.ClassWriter cw, String internalClassName, POJOProperty prop, com.fasterxml.jackson.module.mrbean.BeanBuilder.TypeDescription propertyType)protected voidcreateUnimplementedMethod(org.objectweb.asm.ClassWriter cw, String internalClassName, Method method)Builder for methods that just throw an exception, basically "unsupported operation" implementation.protected Stringdecap(String name)protected POJOPropertyfindProperty(com.fasterxml.jackson.databind.introspect.TypeResolutionContext ctxt, String propName)protected static voidgenerateDefaultConstructor(org.objectweb.asm.ClassWriter cw, String superName)NOTE: only static because it is needed from TypeDetectorprotected StringgetInternalClassName(String className)protected StringgetPropertyName(String methodName)protected booleanhasConcreteOverride(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.BeanBuilderimplement(boolean failOnUnrecognized)protected static booleanreturnsBoolean(Method m)
-
-
-
Field Detail
-
_beanProperties
protected Map<String,POJOProperty> _beanProperties
-
_unsupportedMethods
protected LinkedHashMap<String,Method> _unsupportedMethods
-
_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
-
-
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)
-
implement
public BeanBuilder implement(boolean failOnUnrecognized)
- Parameters:
failOnUnrecognized- If true, and an unrecognized (non-getter, non-setter) method is encountered, will throwIllegalArgumentException; if false, will implement bogus method that will throwUnsupportedOperationExceptionif called.
-
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
-
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)
-
-