public interface 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 expresion 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:
PropertyUtilsBean
PropertyUtilsBean.getIndexedProperty(Object, String)
PropertyUtilsBean.getMappedProperty(Object, String)
PropertyUtilsBean.getNestedProperty(Object, String)
PropertyUtilsBean.getPropertyDescriptor(Object, String)
PropertyUtilsBean.getSimpleProperty(Object, String)
PropertyUtilsBean.setIndexedProperty(Object, String, Object)
PropertyUtilsBean.setMappedProperty(Object, String, Object)
PropertyUtilsBean.setNestedProperty(Object, String, Object)
PropertyUtilsBean.setSimpleProperty(Object, String, Object)
BeanUtilsBean
BeanUtilsBean.copyProperty(Object, String, Object)
BeanUtilsBean.setProperty(Object, String, Object)
LocaleBeanUtilsBean
PropertyUtilsBean.setResolver(Resolver)
Modifier and Type | Method and Description |
---|---|
int |
getIndex(String expression)
Extract the index value from the property expression or -1.
|
String |
getKey(String expression)
Extract the map key from the property expression or
null . |
String |
getProperty(String expression)
Return 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.
|
String |
next(String expression)
Extract the next property expression from the
current expression.
|
String |
remove(String expression)
Remove the last property expresson from the
current expression.
|
int getIndex(String expression)
expression
- The property expressionIllegalArgumentException
- If the indexed property is illegally
formed or has an invalid (non-numeric) valueString getKey(String expression)
null
.expression
- The property expressionIllegalArgumentException
- If the mapped property is illegally formedString getProperty(String expression)
expression
- The property expressionboolean hasNested(String expression)
expression
- The property expressionboolean isIndexed(String expression)
expression
- The property expressiontrue
if the expresion is indexed,
otherwise false
boolean isMapped(String expression)
expression
- The property expressiontrue
if the expresion is mapped,
otherwise false
String next(String expression)
expression
- The property expressionCopyright © 2000–2019 The Apache Software Foundation. All rights reserved.