com.opensymphony.xwork2.ognl

## Class OgnlValueStack

- java.lang.Object
- - com.opensymphony.xwork2.ognl.OgnlValueStack

- All Implemented Interfaces:
    ClearableValueStack, MemberAccessValueStack, Serializable, 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

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.opensymphony.xwork2.util.ValueStack

      `ValueStack.LegacyAdapter`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Map<String,Object>` | `context`
    `protected Class` | `defaultType`
    `protected OgnlUtil` | `ognlUtil`
    `protected Map<Object,Object>` | `overrides`
    `protected CompoundRoot` | `root`
    `protected SecurityMemberAccess` | `securityMemberAccess`
    `static 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 and Description
    --- | ---
    `protected` | `OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, CompoundRootAccessor accessor, boolean allowStaticFieldAccess)` Deprecated. since 6.4.0, use `OgnlValueStack(ValueStack, XWorkConverter, RootAccessor, SecurityMemberAccess)` instead.
    `protected` | `OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, CompoundRootAccessor accessor, TextProvider prov, boolean allowStaticFieldAccess)` Deprecated. since 6.4.0, use `OgnlValueStack(ValueStack, XWorkConverter, RootAccessor, TextProvider, SecurityMemberAccess)` instead.
    `protected` | `OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, RootAccessor accessor, SecurityMemberAccess securityMemberAccess)`
    `protected` | `OgnlValueStack(ValueStack vs, XWorkConverter xworkConverter, RootAccessor accessor, TextProvider prov, SecurityMemberAccess securityMemberAccess)`
    `protected` | `OgnlValueStack(XWorkConverter xworkConverter, CompoundRootAccessor accessor, TextProvider prov, boolean allowStaticFieldAccess)` Deprecated. since 6.4.0, use `OgnlValueStack(XWorkConverter, RootAccessor, TextProvider, SecurityMemberAccess)` instead.
    `protected` | `OgnlValueStack(XWorkConverter xworkConverter, RootAccessor accessor, TextProvider prov, SecurityMemberAccess securityMemberAccess)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and 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, CompoundRootAccessor accessor, CompoundRoot compoundRoot, boolean allowStaticFieldAccess)` Deprecated. since 6.4.0, use `setRoot(XWorkConverter, RootAccessor, CompoundRoot, SecurityMemberAccess)` instead.
    `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 void` | `setXWorkConverter(XWorkConverter converter)` Deprecated. since 6.4.0, no replacement.
    `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`

    - ### Methods inherited from interface com.opensymphony.xwork2.util.ValueStack

      `adapt`

- - ### Field Detail

    - #### 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 Detail

    - #### 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

    - #### OgnlValueStack

          @Deprecated
          protected OgnlValueStack(ValueStack vs,
                                               XWorkConverter xworkConverter,
                                               CompoundRootAccessor accessor,
                                               TextProvider prov,
                                               boolean allowStaticFieldAccess)

      Deprecated. since 6.4.0, use `OgnlValueStack(ValueStack, XWorkConverter, RootAccessor, TextProvider, SecurityMemberAccess)` instead.

    - #### OgnlValueStack

          @Deprecated
          protected OgnlValueStack(XWorkConverter xworkConverter,
                                               CompoundRootAccessor accessor,
                                               TextProvider prov,
                                               boolean allowStaticFieldAccess)

      Deprecated. since 6.4.0, use `OgnlValueStack(XWorkConverter, RootAccessor, TextProvider, SecurityMemberAccess)` instead.

    - #### OgnlValueStack

          @Deprecated
          protected OgnlValueStack(ValueStack vs,
                                               XWorkConverter xworkConverter,
                                               CompoundRootAccessor accessor,
                                               boolean allowStaticFieldAccess)

      Deprecated. since 6.4.0, use `OgnlValueStack(ValueStack, XWorkConverter, RootAccessor, SecurityMemberAccess)` instead.

  - ### Method Detail

    - #### setOgnlUtil

          protected void setOgnlUtil(OgnlUtil ognlUtil)

    - #### setRoot

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

      Since:
        6.4.0

    - #### setRoot

          @Deprecated
          protected void setRoot(XWorkConverter xworkConverter,
                                             CompoundRootAccessor accessor,
                                             CompoundRoot compoundRoot,
                                             boolean allowStaticFieldAccess)

      Deprecated. since 6.4.0, use `setRoot(XWorkConverter, RootAccessor, CompoundRoot, SecurityMemberAccess)` instead.

    - #### 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`

    - #### setXWorkConverter

          @Deprecated
          protected void setXWorkConverter(XWorkConverter converter)

      Deprecated. since 6.4.0, no replacement.

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.