POJO
- is the templated type of the pojo
.public interface PojoDescriptor<POJO> extends PojoAttributeType<POJO>
properties
of a Pojo
. A
Pojo
in this manner is more or less any java object. BeanInfo
. public interface Pojo { Integer getFooBar(); void setFooBar(int s); boolean hasSomeFlag(); void setSomeFlag(Boolean flag); boolean isCool(); void setCool(); List<String> getColors(); void addColor(String color); void removeColor(String color); }This interface does NOT completely follow the JAVA-Beans specification. The properties "fooBar" and "someFlag" do NOT have the same type for reading and writing. Therefore the
Introspector
for java-beans or
commons-beanutils can NOT be used to read and write these
properties. Using this utility the properties can be accessed as described in the following table:Name |
Mode |
Property-Type |
Method |
Note |
---|---|---|---|---|
fooBar | get | Integer | getFooBar() | - |
fooBar | set | int | setFooBar(int) | - |
someFlag | get | boolean | hasSomeFlag() | - |
someFlag | set | Boolean | setSomeFlag(Boolean) | - |
cool | get | boolean | isCool() | - |
colors | get | List<String> |
getColors() | - |
color | add | String | addColor(String) | - |
color | remove | String | removeColor(String) | - |
colors | add | String | addColor(String) | enhanced copy |
colors | remove | String | removeColor(String) | enhanced copy |
colors | indexed-set | String | getColors().set(int, String) | enhanced virtual accessor |
getAccessor
methods. If the type of your
POJO
is unknown at compile-time, you need to parameterize with the unbound
wildcard as PojoDescriptor>
<&>
. In that case you can not call the get
or
set
methods.PojoPropertyDescriptor
Modifier and Type | Method and Description |
---|---|
Object |
addPropertyItem(POJO pojo,
String propertyName,
Object item)
|
<ACCESSOR extends PojoPropertyAccessor> |
getAccessor(String property,
PojoPropertyAccessorMode<ACCESSOR> mode)
This method gets the
accessor for the property with the given propertyName and
for the given access mode . |
<ACCESSOR extends PojoPropertyAccessor> |
getAccessor(String property,
PojoPropertyAccessorMode<ACCESSOR> mode,
boolean required)
|
Object |
getProperty(POJO pojo,
String property)
|
<V> V |
getProperty(POJO pojo,
TypedProperty<V> property)
This method gets the value of the specified property in a type-safe way.
|
PojoPropertyDescriptor |
getPropertyDescriptor(String propertyName)
This method gets the
descriptor for the property identified by the given
propertyName . |
PojoPropertyDescriptor |
getPropertyDescriptor(TypedProperty<?> property)
This method gets the
descriptor for the given property . |
Collection<? extends PojoPropertyDescriptor> |
getPropertyDescriptors()
This method gets the
descriptor s of all properties of the according
pojo . |
Object |
getPropertyItem(POJO pojo,
String propertyName,
int index)
This method gets the item with the given
index from the list-like property with the given propertyName of the given pojo using the
indexed
getter accessor . |
int |
getPropertySize(POJO pojo,
String propertyName)
|
POJO |
newInstance()
Creates a new instance.
|
Boolean |
removePropertyItem(POJO pojo,
String propertyName,
Object item)
This method removes the given
item from an array or Collection using the
remove
property with the given propertyName from the given pojo
accessor . |
Object |
setProperty(POJO pojo,
String property,
Object value)
|
<V> void |
setProperty(POJO pojo,
TypedProperty<V> property,
V value)
This method sets the value of the specified property in a type-safe way.
|
Object |
setPropertyItem(POJO pojo,
String propertyName,
int index,
Object item)
This method sets the given
item at the given index in the list-like
property with the given propertyName of the given pojo using
the indexed
setter accessor . |
getPojoClass, getPojoType
POJO newInstance()
new instance
of the POJO
.PojoPropertyDescriptor getPropertyDescriptor(String propertyName)
descriptor
for the property identified by the given
propertyName
.propertyName
- is the name of the requested property.propertyName
or null
if no such
property exists for the according pojo
.PojoPropertyDescriptor getPropertyDescriptor(TypedProperty<?> property) throws PojoPropertyNotFoundException
descriptor
for the given property
.property
- is the TypedProperty
.property
.PojoPropertyNotFoundException
- if the specified property
was NOT found.Collection<? extends PojoPropertyDescriptor> getPropertyDescriptors()
descriptor
s of all properties of the according
pojo
.property descriptor
s<ACCESSOR extends PojoPropertyAccessor> ACCESSOR getAccessor(String property, PojoPropertyAccessorMode<ACCESSOR> mode)
accessor
for the property with the given propertyName
and
for the given access mode
.ACCESSOR
- is the type of the requested accessor.property
- is the name
of the property. If the given mode
is
GET
it is treated as
for getProperty(Object, String)
. If the given mode
is
SET
it is treated as
for setProperty(Object, String, Object)
.mode
- is the mode
of the requested accessor. Use
PojoPropertyAccessorModes
for available modes.null
if NOT found (there is no property named propertyName
, the
property has no accessor for the given mode
, etc.).<ACCESSOR extends PojoPropertyAccessor> ACCESSOR getAccessor(String property, PojoPropertyAccessorMode<ACCESSOR> mode, boolean required) throws PojoPropertyNotFoundException
ACCESSOR
- is the type of the requested accessor.property
- is the name
of the property. If the given mode
is
GET
it is treated as
for getProperty(Object, String)
. If the given mode
is
SET
it is treated as
for setProperty(Object, String, Object)
.mode
- is the mode
of the requested accessor. Use
PojoPropertyAccessorModes
for available modes.required
- - if true
the accessor is required and an exception is thrown if NOT found.null
if NOT found and required
is false
.PojoPropertyNotFoundException
- if required
is true
and no property named
propertyName
was found or no accessor exists for that property with the given mode
.getPropertyDescriptor(String)
,
PojoPropertyDescriptor.getAccessor(PojoPropertyAccessorMode)
Object getProperty(POJO pojo, String property) throws PojoPropertyNotFoundException, ReflectionException
property
identified by the given property
from
the given pojo
. The result depends on the form of the given property
as shown by the following
table:property |
accessor | example | equivalent |
---|---|---|---|
[a-zA-Z][a-zA-Z0-9]* |
PojoPropertyAccessorNonArgMode.GET |
fooBar |
|
[a-zA-Z][a-zA-Z0-9]* "[" [0-9]+ "]" |
PojoPropertyAccessorIndexedNonArgMode.GET_INDEXED
|
fooBar[42] |
|
[a-zA-Z][a-zA-Z0-9]* "['" [a-zA-Z0-9]+ "']" |
PojoPropertyAccessorOneArgMode.GET_MAPPED
|
fooBar['key'] |
|
pojo
- is the POJO
instance where to access the property.property
- identifies the property to get as described above.type
of the according
getter
. Depending
on the POJO, the value may be null
.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
(getter).ReflectionException
- if the underlying accessor
caused an
error during reflection.<V> V getProperty(POJO pojo, TypedProperty<V> property) throws PojoPropertyNotFoundException, ReflectionException
V
- is the generic type of the requested property value.pojo
- is the POJO
instance where to access the property.property
- is the TypedProperty
identifying the property to get.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
(getter).ReflectionException
- if the underlying accessor
caused an
error during reflection.getProperty(Object, String)
Object setProperty(POJO pojo, String property, Object value) throws PojoPropertyNotFoundException, ReflectionException
value
for the property
with the given
property
of the given pojo
. The effect depends on the form of the given property
as shown
by the following table:property |
accessor | example | equivalent |
---|---|---|---|
[a-zA-Z][a-zA-Z0-9]* |
PojoPropertyAccessorOneArgMode.SET |
fooBar |
|
[a-zA-Z][a-zA-Z0-9]* "[" [0-9]+ "]" |
PojoPropertyAccessorIndexedOneArgMode.SET_INDEXED
|
fooBar[42] |
|
[a-zA-Z][a-zA-Z0-9]* "['" [a-zA-Z0-9]+ "']" |
PojoPropertyAccessorTwoArgMode.SET_MAPPED
|
fooBar['key'] |
|
pojo
- is the POJO
instance where to access the property.property
- identifies the property to set as explained above.value
- is the property value to set. Depending on the POJO the value may be null
.null
if the return type is void
what should be the
regular case.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
(setter).ReflectionException
- if the underlying accessor
caused an
error during reflection.<V> void setProperty(POJO pojo, TypedProperty<V> property, V value) throws PojoPropertyNotFoundException, ReflectionException
V
- is the generic type of the property value to set.pojo
- is the Pojo
owning the property.property
- is the TypedProperty
identifying the property to set.value
- is the new property value to set.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
(setter).ReflectionException
- if the underlying accessor
caused an
error during reflection.setProperty(Object, String, Object)
int getPropertySize(POJO pojo, String propertyName) throws PojoPropertyNotFoundException, ReflectionException
pojo
- is the POJO
instance where to access the property.propertyName
- is the name
of the property.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
.ReflectionException
- if the underlying accessor
caused an
error during reflection.Object addPropertyItem(POJO pojo, String propertyName, Object item) throws PojoPropertyNotFoundException, ReflectionException
item
to the list-like property
with the
given propertyName
from the given pojo
using the
add
accessor
.pojo
- is the POJO
instance where to access the property.propertyName
- is the name
of the property.item
- is the item to add to the property.null
if the return type is void
what should be the
regular case.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
.ReflectionException
- if the underlying accessor
caused an
error during reflection.Boolean removePropertyItem(POJO pojo, String propertyName, Object item) throws PojoPropertyNotFoundException, ReflectionException
item
from an array or Collection
using the
remove
property
with the given propertyName
from the given pojo
accessor
.pojo
- is the POJO
instance where to access the property.propertyName
- is the name
of the property.item
- is the item to remove from the property.Boolean.TRUE
if the item has been removed successfully and Boolean.FALSE
if the item was
NOT present in the array or Collection
, or null
if the accessor is pointing to a remove
method that returns no boolean.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
.ReflectionException
- if the underlying accessor
caused an
error during reflection.Object getPropertyItem(POJO pojo, String propertyName, int index) throws PojoPropertyNotFoundException, ReflectionException
index
from the list-like property
with the given propertyName
of the given pojo
using the
indexed
getter
accessor
.pojo
- is the POJO
instance where to add the given property item
.propertyName
- is the name
of the property.index
- is the position of the requested item (see List.get(int)
).null
if the return type is void
what should be the
regular case.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
.ReflectionException
- if the underlying accessor
caused an
error during reflection.Object setPropertyItem(POJO pojo, String propertyName, int index, Object item) throws PojoPropertyNotFoundException, ReflectionException
item
at the given index
in the list-like
property
with the given propertyName
of the given pojo
using
the indexed
setter
accessor
.pojo
- is the POJO
instance where to access the property.propertyName
- is the name
of the property.index
- is the position of the item to set (see List.set(int, Object)
).item
- is the item to set at the given index
.null
if the return type is void
what should be the
regular case.PojoPropertyNotFoundException
- if the property with the given propertyName
was NOT
found
or has no such accessor
.ReflectionException
- if the underlying accessor
caused an
error during reflection.Copyright © 2001–2016 mmm-Team. All rights reserved.