Package org.apache.struts2.ognl
Class OgnlUtil
java.lang.Object
org.apache.struts2.ognl.OgnlUtil
Utility class that provides common access to the Ognl APIs for
 setting and getting properties from objects (usually Actions).
- Author:
- Jason Carreira
- 
Constructor SummaryConstructorsConstructorDescriptionOgnlUtil(ExpressionCacheFactory<String, Object> ognlExpressionCacheFactory, BeanInfoCacheFactory<Class<?>, BeanInfo> ognlBeanInfoCacheFactory, OgnlGuard ognlGuard) Construct a new OgnlUtil instance for use with the framework, with optional cache factories for OGNL Expression and BeanInfo caches.
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidapplyExpressionMaxLength(String maxLength) intCheck the size of the BeanInfo cache (current number of elements).voidProvide a mechanism to clear the BeanInfo cache.voidProvide a mechanism to clear the OGNL expression cache.static voidConvenience mechanism to clear the OGNL Runtime Cache via OgnlUtil.voidCopies the properties in the object "from" and sets them in the object "to" using specified type converter, orXWorkConverterif none is specified.voidcopy(Object from, Object to, Map<String, Object> context, Collection<String> exclusions, Collection<String> inclusions) Copies the properties in the object "from" and sets them in the object "to" using specified type converter, orXWorkConverterif none is specified.voidcopy(Object from, Object to, Map<String, Object> context, Collection<String> exclusions, Collection<String> inclusions, Class<?> editable) Copies the properties in the object "from" and sets them in the object "to" only setting properties defined in the given "editable" class (or interface) using specified type converter, orXWorkConverterif none is specified.createDefaultContext(Object root) createDefaultContext(Object root, ognl.ClassResolver resolver) intCheck the size of the expression cache (current number of elements).getBeanInfo(Class<?> clazz) Get's the java bean info for the given source.getBeanInfo(Object from) Get's the java bean info for the given source object.getBeanMap(Object source) Creates a Map with read properties for the given source object.getPropertyDescriptors(Class<?> clazz) Get's the java beans property descriptors for the given class.getPropertyDescriptors(Object source) Gets the java beans property descriptors for the given source.Looks for the real target with the specified property given a root Object which may be a CompoundRoot.protected voidsetContainer(Container container) protected voidsetDevMode(String mode) protected voidsetEnableEvalExpression(String evalExpression) protected voidsetEnableExpressionCache(String cache) voidsetProperties(Map<String, ?> properties, Object o) Sets the properties on the object using the default context, defaulting to not throwing exceptions for problems setting the properties.voidsetProperties(Map<String, ?> properties, Object o, boolean throwPropertyExceptions) Sets the properties on the object using the default context.voidSets the object's properties using the default type converter, defaulting to not throw exceptions for problems setting the properties.voidsetProperties(Map<String, ?> props, Object o, Map<String, Object> context, boolean throwPropertyExceptions) Sets the object's properties using the default type converter.voidSets the named property to the supplied value on the Object, defaults to not throwing property exceptions.voidsetProperty(String name, Object value, Object o, Map<String, Object> context, boolean throwPropertyExceptions) Sets the named property to the supplied value on the Object.voidWrapper around Ognl#setValueprotected void
- 
Constructor Details- 
OgnlUtilpublic OgnlUtil(ExpressionCacheFactory<String, Object> ognlExpressionCacheFactory, BeanInfoCacheFactory<Class<?>, BeanInfo> ognlBeanInfoCacheFactory, OgnlGuard ognlGuard) Construct a new OgnlUtil instance for use with the framework, with optional cache factories for OGNL Expression and BeanInfo caches.- Parameters:
- ognlExpressionCacheFactory- factory for Expression cache instance
- ognlBeanInfoCacheFactory- factory for BeanInfo cache instance
- ognlGuard- OGNL Guard instance
 
 
- 
- 
Method Details- 
setXWorkConverter
- 
setDevMode
- 
setEnableExpressionCache
- 
setEnableEvalExpression
- 
setContainer
- 
applyExpressionMaxLength- Parameters:
- maxLength- Injects the Struts OGNL expression maximum length.
 
- 
clearRuntimeCachepublic static void clearRuntimeCache()Convenience mechanism to clear the OGNL Runtime Cache via OgnlUtil. May be utilized by applications that generate many unique OGNL expressions over time. Note: This call affects the global OGNL cache, see (OgnlRuntime.clearCache()for details. Warning: Frequent calling if this method may negatively impact performance, but may be required to avoid memory exhaustion (resource leak) with too many OGNL expressions being cached.- Since:
- 2.5.21
 
- 
clearExpressionCachepublic void clearExpressionCache()Provide a mechanism to clear the OGNL expression cache. May be utilized by applications that generate many unique OGNL expressions over time. Note: This call affects the current OgnlUtil instance. For Struts this is often a Singleton instance so it can be "effectively global". Warning: Frequent calling if this method may negatively impact performance, but may be required to avoid memory exhaustion (resource leak) with too many OGNL expressions being cached.- Since:
- 2.5.21
 
- 
expressionCacheSizepublic int expressionCacheSize()Check the size of the expression cache (current number of elements).- Returns:
- current number of elements in the expression cache.
- Since:
- 2.5.21
 
- 
clearBeanInfoCachepublic void clearBeanInfoCache()Provide a mechanism to clear the BeanInfo cache. May be utilized by applications that request BeanInfo and/or PropertyDescriptors for many unique classes or objects over time (especially dynamic objects). Note: This call affects the current OgnlUtil instance. For Struts this is often a Singleton instance so it can be "effectively global". Warning: Frequent calling if this method may negatively impact performance, but may be required to avoid memory exhaustion (resource leak) with too many BeanInfo elements being cached.- Since:
- 2.5.21
 
- 
beanInfoCacheSizepublic int beanInfoCacheSize()Check the size of the BeanInfo cache (current number of elements).- Returns:
- current number of elements in the BeanInfo cache.
- Since:
- 2.5.21
 
- 
setPropertiesSets the object's properties using the default type converter, defaulting to not throw exceptions for problems setting the properties.- Parameters:
- props- the properties being set
- o- the object
- context- the action context
 
- 
setPropertiespublic void setProperties(Map<String, ?> props, Object o, Map<String, throws ReflectionExceptionObject> context, boolean throwPropertyExceptions) Sets the object's properties using the default type converter.- Parameters:
- props- the properties being set
- o- the object
- context- the action context
- throwPropertyExceptions- boolean which tells whether it should throw exceptions for problems setting the properties
- Throws:
- ReflectionException
 
- 
setPropertiesSets the properties on the object using the default context, defaulting to not throwing exceptions for problems setting the properties.- Parameters:
- properties- map of properties
- o- object
 
- 
setPropertiesSets the properties on the object using the default context.- Parameters:
- properties- the property map to set on the object
- o- the object to set the properties into
- throwPropertyExceptions- boolean which tells whether it should throw exceptions for problems setting the properties
 
- 
setPropertySets the named property to the supplied value on the Object, defaults to not throwing property exceptions.- Parameters:
- name- the name of the property to be set
- value- the value to set into the named property
- o- the object upon which to set the property
- context- the context which may include the TypeConverter
 
- 
setPropertypublic void setProperty(String name, Object value, Object o, Map<String, Object> context, boolean throwPropertyExceptions) Sets the named property to the supplied value on the Object.- Parameters:
- name- the name of the property to be set
- value- the value to set into the named property
- o- the object upon which to set the property
- context- the context which may include the TypeConverter
- throwPropertyExceptions- boolean which tells whether it should throw exceptions for problems setting the property
 
- 
getRealTargetpublic Object getRealTarget(String property, Map<String, Object> context, Object root) throws ognl.OgnlExceptionLooks for the real target with the specified property given a root Object which may be a CompoundRoot.- Parameters:
- property- the property
- context- context map
- root- compound root
- Returns:
- the real target or null if no object can be found with the specified property
- Throws:
- ognl.OgnlException- in case of ognl errors
 
- 
setValuepublic void setValue(String name, Map<String, Object> context, Object root, Object value) throws ognl.OgnlExceptionWrapper around Ognl#setValue- Parameters:
- name- the name
- context- context map
- root- root
- value- value
- Throws:
- ognl.OgnlException- in case of ognl errors
 
- 
getValuepublic Object getValue(String name, Map<String, Object> context, Object root) throws ognl.OgnlException- Throws:
- ognl.OgnlException
 
- 
callMethodpublic Object callMethod(String name, Map<String, Object> context, Object root) throws ognl.OgnlException- Throws:
- ognl.OgnlException
 
- 
getValuepublic Object getValue(String name, Map<String, Object> context, Object root, Class<?> resultType) throws ognl.OgnlException- Throws:
- ognl.OgnlException
 
- 
compile- Throws:
- ognl.OgnlException
 
- 
compile- Throws:
- ognl.OgnlException
 
- 
copypublic void copy(Object from, Object to, Map<String, Object> context, Collection<String> exclusions, Collection<String> inclusions) Copies the properties in the object "from" and sets them in the object "to" using specified type converter, orXWorkConverterif none is specified.- Parameters:
- from- the source object
- to- the target object
- context- the action context we're running under
- exclusions- collection of method names to excluded from copying ( can be null)
- inclusions- collection of method names to included copying (can be null) note if exclusions AND inclusions are supplied and not null nothing will get copied.
 
- 
copypublic void copy(Object from, Object to, Map<String, Object> context, Collection<String> exclusions, Collection<String> inclusions, Class<?> editable) Copies the properties in the object "from" and sets them in the object "to" only setting properties defined in the given "editable" class (or interface) using specified type converter, orXWorkConverterif none is specified.- Parameters:
- from- the source object
- to- the target object
- context- the action context we're running under
- exclusions- collection of method names to excluded from copying ( can be null)
- inclusions- collection of method names to included copying (can be null) note if exclusions AND inclusions are supplied and not null nothing will get copied.
- editable- the class (or interface) to restrict property setting to
 
- 
copyCopies the properties in the object "from" and sets them in the object "to" using specified type converter, orXWorkConverterif none is specified.- Parameters:
- from- the source object
- to- the target object
- context- the action context we're running under
 
- 
getPropertyDescriptorsGets the java beans property descriptors for the given source.- Parameters:
- source- the source object.
- Returns:
- property descriptors.
- Throws:
- IntrospectionException- is thrown if an exception occurs during introspection.
 
- 
getPropertyDescriptorsGet's the java beans property descriptors for the given class.- Parameters:
- clazz- the source object.
- Returns:
- property descriptors.
- Throws:
- IntrospectionException- is thrown if an exception occurs during introspection.
 
- 
getBeanMappublic Map<String,Object> getBeanMap(Object source) throws IntrospectionException, ognl.OgnlException Creates a Map with read properties for the given source object.If the source object does not have a read property (i.e. write-only) then the property is added to the map with the value here is no read method for property-name.- Parameters:
- source- the source object.
- Returns:
- a Map with (key = read property name, value = value of read property).
- Throws:
- IntrospectionException- is thrown if an exception occurs during introspection.
- ognl.OgnlException- is thrown by OGNL if the property value could not be retrieved
 
- 
getBeanInfoGet's the java bean info for the given source object. Calls getBeanInfo(Class c).- Parameters:
- from- the source object.
- Returns:
- java bean info.
- Throws:
- IntrospectionException- is thrown if an exception occurs during introspection.
 
- 
getBeanInfoGet's the java bean info for the given source.- Parameters:
- clazz- the source class.
- Returns:
- java bean info.
- Throws:
- IntrospectionException- is thrown if an exception occurs during introspection.
 
- 
createDefaultContext
- 
createDefaultContext
 
-