Interface Resolver

All Known Implementing Classes:
DefaultResolver

public interface Resolver
Property Name Expression Resolver.

Methods such as PropertyUtilsBean's setNestedProperty() method use a Resolver to process a property name expression and resolve nested, indexed and mapped property names. The following code provides an example usage demonstrating all the methods:

 // Iterate through a nested property expression
 while (resolver.hasNested(name)) {

     // isolate a single property from a nested expression
     String next = resolver.next(name);

     // Process...
     String property = resolver.getProperty(next);
     if (resolver.isIndexed(next)) {

         int index = resolver.getIndex(next);
         bean = getIndexedProperty(bean, property, index);

     } else if (resolver.isMapped(next)) {

         String key = resolver.getKey(next);
         bean = getMappedProperty(bean, property, key);

     } else {

         bean = getSimpleProperty(bean, property);

     }

     // remove the processed property from the expression
     name = resolver.remove(name);
 }
 
In order to create an implementation, it is important to understand how BeanUtils/PropertyUtils uses the resolver. The following are the main methods that use it:
Since:
1.8.0
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    getIndex(String expression)
    Extract the index value from the property expression or -1.
    getKey(String expression)
    Extract 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.
  • Method Details

    • getIndex

      int getIndex(String expression)
      Extract the index value from the property expression or -1.
      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

      String getKey(String expression)
      Extract the map key from the property expression or null.
      Parameters:
      expression - The property expression
      Returns:
      The index value
      Throws:
      IllegalArgumentException - If the mapped property is illegally formed
    • getProperty

      String getProperty(String expression)
      Gets the property name from the property expression.
      Parameters:
      expression - The property expression
      Returns:
      The property name
    • hasNested

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

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

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

      String next(String expression)
      Extract the next property expression from the current expression.
      Parameters:
      expression - The property expression
      Returns:
      The next property expression
    • remove

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