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, WITHCLASS_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, whiteSpaceSkipaddFatalError, 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, trimWhitespaceprivate 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 AccessorOptimizerpublic 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 AccessorOptimizerpublic 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 AccessorOptimizerprivate 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.Exceptionprivate java.lang.Object getBeanProperty(java.lang.Object ctx,
java.lang.String property)
throws java.lang.Exception
java.lang.Exceptionprivate 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.Exceptionprivate 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.Exceptionpublic java.lang.Object getValue(java.lang.Object ctx,
java.lang.Object elCtx,
VariableResolverFactory variableFactory)
throws java.lang.Exception
java.lang.Exceptionprivate 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 AccessorOptimizerpublic Accessor optimizeObjectCreation(ParserContext pCtx, char[] property, int start, int offset, java.lang.Object ctx, java.lang.Object thisRef, VariableResolverFactory factory)
optimizeObjectCreation in interface AccessorOptimizerprivate void setRootNode(AccessorNode rootNode)
private AccessorNode getRootNode()
public java.lang.Object getResultOptPass()
getResultOptPass in interface AccessorOptimizerprivate 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.InstantiationExceptionjava.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetExceptionjava.lang.ClassNotFoundExceptionjava.lang.NoSuchMethodExceptionpublic java.lang.Class getEgressType()
getEgressType in interface AccessorOptimizerpublic boolean isLiteralOnly()
isLiteralOnly in interface AccessorOptimizerprivate 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)