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, waittoStringASTprotected int pos
protected SpelNodeImpl[] children
protected volatile String exitTypeDescriptor
The descriptor is like the bytecode form but is slightly easier to work with. It does not include the trailing semicolon (for non array reference types). Some examples: Ljava/lang/String, I, [I
public SpelNodeImpl(int pos,
SpelNodeImpl... operands)
protected SpelNodeImpl getPreviousChild()
protected boolean nextChildIs(Class<?>... clazzes)
public final Object getValue(ExpressionState expressionState) throws EvaluationException
SpelNodegetValue in interface SpelNodeexpressionState - the current expression state (includes the context)EvaluationExceptionpublic final TypedValue getTypedValue(ExpressionState expressionState) throws EvaluationException
SpelNodegetTypedValue in interface SpelNodeexpressionState - the current expression state (includes the context)EvaluationExceptionpublic boolean isWritable(ExpressionState expressionState) throws EvaluationException
SpelNodeisWritable in interface SpelNodeexpressionState - 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
SpelNodesetValue in interface SpelNodeexpressionState - 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)
SpelNodepublic int getChildCount()
getChildCount in interface SpelNodepublic Class<?> getObjectClass(Object obj)
SpelNodegetObjectClass in interface SpelNodeobj - the object that the caller wants the class ofprotected final <T> T getValue(ExpressionState state, Class<T> desiredReturnType) throws EvaluationException
EvaluationExceptionpublic int getStartPosition()
getStartPosition in interface SpelNodepublic int getEndPosition()
getEndPosition in interface SpelNodeprotected ValueRef getValueRef(ExpressionState state) throws EvaluationException
EvaluationExceptionpublic boolean isCompilable()
true if this node can be compiled to bytecodepublic 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