S
- FIXMET
- FIXMEpublic class BinderModelBuilder<S,T> extends Object
Binder.BinderModel
.
A such object is designed to build only one model of binder and can not be
used directly to create a new binder, it prepares only the model of a new
binder, which after must be registred in the BinderFactory
to obtain
a real Binder
.
If you want to create more than one binder model, use each time a new binder builder.
To obtain a new instance of a build please use one of the factories method :
newEmptyBuilder(Class)
} to create a binder model with same
source and target typenewEmptyBuilder(Class, Class)
to create a binder model with a
possible different source and target typenewDefaultBuilder(Class)
to create a binder model with same
source and target type and then fill the model with all matching properties.newDefaultBuilder(Class, Class)
to create a binder model
with a possible different source and target type and then fill the model
with all matching properties.addSimpleProperties(String...)
to add in the binder model simple
properties (a simple property is a property present in both source and target type)addProperty(String, String)
to add in the binder model a single
property (from source type) to be copied to another property (in target type)addProperties(String...)
to add in the binder model properties
(says here you specify some couple of properties (sourcePropertyName,
targetPropertyName) to be added in the binder model)addBinder(String, Binder)
to add in the binder model
another binder to be used to copy the given simple property (same name in
source and target type)addCollectionStrategy(Binder.CollectionStrategy, String...)
to
specify the strategy to be used to bind some collection some source type to
target typeaddCollectionBinder(Binder, String...)
to
bind a collection: a new collection will be created and all elements of sources will be
copy using the given binder.builder.addSimpleProperties(...).addProperty(...).addBinder(...)Here is an example of how to use the
BinderModelBuilder
:
BinderModelBuilder<Bean, Bean> builder = new BinderModelBuilder(Bean.class); builder.addSimpleProperties("name", "surname"); BinderFactory.registerBinderModel(builder); Binder<Bean, Bean> binder = BinderFactory.getBinder(BeanA.class);Once the binder is registred into the
BinderFactory
, you can get it
each time you need it :
Binder<Bean, Bean> binder = BinderFactory.getBinder(Bean.class);
Binder.BinderModel
,
Binder
Modifier and Type | Field and Description |
---|---|
protected boolean |
canTypeMismatch
Can the source and target type mismatch for a property ?
|
protected Binder.BinderModel<S,T> |
model
current model used to build the binder
|
protected Map<String,PropertyDescriptor> |
sourceDescriptors
source properties descriptors
|
protected Map<String,PropertyDescriptor> |
targetDescriptors
target properties descriptors
|
Modifier | Constructor and Description |
---|---|
protected |
BinderModelBuilder(Class<S> sourceType,
Class<T> targetType)
Creates a binder for the given types.
|
Modifier and Type | Method and Description |
---|---|
BinderModelBuilder<S,T> |
addBinder(String propertyName,
Binder<?,?> binder) |
BinderModelBuilder<S,T> |
addCollectionBinder(Binder binder,
String... propertyNames) |
BinderModelBuilder<S,T> |
addCollectionStrategy(Binder.CollectionStrategy strategy,
String... propertyNames) |
protected BinderModelBuilder<S,T> |
addCollectionStrategy0(String propertyName,
Binder.CollectionStrategy strategy,
Binder binder) |
<K,V> BinderModelBuilder<S,T> |
addFunction(Class<K> type,
com.google.common.base.Function<K,V> function) |
BinderModelBuilder<S,T> |
addProperties(String... sourceAndTargetProperties)
Add to the binder model some properties.
|
BinderModelBuilder<S,T> |
addProperty(String sourceProperty,
String targetProperty)
Add to the binder model some simple properties (says source property name = target property name).
|
protected void |
addProperty0(String sourceProperty,
String targetProperty) |
BinderModelBuilder<S,T> |
addSimpleProperties(String... properties)
Add to the binder model some simple properties (says source property name = target property name).
|
BinderModelBuilder<T,S> |
buildInverseModelBuilder()
Creates a new model builder inversing the the source and target of this builder.
|
BinderModelBuilder<S,T> |
canTypeMismatch(boolean canTypeMismatch)
Change the value of property
canTypeMismatch . |
protected void |
clear() |
protected Binder.BinderModel<S,T> |
getModel() |
protected static void |
loadDescriptors(Class<?> type,
Map<String,PropertyDescriptor> descriptors) |
static <S> BinderModelBuilder<S,S> |
newDefaultBuilder(Class<S> sourceType)
Creates a new mirrored model builder and fill the model with all matching
and available property from the given type.
|
static <S,T> BinderModelBuilder<S,T> |
newDefaultBuilder(Class<S> sourceType,
Class<T> targetType)
Creates a new model builder and fill the model with all matching
and available properties from the source type to the target type.
|
static <S,T> BinderModelBuilder<S,T> |
newDefaultBuilder(Class<S> sourceType,
Class<T> targetType,
boolean checkType)
Creates a new model builder and fill the model with all matching
and available properties from the source type to the target type.
|
static <S> BinderModelBuilder<S,S> |
newEmptyBuilder(Class<S> type)
Creates a new mirrored and empty model binder for the given
type . |
static <S,T> BinderModelBuilder<S,T> |
newEmptyBuilder(Class<S> sourceType,
Class<T> targetType)
Creates a new empty model binder for the given types.
|
void |
setInstanceFactory(InstanceFactory<T> instanceFactory)
set factory of target instance
|
Binder<S,T> |
toBinder()
|
<B extends Binder<S,T>> |
toBinder(Class<B> binderType)
|
protected boolean canTypeMismatch
protected Binder.BinderModel<S,T> model
protected Map<String,PropertyDescriptor> sourceDescriptors
protected Map<String,PropertyDescriptor> targetDescriptors
public static <S> BinderModelBuilder<S,S> newEmptyBuilder(Class<S> type)
type
.S
- FIXMEtype
- the type of mirrored binderpublic static <S,T> BinderModelBuilder<S,T> newEmptyBuilder(Class<S> sourceType, Class<T> targetType)
S
- FIXMET
- FIXMEsourceType
- type of the source of the bindertargetType
- type of the target of the binderpublic static <S> BinderModelBuilder<S,S> newDefaultBuilder(Class<S> sourceType)
S
- FIXMES
- the mirrored type of the binder model to createsourceType
- the mirrored type of the binder model to createpublic static <S,T> BinderModelBuilder<S,T> newDefaultBuilder(Class<S> sourceType, Class<T> targetType)
S
- the source type of the binder model to createT
- the target type of the binder model to createsourceType
- the source type of the model to createtargetType
- the target type of the model to createpublic static <S,T> BinderModelBuilder<S,T> newDefaultBuilder(Class<S> sourceType, Class<T> targetType, boolean checkType)
S
- the source type of the binder model to createT
- the target type of the binder model to createsourceType
- the source type of the model to createtargetType
- the target type of the model to createcheckType
- flag to check if properties has same types, otherwise skip thempublic BinderModelBuilder<S,T> canTypeMismatch(boolean canTypeMismatch)
canTypeMismatch
.canTypeMismatch
- new canTypeMismatch
valuepublic <K,V> BinderModelBuilder<S,T> addFunction(Class<K> type, com.google.common.base.Function<K,V> function)
public Binder<S,T> toBinder()
Binder
using the
underlying model
the builder contains.
Note: Using this method will not make reusable the model
via the BinderFactory
.
BinderFactory.newBinder(Binder.BinderModel, Class)
public <B extends Binder<S,T>> B toBinder(Class<B> binderType)
Binder
using the
underlying model
the builder contains.
Note: Using this method will not make reusable the model
via the BinderFactory
.
B
- type of binder to createbinderType
- type of binder to createBinderFactory.newBinder(Binder.BinderModel, Class)
public void setInstanceFactory(InstanceFactory<T> instanceFactory)
instanceFactory
- FIXMEpublic BinderModelBuilder<S,T> addSimpleProperties(String... properties) throws IllegalStateException, NullPointerException
Note: If no model is present, the method will fail.
properties
- the name of mirrored propertyIllegalStateException
- if no model was previously createdNullPointerException
- if a property is null
public BinderModelBuilder<S,T> addProperty(String sourceProperty, String targetProperty) throws IllegalStateException, NullPointerException
Note: If no model is present, the method will fail.
sourceProperty
- the name of the source property to bindtargetProperty
- the name of the target property to bindIllegalStateException
- if no model was previously createdNullPointerException
- if a parameter is null
public BinderModelBuilder<S,T> addProperties(String... sourceAndTargetProperties) throws IllegalStateException, IllegalArgumentException, NullPointerException
Parameter sourceAndTargetProperties
must be a array of couple
of sourceProperty
, targetProperty
.
Example :
builder.addProperties("name","name2","text","text");
Note: If no model is present, the method will fail.
sourceAndTargetProperties
- the couple of (sourceProperty -
targetProperty) to bindIllegalStateException
- if no model was previously createdIllegalArgumentException
- if there is not the same number of
source and target propertiesNullPointerException
- if a parameter is null
public BinderModelBuilder<S,T> addBinder(String propertyName, Binder<?,?> binder)
public BinderModelBuilder<S,T> addCollectionStrategy(Binder.CollectionStrategy strategy, String... propertyNames)
public BinderModelBuilder<S,T> addCollectionBinder(Binder binder, String... propertyNames)
public BinderModelBuilder<T,S> buildInverseModelBuilder()
the result build will contains the inversed properties mapping of the original builder.
Other builder attributes are not used used
protected BinderModelBuilder<S,T> addCollectionStrategy0(String propertyName, Binder.CollectionStrategy strategy, Binder binder)
protected Binder.BinderModel<S,T> getModel()
protected void clear()
protected static void loadDescriptors(Class<?> type, Map<String,PropertyDescriptor> descriptors)
Copyright © 2004–2020 CodeLutin. All rights reserved.