|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.batch.support.DefaultPropertyEditorRegistrar org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper
public class BeanWrapperFieldSetMapper
FieldSetMapper
implementation based on bean property paths. The
DefaultFieldSet
to be mapped should have field name meta data corresponding
to bean property paths in a prototype instance of the desired type. The
prototype instance is initialized either by referring to to object by bean
name in the enclosing BeanFactory, or by providing a class to instantiate
reflectively.
Nested property paths, including indexed properties in maps and collections,
can be referenced by the DefaultFieldSet
names. They will be converted to
nested bean properties inside the prototype. The DefaultFieldSet
and the
prototype are thus tightly coupled by the fields that are available and those
that can be initialized. If some of the nested properties are optional (e.g.
collection members) they need to be removed by a post processor.
Property name matching is "fuzzy" in the sense that it tolerates close
matches, as long as the match is unique. For instance:
Constructor Summary | |
---|---|
BeanWrapperFieldSetMapper()
|
Method Summary | |
---|---|
void |
afterPropertiesSet()
Check that precisely one of type or prototype bean name is specified. |
protected DataBinder |
createBinder(Object target)
Create a binder for the target object. |
protected void |
initBinder(DataBinder binder)
Initialize a new binder instance. |
Object |
mapLine(FieldSet fs)
Map the DefaultFieldSet to an object retrieved from the enclosing Spring
context, or to a new instance of the required type if no prototype is
available. |
void |
setBeanFactory(BeanFactory beanFactory)
|
void |
setPrototypeBeanName(String name)
The bean name (id) for an object that can be populated from the field set that will be passed into mapLine(FieldSet) . |
void |
setTargetType(Class type)
Public setter for the type of bean to create instead of using a prototype bean. |
Methods inherited from class org.springframework.batch.support.DefaultPropertyEditorRegistrar |
---|
registerCustomEditors, setCustomEditors |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public BeanWrapperFieldSetMapper()
Method Detail |
---|
public void setBeanFactory(BeanFactory beanFactory)
setBeanFactory
in interface BeanFactoryAware
public void setPrototypeBeanName(String name)
mapLine(FieldSet)
. Typically a
prototype scoped bean so that a new instance is returned for each field
set mapped.
Either this property or the type property must be specified, but not
both.
name
- the name of a prototype bean in the enclosing BeanFactorypublic void setTargetType(Class type)
mapLine(FieldSet)
.
type
- the type to setpublic void afterPropertiesSet() throws Exception
afterPropertiesSet
in interface InitializingBean
IllegalStateException
- if neither is set or both properties are
set.
Exception
InitializingBean.afterPropertiesSet()
public Object mapLine(FieldSet fs)
DefaultFieldSet
to an object retrieved from the enclosing Spring
context, or to a new instance of the required type if no prototype is
available.
mapLine
in interface FieldSetMapper
fs
- the FieldSet
to map
NotWritablePropertyException
- if the DefaultFieldSet
contains a
field that cannot be mapped to a bean property.
BindingException
- if there is a type conversion or other error (if
the DataBinder
from createBinder(Object)
has errors
after binding).FieldSetMapper.mapLine(org.springframework.batch.item.file.mapping.FieldSet)
protected DataBinder createBinder(Object target)
DataBinder
and calls out to
initBinder(DataBinder)
and
DefaultPropertyEditorRegistrar.registerCustomEditors(PropertyEditorRegistry)
.
target
-
DataBinder
that can be used to bind properties to the
target.protected void initBinder(DataBinder binder)
direct field access
. Called
by createBinder(Object)
.
Note that registration of custom property editors should be done in
DefaultPropertyEditorRegistrar.registerCustomEditors(PropertyEditorRegistry)
, not here! This
method will only be called when a new data binder is created.
binder
- new binder instancecreateBinder(Object)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |