Class DefaultResolver

java.lang.Object
org.apache.commons.beanutils2.expression.DefaultResolver
All Implemented Interfaces:
Resolver

public class DefaultResolver extends Object implements Resolver
Default Property Name Expression Resolver Implementation.

This class assists in resolving property names in the following five formats, with the layout of an identifying String in parentheses:

  • Simple (name) - The specified name identifies an individual property of a particular JavaBean. The name of the actual getter or setter method to be used is determined using standard JavaBeans introspection, so that (unless overridden by a BeanInfo class, a property named "xyz" will have a getter method named getXyz() or (for boolean properties only) isXyz(), and a setter method named setXyz().
  • Nested (name1.name2.name3) The first name element is used to select a property getter, as for simple references above. The object returned for this property is then consulted, using the same approach, for a property getter for a property named name2, and so on. The property value that is ultimately retrieved or modified is the one identified by the last name element.
  • Indexed (name[index]) - The underlying property value is assumed to be an array, or this JavaBean is assumed to have indexed property getter and setter methods. The appropriate (zero-relative) entry in the array is selected. List objects are now also supported for read/write. You simply need to define a getter that returns the List
  • Mapped (name(key)) - The JavaBean is assumed to have an property getter and setter methods with an additional attribute of type String.
  • Combined (name1.name2[index].name3(key)) - Combining mapped, nested, and indexed references is also supported.
Since:
1.8.0
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a new instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    getIndex(String expression)
    Gets the index value from the property expression or -1.
    getKey(String expression)
    Gets the map key from the property expression or null.
    getProperty(String expression)
    Gets the property name from the property expression.
    boolean
    hasNested(String expression)
    Indicates whether or not the expression contains nested property expressions or not.
    boolean
    isIndexed(String expression)
    Indicate whether the expression is for an indexed property or not.
    boolean
    isMapped(String expression)
    Indicate whether the expression is for a mapped property or not.
    next(String expression)
    Extract the next property expression from the current expression.
    remove(String expression)
    Remove the last property expression from the current expression.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • getIndex

      public int getIndex(String expression)
      Gets the index value from the property expression or -1.
      Specified by:
      getIndex in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      The index value or -1 if the property is not indexed
      Throws:
      IllegalArgumentException - If the indexed property is illegally formed or has an invalid (non-numeric) value.
    • getKey

      public String getKey(String expression)
      Gets the map key from the property expression or null.
      Specified by:
      getKey in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      The index value
      Throws:
      IllegalArgumentException - If the mapped property is illegally formed.
    • getProperty

      public String getProperty(String expression)
      Gets the property name from the property expression.
      Specified by:
      getProperty in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      The property name
    • hasNested

      public boolean hasNested(String expression)
      Indicates whether or not the expression contains nested property expressions or not.
      Specified by:
      hasNested in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      The next property expression
    • isIndexed

      public boolean isIndexed(String expression)
      Indicate whether the expression is for an indexed property or not.
      Specified by:
      isIndexed in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      true if the expression is indexed, otherwise false
    • isMapped

      public boolean isMapped(String expression)
      Indicate whether the expression is for a mapped property or not.
      Specified by:
      isMapped in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      true if the expression is mapped, otherwise false
    • next

      public String next(String expression)
      Extract the next property expression from the current expression.
      Specified by:
      next in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      The next property expression
    • remove

      public String remove(String expression)
      Remove the last property expression from the current expression.
      Specified by:
      remove in interface Resolver
      Parameters:
      expression - The property expression
      Returns:
      The new expression value, with first property expression removed - null if there are no more expressions