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 Summary
ConstructorDescriptionOgnlUtil
(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 Summary
Modifier and TypeMethodDescriptionprotected void
applyExpressionMaxLength
(String maxLength) int
Check the size of the BeanInfo cache (current number of elements).void
Provide a mechanism to clear the BeanInfo cache.void
Provide a mechanism to clear the OGNL expression cache.static void
Convenience mechanism to clear the OGNL Runtime Cache via OgnlUtil.void
Copies the properties in the object "from" and sets them in the object "to" using specified type converter, orXWorkConverter
if none is specified.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, orXWorkConverter
if none is specified.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, orXWorkConverter
if none is specified.createDefaultContext
(Object root) createDefaultContext
(Object root, ognl.ClassResolver resolver) int
Check 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 void
setContainer
(Container container) protected void
setDevMode
(String mode) protected void
setEnableEvalExpression
(String evalExpression) protected void
setEnableExpressionCache
(String cache) void
setProperties
(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.void
setProperties
(Map<String, ?> properties, Object o, boolean throwPropertyExceptions) Sets the properties on the object using the default context.void
Sets the object's properties using the default type converter, defaulting to not throw exceptions for problems setting the properties.void
setProperties
(Map<String, ?> props, Object o, Map<String, Object> context, boolean throwPropertyExceptions) Sets the object's properties using the default type converter.void
Sets the named property to the supplied value on the Object, defaults to not throwing property exceptions.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.void
Wrapper around Ognl#setValueprotected void
-
Constructor Details
-
OgnlUtil
public 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 instanceognlBeanInfoCacheFactory
- factory for BeanInfo cache instanceognlGuard
- OGNL Guard instance
-
-
Method Details
-
setXWorkConverter
-
setDevMode
-
setEnableExpressionCache
-
setEnableEvalExpression
-
setContainer
-
applyExpressionMaxLength
- Parameters:
maxLength
- Injects the Struts OGNL expression maximum length.
-
clearRuntimeCache
public 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
-
clearExpressionCache
public 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
-
expressionCacheSize
public 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
-
clearBeanInfoCache
public 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
-
beanInfoCacheSize
public 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
-
setProperties
Sets the object's properties using the default type converter, defaulting to not throw exceptions for problems setting the properties.- Parameters:
props
- the properties being seto
- the objectcontext
- the action context
-
setProperties
public 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 seto
- the objectcontext
- the action contextthrowPropertyExceptions
- boolean which tells whether it should throw exceptions for problems setting the properties- Throws:
ReflectionException
-
setProperties
Sets the properties on the object using the default context, defaulting to not throwing exceptions for problems setting the properties.- Parameters:
properties
- map of propertieso
- object
-
setProperties
Sets the properties on the object using the default context.- Parameters:
properties
- the property map to set on the objecto
- the object to set the properties intothrowPropertyExceptions
- boolean which tells whether it should throw exceptions for problems setting the properties
-
setProperty
Sets 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 setvalue
- the value to set into the named propertyo
- the object upon which to set the propertycontext
- the context which may include the TypeConverter
-
setProperty
public 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 setvalue
- the value to set into the named propertyo
- the object upon which to set the propertycontext
- the context which may include the TypeConverterthrowPropertyExceptions
- boolean which tells whether it should throw exceptions for problems setting the property
-
getRealTarget
public 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 propertycontext
- context maproot
- 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
-
setValue
public void setValue(String name, Map<String, Object> context, Object root, Object value) throws ognl.OgnlExceptionWrapper around Ognl#setValue- Parameters:
name
- the namecontext
- context maproot
- rootvalue
- value- Throws:
ognl.OgnlException
- in case of ognl errors
-
getValue
public Object getValue(String name, Map<String, Object> context, Object root) throws ognl.OgnlException- Throws:
ognl.OgnlException
-
callMethod
public Object callMethod(String name, Map<String, Object> context, Object root) throws ognl.OgnlException- Throws:
ognl.OgnlException
-
getValue
public 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
-
copy
public 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, orXWorkConverter
if none is specified.- Parameters:
from
- the source objectto
- the target objectcontext
- the action context we're running underexclusions
- 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.
-
copy
public 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, orXWorkConverter
if none is specified.- Parameters:
from
- the source objectto
- the target objectcontext
- the action context we're running underexclusions
- 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
-
copy
Copies the properties in the object "from" and sets them in the object "to" using specified type converter, orXWorkConverter
if none is specified.- Parameters:
from
- the source objectto
- the target objectcontext
- the action context we're running under
-
getPropertyDescriptors
Gets 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.
-
getPropertyDescriptors
Get'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.
-
getBeanMap
public 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
-
getBeanInfo
Get'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.
-
getBeanInfo
Get'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
-