Interface Resolver
-
- All Known Implementing Classes:
DefaultResolver
public interface Resolver
Property Name Expression Resolver.Methods such as PropertyUtilsBean's
setNestedProperty()
method use aResolver
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
LocaleBeanUtilsBean
- Since:
- 1.8.0
- See Also:
PropertyUtilsBean.setResolver(Resolver)
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description int
getIndex(java.lang.String expression)
Extract the index value from the property expression or -1.java.lang.String
getKey(java.lang.String expression)
Extract the map key from the property expression ornull
.java.lang.String
getProperty(java.lang.String expression)
Return the property name from the property expression.boolean
hasNested(java.lang.String expression)
Indicates whether or not the expression contains nested property expressions or not.boolean
isIndexed(java.lang.String expression)
Indicate whether the expression is for an indexed property or not.boolean
isMapped(java.lang.String expression)
Indicate whether the expression is for a mapped property or not.java.lang.String
next(java.lang.String expression)
Extract the next property expression from the current expression.java.lang.String
remove(java.lang.String expression)
Remove the last property expresson from the current expression.
-
-
-
Method Detail
-
getIndex
int getIndex(java.lang.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:
java.lang.IllegalArgumentException
- If the indexed property is illegally formed or has an invalid (non-numeric) value
-
getKey
java.lang.String getKey(java.lang.String expression)
Extract the map key from the property expression ornull
.- Parameters:
expression
- The property expression- Returns:
- The index value
- Throws:
java.lang.IllegalArgumentException
- If the mapped property is illegally formed
-
getProperty
java.lang.String getProperty(java.lang.String expression)
Return the property name from the property expression.- Parameters:
expression
- The property expression- Returns:
- The property name
-
hasNested
boolean hasNested(java.lang.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(java.lang.String expression)
Indicate whether the expression is for an indexed property or not.- Parameters:
expression
- The property expression- Returns:
true
if the expresion is indexed, otherwisefalse
-
isMapped
boolean isMapped(java.lang.String expression)
Indicate whether the expression is for a mapped property or not.- Parameters:
expression
- The property expression- Returns:
true
if the expresion is mapped, otherwisefalse
-
next
java.lang.String next(java.lang.String expression)
Extract the next property expression from the current expression.- Parameters:
expression
- The property expression- Returns:
- The next property expression
-
remove
java.lang.String remove(java.lang.String expression)
Remove the last property expresson 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
-
-