Package org.mvel2.optimizers.impl.refl
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 Object
private AccessorNode
private static final int
private static final Object[]
private static final Class[]
private boolean
private Class
private static final Logger
private Class
private AccessorNode
private Object
private Object
private VariableResolverFactory
Fields inherited from class org.mvel2.optimizers.AbstractOptimizer
BEAN, COL, collection, currType, METH, nullSafe, staticAccess, tkStart, WITH
Fields inherited from class org.mvel2.compiler.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
ConstructorsModifierConstructorDescriptionprivate
ReflectiveAccessorOptimizer
(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 void
private AccessorNode
compileConstructor
(char[] expression, Object ctx, VariableResolverFactory vars) private Accessor
private Object
getBeanProperty
(Object ctx, String property) private Object
getBeanPropertyAO
(Object ctx, String property) private Object
getCollectionProperty
(Object ctx, String prop) Handle accessing a property embedded in a collections, map, or arrayprivate Object
getCollectionPropertyAO
(Object ctx, String prop) private Object
Find an appropriate method, execute it, and return it's response.private Object
private AccessorNode
getValue
(Object ctx, Object elCtx, VariableResolverFactory variableFactory) private Object
getWithProperty
(Object ctx) void
init()
boolean
optimizeAccessor
(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 Object
propHandler
(String property, Object ctx, Class handler) void
propHandlerSet
(String property, Object ctx, Class handler, Object value) private void
setRootNode
(AccessorNode rootNode) Methods inherited from class org.mvel2.optimizers.AbstractOptimizer
capture, findLastUnion, nextSubToken, scanTo, tryStaticAccess, whiteSpaceSkip
Methods inherited from class org.mvel2.compiler.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:
init
in 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:
optimizeAccessor
in 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:
optimizeSetAccessor
in interfaceAccessorOptimizer
-
compileGetChain
-
addAccessorNode
-
getWithProperty
-
getBeanPropertyAO
- Throws:
Exception
-
getBeanProperty
- Throws:
Exception
-
getCollectionProperty
Handle accessing a property embedded in a collections, map, or array- Parameters:
ctx
- -prop
- -- Returns:
- -
- Throws:
Exception
- -
-
getCollectionPropertyAO
- Throws:
Exception
-
getMethod
Find an appropriate method, execute it, and return it's response.- Parameters:
ctx
- -name
- -- Returns:
- -
- Throws:
Exception
- -
-
getMethod
private Object getMethod(Object ctx, String name, Object[] args, Class[] argTypes, ExecutableStatement[] es) throws Exception - Throws:
Exception
-
getValue
public Object getValue(Object ctx, Object elCtx, VariableResolverFactory variableFactory) throws Exception - Throws:
Exception
-
_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:
optimizeCollection
in interfaceAccessorOptimizer
-
optimizeObjectCreation
public Accessor optimizeObjectCreation(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) - Specified by:
optimizeObjectCreation
in interfaceAccessorOptimizer
-
setRootNode
-
getRootNode
-
getResultOptPass
- Specified by:
getResultOptPass
in interfaceAccessorOptimizer
-
compileConstructor
private AccessorNode compileConstructor(char[] expression, Object ctx, VariableResolverFactory vars) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, NoSuchMethodException -
getEgressType
- Specified by:
getEgressType
in interfaceAccessorOptimizer
-
isLiteralOnly
public boolean isLiteralOnly()- Specified by:
isLiteralOnly
in interfaceAccessorOptimizer
-
propHandler
-
propHandlerSet
-