Package org.mvel2

Class 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  
    • 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 array
      private 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()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
      • 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,
                                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)
      • 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.