Class Projection
java.lang.Object
org.springframework.expression.spel.ast.SpelNodeImpl
org.springframework.expression.spel.ast.Projection
Represents projection, where a given operation is performed on all elements in
some input sequence, returning a new sequence of the same size.
For example: {1,2,3,4,5,6,7,8,9,10}.![#isEven(#this)] evaluates
to [n, y, n, y, n, y, n, y, n, y].
Null-safe Projection
Null-safe projection is supported via the '?.!' operator. For example,
'names?.![#this.length]' will evaluate to null if names
is null and will otherwise evaluate to a sequence containing the lengths
of the names. As of Spring Framework 7.0, null-safe projection also applies when
performing projection on an Optional target. For example, if names
is of type Optional<List<String>>, the expression
'names?.![#this.length]' will evaluate to null if names
is null or empty and will otherwise evaluate
to a sequence containing the lengths of the names, effectively
names.get().stream().map(String::length).toList().
- Since:
- 3.0
- Author:
- Andy Clement, Mark Fisher, Juergen Hoeller, Sam Brannen
- 
Field SummaryFields inherited from class SpelNodeImplchildren, exitTypeDescriptorFields inherited from interface OpcodesAALOAD, 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_RECORD, 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, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, 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, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V9
- 
Constructor SummaryConstructorsConstructorDescriptionProjection(boolean nullSafe, int startPos, int endPos, SpelNodeImpl expression) 
- 
Method SummaryModifier and TypeMethodDescriptiongetValueInternal(ExpressionState state) protected ValueRefgetValueRef(ExpressionState state) final booleanDoes this node represent a null-safe projection operation?Return the string form of this AST node.Methods inherited from class SpelNodeImplgenerateCodeForArgument, generateCodeForArguments, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, isWritable, nextChildIs, setValue, setValueInternalMethods inherited from class Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface SpelNodegenerateCode, isCompilable
- 
Constructor Details- 
Projection
 
- 
- 
Method Details- 
isNullSafepublic final boolean isNullSafe()Does this node represent a null-safe projection operation?- Overrides:
- isNullSafein class- SpelNodeImpl
- Returns:
- trueif this node is the target of a null-safe operation
- Since:
- 6.1.6
 
- 
getValueInternal- Specified by:
- getValueInternalin class- SpelNodeImpl
- Throws:
- EvaluationException
 
- 
getValueRef- Overrides:
- getValueRefin class- SpelNodeImpl
- Throws:
- EvaluationException
 
- 
toStringAST
 
-