public abstract class SpelNodeImpl extends Object implements SpelNode, Opcodes
Modifier and Type | Field and Description |
---|---|
protected SpelNodeImpl[] |
children |
protected String |
exitTypeDescriptor
Indicates the type descriptor for the result of this expression node.
|
protected int |
pos |
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, 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
Constructor and Description |
---|
SpelNodeImpl(int pos,
SpelNodeImpl... operands) |
Modifier and Type | Method and Description |
---|---|
void |
generateCode(MethodVisitor mv,
CodeFlow codeflow)
Generate the bytecode for this node into the supplied visitor.
|
SpelNode |
getChild(int index)
Helper method that returns a SpelNode rather than an Antlr Tree node.
|
int |
getChildCount() |
int |
getEndPosition() |
String |
getExitDescriptor() |
Class<?> |
getObjectClass(Object obj)
Determine the class of the object passed in, unless it is already a class object.
|
protected SpelNodeImpl |
getPreviousChild() |
int |
getStartPosition() |
TypedValue |
getTypedValue(ExpressionState expressionState)
Evaluate the expression node in the context of the supplied expression state and
return the typed value.
|
Object |
getValue(ExpressionState expressionState)
Evaluate the expression node in the context of the supplied expression state and
return the value.
|
protected <T> T |
getValue(ExpressionState state,
Class<T> desiredReturnType) |
abstract TypedValue |
getValueInternal(ExpressionState expressionState) |
protected ValueRef |
getValueRef(ExpressionState state) |
boolean |
isCompilable()
Check whether a node can be compiled to bytecode.
|
boolean |
isWritable(ExpressionState expressionState)
Determine if this expression node will support a setValue() call.
|
protected boolean |
nextChildIs(Class<?>... clazzes) |
void |
setValue(ExpressionState expressionState,
Object newValue)
Evaluate the expression to a node and then set the new value on that node.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
toStringAST
protected int pos
protected SpelNodeImpl[] children
protected volatile String exitTypeDescriptor
public SpelNodeImpl(int pos, SpelNodeImpl... operands)
protected SpelNodeImpl getPreviousChild()
protected boolean nextChildIs(Class<?>... clazzes)
public final Object getValue(ExpressionState expressionState) throws EvaluationException
SpelNode
getValue
in interface SpelNode
expressionState
- the current expression state (includes the context)EvaluationException
public final TypedValue getTypedValue(ExpressionState expressionState) throws EvaluationException
SpelNode
getTypedValue
in interface SpelNode
expressionState
- the current expression state (includes the context)EvaluationException
public boolean isWritable(ExpressionState expressionState) throws EvaluationException
SpelNode
isWritable
in interface SpelNode
expressionState
- the current expression state (includes the context)EvaluationException
- if something went wrong trying to determine if the node supports writingpublic void setValue(ExpressionState expressionState, Object newValue) throws EvaluationException
SpelNode
setValue
in interface SpelNode
expressionState
- the current expression state (includes the context)newValue
- the new valueEvaluationException
- if any problem occurs evaluating the expression or
setting the new valuepublic SpelNode getChild(int index)
SpelNode
public int getChildCount()
getChildCount
in interface SpelNode
public Class<?> getObjectClass(Object obj)
SpelNode
getObjectClass
in interface SpelNode
obj
- the object that the caller wants the class ofprotected final <T> T getValue(ExpressionState state, Class<T> desiredReturnType) throws EvaluationException
EvaluationException
public int getStartPosition()
getStartPosition
in interface SpelNode
public int getEndPosition()
getEndPosition
in interface SpelNode
protected ValueRef getValueRef(ExpressionState state) throws EvaluationException
EvaluationException
public boolean isCompilable()
public void generateCode(MethodVisitor mv, CodeFlow codeflow)
mv
- the ASM MethodVisitor into which code should be generatedcodeflow
- a context object with info about what is on the stackpublic String getExitDescriptor()
public abstract TypedValue getValueInternal(ExpressionState expressionState) throws EvaluationException
EvaluationException