public class ReflectiveAccessorOptimizer extends AbstractOptimizer implements AccessorOptimizer
Modifier and Type | Field and Description |
---|---|
private java.lang.Object |
ctx |
private AccessorNode |
currNode |
private static int |
DONE |
private static java.lang.Object[] |
EMPTYARG |
private static java.lang.Class[] |
EMPTYCLS |
private boolean |
first |
private java.lang.Class |
ingressType |
private static java.util.logging.Logger |
LOG |
private java.lang.Class |
returnType |
private AccessorNode |
rootNode |
private java.lang.Object |
thisRef |
private java.lang.Object |
val |
private VariableResolverFactory |
variableFactory |
BEAN, COL, collection, currType, METH, nullSafe, staticAccess, tkStart, WITH
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
Modifier | Constructor and Description |
---|---|
|
ReflectiveAccessorOptimizer() |
private |
ReflectiveAccessorOptimizer(ParserContext pCtx,
char[] property,
int start,
int offset,
java.lang.Object ctx,
java.lang.Object thisRef,
VariableResolverFactory variableFactory) |
Modifier and Type | Method and Description |
---|---|
private Accessor |
_getAccessor(java.lang.Object o,
java.lang.Class type) |
private void |
addAccessorNode(AccessorNode an) |
private AccessorNode |
compileConstructor(char[] expression,
java.lang.Object ctx,
VariableResolverFactory vars) |
private Accessor |
compileGetChain() |
private java.lang.Object |
getBeanProperty(java.lang.Object ctx,
java.lang.String property) |
private java.lang.Object |
getBeanPropertyAO(java.lang.Object ctx,
java.lang.String property) |
private java.lang.Object |
getCollectionProperty(java.lang.Object ctx,
java.lang.String prop)
Handle accessing a property embedded in a collections, map, or array
|
private java.lang.Object |
getCollectionPropertyAO(java.lang.Object ctx,
java.lang.String prop) |
java.lang.Class |
getEgressType() |
private java.lang.Object |
getMethod(java.lang.Object ctx,
java.lang.String name)
Find an appropriate method, execute it, and return it's response.
|
private java.lang.Object |
getMethod(java.lang.Object ctx,
java.lang.String name,
java.lang.Object[] args,
java.lang.Class[] argTypes,
ExecutableStatement[] es) |
java.lang.Object |
getResultOptPass() |
private AccessorNode |
getRootNode() |
java.lang.Object |
getValue(java.lang.Object ctx,
java.lang.Object elCtx,
VariableResolverFactory variableFactory) |
private java.lang.Object |
getWithProperty(java.lang.Object ctx) |
void |
init() |
boolean |
isLiteralOnly() |
Accessor |
optimizeAccessor(ParserContext pCtx,
char[] property,
int start,
int offset,
java.lang.Object ctx,
java.lang.Object thisRef,
VariableResolverFactory factory,
boolean root,
java.lang.Class ingressType) |
Accessor |
optimizeCollection(ParserContext pCtx,
java.lang.Object o,
java.lang.Class type,
char[] property,
int start,
int offset,
java.lang.Object ctx,
java.lang.Object thisRef,
VariableResolverFactory factory) |
Accessor |
optimizeObjectCreation(ParserContext pCtx,
char[] property,
int start,
int offset,
java.lang.Object ctx,
java.lang.Object thisRef,
VariableResolverFactory factory) |
Accessor |
optimizeSetAccessor(ParserContext pCtx,
char[] property,
int start,
int offset,
java.lang.Object ctx,
java.lang.Object thisRef,
VariableResolverFactory factory,
boolean rootThisRef,
java.lang.Object value,
java.lang.Class ingressType) |
private java.lang.Object |
propHandler(java.lang.String property,
java.lang.Object ctx,
java.lang.Class handler) |
void |
propHandlerSet(java.lang.String property,
java.lang.Object ctx,
java.lang.Class handler,
java.lang.Object value) |
private void |
setRootNode(AccessorNode rootNode) |
capture, findLastUnion, nextSubToken, scanTo, tryStaticAccess, whiteSpaceSkip
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
private static final java.util.logging.Logger LOG
private AccessorNode rootNode
private AccessorNode currNode
private java.lang.Object ctx
private java.lang.Object thisRef
private java.lang.Object val
private VariableResolverFactory variableFactory
private static final int DONE
private static final java.lang.Object[] EMPTYARG
private static final java.lang.Class[] EMPTYCLS
private boolean first
private java.lang.Class ingressType
private java.lang.Class returnType
public ReflectiveAccessorOptimizer()
private ReflectiveAccessorOptimizer(ParserContext pCtx, char[] property, int start, int offset, java.lang.Object ctx, java.lang.Object thisRef, VariableResolverFactory variableFactory)
public void init()
init
in interface AccessorOptimizer
public Accessor optimizeAccessor(ParserContext pCtx, char[] property, int start, int offset, java.lang.Object ctx, java.lang.Object thisRef, VariableResolverFactory factory, boolean root, java.lang.Class ingressType)
optimizeAccessor
in interface AccessorOptimizer
public Accessor optimizeSetAccessor(ParserContext pCtx, char[] property, int start, int offset, java.lang.Object ctx, java.lang.Object thisRef, VariableResolverFactory factory, boolean rootThisRef, java.lang.Object value, java.lang.Class ingressType)
optimizeSetAccessor
in interface AccessorOptimizer
private Accessor compileGetChain()
private void addAccessorNode(AccessorNode an)
private java.lang.Object getWithProperty(java.lang.Object ctx)
private java.lang.Object getBeanPropertyAO(java.lang.Object ctx, java.lang.String property) throws java.lang.Exception
java.lang.Exception
private java.lang.Object getBeanProperty(java.lang.Object ctx, java.lang.String property) throws java.lang.Exception
java.lang.Exception
private java.lang.Object getCollectionProperty(java.lang.Object ctx, java.lang.String prop) throws java.lang.Exception
ctx
- -prop
- -java.lang.Exception
- -private java.lang.Object getCollectionPropertyAO(java.lang.Object ctx, java.lang.String prop) throws java.lang.Exception
java.lang.Exception
private java.lang.Object getMethod(java.lang.Object ctx, java.lang.String name) throws java.lang.Exception
ctx
- -name
- -java.lang.Exception
- -private java.lang.Object getMethod(java.lang.Object ctx, java.lang.String name, java.lang.Object[] args, java.lang.Class[] argTypes, ExecutableStatement[] es) throws java.lang.Exception
java.lang.Exception
public java.lang.Object getValue(java.lang.Object ctx, java.lang.Object elCtx, VariableResolverFactory variableFactory) throws java.lang.Exception
java.lang.Exception
private Accessor _getAccessor(java.lang.Object o, java.lang.Class type)
public Accessor optimizeCollection(ParserContext pCtx, java.lang.Object o, java.lang.Class type, char[] property, int start, int offset, java.lang.Object ctx, java.lang.Object thisRef, VariableResolverFactory factory)
optimizeCollection
in interface AccessorOptimizer
public Accessor optimizeObjectCreation(ParserContext pCtx, char[] property, int start, int offset, java.lang.Object ctx, java.lang.Object thisRef, VariableResolverFactory factory)
optimizeObjectCreation
in interface AccessorOptimizer
private void setRootNode(AccessorNode rootNode)
private AccessorNode getRootNode()
public java.lang.Object getResultOptPass()
getResultOptPass
in interface AccessorOptimizer
private AccessorNode compileConstructor(char[] expression, java.lang.Object ctx, VariableResolverFactory vars) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.ClassNotFoundException, java.lang.NoSuchMethodException
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.ClassNotFoundException
java.lang.NoSuchMethodException
public java.lang.Class getEgressType()
getEgressType
in interface AccessorOptimizer
public boolean isLiteralOnly()
isLiteralOnly
in interface AccessorOptimizer
private java.lang.Object propHandler(java.lang.String property, java.lang.Object ctx, java.lang.Class handler)
public void propHandlerSet(java.lang.String property, java.lang.Object ctx, java.lang.Class handler, java.lang.Object value)