Package org.mvel2
Class PropertyAccessor
- java.lang.Object
-
- org.mvel2.PropertyAccessor
-
public class PropertyAccessor extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private static intCOLprivate java.lang.Objectctxprivate java.lang.Objectcurrprivate java.lang.ClasscurrTypeprivate intcursorprivate static java.lang.Object[]EMPTYARGprivate intendprivate booleanfirstprivate intlengthprivate static intMETHprivate static java.util.Map<java.lang.reflect.Member,java.lang.ref.WeakReference<java.lang.Class[]>>METHOD_PARMTYPES_CACHEprivate static java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.Object[]>>>METHOD_RESOLVER_CACHEprivate static intNORMprivate booleannullHandleprivate ParserContextpCtxprivate char[]propertyprivate static java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.reflect.Member>>>READ_PROPERTY_RESOLVER_CACHEprivate intstprivate intstartprivate java.lang.ObjectthisReferenceprivate VariableResolverFactoryvariableFactoryprivate static intWITHprivate static java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.reflect.Member>>>WRITE_PROPERTY_RESOLVER_CACHE
-
Constructor Summary
Constructors Constructor Description PropertyAccessor(char[] property, int start, int offset, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReference, ParserContext pCtx)PropertyAccessor(char[] property, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReference, ParserContext pCtx)PropertyAccessor(java.lang.String property, java.lang.Object ctx)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voidaddMethodCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Method member)private static voidaddReadCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Member member)private static voidaddWriteCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Member member)private java.lang.Stringcapture()private static java.lang.Object[]checkMethodCache(java.lang.Class cls, java.lang.Integer property)static java.lang.Class[]checkParmTypesCache(java.lang.reflect.Method member)private static java.lang.reflect.MembercheckReadCache(java.lang.Class cls, java.lang.Integer property)private static java.lang.reflect.MembercheckWriteCache(java.lang.Class cls, java.lang.Integer property)static voidclearPropertyResolverCache()private static intcreateSignature(java.lang.String name, java.lang.String args)private java.lang.Objectget()static java.lang.Objectget(char[] property, int offset, int end, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReferece, ParserContext pCtx)static java.lang.Objectget(java.lang.String property, java.lang.Object ctx)static java.lang.Objectget(java.lang.String property, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReference, ParserContext pCtx)private java.lang.ObjectgetAllowOverride()private java.lang.ObjectgetBeanProperty(java.lang.Object ctx, java.lang.String property)private java.lang.ObjectgetBeanPropertyAO(java.lang.Object ctx, java.lang.String property)private java.lang.ClassLoadergetClassLoader()private java.lang.ObjectgetCollectionProperty(java.lang.Object ctx, java.lang.String prop)Handle accessing a property embedded in a collections, map, or arrayprivate java.lang.ObjectgetCollectionPropertyAO(java.lang.Object ctx, java.lang.String prop)private java.lang.ObjectgetMethod(java.lang.Object ctx, java.lang.String name)Find an appropriate method, execute it, and return it's response.private java.lang.ObjectgetNormal()private java.lang.ObjectgetWithProperty(java.lang.Object ctx)private intnextToken()static voidreportCacheSizes()private booleanscanTo(char c)private voidset(java.lang.Object value)static voidset(java.lang.Object ctx, java.lang.String property, java.lang.Object value)static voidset(java.lang.Object ctx, VariableResolverFactory resolver, java.lang.String property, java.lang.Object value, ParserContext pCtx)protected inttrimLeft(int pos)protected java.lang.ObjecttryStaticAccess()Try static access of the property, and return an instance of the Field, Method of Class if successful.private voidwhiteSpaceSkip()
-
-
-
Field Detail
-
start
private int start
-
cursor
private int cursor
-
st
private int st
-
property
private char[] property
-
length
private int length
-
end
private int end
-
thisReference
private java.lang.Object thisReference
-
ctx
private java.lang.Object ctx
-
curr
private java.lang.Object curr
-
currType
private java.lang.Class currType
-
first
private boolean first
-
nullHandle
private boolean nullHandle
-
variableFactory
private VariableResolverFactory variableFactory
-
pCtx
private ParserContext pCtx
-
NORM
private static final int NORM
- See Also:
- Constant Field Values
-
METH
private static final int METH
- See Also:
- Constant Field Values
-
COL
private static final int COL
- See Also:
- Constant Field Values
-
WITH
private static final int WITH
- See Also:
- Constant Field Values
-
EMPTYARG
private static final java.lang.Object[] EMPTYARG
-
READ_PROPERTY_RESOLVER_CACHE
private static final java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.reflect.Member>>> READ_PROPERTY_RESOLVER_CACHE
-
WRITE_PROPERTY_RESOLVER_CACHE
private static final java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.reflect.Member>>> WRITE_PROPERTY_RESOLVER_CACHE
-
METHOD_RESOLVER_CACHE
private static final java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.Object[]>>> METHOD_RESOLVER_CACHE
-
METHOD_PARMTYPES_CACHE
private static final java.util.Map<java.lang.reflect.Member,java.lang.ref.WeakReference<java.lang.Class[]>> METHOD_PARMTYPES_CACHE
-
-
Constructor Detail
-
PropertyAccessor
public PropertyAccessor(java.lang.String property, java.lang.Object ctx)
-
PropertyAccessor
public PropertyAccessor(char[] property, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReference, ParserContext pCtx)
-
PropertyAccessor
public PropertyAccessor(char[] property, int start, int offset, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReference, ParserContext pCtx)
-
-
Method Detail
-
get
public static java.lang.Object get(java.lang.String property, java.lang.Object ctx)
-
get
public static java.lang.Object get(char[] property, int offset, int end, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReferece, ParserContext pCtx)
-
get
public static java.lang.Object get(java.lang.String property, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReference, ParserContext pCtx)
-
set
public static void set(java.lang.Object ctx, java.lang.String property, java.lang.Object value)
-
set
public static void set(java.lang.Object ctx, VariableResolverFactory resolver, java.lang.String property, java.lang.Object value, ParserContext pCtx)
-
get
private java.lang.Object get()
-
getNormal
private java.lang.Object getNormal() throws java.lang.Exception- Throws:
java.lang.Exception
-
getAllowOverride
private java.lang.Object getAllowOverride() throws java.lang.Exception- Throws:
java.lang.Exception
-
set
private void set(java.lang.Object value)
-
nextToken
private int nextToken()
-
capture
private java.lang.String capture()
-
trimLeft
protected int trimLeft(int pos)
-
clearPropertyResolverCache
public static void clearPropertyResolverCache()
-
reportCacheSizes
public static void reportCacheSizes()
-
addReadCache
private static void addReadCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Member member)
-
checkReadCache
private static java.lang.reflect.Member checkReadCache(java.lang.Class cls, java.lang.Integer property)
-
addWriteCache
private static void addWriteCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Member member)
-
checkWriteCache
private static java.lang.reflect.Member checkWriteCache(java.lang.Class cls, java.lang.Integer property)
-
checkParmTypesCache
public static java.lang.Class[] checkParmTypesCache(java.lang.reflect.Method member)
-
addMethodCache
private static void addMethodCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Method member)
-
checkMethodCache
private static java.lang.Object[] checkMethodCache(java.lang.Class cls, java.lang.Integer property)
-
getBeanPropertyAO
private java.lang.Object getBeanPropertyAO(java.lang.Object ctx, java.lang.String property) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException- Throws:
java.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetException
-
getBeanProperty
private java.lang.Object getBeanProperty(java.lang.Object ctx, java.lang.String property) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException- Throws:
java.lang.IllegalAccessExceptionjava.lang.reflect.InvocationTargetException
-
whiteSpaceSkip
private void whiteSpaceSkip()
-
scanTo
private boolean scanTo(char c)
- Parameters:
c- - character to scan to.- Returns:
- - returns true is end of statement is hit, false if the scan scar is countered.
-
getWithProperty
private java.lang.Object getWithProperty(java.lang.Object ctx)
-
getCollectionProperty
private java.lang.Object getCollectionProperty(java.lang.Object ctx, java.lang.String prop) throws java.lang.ExceptionHandle accessing a property embedded in a collections, map, or array- Parameters:
ctx- -prop- -- Returns:
- -
- Throws:
java.lang.Exception- -
-
getCollectionPropertyAO
private java.lang.Object getCollectionPropertyAO(java.lang.Object ctx, java.lang.String prop) throws java.lang.Exception- Throws:
java.lang.Exception
-
getMethod
private java.lang.Object getMethod(java.lang.Object ctx, java.lang.String name)Find an appropriate method, execute it, and return it's response.- Parameters:
ctx- -name- -- Returns:
- -
-
createSignature
private static int createSignature(java.lang.String name, java.lang.String args)
-
getClassLoader
private java.lang.ClassLoader getClassLoader()
-
tryStaticAccess
protected java.lang.Object tryStaticAccess()
Try static access of the property, and return an instance of the Field, Method of Class if successful.- Returns:
- - Field, Method or Class instance.
-
-