Package org.apache.struts2.ognl

# Class OgnlValueStack

java.lang.Object
org.apache.struts2.ognl.OgnlValueStack

All Implemented Interfaces:
  `Serializable`, `ClearableValueStack`, `MemberAccessValueStack`, `ValueStack`

public class OgnlValueStack extends Object implements Serializable, ValueStack, ClearableValueStack, MemberAccessValueStack
Ognl implementation of a value stack that allows for dynamic Ognl expressions to be evaluated against it. When evaluating an expression, the stack will be searched down the stack, from the latest objects pushed in to the earliest, looking for a bean with a getter or setter for the given property or a method of the given name (depending on the expression being evaluated).

Version:
  $Date$ $Id$
Author:
  Patrick Lightbody, tm_jee
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Map<String,Object>`
  `context`
  `protected Class`
  `defaultType`
  `protected OgnlUtil`
  `ognlUtil`
  `protected Map<Object,Object>`
  `overrides`
  `protected CompoundRoot`
  `root`
  `protected SecurityMemberAccess`
  `securityMemberAccess`
  `static final String`
  `THROW_EXCEPTION_ON_FAILURE`

  ### Fields inherited from interface org.apache.struts2.util.ValueStack

  `REPORT_ERRORS_ON_NO_PROP, VALUE_STACK`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `OgnlValueStack(XWorkConverter xworkConverter, RootAccessor accessor, TextProvider prov, SecurityMemberAccess securityMemberAccess)`
  `protected`
  `OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, RootAccessor accessor, SecurityMemberAccess securityMemberAccess)`
  `protected`
  `OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, RootAccessor accessor, TextProvider prov, SecurityMemberAccess securityMemberAccess)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clearContextValues()`
  Remove all values from the context
  `protected Object`
  `findInContext(String name)`
  `String`
  `findString(String expr)`
  `String`
  `findString(String expr, boolean throwExceptionOnFailure)`
  `Object`
  `findValue(String expr)`
  Find a value by evaluating the given expression against the stack in the default search order.
  `Object`
  `findValue(String expr, boolean throwExceptionOnFailure)`
  `Object`
  `findValue(String expr, Class asType)`
  Find a value by evaluating the given expression against the stack in the default search order.
  `Object`
  `findValue(String expr, Class asType, boolean throwExceptionOnFailure)`
  `ActionContext`
  `getActionContext()`
  `Map<String,Object>`
  `getContext()`
  Gets the context for this value stack.
  `Map<Object,Object>`
  `getExprOverrides()`
  Gets the override map if anyone exists.
  `CompoundRoot`
  `getRoot()`
  Get the CompoundRoot which holds the objects pushed onto the stack
  `protected Object`
  `handleOgnlException(String expr, boolean throwExceptionOnFailure, ognl.OgnlException e)`
  `protected void`
  `handleOgnlException(String expr, Object value, boolean throwExceptionOnFailure, ognl.OgnlException e)`
  `protected Object`
  `handleOtherException(String expr, boolean throwExceptionOnFailure, Exception e)`
  `protected void`
  `handleRuntimeException(String expr, Object value, boolean throwExceptionOnFailure, RuntimeException re)`
  `Object`
  `peek()`
  Get the object on the top of the stack without changing the stack.
  `Object`
  `pop()`
  Get the object on the top of the stack and remove it from the stack.
  `void`
  `push(Object o)`
  Put this object onto the top of the stack
  `void`
  `set(String key, Object o)`
  Sets an object on the stack with the given key so it is retrievable by `ValueStack.findValue(String)`, `ValueStack.findValue(String, Class)`
  `void`
  `setDefaultType(Class defaultType)`
  Sets the default type to convert to if no type is provided when getting a value.
  `protected void`
  `setDevMode(String mode)`
  `void`
  `setExprOverrides(Map<Object,Object> overrides)`
  Set a override map containing `key -> values` that takes precedent when doing find operations on the ValueStack.
  `protected void`
  `setLogMissingProperties(String logMissingProperties)`
  `protected void`
  `setOgnlUtil(OgnlUtil ognlUtil)`
  `void`
  `setParameter(String expr, Object value)`
  Attempts to set a property on a bean in the stack with the given expression using the default search order.
  `protected void`
  `setRoot(XWorkConverter xworkConverter, RootAccessor accessor, CompoundRoot compoundRoot, SecurityMemberAccess securityMemberAccess)`
  `protected void`
  `setShouldFallbackToContext(String shouldFallbackToContext)`
  `protected void`
  `setupExceptionOnFailure(boolean throwExceptionOnFailure)`
  `void`
  `setValue(String expr, Object value)`
  Attempts to set a property on a bean in the stack with the given expression using the default search order.
  `void`
  `setValue(String expr, Object value, boolean throwExceptionOnFailure)`
  Attempts to set a property on a bean in the stack with the given expression using the default search order.
  `protected boolean`
  `shouldLogMissingPropertyWarning(ognl.OgnlException e)`
  `int`
  `size()`
  Get the number of objects in the stack
  `void`
  `useAcceptProperties(Set<Pattern> acceptedProperties)`
  `void`
  `useExcludeProperties(Set<Pattern> excludeProperties)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### THROW_EXCEPTION_ON_FAILURE

    public static final String THROW_EXCEPTION_ON_FAILURE

  - ### root

    protected CompoundRoot root

  - ### context

    protected transient Map<String,Object> context

  - ### defaultType

    protected Class defaultType

  - ### overrides

    protected Map<Object,Object> overrides

  - ### ognlUtil

    protected transient OgnlUtil ognlUtil

  - ### securityMemberAccess

    protected transient SecurityMemberAccess securityMemberAccess

- ## Constructor Details

  - ### OgnlValueStack

    protected OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, RootAccessor accessor, TextProvider prov, SecurityMemberAccess securityMemberAccess)
    Since:
      6.4.0

  - ### OgnlValueStack

    protected OgnlValueStack(XWorkConverter xworkConverter, RootAccessor accessor, TextProvider prov, SecurityMemberAccess securityMemberAccess)
    Since:
      6.4.0

  - ### OgnlValueStack

    protected OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, RootAccessor accessor, SecurityMemberAccess securityMemberAccess)
    Since:
      6.4.0

- ## Method Details

  - ### setOgnlUtil

    protected void setOgnlUtil(OgnlUtil ognlUtil)

  - ### setRoot

    protected void setRoot(XWorkConverter xworkConverter, RootAccessor accessor, CompoundRoot compoundRoot, SecurityMemberAccess securityMemberAccess)
    Since:
      6.4.0

  - ### setDevMode

    protected void setDevMode(String mode)

  - ### setLogMissingProperties

    protected void setLogMissingProperties(String logMissingProperties)

  - ### setShouldFallbackToContext

    protected void setShouldFallbackToContext(String shouldFallbackToContext)

  - ### getContext

    public Map<String,Object> getContext()
    Description copied from interface: `ValueStack`
    Gets the context for this value stack. The context holds all the information in the value stack and it's surroundings.
    Specified by:
      `getContext` in interface `ValueStack`
    Returns:
      the context.
    See Also:
      - `ValueStack.getContext()`

  - ### getActionContext

    public ActionContext getActionContext()
    Specified by:
      `getActionContext` in interface `ValueStack`

  - ### setDefaultType

    public void setDefaultType(Class defaultType)
    Description copied from interface: `ValueStack`
    Sets the default type to convert to if no type is provided when getting a value.
    Specified by:
      `setDefaultType` in interface `ValueStack`
    Parameters:
      `defaultType` - the new default type
    See Also:
      - `ValueStack.setDefaultType(java.lang.Class)`

  - ### setExprOverrides

    public void setExprOverrides(Map<Object,Object> overrides)
    Description copied from interface: `ValueStack`
    Set a override map containing `key -> values` that takes precedent when doing find operations on the ValueStack.

    See the unit test for ValueStackTest for examples.

    Specified by:
      `setExprOverrides` in interface `ValueStack`
    Parameters:
      `overrides` - overrides map.
    See Also:
      - `ValueStack.setExprOverrides(java.util.Map)`

  - ### getExprOverrides

    public Map<Object,Object> getExprOverrides()
    Description copied from interface: `ValueStack`
    Gets the override map if anyone exists.
    Specified by:
      `getExprOverrides` in interface `ValueStack`
    Returns:
      the override map, `null` if not set.
    See Also:
      - `ValueStack.getExprOverrides()`

  - ### getRoot

    public CompoundRoot getRoot()
    Description copied from interface: `ValueStack`
    Get the CompoundRoot which holds the objects pushed onto the stack
    Specified by:
      `getRoot` in interface `ValueStack`
    Returns:
      the root
    See Also:
      - `ValueStack.getRoot()`

  - ### setParameter

    public void setParameter(String expr, Object value)
    Description copied from interface: `ValueStack`
    Attempts to set a property on a bean in the stack with the given expression using the default search order. N.B.: unlike #setValue(String,Object) it doesn't allow eval expression.
    Specified by:
      `setParameter` in interface `ValueStack`
    Parameters:
      `expr` - the expression defining the path to the property to be set.
      `value` - the value to be set into the named property
    See Also:
      - `ValueStack.setParameter(String, Object)`

  - ### setValue

    public void setValue(String expr, Object value)
    Description copied from interface: `ValueStack`
    Attempts to set a property on a bean in the stack with the given expression using the default search order.
    Specified by:
      `setValue` in interface `ValueStack`
    Parameters:
      `expr` - the expression defining the path to the property to be set.
      `value` - the value to be set into the named property
    See Also:
      - `ValueStack.setValue(java.lang.String, java.lang.Object)`

  - ### setValue

    public void setValue(String expr, Object value, boolean throwExceptionOnFailure)
    Description copied from interface: `ValueStack`
    Attempts to set a property on a bean in the stack with the given expression using the default search order.
    Specified by:
      `setValue` in interface `ValueStack`
    Parameters:
      `expr` - the expression defining the path to the property to be set.
      `value` - the value to be set into the named property
      `throwExceptionOnFailure` - a flag to tell whether an exception should be thrown if there is no property with the given name.
    See Also:
      - `ValueStack.setValue(java.lang.String, java.lang.Object, boolean)`

  - ### handleRuntimeException

    protected void handleRuntimeException(String expr, Object value, boolean throwExceptionOnFailure, RuntimeException re)

  - ### handleOgnlException

    protected void handleOgnlException(String expr, Object value, boolean throwExceptionOnFailure, ognl.OgnlException e)

  - ### findString

    public String findString(String expr)
    Specified by:
      `findString` in interface `ValueStack`
    See Also:
      - `ValueStack.findString(java.lang.String)`

  - ### findString

    public String findString(String expr, boolean throwExceptionOnFailure)
    Specified by:
      `findString` in interface `ValueStack`

  - ### findValue

    public Object findValue(String expr, boolean throwExceptionOnFailure)
    Specified by:
      `findValue` in interface `ValueStack`
    See Also:
      - `ValueStack.findValue(java.lang.String)`

  - ### setupExceptionOnFailure

    protected void setupExceptionOnFailure(boolean throwExceptionOnFailure)

  - ### handleOtherException

    protected Object handleOtherException(String expr, boolean throwExceptionOnFailure, Exception e)

  - ### findValue

    public Object findValue(String expr)
    Description copied from interface: `ValueStack`
    Find a value by evaluating the given expression against the stack in the default search order.
    Specified by:
      `findValue` in interface `ValueStack`
    Parameters:
      `expr` - the expression giving the path of properties to navigate to find the property value to return
    Returns:
      the result of evaluating the expression

  - ### findValue

    public Object findValue(String expr, Class asType, boolean throwExceptionOnFailure)
    Specified by:
      `findValue` in interface `ValueStack`
    See Also:
      - `ValueStack.findValue(java.lang.String, java.lang.Class)`

  - ### handleOgnlException

    protected Object handleOgnlException(String expr, boolean throwExceptionOnFailure, ognl.OgnlException e)

  - ### shouldLogMissingPropertyWarning

    protected boolean shouldLogMissingPropertyWarning(ognl.OgnlException e)

  - ### findInContext

    protected Object findInContext(String name)

  - ### findValue

    public Object findValue(String expr, Class asType)
    Description copied from interface: `ValueStack`
    Find a value by evaluating the given expression against the stack in the default search order.
    Specified by:
      `findValue` in interface `ValueStack`
    Parameters:
      `expr` - the expression giving the path of properties to navigate to find the property value to return
      `asType` - the type to convert the return value to
    Returns:
      the result of evaluating the expression

  - ### peek

    public Object peek()
    Description copied from interface: `ValueStack`
    Get the object on the top of the stack without changing the stack.
    Specified by:
      `peek` in interface `ValueStack`
    Returns:
      the object on the top.
    See Also:
      - `ValueStack.peek()`

  - ### pop

    public Object pop()
    Description copied from interface: `ValueStack`
    Get the object on the top of the stack and remove it from the stack.
    Specified by:
      `pop` in interface `ValueStack`
    Returns:
      the object on the top of the stack
    See Also:
      - `ValueStack.pop()`

  - ### push

    public void push(Object o)
    Description copied from interface: `ValueStack`
    Put this object onto the top of the stack
    Specified by:
      `push` in interface `ValueStack`
    Parameters:
      `o` - the object to be pushed onto the stack
    See Also:
      - `ValueStack.push(java.lang.Object)`

  - ### set

    public void set(String key, Object o)
    Description copied from interface: `ValueStack`
    Sets an object on the stack with the given key so it is retrievable by `ValueStack.findValue(String)`, `ValueStack.findValue(String, Class)`
    Specified by:
      `set` in interface `ValueStack`
    Parameters:
      `key` - the key
      `o` - the object
    See Also:
      - `ValueStack.set(java.lang.String, java.lang.Object)`

  - ### size

    public int size()
    Description copied from interface: `ValueStack`
    Get the number of objects in the stack
    Specified by:
      `size` in interface `ValueStack`
    Returns:
      the number of objects in the stack
    See Also:
      - `ValueStack.size()`

  - ### clearContextValues

    public void clearContextValues()
    Description copied from interface: `ClearableValueStack`
    Remove all values from the context
    Specified by:
      `clearContextValues` in interface `ClearableValueStack`

  - ### useAcceptProperties

    public void useAcceptProperties(Set<Pattern> acceptedProperties)
    Specified by:
      `useAcceptProperties` in interface `MemberAccessValueStack`

  - ### useExcludeProperties

    public void useExcludeProperties(Set<Pattern> excludeProperties)
    Specified by:
      `useExcludeProperties` in interface `MemberAccessValueStack`