public class ConstructorReference extends SpelNodeImpl
Examples:
new String('hello world')
new int[]{1,2,3,4}
new int[3] new int[3]{1,2,3}
Modifier and Type | Field and Description |
---|---|
private ConstructorExecutor |
cachedExecutor
The cached executor that may be reused on subsequent evaluations.
|
private SpelNodeImpl[] |
dimensions |
private boolean |
isArrayConstructor |
children, exitTypeDescriptor, pos
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V1_9
Constructor and Description |
---|
ConstructorReference(int pos,
SpelNodeImpl... arguments)
Create a constructor reference.
|
ConstructorReference(int pos,
SpelNodeImpl[] dimensions,
SpelNodeImpl... arguments)
Create a constructor reference.
|
Modifier and Type | Method and Description |
---|---|
private TypedValue |
createArray(ExpressionState state)
Create an array and return it.
|
private TypedValue |
createNewInstance(ExpressionState state)
Create a new ordinary object and return it.
|
private ConstructorExecutor |
findExecutorForConstructor(java.lang.String typeName,
java.util.List<TypeDescriptor> argumentTypes,
ExpressionState state)
Go through the list of registered constructor resolvers and see if any can find a
constructor that takes the specified set of arguments.
|
void |
generateCode(MethodVisitor mv,
CodeFlow cf)
Generate the bytecode for this node into the supplied visitor.
|
TypedValue |
getValueInternal(ExpressionState state)
Implements getValue() - delegating to the code for building an array or a simple type.
|
private boolean |
hasInitializer() |
boolean |
isCompilable()
Check whether a node can be compiled to bytecode.
|
private void |
populateBooleanArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
private void |
populateByteArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
private void |
populateCharArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
private void |
populateDoubleArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
private void |
populateFloatArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
private void |
populateIntArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
private void |
populateLongArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
private void |
populateReferenceTypeArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer,
java.lang.Class<?> componentType) |
private void |
populateShortArray(ExpressionState state,
java.lang.Object newArray,
TypeConverter typeConverter,
InlineList initializer) |
java.lang.String |
toStringAST() |
generateCodeForArgument, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getPreviousChild, getStartPosition, getTypedValue, getValue, getValue, getValueRef, isWritable, nextChildIs, setValue
private boolean isArrayConstructor
private SpelNodeImpl[] dimensions
private volatile ConstructorExecutor cachedExecutor
public ConstructorReference(int pos, SpelNodeImpl... arguments)
public ConstructorReference(int pos, SpelNodeImpl[] dimensions, SpelNodeImpl... arguments)
public TypedValue getValueInternal(ExpressionState state) throws EvaluationException
getValueInternal
in class SpelNodeImpl
EvaluationException
private TypedValue createNewInstance(ExpressionState state) throws EvaluationException
state
- the expression state within which this expression is being evaluatedEvaluationException
- if there is a problem creating the objectprivate ConstructorExecutor findExecutorForConstructor(java.lang.String typeName, java.util.List<TypeDescriptor> argumentTypes, ExpressionState state) throws SpelEvaluationException
typeName
- the type trying to be constructedargumentTypes
- the types of the arguments supplied that the constructor must takestate
- the current state of the expressionSpelEvaluationException
- if there is a problem locating the constructorpublic java.lang.String toStringAST()
private TypedValue createArray(ExpressionState state) throws EvaluationException
state
- the expression state within which this expression is being evaluatedEvaluationException
- if there is a problem creating the arrayprivate void populateReferenceTypeArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer, java.lang.Class<?> componentType)
private void populateByteArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private void populateFloatArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private void populateDoubleArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private void populateShortArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private void populateLongArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private void populateCharArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private void populateBooleanArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private void populateIntArray(ExpressionState state, java.lang.Object newArray, TypeConverter typeConverter, InlineList initializer)
private boolean hasInitializer()
public boolean isCompilable()
SpelNodeImpl
isCompilable
in class SpelNodeImpl
true
if this node can be compiled to bytecodepublic void generateCode(MethodVisitor mv, CodeFlow cf)
SpelNodeImpl
generateCode
in class SpelNodeImpl
mv
- the ASM MethodVisitor into which code should be generatedcf
- a context object with info about what is on the stack