Package org.datanucleus.enhancer
Class EnhanceUtils
- java.lang.Object
-
- org.datanucleus.enhancer.EnhanceUtils
-
public final class EnhanceUtils extends java.lang.ObjectUtility class for bytecode enhancement using ASM. ASM operates around two basic pieces of information about any type.- ASM class name (ACN) : this is the normal fully qualified class name but replacing the dots with slashes. So java.lang.String will have an ASM class name of "java/lang/String".
- Class Descriptor (CD) : this is used where a type is referred to in a calling sequence etc. and for object types is typically things like "Ljava.lang.String;", but there are variants for primitives.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringACN_booleanASM class name for boolean.static java.lang.StringACN_BooleanASM class name for Boolean.static java.lang.StringACN_byteASM class name for byte.static java.lang.StringACN_ByteASM class name for Byte.static java.lang.StringACN_charASM class name for char.static java.lang.StringACN_CharacterASM class name for Character.static java.lang.StringACN_doubleASM class name for double.static java.lang.StringACN_DoubleASM class name for Double.static java.lang.StringACN_floatASM class name for float.static java.lang.StringACN_FloatASM class name for Float.static java.lang.StringACN_intASM class name for int.static java.lang.StringACN_IntegerASM class name for Integer.static java.lang.StringACN_longASM class name for long.static java.lang.StringACN_LongASM class name for Long.static java.lang.StringACN_ObjectASM class name for java.lang.Object.static java.lang.StringACN_shortASM class name for short.static java.lang.StringACN_ShortASM class name for Short.static java.lang.StringACN_StringASM class name for java.lang.String.static java.lang.StringCD_ObjectDescriptor for java.lang.Object.static java.lang.StringCD_StringClass descriptor for String.
-
Constructor Summary
Constructors Modifier Constructor Description privateEnhanceUtils()private constructor to prevent instantiation.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidaddBIPUSHToMethod(MethodVisitor visitor, int i)Convenience method to add a BIPUSH-type int to the visitor.static voidaddLoadForType(MethodVisitor visitor, java.lang.Class type, int number)Convenience method to add a load statement based on the type to be loaded.static voidaddReturnForType(MethodVisitor visitor, java.lang.Class type)Convenience method to add a return statement based on the type to be returned.static java.lang.StringgetASMClassNameForSingleFieldIdentityConstructor(java.lang.Class fieldType)Convenience method to return the ASM class name to use as input via the SingleFieldIdentity constructor.static intgetAsmVersionForJRE()static java.lang.StringgetTypeDescriptorForEnhanceMethod(java.lang.Class cls)Convenience method to give the descriptor for use in an enhanced "field" method.static java.lang.StringgetTypeDescriptorForType(java.lang.String clsName)Return the ASM type descriptor for the input class.static java.lang.StringgetTypeNameForPersistableMethod(java.lang.Class cls)Convenience method to give the type name given the type.
-
-
-
Field Detail
-
ACN_boolean
public static final java.lang.String ACN_boolean
ASM class name for boolean.
-
ACN_byte
public static final java.lang.String ACN_byte
ASM class name for byte.
-
ACN_char
public static final java.lang.String ACN_char
ASM class name for char.
-
ACN_double
public static final java.lang.String ACN_double
ASM class name for double.
-
ACN_float
public static final java.lang.String ACN_float
ASM class name for float.
-
ACN_int
public static final java.lang.String ACN_int
ASM class name for int.
-
ACN_long
public static final java.lang.String ACN_long
ASM class name for long.
-
ACN_short
public static final java.lang.String ACN_short
ASM class name for short.
-
ACN_Boolean
public static final java.lang.String ACN_Boolean
ASM class name for Boolean.
-
ACN_Byte
public static final java.lang.String ACN_Byte
ASM class name for Byte.
-
ACN_Character
public static final java.lang.String ACN_Character
ASM class name for Character.
-
ACN_Double
public static final java.lang.String ACN_Double
ASM class name for Double.
-
ACN_Float
public static final java.lang.String ACN_Float
ASM class name for Float.
-
ACN_Integer
public static final java.lang.String ACN_Integer
ASM class name for Integer.
-
ACN_Long
public static final java.lang.String ACN_Long
ASM class name for Long.
-
ACN_Short
public static final java.lang.String ACN_Short
ASM class name for Short.
-
ACN_String
public static final java.lang.String ACN_String
ASM class name for java.lang.String.
-
ACN_Object
public static final java.lang.String ACN_Object
ASM class name for java.lang.Object.
-
CD_String
public static final java.lang.String CD_String
Class descriptor for String.
-
CD_Object
public static final java.lang.String CD_Object
Descriptor for java.lang.Object.
-
-
Method Detail
-
addBIPUSHToMethod
public static void addBIPUSHToMethod(MethodVisitor visitor, int i)
Convenience method to add a BIPUSH-type int to the visitor.- Parameters:
visitor- The MethodVisitori- number
-
addReturnForType
public static void addReturnForType(MethodVisitor visitor, java.lang.Class type)
Convenience method to add a return statement based on the type to be returned.- Parameters:
visitor- The MethodVisitortype- The type to return
-
addLoadForType
public static void addLoadForType(MethodVisitor visitor, java.lang.Class type, int number)
Convenience method to add a load statement based on the type to be loaded.- Parameters:
visitor- The MethodVisitortype- The type to loadnumber- Number to load
-
getTypeNameForPersistableMethod
public static java.lang.String getTypeNameForPersistableMethod(java.lang.Class cls)
Convenience method to give the type name given the type. This is for the assorted methods on the StateManager called things like "replacingStringField", "replacingObjectField", "providedIntField", etc. Just returns the "type" part of the name.- Boolean, bool : returns "Boolean"
- Byte, byte : returns "Byte"
- Character, char : returns "Char"
- Double, double : returns "Double"
- Float, float : returns "Float"
- Integer, int : returns "Int"
- Long, long : returns "Long"
- Short, short : returns "Short"
- String : returns "String"
- all others : returns "Object"
- Parameters:
cls- The type of the field- Returns:
- Name for the method
-
getTypeDescriptorForType
public static java.lang.String getTypeDescriptorForType(java.lang.String clsName)
Return the ASM type descriptor for the input class.- Parameters:
clsName- The input class name- Returns:
- The ASM type descriptor name
-
getTypeDescriptorForEnhanceMethod
public static java.lang.String getTypeDescriptorForEnhanceMethod(java.lang.Class cls)
Convenience method to give the descriptor for use in an enhanced "field" method. This is for the assorted methods on the StateManager called things like "replacingStringField", "replacingObjectField", "providedIntField", etc. Returns the ASM descriptor equivalent for the method used- Boolean, bool : returns "Boolean"
- Byte, byte : returns "Byte"
- Character, char : returns "Char"
- Double, double : returns "Double"
- Float, float : returns "Float"
- Integer, int : returns "Int"
- Long, long : returns "Long"
- Short, short : returns "Short"
- String : returns "String"
- all others : returns "Object"
- Parameters:
cls- The type of the field- Returns:
- Name for the method
-
getASMClassNameForSingleFieldIdentityConstructor
public static java.lang.String getASMClassNameForSingleFieldIdentityConstructor(java.lang.Class fieldType)
Convenience method to return the ASM class name to use as input via the SingleFieldIdentity constructor. Means that if the fieldType is primitive we return the ASM class name of the object wrapper.- Parameters:
fieldType- Type of the field- Returns:
- ASM class name to use as input in the constructor
-
getAsmVersionForJRE
public static int getAsmVersionForJRE()
-
-