Class ObjectIndexedPropertyDescriptor
- java.lang.Object
-
- java.beans.FeatureDescriptor
-
- java.beans.PropertyDescriptor
-
- ognl.ObjectIndexedPropertyDescriptor
-
public class ObjectIndexedPropertyDescriptor extends java.beans.PropertyDescriptorPropertyDescriptor subclass that describes an indexed set of read/write methods to get a property. Unlike IndexedPropertyDescriptor this allows the "key" to be an arbitrary object rather than just an int. Consequently it does not have a "readMethod" or "writeMethod" because it only expects a pattern like:
public void setProperty(KeyType, ValueType); public ValueType getProperty(KeyType);and does not require the methods that access it as an array. OGNL can get away with this without losing functionality because if the object does expose the properties they are most probably in a Map and that case is handled by the normal OGNL property accessors.
For example, if an object were to have methods that accessed and "attributes" property it would be natural to index them by String rather than by integer and expose the attributes as a map with a different property name:
public void setAttribute(String name, Object value); public Object getAttribute(String name); public Map getAttributes();Note that the index get/set is called get/set
Attributewhereas the collection getter is calledAttributes. This case is handled unambiguously by the OGNL property accessors because the set/getAttributemethods are detected by this object and the "attributes" case is handled by theMapPropertyAccessor. Therefore OGNL expressions calling this code would be handled in the following way:OGNL Expression OGNL Expression Handling attribute["name"]Handled by an index getter, like getAttribute(String).attribute["name"] = valueHandled by an index setter, like setAttribute(String, Object).attributes["name"]Handled by MapPropertyAccessorvia aMap.get(). This will not go through the index get accessor.attributes["name"] = valueHandled by MapPropertyAccessorvia aMap.put(). This will not go through the index set accessor.
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.reflect.MethodindexedReadMethodprivate java.lang.reflect.MethodindexedWriteMethodprivate java.lang.Class<?>propertyType
-
Constructor Summary
Constructors Constructor Description ObjectIndexedPropertyDescriptor(java.lang.String propertyName, java.lang.Class<?> propertyType, java.lang.reflect.Method indexedReadMethod, java.lang.reflect.Method indexedWriteMethod)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.reflect.MethodgetIndexedReadMethod()java.lang.reflect.MethodgetIndexedWriteMethod()java.lang.Class<?>getPropertyType()-
Methods inherited from class java.beans.PropertyDescriptor
createPropertyEditor, equals, getPropertyEditorClass, getReadMethod, getWriteMethod, hashCode, isBound, isConstrained, setBound, setConstrained, setPropertyEditorClass, setReadMethod, setWriteMethod
-
-
-
-
Constructor Detail
-
ObjectIndexedPropertyDescriptor
public ObjectIndexedPropertyDescriptor(java.lang.String propertyName, java.lang.Class<?> propertyType, java.lang.reflect.Method indexedReadMethod, java.lang.reflect.Method indexedWriteMethod) throws java.beans.IntrospectionException- Throws:
java.beans.IntrospectionException
-
-