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 int
COL
private java.lang.Object
ctx
private java.lang.Object
curr
private java.lang.Class
currType
private int
cursor
private static java.lang.Object[]
EMPTYARG
private int
end
private boolean
first
private int
length
private static int
METH
private static java.util.Map<java.lang.reflect.Member,java.lang.ref.WeakReference<java.lang.Class[]>>
METHOD_PARMTYPES_CACHE
private static java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.Object[]>>>
METHOD_RESOLVER_CACHE
private static int
NORM
private boolean
nullHandle
private ParserContext
pCtx
private char[]
property
private static java.util.Map<java.lang.Class,java.util.WeakHashMap<java.lang.Integer,java.lang.ref.WeakReference<java.lang.reflect.Member>>>
READ_PROPERTY_RESOLVER_CACHE
private int
st
private int
start
private java.lang.Object
thisReference
private VariableResolverFactory
variableFactory
private static int
WITH
private 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 void
addMethodCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Method member)
private static void
addReadCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Member member)
private static void
addWriteCache(java.lang.Class cls, java.lang.Integer property, java.lang.reflect.Member member)
private java.lang.String
capture()
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.Member
checkReadCache(java.lang.Class cls, java.lang.Integer property)
private static java.lang.reflect.Member
checkWriteCache(java.lang.Class cls, java.lang.Integer property)
static void
clearPropertyResolverCache()
private static int
createSignature(java.lang.String name, java.lang.String args)
private java.lang.Object
get()
static java.lang.Object
get(char[] property, int offset, int end, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReferece, ParserContext pCtx)
static java.lang.Object
get(java.lang.String property, java.lang.Object ctx)
static java.lang.Object
get(java.lang.String property, java.lang.Object ctx, VariableResolverFactory resolver, java.lang.Object thisReference, ParserContext pCtx)
private java.lang.Object
getAllowOverride()
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.ClassLoader
getClassLoader()
private java.lang.Object
getCollectionProperty(java.lang.Object ctx, java.lang.String prop)
Handle accessing a property embedded in a collections, map, or arrayprivate java.lang.Object
getCollectionPropertyAO(java.lang.Object ctx, java.lang.String prop)
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
getNormal()
private java.lang.Object
getWithProperty(java.lang.Object ctx)
private int
nextToken()
static void
reportCacheSizes()
private boolean
scanTo(char c)
private void
set(java.lang.Object value)
static void
set(java.lang.Object ctx, java.lang.String property, java.lang.Object value)
static void
set(java.lang.Object ctx, VariableResolverFactory resolver, java.lang.String property, java.lang.Object value, ParserContext pCtx)
protected int
trimLeft(int pos)
protected java.lang.Object
tryStaticAccess()
Try static access of the property, and return an instance of the Field, Method of Class if successful.private void
whiteSpaceSkip()
-
-
-
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.IllegalAccessException
java.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.IllegalAccessException
java.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.Exception
Handle 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.
-
-