Class BinderModelBuilder<S,T>
- Type Parameters:
S- FIXMET- FIXME
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);
- Since:
- 1.5.3
- Author:
- Tony Chemit - chemit@codelutin.com
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanCan the source and target type mismatch for a property ?protected Binder.BinderModel<S, T> current model used to build the binderprotected Map<String, PropertyDescriptor> source properties descriptorsprotected Map<String, PropertyDescriptor> target properties descriptors -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedBinderModelBuilder(Class<S> sourceType, Class<T> targetType) Creates a binder for the given types. -
Method Summary
Modifier and TypeMethodDescriptionaddCollectionBinder(Binder binder, String... propertyNames) 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) addProperties(String... sourceAndTargetProperties) Add to the binder model some properties.addProperty(String sourceProperty, String targetProperty) Add to the binder model some simple properties (says source property name = target property name).protected voidaddProperty0(String sourceProperty, String targetProperty) addSimpleProperties(String... properties) Add to the binder model some simple properties (says source property name = target property name).Creates a new model builder inversing the the source and target of this builder.canTypeMismatch(boolean canTypeMismatch) Change the value of propertycanTypeMismatch.protected voidclear()protected Binder.BinderModel<S, T> getModel()protected static voidloadDescriptors(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 giventype.static <S,T> BinderModelBuilder <S, T> newEmptyBuilder(Class<S> sourceType, Class<T> targetType) Creates a new empty model binder for the given types.voidsetInstanceFactory(InstanceFactory<T> instanceFactory) set factory of target instancetoBinder()
-
Field Details
-
canTypeMismatch
protected boolean canTypeMismatchCan the source and target type mismatch for a property ? -
model
current model used to build the binder -
sourceDescriptors
source properties descriptors -
targetDescriptors
target properties descriptors
-
-
Constructor Details
-
BinderModelBuilder
-
-
Method Details
-
newEmptyBuilder
Creates a new mirrored and empty model binder for the giventype.- Type Parameters:
S- FIXME- Parameters:
type- the type of mirrored binder- Returns:
- the new instanciated builder
-
newEmptyBuilder
public static <S,T> BinderModelBuilder<S,T> newEmptyBuilder(Class<S> sourceType, Class<T> targetType) Creates a new empty model binder for the given types.- Type Parameters:
S- FIXMET- FIXME- Parameters:
sourceType- type of the source of the bindertargetType- type of the target of the binder- Returns:
- the new instanciated builder
-
newDefaultBuilder
Creates a new mirrored model builder and fill the model with all matching and available property from the given type.- Type Parameters:
S- FIXMES- the mirrored type of the binder model to create- Parameters:
sourceType- the mirrored type of the binder model to create- Returns:
- the new instanciated model builder fully filled
-
newDefaultBuilder
public 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.- Type Parameters:
S- the source type of the binder model to createT- the target type of the binder model to create- Parameters:
sourceType- the source type of the model to createtargetType- the target type of the model to create- Returns:
- the new instanciated model builder fully filled
-
newDefaultBuilder
public 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.- Type Parameters:
S- the source type of the binder model to createT- the target type of the binder model to create- Parameters:
sourceType- 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 them- Returns:
- the new instanciated model builder fully filled
- Since:
- 2.4.5
-
canTypeMismatch
Change the value of propertycanTypeMismatch.- Parameters:
canTypeMismatch- newcanTypeMismatchvalue- Returns:
- the builder
-
addFunction
public <K,V> BinderModelBuilder<S,T> addFunction(Class<K> type, com.google.common.base.Function<K, V> function) -
toBinder
-
toBinder
Convinient method to create directly aBinderusing the underlyingmodelthe builder contains.Note: Using this method will not make reusable the model via the
BinderFactory.- Type Parameters:
B- type of binder to create- Parameters:
binderType- type of binder to create- Returns:
- a new binder using the model of the builder.
- Since:
- 2.1
- See Also:
-
setInstanceFactory
set factory of target instance- Parameters:
instanceFactory- FIXME
-
addSimpleProperties
public BinderModelBuilder<S,T> addSimpleProperties(String... properties) throws IllegalStateException, NullPointerException Add to the binder model some simple properties (says source property name = target property name).Note: If no model is present, the method will fail.
- Parameters:
properties- the name of mirrored property- Returns:
- the instance of the builder
- Throws:
IllegalStateException- if no model was previously createdNullPointerException- if a property isnull
-
addProperty
public BinderModelBuilder<S,T> addProperty(String sourceProperty, String targetProperty) throws IllegalStateException, NullPointerException Add to the binder model some simple properties (says source property name = target property name).Note: If no model is present, the method will fail.
- Parameters:
sourceProperty- the name of the source property to bindtargetProperty- the name of the target property to bind- Returns:
- the instance of the builder
- Throws:
IllegalStateException- if no model was previously createdNullPointerException- if a parameter isnull
-
addProperties
public BinderModelBuilder<S,T> addProperties(String... sourceAndTargetProperties) throws IllegalStateException, IllegalArgumentException, NullPointerException Add to the binder model some properties.Parameter
sourceAndTargetPropertiesmust be a array of couple ofsourceProperty,targetProperty.Example :
builder.addProperties("name","name2","text","text");Note: If no model is present, the method will fail.
- Parameters:
sourceAndTargetProperties- the couple of (sourceProperty - targetProperty) to bind- Returns:
- the instance of the builder
- Throws:
IllegalStateException- if no model was previously createdIllegalArgumentException- if there is not the same number of source and target propertiesNullPointerException- if a parameter isnull
-
addBinder
-
addCollectionStrategy
public BinderModelBuilder<S,T> addCollectionStrategy(Binder.CollectionStrategy strategy, String... propertyNames) -
addCollectionBinder
-
buildInverseModelBuilder
Creates a new model builder inversing the the source and target of this builder.the result build will contains the inversed properties mapping of the original builder.
Other builder attributes are not used used
- Returns:
- the new model builder
-
addCollectionStrategy0
protected BinderModelBuilder<S,T> addCollectionStrategy0(String propertyName, Binder.CollectionStrategy strategy, Binder binder) -
addProperty0
-
getModel
-
clear
protected void clear() -
loadDescriptors
-