Class ReflectiveAccessorOptimizer
java.lang.Object
org.mvel2.compiler.AbstractParser
org.mvel2.optimizers.AbstractOptimizer
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer
- All Implemented Interfaces:
Serializable, Parser, AccessorOptimizer
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Objectprivate AccessorNodeprivate static final intprivate static final Object[]private static final Class[]private booleanprivate Classprivate static final Loggerprivate Classprivate AccessorNodeprivate Objectprivate Objectprivate VariableResolverFactoryFields inherited from class AbstractOptimizer
BEAN, COL, collection, currType, METH, nullSafe, staticAccess, tkStart, WITHFields inherited from class AbstractParser
CLASS_LITERALS, compileMode, cursor, debugSymbols, dStack, end, expr, fields, GET, GET_OR_CREATE, greedy, lastLineStart, lastNode, lastWasComment, lastWasIdentifier, lastWasLineLabel, length, LEVEL_0_PROPERTY_ONLY, LEVEL_1_BASIC_LANG, LEVEL_2_MULTI_STATEMENT, LEVEL_3_ITERATION, LEVEL_4_ASSIGNMENT, LEVEL_5_CONTROL_FLOW, line, literalOnly, LITERALS, OP_CONTINUE, OP_NOT_LITERAL, OP_OVERFLOW, OP_RESET_FRAME, OP_TERMINATE, OPERATORS, pCtx, REMOVE, SET, splitAccumulator, st, start, stk -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateReflectiveAccessorOptimizer(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory variableFactory) -
Method Summary
Modifier and TypeMethodDescriptionprivate Accessor_getAccessor(Object o, Class type) private voidprivate AccessorNodecompileConstructor(char[] expression, Object ctx, VariableResolverFactory vars) private Accessorprivate ObjectgetBeanProperty(Object ctx, String property) private ObjectgetBeanPropertyAO(Object ctx, String property) private ObjectgetCollectionProperty(Object ctx, String prop) Handle accessing a property embedded in a collections, map, or arrayprivate ObjectgetCollectionPropertyAO(Object ctx, String prop) private ObjectFind an appropriate method, execute it, and return it's response.private Objectprivate AccessorNodegetValue(Object ctx, Object elCtx, VariableResolverFactory variableFactory) private ObjectgetWithProperty(Object ctx) voidinit()booleanoptimizeAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean root, Class ingressType) optimizeCollection(ParserContext pCtx, Object o, Class type, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) optimizeObjectCreation(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) optimizeSetAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean rootThisRef, Object value, Class ingressType) private ObjectpropHandler(String property, Object ctx, Class handler) voidpropHandlerSet(String property, Object ctx, Class handler, Object value) private voidsetRootNode(AccessorNode rootNode) Methods inherited from class AbstractOptimizer
capture, findLastUnion, nextSubToken, scanTo, tryStaticAccess, whiteSpaceSkipMethods inherited from class AbstractParser
addFatalError, addFatalError, arithmeticFunctionReduction, captureIdentifier, captureToEOS, captureToEOSorEOL, captureToEOT, captureToNextTokenJunction, expectEOS, expectNextChar_IW, getCursor, getExpression, handleSubstatement, handleUnion, ifThenElseBlockContinues, incNextNonBlank, isArithmeticOperator, isNextIdentifier, isNextIdentifierOrLiteral, isStatementNotManuallyTerminated, lastNonWhite, loadLanguageFeaturesByLevel, lookAhead, lookAhead, lookBehind, lookToLast, nextNonBlank, nextToken, nextTokenSkipSymbols, reduce, setExpression, setExpression, setLanguageLevel, setupParser, skipWhitespace, tokenContinues, trimLeft, trimRight, trimWhitespace
-
Field Details
-
LOG
-
rootNode
-
currNode
-
ctx
-
thisRef
-
val
-
variableFactory
-
DONE
private static final int DONE- See Also:
-
EMPTYARG
-
EMPTYCLS
-
first
private boolean first -
ingressType
-
returnType
-
-
Constructor Details
-
ReflectiveAccessorOptimizer
public ReflectiveAccessorOptimizer() -
ReflectiveAccessorOptimizer
private ReflectiveAccessorOptimizer(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory variableFactory)
-
-
Method Details
-
init
public void init()- Specified by:
initin interfaceAccessorOptimizer
-
optimizeAccessor
public Accessor optimizeAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean root, Class ingressType) - Specified by:
optimizeAccessorin interfaceAccessorOptimizer
-
optimizeSetAccessor
public Accessor optimizeSetAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean rootThisRef, Object value, Class ingressType) - Specified by:
optimizeSetAccessorin interfaceAccessorOptimizer
-
compileGetChain
-
addAccessorNode
-
getWithProperty
-
getBeanPropertyAO
-
getBeanProperty
-
getCollectionProperty
-
getCollectionPropertyAO
-
getMethod
-
getMethod
-
getValue
-
_getAccessor
-
optimizeCollection
public Accessor optimizeCollection(ParserContext pCtx, Object o, Class type, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) - Specified by:
optimizeCollectionin interfaceAccessorOptimizer
-
optimizeObjectCreation
public Accessor optimizeObjectCreation(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) - Specified by:
optimizeObjectCreationin interfaceAccessorOptimizer
-
setRootNode
-
getRootNode
-
getResultOptPass
- Specified by:
getResultOptPassin interfaceAccessorOptimizer
-
compileConstructor
private AccessorNode compileConstructor(char[] expression, Object ctx, VariableResolverFactory vars) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, NoSuchMethodException -
getEgressType
- Specified by:
getEgressTypein interfaceAccessorOptimizer
-
isLiteralOnly
public boolean isLiteralOnly()- Specified by:
isLiteralOnlyin interfaceAccessorOptimizer
-
propHandler
-
propHandlerSet
-