public class ObjectReaderCreatorASM extends ObjectReaderCreator
| Modifier and Type | Class and Description |
|---|---|
private static class |
ObjectReaderCreatorASM.FieldReaderInfo |
(package private) static class |
ObjectReaderCreatorASM.MethodWriterContext |
(package private) static class |
ObjectReaderCreatorASM.ObjectReadContext |
ObjectReaderCreator.LambdaSetterInfo| Modifier and Type | Field and Description |
|---|---|
protected DynamicClassLoader |
classLoader |
(package private) static java.lang.String[] |
fieldItemObjectReader |
(package private) static java.util.Map<java.lang.Class,ObjectReaderCreatorASM.FieldReaderInfo> |
infos |
static ObjectReaderCreatorASM |
INSTANCE |
(package private) static java.lang.String |
METHOD_DESC_ADAPTER_INIT |
(package private) static java.lang.String |
METHOD_DESC_ADD_RESOLVE_TASK |
(package private) static java.lang.String |
METHOD_DESC_CHECK_ARRAY_AUTO_TYPE |
(package private) static java.lang.String |
METHOD_DESC_GET_FIELD_READER |
(package private) static java.lang.String |
METHOD_DESC_GET_ITEM_OBJECT_READER |
(package private) static java.lang.String |
METHOD_DESC_GET_OBJECT_READER_1 |
(package private) static java.lang.String |
METHOD_DESC_INIT |
(package private) static java.lang.String |
METHOD_DESC_JSON_READER_CHECK_ARRAY_AUTO_TYPE |
(package private) static java.lang.String |
METHOD_DESC_PROCESS_EXTRA |
(package private) static java.lang.String |
METHOD_DESC_READ_ARRAY_MAPPING_JSONB_OBJECT0 |
(package private) static java.lang.String |
METHOD_DESC_READ_FIELD_VALUE |
(package private) static java.lang.String |
METHOD_DESC_READ_OBJECT |
(package private) static java.lang.String |
packageName |
(package private) static java.lang.String |
READ_FIELD_READER_UL |
protected static java.util.concurrent.atomic.AtomicLong |
seed |
(package private) static int |
THIS |
private static java.lang.String[] |
TYPE_OBJECT_READERS |
JIT, jitErrorCount, jitErrorLast, methodTypeMapping| Constructor and Description |
|---|
ObjectReaderCreatorASM(java.lang.ClassLoader classLoader) |
| Modifier and Type | Method and Description |
|---|---|
private static int[] |
buildHashCode32Map(long[] hashCodes,
java.util.Map<java.lang.Integer,java.util.List<java.lang.Long>> outMap)
Build a sorted map from hashCode32 to list of hashCode64 values, and return sorted hashCode32 keys.
|
java.util.function.Function<java.util.function.Consumer,ByteArrayValueConsumer> |
createByteArrayValueConsumerCreator(java.lang.Class objectClass,
FieldReader[] fieldReaderArray) |
java.util.function.Function<java.util.function.Consumer,CharArrayValueConsumer> |
createCharArrayValueConsumerCreator(java.lang.Class objectClass,
FieldReader[] fieldReaderArray) |
protected <T> ObjectReaderNoneDefaultConstructor |
createNoneDefaultConstructorObjectReader(java.lang.Class objectClass,
BeanInfo beanInfo,
java.util.function.Function<java.util.Map<java.lang.Long,java.lang.Object>,T> constructorFunction,
java.util.List<java.lang.reflect.Constructor> alternateConstructors,
java.lang.String[] parameterNames,
FieldReader[] paramFieldReaders,
FieldReader[] fieldReaderArray) |
private void |
createObjectForNonConstructor(ObjectReaderCreatorASM.ObjectReadContext context,
ObjectReaderCreatorASM.MethodWriterContext mwc) |
<T> ObjectReader<T> |
createObjectReader(java.lang.Class<T> objectClass,
java.lang.String typeKey,
java.lang.String rootName,
long features,
JSONSchema schema,
java.util.function.Supplier<T> defaultCreator,
java.util.function.Function buildFunction,
FieldReader... fieldReaders)
Creates an ObjectReader for the specified object type with comprehensive configuration including root name.
|
<T> ObjectReader<T> |
createObjectReader(java.lang.Class<T> objectClass,
java.lang.reflect.Type objectType,
boolean fieldBased,
ObjectReaderProvider provider) |
private java.util.function.Function |
createValueConsumer0(java.lang.Class objectClass,
FieldReader[] fieldReaderArray,
boolean bytes) |
(package private) static java.lang.String |
fieldItemObjectReader(int i) |
(package private) static java.lang.String |
fieldObjectReader(int i) |
private void |
genCheckAutoType(java.lang.String classNameType,
ObjectReaderCreatorASM.MethodWriterContext mwc) |
private <T> void |
genCreateObject(MethodWriter mw,
ObjectReaderCreatorASM.ObjectReadContext context,
java.lang.String classNameType) |
private void |
genFields(FieldReader[] fieldReaderArray,
ClassWriter cw,
java.lang.String objectReaderSuper) |
private void |
genInitFields(FieldReader[] fieldReaderArray,
java.lang.String classNameType,
boolean generatedFields,
int FIELD_READER_ARRAY,
MethodWriter mw,
java.lang.String objectReaderSuper) |
private static void |
genInitForNonDefaultConstructor(FieldReader[] fieldReaderArray,
ObjectReaderCreatorASM.MethodWriterContext mwc) |
private void |
genMethodGetFieldReader(ObjectReaderCreatorASM.ObjectReadContext context) |
private void |
genMethodGetFieldReaderImpl(ObjectReaderCreatorASM.ObjectReadContext context,
java.lang.String methodName,
long[] hashCodes,
short[] mapping,
java.util.function.ToLongFunction<FieldReader> hashExtractor) |
private void |
genMethodGetFieldReaderLCase(ObjectReaderCreatorASM.ObjectReadContext context) |
private <T> void |
genMethodReadJSONBObject(ObjectReaderCreatorASM.ObjectReadContext context,
long readerFeatures) |
private <T> void |
genMethodReadJSONBObjectArrayMapping(ObjectReaderCreatorASM.ObjectReadContext context,
long readerFeatures) |
private <T> void |
genMethodReadObject(ObjectReaderCreatorASM.ObjectReadContext context,
long readerFeatures) |
private void |
genRead243(ObjectReaderCreatorASM.ObjectReadContext context,
boolean fieldBased,
ObjectReaderCreatorASM.MethodWriterContext mwc,
int OBJECT,
Label L_FOR_INC,
Label hashCode64Start) |
private void |
genRead57(ObjectReaderCreatorASM.ObjectReadContext context,
boolean fieldBased,
ObjectReaderCreatorASM.MethodWriterContext mwc,
int OBJECT,
Label L_FOR_INC,
Label hashCode64Start) |
private void |
genReadEnumValueRaw(FieldReader fieldReader,
java.lang.String classNameType,
ObjectReaderCreatorASM.MethodWriterContext mwc,
int fieldIndex,
java.lang.reflect.Type fieldType,
java.lang.Class fieldClass,
long fieldFeatures,
java.lang.String FIELD_OBJECT_READER) |
private <T> void |
genReadFieldValue(ObjectReaderCreatorASM.ObjectReadContext context,
FieldReader fieldReader,
boolean fieldBased,
ObjectReaderCreatorASM.MethodWriterContext mwc,
int OBJECT,
int fieldReaderIndex,
boolean arrayMapping) |
private void |
genReadFieldValueList(FieldReader fieldReader,
java.lang.String classNameType,
ObjectReaderCreatorASM.MethodWriterContext mwc,
int OBJECT,
int i,
boolean arrayMapping,
java.lang.Class objectClass,
java.lang.Class fieldClass,
java.lang.reflect.Type fieldType,
long fieldFeatures,
java.lang.reflect.Type itemType,
java.lang.String TYPE_FIELD_CLASS,
ObjectReaderCreatorASM.ObjectReadContext context,
boolean fieldBased) |
private void |
genReadHashCode64ValueForNonDefaultConstructor(ObjectReaderCreatorASM.ObjectReadContext context,
ObjectReaderCreatorASM.MethodWriterContext mwc,
int HASH_CODE64,
boolean fieldBased,
int OBJECT,
Label L_FOR_INC) |
private void |
genReadObject(FieldReader fieldReader,
java.lang.String classNameType,
ObjectReaderCreatorASM.MethodWriterContext mwc,
int i,
java.lang.reflect.Type fieldType,
long fieldFeatures,
java.lang.String FIELD_OBJECT_READER) |
private void |
gwGetFieldType(java.lang.String classNameType,
MethodWriter mw,
int i,
java.lang.reflect.Type fieldType) |
private <T> ObjectReaderBean |
jitObjectReader(java.lang.Class<T> objectClass,
java.lang.reflect.Type objectType,
boolean fieldBased,
boolean externalClass,
int objectClassModifiers,
BeanInfo beanInfo,
java.util.function.Supplier<T> defaultCreator,
FieldReader[] fieldReaderArray,
java.lang.reflect.Constructor defaultConstructor) |
private static void |
newObject(MethodWriter mw,
java.lang.String TYPE_OBJECT,
java.lang.reflect.Constructor defaultConstructor) |
createBuildFunction, createBuildFunctionLambda, createEnumReader, createFactoryFunction, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReader, createFieldReaderLambda, createFieldReaderMethod, createFieldReaderMethod, createFieldReaderMethod, createFieldReaderParam, createFieldReaderParam, createFieldReaderParam, createFieldReaders, createFieldReaders, createFieldReaders, createFieldReaders, createFunction, createFunction, createIntFunction, createIntFunction, createObjectReader, createObjectReader, createObjectReader, createObjectReader, createObjectReader, createObjectReader, createObjectReader, createObjectReaderFactoryMethod, createObjectReaderNoneDefaultConstructor, createObjectReaderNoneDefaultConstructor, createObjectReaderSeeAlso, createObjectReaderSeeAlso, createObjectReaderSeeAlso, createObjectReaderSeeAlso, createObjectReaderWithBuilder, createObjectReaderWithCreator, createStringFunction, createStringFunction, createSupplier, createSupplier, createSupplier, createValueFunction, createValueFunction, getInitReader, lambdaSetterpublic static final ObjectReaderCreatorASM INSTANCE
protected static final java.util.concurrent.atomic.AtomicLong seed
protected final DynamicClassLoader classLoader
static final java.lang.String METHOD_DESC_GET_ITEM_OBJECT_READER
static final java.lang.String METHOD_DESC_GET_OBJECT_READER_1
static final java.lang.String METHOD_DESC_INIT
static final java.lang.String METHOD_DESC_ADAPTER_INIT
static final java.lang.String METHOD_DESC_READ_OBJECT
static final java.lang.String METHOD_DESC_GET_FIELD_READER
static final java.lang.String METHOD_DESC_READ_FIELD_VALUE
static final java.lang.String READ_FIELD_READER_UL
static final java.lang.String METHOD_DESC_ADD_RESOLVE_TASK
static final java.lang.String METHOD_DESC_CHECK_ARRAY_AUTO_TYPE
static final java.lang.String METHOD_DESC_PROCESS_EXTRA
static final java.lang.String METHOD_DESC_JSON_READER_CHECK_ARRAY_AUTO_TYPE
static final java.lang.String METHOD_DESC_READ_ARRAY_MAPPING_JSONB_OBJECT0
static final int THIS
static final java.lang.String packageName
static final java.util.Map<java.lang.Class,ObjectReaderCreatorASM.FieldReaderInfo> infos
private static final java.lang.String[] TYPE_OBJECT_READERS
static final java.lang.String[] fieldItemObjectReader
public ObjectReaderCreatorASM(java.lang.ClassLoader classLoader)
static java.lang.String fieldObjectReader(int i)
static java.lang.String fieldItemObjectReader(int i)
private static int[] buildHashCode32Map(long[] hashCodes,
java.util.Map<java.lang.Integer,java.util.List<java.lang.Long>> outMap)
public <T> ObjectReader<T> createObjectReader(java.lang.Class<T> objectClass, java.lang.reflect.Type objectType, boolean fieldBased, ObjectReaderProvider provider)
createObjectReader in class ObjectReaderCreatorprotected <T> ObjectReaderNoneDefaultConstructor createNoneDefaultConstructorObjectReader(java.lang.Class objectClass, BeanInfo beanInfo, java.util.function.Function<java.util.Map<java.lang.Long,java.lang.Object>,T> constructorFunction, java.util.List<java.lang.reflect.Constructor> alternateConstructors, java.lang.String[] parameterNames, FieldReader[] paramFieldReaders, FieldReader[] fieldReaderArray)
createNoneDefaultConstructorObjectReader in class ObjectReaderCreatorpublic <T> ObjectReader<T> createObjectReader(java.lang.Class<T> objectClass, java.lang.String typeKey, java.lang.String rootName, long features, JSONSchema schema, java.util.function.Supplier<T> defaultCreator, java.util.function.Function buildFunction, FieldReader... fieldReaders)
ObjectReaderCreatorcreateObjectReader in class ObjectReaderCreatorT - the type of objects that the ObjectReader can deserializeobjectClass - the class of objects to deserializetypeKey - the type key to userootName - the root name to usefeatures - the features to use for deserializationschema - the JSON schema to usedefaultCreator - the supplier function to create new instances of the objectbuildFunction - the build function to usefieldReaders - the field readers to use for deserializationprivate <T> ObjectReaderBean jitObjectReader(java.lang.Class<T> objectClass, java.lang.reflect.Type objectType, boolean fieldBased, boolean externalClass, int objectClassModifiers, BeanInfo beanInfo, java.util.function.Supplier<T> defaultCreator, FieldReader[] fieldReaderArray, java.lang.reflect.Constructor defaultConstructor)
private static void newObject(MethodWriter mw, java.lang.String TYPE_OBJECT, java.lang.reflect.Constructor defaultConstructor)
private void genMethodGetFieldReader(ObjectReaderCreatorASM.ObjectReadContext context)
private void genMethodGetFieldReaderLCase(ObjectReaderCreatorASM.ObjectReadContext context)
private void genMethodGetFieldReaderImpl(ObjectReaderCreatorASM.ObjectReadContext context, java.lang.String methodName, long[] hashCodes, short[] mapping, java.util.function.ToLongFunction<FieldReader> hashExtractor)
private void genInitFields(FieldReader[] fieldReaderArray, java.lang.String classNameType, boolean generatedFields, int FIELD_READER_ARRAY, MethodWriter mw, java.lang.String objectReaderSuper)
private void genFields(FieldReader[] fieldReaderArray, ClassWriter cw, java.lang.String objectReaderSuper)
private <T> void genMethodReadJSONBObject(ObjectReaderCreatorASM.ObjectReadContext context, long readerFeatures)
class Bean {
private String field1;
private int field2;
}
public void readJSONBObject(JSONReader jsonReader, Type fieldType, Object fieldName, long features) {
features = jsonReader.features(features);
if (nextIfNull()) {
return null;
}
jsonReader.errorOnNoneSerializable(this.objectClass);
if (jsonReader.isArray() && jsonReader.isSupportBeanArray()) {
return readArrayMappingObject(jsonReader, fieldType, fieldName, features);
}
Bean object = new Bean();
jsonReader.nextIfObjectStart();
for (;;) {
if (jsonReader.nextIfObjectEnd()) {
break;
}
switch(jsonReader.getRawInt()) {
case field1NameHash32:
if(jsonReader.nextIfName4Match2()) {
object.field1 = jsonReader.readString();
break;
}
goto hashCode64Start;
case field2NameHash32:
if(jsonReader.nextIfName4Match2()) {
object.field2 = jsonReader.readInt();
break;
}
goto hashCode64Start;
default:
goto hashCode64Start;
}
hashCode64Start:
long hashCode64 = readFieldNameHashCode();
if (this.typeKeyHashCode == hashCode64) {
object = this.autoType(jsonReader);
}
switch(jsonReader.getFieldOrdinal(hashCode64)) {
case 0:
object.field1 = jsonReader.readString();
}
}
}
private void genReadHashCode64ValueForNonDefaultConstructor(ObjectReaderCreatorASM.ObjectReadContext context, ObjectReaderCreatorASM.MethodWriterContext mwc, int HASH_CODE64, boolean fieldBased, int OBJECT, Label L_FOR_INC)
private <T> void genMethodReadJSONBObjectArrayMapping(ObjectReaderCreatorASM.ObjectReadContext context, long readerFeatures)
private void genCheckAutoType(java.lang.String classNameType,
ObjectReaderCreatorASM.MethodWriterContext mwc)
private <T> void genMethodReadObject(ObjectReaderCreatorASM.ObjectReadContext context, long readerFeatures)
private void createObjectForNonConstructor(ObjectReaderCreatorASM.ObjectReadContext context, ObjectReaderCreatorASM.MethodWriterContext mwc)
private static void genInitForNonDefaultConstructor(FieldReader[] fieldReaderArray, ObjectReaderCreatorASM.MethodWriterContext mwc)
private void genRead243(ObjectReaderCreatorASM.ObjectReadContext context, boolean fieldBased, ObjectReaderCreatorASM.MethodWriterContext mwc, int OBJECT, Label L_FOR_INC, Label hashCode64Start)
private void genRead57(ObjectReaderCreatorASM.ObjectReadContext context, boolean fieldBased, ObjectReaderCreatorASM.MethodWriterContext mwc, int OBJECT, Label L_FOR_INC, Label hashCode64Start)
private <T> void genCreateObject(MethodWriter mw, ObjectReaderCreatorASM.ObjectReadContext context, java.lang.String classNameType)
private <T> void genReadFieldValue(ObjectReaderCreatorASM.ObjectReadContext context, FieldReader fieldReader, boolean fieldBased, ObjectReaderCreatorASM.MethodWriterContext mwc, int OBJECT, int fieldReaderIndex, boolean arrayMapping)
private void genReadObject(FieldReader fieldReader, java.lang.String classNameType, ObjectReaderCreatorASM.MethodWriterContext mwc, int i, java.lang.reflect.Type fieldType, long fieldFeatures, java.lang.String FIELD_OBJECT_READER)
private void genReadEnumValueRaw(FieldReader fieldReader, java.lang.String classNameType, ObjectReaderCreatorASM.MethodWriterContext mwc, int fieldIndex, java.lang.reflect.Type fieldType, java.lang.Class fieldClass, long fieldFeatures, java.lang.String FIELD_OBJECT_READER)
private void genReadFieldValueList(FieldReader fieldReader, java.lang.String classNameType, ObjectReaderCreatorASM.MethodWriterContext mwc, int OBJECT, int i, boolean arrayMapping, java.lang.Class objectClass, java.lang.Class fieldClass, java.lang.reflect.Type fieldType, long fieldFeatures, java.lang.reflect.Type itemType, java.lang.String TYPE_FIELD_CLASS, ObjectReaderCreatorASM.ObjectReadContext context, boolean fieldBased)
private void gwGetFieldType(java.lang.String classNameType,
MethodWriter mw,
int i,
java.lang.reflect.Type fieldType)
public java.util.function.Function<java.util.function.Consumer,ByteArrayValueConsumer> createByteArrayValueConsumerCreator(java.lang.Class objectClass, FieldReader[] fieldReaderArray)
createByteArrayValueConsumerCreator in class ObjectReaderCreatorpublic java.util.function.Function<java.util.function.Consumer,CharArrayValueConsumer> createCharArrayValueConsumerCreator(java.lang.Class objectClass, FieldReader[] fieldReaderArray)
createCharArrayValueConsumerCreator in class ObjectReaderCreatorprivate java.util.function.Function createValueConsumer0(java.lang.Class objectClass,
FieldReader[] fieldReaderArray,
boolean bytes)