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 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 org.mvel2.optimizers.AbstractOptimizer
BEAN, COL, collection, currType, METH, nullSafe, staticAccess, tkStart, WITHFields 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
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 org.mvel2.optimizers.AbstractOptimizer
capture, findLastUnion, nextSubToken, scanTo, tryStaticAccess, whiteSpaceSkipMethods 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:
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
- 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:
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
-