ognl
Class OgnlRuntime

java.lang.Object
  extended by ognl.OgnlRuntime

public abstract class OgnlRuntime
extends Object

This is an abstract class with static methods that define runtime caching information in OGNL.

Author:
Luke Blanshard (blanshlu@netscape.net), Drew Davidson (drew@ognl.org)

Field Summary
static int INDEXED_PROPERTY_INT
          JavaBeans IndexedProperty
static int INDEXED_PROPERTY_NONE
          Not an indexed property
static int INDEXED_PROPERTY_OBJECT
          OGNL ObjectIndexedProperty
static Object[] NoArguments
           
static Class[] NoArgumentTypes
           
static Object NoConversionPossible
          Token returned by TypeConverter for no conversion possible
static Object NotFound
           
static List NotFoundList
           
static Map NotFoundMap
           
static String NULL_STRING
           
 
Constructor Summary
OgnlRuntime()
           
 
Method Summary
static boolean areArgsCompatible(Object[] args, Class[] classes)
          Tells whether the given array of objects is compatible with the given array of classes---that is, whether the given array of objects can be passed as arguments to a method or constructor whose parameter types are the given array of classes.
static Object callAppropriateMethod(OgnlContext context, Object source, Object target, String methodName, String propertyName, List methods, Object[] args)
           
static Object callConstructor(OgnlContext context, String className, Object[] args)
           
static Object callMethod(OgnlContext context, Object target, String methodName, String propertyName, Object[] args)
           
static Object callStaticMethod(OgnlContext context, String className, String methodName, Object[] args)
           
static Class classForName(OgnlContext context, String className)
           
static Method getAppropriateMethod(OgnlContext context, Object source, Object target, String methodName, String propertyName, List methods, Object[] args, Object[] actualArgs)
          Gets the appropriate method to be called for the given target, method name and arguments.
static Class getArgClass(Object arg)
          Gets the class for a method argument that is appropriate for looking up methods by reflection, by looking for the standard primitive wrapper classes and exchanging for them their underlying primitive class objects.
static String getBaseName(Object o)
          Returns the base name (the class name without the package name prepended) of the object given.
static String getClassBaseName(Class c)
          Returns the base name (the class name without the package name prepended) of the class given.
static String getClassName(Class c, boolean fullyQualified)
           
static String getClassName(Object o, boolean fullyQualified)
           
static String getClassPackageName(Class c)
          Returns the package name of the class given.
static List getConstructors(Class targetClass)
           
static Constructor getConvertedConstructorAndArgs(OgnlContext context, Object target, List constructors, Object[] args, Object[] newArgs)
           
static Method getConvertedMethodAndArgs(OgnlContext context, Object target, String propertyName, List methods, Object[] args, Object[] newArgs)
           
static Object getConvertedType(OgnlContext context, Object target, Member member, String propertyName, Object value, Class type)
           
static boolean getConvertedTypes(OgnlContext context, Object target, Member member, String propertyName, Class[] parameterTypes, Object[] args, Object[] newArgs)
           
static List getDeclaredMethods(Class targetClass, String propertyName, boolean findSets)
           
static ElementsAccessor getElementsAccessor(Class cls)
           
static EvaluationPool getEvaluationPool()
           
static Field getField(Class inClass, String name)
           
static Map getFields(Class targetClass)
           
static Object getFieldValue(OgnlContext context, Object target, String propertyName)
           
static Object getFieldValue(OgnlContext context, Object target, String propertyName, boolean checkAccessAndExistence)
           
static Method getGetMethod(OgnlContext context, Class targetClass, String propertyName)
           
static Object getIndexedProperty(OgnlContext context, Object source, String name, Object index)
           
static int getIndexedPropertyType(OgnlContext context, Class sourceClass, String name)
          Determines the index property type, if any.
static MethodAccessor getMethodAccessor(Class cls)
           
static Map getMethods(Class targetClass, boolean staticMethods)
           
static List getMethods(Class targetClass, String name, boolean staticMethods)
           
static Object getMethodValue(OgnlContext context, Object target, String propertyName)
           
static Object getMethodValue(OgnlContext context, Object target, String propertyName, boolean checkAccessAndExistence)
          If the checkAccessAndExistence flag is true this method will check to see if the method exists and if it is accessible according to the context's MemberAccess.
static String getModifierString(int modifiers)
           
static NullHandler getNullHandler(Class cls)
           
static ObjectArrayPool getObjectArrayPool()
           
static String getPackageName(Object o)
          Returns the package name of the object's class.
static Class[] getParameterTypes(Constructor c)
          Returns the parameter types of the given method.
static Class[] getParameterTypes(Method m)
          Returns the parameter types of the given method.
static Permission getPermission(Method method)
          Permission will be named "invoke..".
static String getPointerString(int num)
          Returns a "pointer" string in the usual format for these things - 0x.
static String getPointerString(Object o)
          Returns a "pointer" string in the usual format for these things - 0x for the object given.
static Object getPrimitiveDefaultValue(Class forClass)
           
static Object getProperty(OgnlContext context, Object source, Object name)
           
static PropertyAccessor getPropertyAccessor(Class cls)
           
static PropertyDescriptor getPropertyDescriptor(Class targetClass, String propertyName)
          This method returns a PropertyDescriptor for the given class and property name using a Map lookup (using getPropertyDescriptorsMap()).
static PropertyDescriptor getPropertyDescriptorFromArray(Class targetClass, String name)
          Gets the property descriptor with the given name for the target class given.
static Map getPropertyDescriptors(Class targetClass)
          This method returns the property descriptors for the given class as a Map
static PropertyDescriptor[] getPropertyDescriptorsArray(Class targetClass)
           
static SecurityManager getSecurityManager()
          Gets the SecurityManager that OGNL uses to determine permissions for invoking methods.
static Method getSetMethod(OgnlContext context, Class targetClass, String propertyName)
           
static Object getStaticField(OgnlContext context, String className, String fieldName)
           
static Class getTargetClass(Object o)
          Gets the "target" class of an object for looking up accessors that are registered on the target.
static String getUniqueDescriptor(Object object)
          Returns a unique descriptor string that includes the object's class' base name and a unique integer identifier.
static String getUniqueDescriptor(Object object, boolean fullyQualified)
          Returns a unique descriptor string that includes the object's class and a unique integer identifier.
static boolean hasField(OgnlContext context, Object target, Class inClass, String propertyName)
           
static boolean hasGetMethod(OgnlContext context, Object target, Class targetClass, String propertyName)
           
static boolean hasGetProperty(OgnlContext context, Object target, Object oname)
           
static boolean hasSetMethod(OgnlContext context, Object target, Class targetClass, String propertyName)
           
static boolean hasSetProperty(OgnlContext context, Object target, Object oname)
           
static Object invokeMethod(Object target, Method method, Object[] argsArray)
           
static boolean isFieldAccessible(OgnlContext context, Object target, Class inClass, String propertyName)
           
static boolean isFieldAccessible(OgnlContext context, Object target, Field field, String propertyName)
           
static boolean isInstance(OgnlContext context, Object value, String className)
           
static boolean isMethodAccessible(OgnlContext context, Object target, Method method, String propertyName)
           
static boolean isMoreSpecific(Class[] classes1, Class[] classes2)
          Tells whether the first array of classes is more specific than the second.
static boolean isTypeCompatible(Object object, Class c)
          Tells whether the given object is compatible with the given class ---that is, whether the given object can be passed as an argument to a method or constructor whose parameter type is the given class.
static void setElementsAccessor(Class cls, ElementsAccessor accessor)
           
static boolean setFieldValue(OgnlContext context, Object target, String propertyName, Object value)
           
static void setIndexedProperty(OgnlContext context, Object source, String name, Object index, Object value)
           
static void setMethodAccessor(Class cls, MethodAccessor accessor)
           
static boolean setMethodValue(OgnlContext context, Object target, String propertyName, Object value)
           
static boolean setMethodValue(OgnlContext context, Object target, String propertyName, Object value, boolean checkAccessAndExistence)
           
static void setNullHandler(Class cls, NullHandler handler)
           
static void setProperty(OgnlContext context, Object target, Object name, Object value)
           
static void setPropertyAccessor(Class cls, PropertyAccessor accessor)
           
static void setSecurityManager(SecurityManager value)
          Sets the SecurityManager that OGNL uses to determine permissions for invoking methods.
static Object[] toArray(List list)
          Utility to convert a List into an Object[] array.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NotFound

public static final Object NotFound

NotFoundList

public static final List NotFoundList

NotFoundMap

public static final Map NotFoundMap

NoArguments

public static final Object[] NoArguments

NoArgumentTypes

public static final Class[] NoArgumentTypes

NoConversionPossible

public static final Object NoConversionPossible
Token returned by TypeConverter for no conversion possible


INDEXED_PROPERTY_NONE

public static int INDEXED_PROPERTY_NONE
Not an indexed property


INDEXED_PROPERTY_INT

public static int INDEXED_PROPERTY_INT
JavaBeans IndexedProperty


INDEXED_PROPERTY_OBJECT

public static int INDEXED_PROPERTY_OBJECT
OGNL ObjectIndexedProperty


NULL_STRING

public static final String NULL_STRING
Constructor Detail

OgnlRuntime

public OgnlRuntime()
Method Detail

getTargetClass

public static Class getTargetClass(Object o)
Gets the "target" class of an object for looking up accessors that are registered on the target. If the object is a Class object this will return the Class itself, else it will return object's getClass() result.


getBaseName

public static String getBaseName(Object o)
Returns the base name (the class name without the package name prepended) of the object given.


getClassBaseName

public static String getClassBaseName(Class c)
Returns the base name (the class name without the package name prepended) of the class given.


getClassName

public static String getClassName(Object o,
                                  boolean fullyQualified)

getClassName

public static String getClassName(Class c,
                                  boolean fullyQualified)

getPackageName

public static String getPackageName(Object o)
Returns the package name of the object's class.


getClassPackageName

public static String getClassPackageName(Class c)
Returns the package name of the class given.


getPointerString

public static String getPointerString(int num)
Returns a "pointer" string in the usual format for these things - 0x.


getPointerString

public static String getPointerString(Object o)
Returns a "pointer" string in the usual format for these things - 0x for the object given. This will always return a unique value for each object.


getUniqueDescriptor

public static String getUniqueDescriptor(Object object,
                                         boolean fullyQualified)
Returns a unique descriptor string that includes the object's class and a unique integer identifier. If fullyQualified is true then the class name will be fully qualified to include the package name, else it will be just the class' base name.


getUniqueDescriptor

public static String getUniqueDescriptor(Object object)
Returns a unique descriptor string that includes the object's class' base name and a unique integer identifier.


toArray

public static Object[] toArray(List list)
Utility to convert a List into an Object[] array. If the list is zero elements this will return a constant array; toArray() on List always returns a new object and this is wasteful for our purposes.


getParameterTypes

public static Class[] getParameterTypes(Method m)
Returns the parameter types of the given method.


getParameterTypes

public static Class[] getParameterTypes(Constructor c)
Returns the parameter types of the given method.


getSecurityManager

public static SecurityManager getSecurityManager()
Gets the SecurityManager that OGNL uses to determine permissions for invoking methods.

Returns:
SecurityManager for OGNL

setSecurityManager

public static void setSecurityManager(SecurityManager value)
Sets the SecurityManager that OGNL uses to determine permissions for invoking methods.

Parameters:
value - SecurityManager to set

getPermission

public static Permission getPermission(Method method)
Permission will be named "invoke..".


invokeMethod

public static Object invokeMethod(Object target,
                                  Method method,
                                  Object[] argsArray)
                           throws InvocationTargetException,
                                  IllegalAccessException
Throws:
InvocationTargetException
IllegalAccessException

getArgClass

public static final Class getArgClass(Object arg)
Gets the class for a method argument that is appropriate for looking up methods by reflection, by looking for the standard primitive wrapper classes and exchanging for them their underlying primitive class objects. Other classes are passed through unchanged.

Parameters:
arg - an object that is being passed to a method
Returns:
the class to use to look up the method

isTypeCompatible

public static final boolean isTypeCompatible(Object object,
                                             Class c)
Tells whether the given object is compatible with the given class ---that is, whether the given object can be passed as an argument to a method or constructor whose parameter type is the given class. If object is null this will return true because null is compatible with any type.


areArgsCompatible

public static final boolean areArgsCompatible(Object[] args,
                                              Class[] classes)
Tells whether the given array of objects is compatible with the given array of classes---that is, whether the given array of objects can be passed as arguments to a method or constructor whose parameter types are the given array of classes.


isMoreSpecific

public static final boolean isMoreSpecific(Class[] classes1,
                                           Class[] classes2)
Tells whether the first array of classes is more specific than the second. Assumes that the two arrays are of the same length.


getModifierString

public static final String getModifierString(int modifiers)

classForName

public static final Class classForName(OgnlContext context,
                                       String className)
                                throws ClassNotFoundException
Throws:
ClassNotFoundException

isInstance

public static final boolean isInstance(OgnlContext context,
                                       Object value,
                                       String className)
                                throws OgnlException
Throws:
OgnlException

getPrimitiveDefaultValue

public static Object getPrimitiveDefaultValue(Class forClass)

getConvertedType

public static Object getConvertedType(OgnlContext context,
                                      Object target,
                                      Member member,
                                      String propertyName,
                                      Object value,
                                      Class type)

getConvertedTypes

public static boolean getConvertedTypes(OgnlContext context,
                                        Object target,
                                        Member member,
                                        String propertyName,
                                        Class[] parameterTypes,
                                        Object[] args,
                                        Object[] newArgs)

getConvertedMethodAndArgs

public static Method getConvertedMethodAndArgs(OgnlContext context,
                                               Object target,
                                               String propertyName,
                                               List methods,
                                               Object[] args,
                                               Object[] newArgs)

getConvertedConstructorAndArgs

public static Constructor getConvertedConstructorAndArgs(OgnlContext context,
                                                         Object target,
                                                         List constructors,
                                                         Object[] args,
                                                         Object[] newArgs)

getAppropriateMethod

public static Method getAppropriateMethod(OgnlContext context,
                                          Object source,
                                          Object target,
                                          String methodName,
                                          String propertyName,
                                          List methods,
                                          Object[] args,
                                          Object[] actualArgs)
Gets the appropriate method to be called for the given target, method name and arguments. If successful this method will return the Method within the target that can be called and the converted arguments in actualArgs. If unsuccessful this method will return null and the actualArgs will be empty.


callAppropriateMethod

public static Object callAppropriateMethod(OgnlContext context,
                                           Object source,
                                           Object target,
                                           String methodName,
                                           String propertyName,
                                           List methods,
                                           Object[] args)
                                    throws MethodFailedException
Throws:
MethodFailedException

callStaticMethod

public static final Object callStaticMethod(OgnlContext context,
                                            String className,
                                            String methodName,
                                            Object[] args)
                                     throws OgnlException,
                                            MethodFailedException
Throws:
OgnlException
MethodFailedException

callMethod

public static final Object callMethod(OgnlContext context,
                                      Object target,
                                      String methodName,
                                      String propertyName,
                                      Object[] args)
                               throws OgnlException,
                                      MethodFailedException
Throws:
OgnlException
MethodFailedException

callConstructor

public static final Object callConstructor(OgnlContext context,
                                           String className,
                                           Object[] args)
                                    throws OgnlException
Throws:
OgnlException

getMethodValue

public static final Object getMethodValue(OgnlContext context,
                                          Object target,
                                          String propertyName)
                                   throws OgnlException,
                                          IllegalAccessException,
                                          NoSuchMethodException,
                                          IntrospectionException
Throws:
OgnlException
IllegalAccessException
NoSuchMethodException
IntrospectionException

getMethodValue

public static final Object getMethodValue(OgnlContext context,
                                          Object target,
                                          String propertyName,
                                          boolean checkAccessAndExistence)
                                   throws OgnlException,
                                          IllegalAccessException,
                                          NoSuchMethodException,
                                          IntrospectionException
If the checkAccessAndExistence flag is true this method will check to see if the method exists and if it is accessible according to the context's MemberAccess. If neither test passes this will return NotFound.

Throws:
OgnlException
IllegalAccessException
NoSuchMethodException
IntrospectionException

setMethodValue

public static final boolean setMethodValue(OgnlContext context,
                                           Object target,
                                           String propertyName,
                                           Object value)
                                    throws OgnlException,
                                           IllegalAccessException,
                                           NoSuchMethodException,
                                           MethodFailedException,
                                           IntrospectionException
Throws:
OgnlException
IllegalAccessException
NoSuchMethodException
MethodFailedException
IntrospectionException

setMethodValue

public static final boolean setMethodValue(OgnlContext context,
                                           Object target,
                                           String propertyName,
                                           Object value,
                                           boolean checkAccessAndExistence)
                                    throws OgnlException,
                                           IllegalAccessException,
                                           NoSuchMethodException,
                                           MethodFailedException,
                                           IntrospectionException
Throws:
OgnlException
IllegalAccessException
NoSuchMethodException
MethodFailedException
IntrospectionException

getConstructors

public static final List getConstructors(Class targetClass)

getMethods

public static final Map getMethods(Class targetClass,
                                   boolean staticMethods)

getMethods

public static final List getMethods(Class targetClass,
                                    String name,
                                    boolean staticMethods)

getFields

public static final Map getFields(Class targetClass)

getField

public static final Field getField(Class inClass,
                                   String name)

getFieldValue

public static final Object getFieldValue(OgnlContext context,
                                         Object target,
                                         String propertyName)
                                  throws NoSuchFieldException
Throws:
NoSuchFieldException

getFieldValue

public static final Object getFieldValue(OgnlContext context,
                                         Object target,
                                         String propertyName,
                                         boolean checkAccessAndExistence)
                                  throws NoSuchFieldException
Throws:
NoSuchFieldException

setFieldValue

public static final boolean setFieldValue(OgnlContext context,
                                          Object target,
                                          String propertyName,
                                          Object value)
                                   throws OgnlException
Throws:
OgnlException

isFieldAccessible

public static final boolean isFieldAccessible(OgnlContext context,
                                              Object target,
                                              Class inClass,
                                              String propertyName)

isFieldAccessible

public static final boolean isFieldAccessible(OgnlContext context,
                                              Object target,
                                              Field field,
                                              String propertyName)

hasField

public static final boolean hasField(OgnlContext context,
                                     Object target,
                                     Class inClass,
                                     String propertyName)

getStaticField

public static final Object getStaticField(OgnlContext context,
                                          String className,
                                          String fieldName)
                                   throws OgnlException
Throws:
OgnlException

getDeclaredMethods

public static final List getDeclaredMethods(Class targetClass,
                                            String propertyName,
                                            boolean findSets)

getGetMethod

public static final Method getGetMethod(OgnlContext context,
                                        Class targetClass,
                                        String propertyName)
                                 throws IntrospectionException,
                                        OgnlException
Throws:
IntrospectionException
OgnlException

isMethodAccessible

public static final boolean isMethodAccessible(OgnlContext context,
                                               Object target,
                                               Method method,
                                               String propertyName)

hasGetMethod

public static final boolean hasGetMethod(OgnlContext context,
                                         Object target,
                                         Class targetClass,
                                         String propertyName)
                                  throws IntrospectionException,
                                         OgnlException
Throws:
IntrospectionException
OgnlException

getSetMethod

public static final Method getSetMethod(OgnlContext context,
                                        Class targetClass,
                                        String propertyName)
                                 throws IntrospectionException,
                                        OgnlException
Throws:
IntrospectionException
OgnlException

hasSetMethod

public static final boolean hasSetMethod(OgnlContext context,
                                         Object target,
                                         Class targetClass,
                                         String propertyName)
                                  throws IntrospectionException,
                                         OgnlException
Throws:
IntrospectionException
OgnlException

hasGetProperty

public static final boolean hasGetProperty(OgnlContext context,
                                           Object target,
                                           Object oname)
                                    throws IntrospectionException,
                                           OgnlException
Throws:
IntrospectionException
OgnlException

hasSetProperty

public static final boolean hasSetProperty(OgnlContext context,
                                           Object target,
                                           Object oname)
                                    throws IntrospectionException,
                                           OgnlException
Throws:
IntrospectionException
OgnlException

getPropertyDescriptors

public static final Map getPropertyDescriptors(Class targetClass)
                                        throws IntrospectionException,
                                               OgnlException
This method returns the property descriptors for the given class as a Map

Throws:
IntrospectionException
OgnlException

getPropertyDescriptor

public static final PropertyDescriptor getPropertyDescriptor(Class targetClass,
                                                             String propertyName)
                                                      throws IntrospectionException,
                                                             OgnlException
This method returns a PropertyDescriptor for the given class and property name using a Map lookup (using getPropertyDescriptorsMap()).

Throws:
IntrospectionException
OgnlException

getPropertyDescriptorsArray

public static final PropertyDescriptor[] getPropertyDescriptorsArray(Class targetClass)
                                                              throws IntrospectionException
Throws:
IntrospectionException

getPropertyDescriptorFromArray

public static final PropertyDescriptor getPropertyDescriptorFromArray(Class targetClass,
                                                                      String name)
                                                               throws IntrospectionException
Gets the property descriptor with the given name for the target class given.

Parameters:
targetClass - Class for which property descriptor is desired
name - Name of property
Returns:
PropertyDescriptor of the named property or null if the class has no property with the given name
Throws:
IntrospectionException

setMethodAccessor

public static final void setMethodAccessor(Class cls,
                                           MethodAccessor accessor)

getMethodAccessor

public static final MethodAccessor getMethodAccessor(Class cls)
                                              throws OgnlException
Throws:
OgnlException

setPropertyAccessor

public static final void setPropertyAccessor(Class cls,
                                             PropertyAccessor accessor)

getPropertyAccessor

public static final PropertyAccessor getPropertyAccessor(Class cls)
                                                  throws OgnlException
Throws:
OgnlException

getElementsAccessor

public static final ElementsAccessor getElementsAccessor(Class cls)
                                                  throws OgnlException
Throws:
OgnlException

setElementsAccessor

public static final void setElementsAccessor(Class cls,
                                             ElementsAccessor accessor)

getNullHandler

public static final NullHandler getNullHandler(Class cls)
                                        throws OgnlException
Throws:
OgnlException

setNullHandler

public static final void setNullHandler(Class cls,
                                        NullHandler handler)

getProperty

public static final Object getProperty(OgnlContext context,
                                       Object source,
                                       Object name)
                                throws OgnlException
Throws:
OgnlException

setProperty

public static final void setProperty(OgnlContext context,
                                     Object target,
                                     Object name,
                                     Object value)
                              throws OgnlException
Throws:
OgnlException

getIndexedPropertyType

public static final int getIndexedPropertyType(OgnlContext context,
                                               Class sourceClass,
                                               String name)
                                        throws OgnlException
Determines the index property type, if any. Returns INDEXED_PROPERTY_NONE if the property is not index-accessible as determined by OGNL or JavaBeans. If it is indexable then this will return whether it is a JavaBeans indexed property, conforming to the indexed property patterns (returns INDEXED_PROPERTY_INT) or if it conforms to the OGNL arbitrary object indexable (returns INDEXED_PROPERTY_OBJECT).

Throws:
OgnlException

getIndexedProperty

public static final Object getIndexedProperty(OgnlContext context,
                                              Object source,
                                              String name,
                                              Object index)
                                       throws OgnlException
Throws:
OgnlException

setIndexedProperty

public static final void setIndexedProperty(OgnlContext context,
                                            Object source,
                                            String name,
                                            Object index,
                                            Object value)
                                     throws OgnlException
Throws:
OgnlException

getEvaluationPool

public static EvaluationPool getEvaluationPool()

getObjectArrayPool

public static ObjectArrayPool getObjectArrayPool()

OGNL Project Page