com.vaadin.data.util.
Class MethodProperty<T>
java.lang.Object
com.vaadin.data.util.AbstractProperty
com.vaadin.data.util.MethodProperty<T>
All Implemented Interfaces:
Property, Property.ReadOnlyStatusChangeNotifier, Property.ValueChangeNotifier, Serializable
- extends AbstractProperty
public class MethodProperty<T>
Proxy class for creating Properties from pairs of getter and setter methods of a Bean property. An instance of this class can be thought as having been attached to a field of an object. Accessing the object through the Property interface directly manipulates the underlying field.
It's assumed that the return value returned by the getter method is assignable to the type of the property, and the setter method parameter is assignable to that value.
A valid getter method must always be available, but instance of this class
can be constructed with a null
setter method in which case the
resulting MethodProperty is read-only.
MethodProperty implements Property.ValueChangeNotifier, but does not automatically know whether or not the getter method will actually return a new value - value change listeners are always notified when setValue is called, without verifying what the getter returns.
Since:
3.0
Version:
6.8.18
Author:
Vaadin Ltd.
See Also:
Nested Class Summary | |
---|---|
static class |
MethodProperty.MethodException
Exception object that signals that there were problems
calling or finding the specified getter or setter methods of the
property. |
Nested classes/interfaces inherited from class com.vaadin.data.util.AbstractProperty |
---|
AbstractProperty.ReadOnlyStatusChangeEvent |
Nested classes/interfaces inherited from interface com.vaadin.data.Property |
---|
Property.ConversionException, Property.Editor, Property.ReadOnlyException, Property.ReadOnlyStatusChangeListener, Property.ReadOnlyStatusChangeNotifier, Property.ValueChangeListener, Property.ValueChangeNotifier, Property.Viewer |
Constructor Summary | |
---|---|
MethodProperty(Class<? extends T> type,
Object instance,
Method getMethod,
Method setMethod)
Creates a new instance of MethodProperty with the getter and
setter methods. |
|
MethodProperty(Class<? extends T> type,
Object instance,
String getMethodName,
String setMethodName)
Creates a new instance of MethodProperty from named getter
and setter methods. |
|
MethodProperty(Class<? extends T> type,
Object instance,
String getMethodName,
String setMethodName,
Object[] getArgs,
Object[] setArgs,
int setArgumentIndex)
Creates a new instance of MethodProperty from named getter
and setter methods and argument lists. |
|
MethodProperty(Class type,
Object instance,
Method getMethod,
Method setMethod,
Object[] getArgs,
Object[] setArgs,
int setArgumentIndex)
Creates a new instance of MethodProperty from the getter and
setter methods, and argument lists. |
|
MethodProperty(Object instance,
String beanPropertyName)
Creates a new instance of MethodProperty from a named bean
property. |
Method Summary | |
---|---|
void |
fireValueChange()
Sends a value change event to all registered listeners. |
Class |
getType()
Returns the type of the Property. |
Object |
getValue()
Gets the value stored in the Property. |
protected void |
invokeSetMethod(Object value)
Internal method to actually call the setter method of the wrapped property. |
boolean |
isReadOnly()
Tests if the object is in read-only mode. |
void |
setArguments(Object[] getArgs,
Object[] setArgs,
int setArgumentIndex)
Sets the setter method and getter method argument lists. |
void |
setValue(Object newValue)
Sets the value of the property. |
Methods inherited from class com.vaadin.data.util.AbstractProperty |
---|
addListener, addListener, fireReadOnlyStatusChange, getListeners, removeListener, removeListener, setReadOnly, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
MethodProperty
public MethodProperty(Object instance,
String beanPropertyName)
- Parameters:
instance
- the object that includes the property.beanPropertyName
- the name of the property to bind to.
Creates a new instance of MethodProperty
from a named bean
property. This constructor takes an object and the name of a bean
property and initializes itself with the accessor methods for the
property.
The getter method of a MethodProperty
instantiated with this
constructor will be called with no arguments, and the setter method with
only the new value as the sole argument.
If the setter method is unavailable, the resulting
MethodProperty
will be read-only, otherwise it will be
read-write.
Method names are constructed from the bean property by adding get/is/are/set prefix and capitalising the first character in the name of the given bean property.
MethodProperty
public MethodProperty(Class<? extends T> type,
Object instance,
String getMethodName,
String setMethodName)
- Parameters:
type
- the type of the property.instance
- the object that includes the property.getMethodName
- the name of the getter method.setMethodName
- the name of the setter method.
Creates a new instance of MethodProperty
from named getter
and setter methods. The getter method of a MethodProperty
instantiated with this constructor will be called with no arguments, and
the setter method with only the new value as the sole argument.
If the setter method is null
, the resulting
MethodProperty
will be read-only, otherwise it will be
read-write.
MethodProperty
public MethodProperty(Class<? extends T> type,
Object instance,
Method getMethod,
Method setMethod)
- Parameters:
type
- the type of the property.instance
- the object that includes the property.getMethod
- the getter method.setMethod
- the setter method.
Creates a new instance of MethodProperty
with the getter and
setter methods. The getter method of a MethodProperty
instantiated with this constructor will be called with no arguments, and
the setter method with only the new value as the sole argument.
If the setter method is null
, the resulting
MethodProperty
will be read-only, otherwise it will be
read-write.
MethodProperty
public MethodProperty(Class<? extends T> type,
Object instance,
String getMethodName,
String setMethodName,
Object[] getArgs,
Object[] setArgs,
int setArgumentIndex)
- Parameters:
type
- the type of the property.instance
- the object that includes the property.getMethodName
- the name of the getter method.setMethodName
- the name of the setter method.getArgs
- the fixed argument list to be passed to the getter method.setArgs
- the fixed argument list to be passed to the setter method.setArgumentIndex
- the index of the argument insetArgs
to be replaced withnewValue
whensetValue(Object newValue)
is called.
Creates a new instance of MethodProperty
from named getter
and setter methods and argument lists. The getter method of a
MethodProperty
instantiated with this constructor will be
called with the getArgs as arguments. The setArgs will be used as the
arguments for the setter method, though the argument indexed by the
setArgumentIndex will be replaced with the argument passed to the
setValue(Object newValue)
method.
For example, if the setArgs
contains A
,
B
and C
, and setArgumentIndex =
1
, the call methodProperty.setValue(X)
would result
in the setter method to be called with the parameter set of
{A, X, C}
MethodProperty
public MethodProperty(Class type,
Object instance,
Method getMethod,
Method setMethod,
Object[] getArgs,
Object[] setArgs,
int setArgumentIndex)
- Parameters:
type
- the type of the property.instance
- the object that includes the property.getMethod
- the getter method.setMethod
- the setter method.getArgs
- the fixed argument list to be passed to the getter method.setArgs
- the fixed argument list to be passed to the setter method.setArgumentIndex
- the index of the argument insetArgs
to be replaced withnewValue
whensetValue(Object newValue)
is called.
Creates a new instance of MethodProperty
from the getter and
setter methods, and argument lists.
This constructor behaves exactly like
MethodProperty(Class type, Object instance, String getMethodName, String setMethodName, Object [] getArgs, Object [] setArgs, int setArgumentIndex)
except that instead of names of the getter and setter methods this
constructor is given the actual methods themselves.
Method Detail |
---|
getType
public final Class getType()
- Returns:
- type of the Property
Returns the type of the Property. The methods getValue
and
setValue
must be compatible with this type: one must be able
to safely cast the value returned from getValue
to the given
type and pass any variable assignable to this type as an argument to
setValue
.
isReadOnly
public boolean isReadOnly()
- Specified by:
isReadOnly
in interfaceProperty
- Overrides:
isReadOnly
in classAbstractProperty
- Returns:
true
if the object is in read-only mode,false
if it's not
Tests if the object is in read-only mode. In read-only mode calls to
setValue
will throw ReadOnlyException
and will
not modify the value of the Property.
getValue
public Object getValue()
- Returns:
- the value of the Property
Gets the value stored in the Property. The value is resolved by calling the specified getter method with the argument specified at instantiation.
setArguments
public void setArguments(Object[] getArgs,
Object[] setArgs,
int setArgumentIndex)
- Parameters:
getArgs
- the fixed argument list to be passed to the getter method.setArgs
- the fixed argument list to be passed to the setter method.setArgumentIndex
- the index of the argument insetArgs
to be replaced withnewValue
whensetValue(Object newValue)
is called.
Sets the setter method and getter method argument lists.
setValue
public void setValue(Object newValue)
throws Property.ReadOnlyException,
Property.ConversionException
- Parameters:
newValue
- the New value of the property.- Throws:
- if the object is in read-only mode.Property.ReadOnlyException
- ifProperty.ConversionException
newValue
can't be converted into the Property's native type directly or throughString
.Property.ReadOnlyException
- if the object is in read-only modeProperty.ConversionException
- if newValue can't be converted into the Property's native type directly or through String- See Also:
invokeSetMethod(Object)
Sets the value of the property. This method supports setting from
String
s if either String
is directly assignable
to property type, or the type class contains a string constructor.
invokeSetMethod
protected void invokeSetMethod(Object value)
- Parameters:
value
-
Internal method to actually call the setter method of the wrapped property.
fireValueChange
public void fireValueChange()
- Overrides:
fireValueChange
in classAbstractProperty
Sends a value change event to all registered listeners. Public for backwards compatibility, visibility may be reduced in future versions.