Class TransformerImpl
java.lang.Object
com.expediagroup.transformer.AbstractTransformer<BeanTransformer,java.lang.String,TransformerSettings<java.lang.String>>
com.expediagroup.beans.transformer.TransformerImpl
- All Implemented Interfaces:
BeanTransformer
,Transformer<BeanTransformer>
public class TransformerImpl extends AbstractTransformer<BeanTransformer,java.lang.String,TransformerSettings<java.lang.String>>
Utility methods for populating Mutable, Immutable and Hybrid JavaBeans properties via reflection.
The implementations are provided by BeanUtils.
-
Field Summary
Fields inherited from class com.expediagroup.transformer.AbstractTransformer
cacheManager, classUtils, reflectionUtils, settings, transformerFunctionRegex
-
Constructor Summary
Constructors Constructor Description TransformerImpl()
-
Method Summary
Modifier and Type Method Description protected boolean
canBeInjectedByConstructorParams(java.lang.reflect.Constructor constructor)
Checks if the source class field names can be retrieved from the constructor parameters.protected <T, K> java.lang.Object[]
getConstructorArgsValues(T sourceObj, java.lang.Class<K> targetClass, java.lang.reflect.Constructor constructor, java.lang.String breadcrumb)
Retrieves all the constructor argument values.protected <T, K> K
handleInjectionException(T sourceObj, java.lang.Class<K> targetClass, java.lang.reflect.Constructor constructor, java.lang.String breadcrumb, java.lang.Object[] constructorArgs, boolean forceConstructorInjection, java.lang.Exception e)
Handles the exception thrown by method:injectValues
.void
resetFieldsTransformationSkip()
Removes all the configured fields to skip.BeanTransformer
setCustomBuilderTransformationEnabled(boolean customBuilderTransformationEnabled)
It allows to enable/disable the transformation of Java Bean with a custom Builder pattern.BeanTransformer
setDefaultValueForMissingField(boolean useDefaultValue)
It allows to configure the transformer in order to set a default value in case some field is missing in the source object.BeanTransformer
setDefaultValueForMissingPrimitiveField(boolean useDefaultValue)
It allows to enable/disable the set of the default value for primitive types in case they are null.BeanTransformer
setFlatFieldNameTransformation(boolean useFlatTransformation)
It allows to configure the transformer in order to apply a transformation function on all fields matching the given name without keeping in consideration their full path.BeanTransformer
setPrimitiveTypeConversionEnabled(boolean primitiveTypeConversionEnabled)
It allows to enable/disable the automatic conversion of primitive types.BeanTransformer
setValidationEnabled(boolean validationEnabled)
It allows to enable the object validation.BeanTransformer
skipTransformationForField(java.lang.String... fieldName)
Allows to specify all the fields for which the transformation have to be skipped.<T, K> K
transform(T sourceObj, java.lang.Class<? extends K> targetClass)
Copies all properties from an object to a new one.protected <T, K> K
transform(T sourceObj, java.lang.Class<? extends K> targetClass, java.lang.String breadcrumb)
Copies all properties from an object to a new one.<T, K> void
transform(T sourceObj, K targetObject)
Copies all properties from an object to a new one.protected <T, K> void
transform(T sourceObj, K targetObject, java.lang.String breadcrumb)
Copies all properties from an object to a new one.Methods inherited from class com.expediagroup.transformer.AbstractTransformer
removeFieldMapping, removeFieldTransformer, reset, resetFieldsMapping, resetFieldsTransformer, withFieldMapping, withFieldTransformer
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.expediagroup.transformer.Transformer
removeFieldMapping, removeFieldTransformer, reset, resetFieldsMapping, resetFieldsTransformer, withFieldMapping, withFieldTransformer
-
Constructor Details
-
TransformerImpl
public TransformerImpl()
-
-
Method Details
-
transform
protected final <T, K> K transform(T sourceObj, java.lang.Class<? extends K> targetClass, java.lang.String breadcrumb)Copies all properties from an object to a new one.- Type Parameters:
T
- the Source object typeK
- the target object type- Parameters:
sourceObj
- the source objecttargetClass
- the destination object classbreadcrumb
- the full path of the current field starting from his ancestor- Returns:
- a copy of the source object into the destination object
-
transform
protected final <T, K> void transform(T sourceObj, K targetObject, java.lang.String breadcrumb)Copies all properties from an object to a new one.- Type Parameters:
T
- the Source object typeK
- the target object type- Parameters:
sourceObj
- the source objecttargetObject
- the destination objectbreadcrumb
- the full path of the current field starting from his ancestor
-
handleInjectionException
protected <T, K> K handleInjectionException(T sourceObj, java.lang.Class<K> targetClass, java.lang.reflect.Constructor constructor, java.lang.String breadcrumb, java.lang.Object[] constructorArgs, boolean forceConstructorInjection, java.lang.Exception e)Handles the exception thrown by method:injectValues
. In case an exception is raised due to missing parameter names it tries to inject through the constructor anyway.- Type Parameters:
T
- the sourceObj object typeK
- the target object type- Parameters:
sourceObj
- sourceObj the source objecttargetClass
- the destination object classconstructor
- the all args constructorbreadcrumb
- the full path of the current field starting from his ancestorconstructorArgs
- the constructor argumentsforceConstructorInjection
- if true it forces the injection trough constructore
- the raised exception- Returns:
- a copy of the source object into the destination object
- Throws:
InvalidBeanException
-InvalidBeanException
if the target object is not compliant with the requirements
-
canBeInjectedByConstructorParams
protected boolean canBeInjectedByConstructorParams(java.lang.reflect.Constructor constructor)Checks if the source class field names can be retrieved from the constructor parameters.- Parameters:
constructor
- the all args constructor- Returns:
- true if the parameter names are defined or the parameters are annotated with:
ConstructorArg
-
getConstructorArgsValues
protected <T, K> java.lang.Object[] getConstructorArgsValues(T sourceObj, java.lang.Class<K> targetClass, java.lang.reflect.Constructor constructor, java.lang.String breadcrumb)Retrieves all the constructor argument values. This methods uses theConstructorArg
to retrieve the argument values- Type Parameters:
T
- the sourceObj object typeK
- the target object type- Parameters:
sourceObj
- sourceObj the source objecttargetClass
- the destination object classconstructor
- the all args constructorbreadcrumb
- the full path of the current field starting from his ancestor- Returns:
- a list containing the values for the destination constructor.
- Throws:
InvalidBeanException
-InvalidBeanException
if there is an error while retrieving the constructor args parameter
-
setDefaultValueForMissingField
It allows to configure the transformer in order to set a default value in case some field is missing in the source object. If set to true the default value is set, if false if it raises a:MissingFieldException
in case of missing fields.- Specified by:
setDefaultValueForMissingField
in interfaceBeanTransformer
- Parameters:
useDefaultValue
- true in case the default value should be set, false if it should raise a:MissingFieldException
in case of missing field.- Returns:
- the
BeanTransformer
instance
-
setDefaultValueForMissingPrimitiveField
It allows to enable/disable the set of the default value for primitive types in case they are null.- Specified by:
setDefaultValueForMissingPrimitiveField
in interfaceBeanTransformer
- Parameters:
useDefaultValue
- if true the default value for the primitive type is set. By default it's true.- Returns:
- the
BeanTransformer
instance
-
setFlatFieldNameTransformation
It allows to configure the transformer in order to apply a transformation function on all fields matching the given name without keeping in consideration their full path. If set to true the default value is set, if false if it raises a:MissingFieldException
in case of missing fields.- Specified by:
setFlatFieldNameTransformation
in interfaceBeanTransformer
- Parameters:
useFlatTransformation
- indicates if the transformer function has to be performed on all fields matching the given name without keeping in consideration their full path.- Returns:
- the
BeanTransformer
instance
-
setValidationEnabled
It allows to enable the object validation.- Specified by:
setValidationEnabled
in interfaceBeanTransformer
- Parameters:
validationEnabled
- if true the validation is performed.- Returns:
- the
BeanTransformer
instance
-
setPrimitiveTypeConversionEnabled
It allows to enable/disable the automatic conversion of primitive types.- Specified by:
setPrimitiveTypeConversionEnabled
in interfaceBeanTransformer
- Parameters:
primitiveTypeConversionEnabled
- if true primitive types are transformed automatically. By default it's false.- Returns:
- the
BeanTransformer
instance
-
setCustomBuilderTransformationEnabled
public BeanTransformer setCustomBuilderTransformationEnabled(boolean customBuilderTransformationEnabled)It allows to enable/disable the transformation of Java Bean with a custom Builder pattern.- Specified by:
setCustomBuilderTransformationEnabled
in interfaceBeanTransformer
- Parameters:
customBuilderTransformationEnabled
- if true Java Beans with a custom Builder pattern are transformed automatically. By default it's false.- Returns:
- the
BeanTransformer
instance
-
transform
public final <T, K> K transform(T sourceObj, java.lang.Class<? extends K> targetClass)Copies all properties from an object to a new one.- Specified by:
transform
in interfaceBeanTransformer
- Type Parameters:
T
- the Source object typeK
- the target object type- Parameters:
sourceObj
- the source objecttargetClass
- the destination object class- Returns:
- a copy of the source object into the destination object
-
transform
public final <T, K> void transform(T sourceObj, K targetObject)Copies all properties from an object to a new one.- Specified by:
transform
in interfaceBeanTransformer
- Type Parameters:
T
- the Source object typeK
- the target object type- Parameters:
sourceObj
- the source objecttargetObject
- the destination object
-
skipTransformationForField
Allows to specify all the fields for which the transformation have to be skipped.- Specified by:
skipTransformationForField
in interfaceBeanTransformer
- Parameters:
fieldName
- the destination object's field(s) name that have to be skipped- Returns:
- the
BeanTransformer
instance
-
resetFieldsTransformationSkip
public void resetFieldsTransformationSkip()Description copied from interface:BeanTransformer
Removes all the configured fields to skip.- Specified by:
resetFieldsTransformationSkip
in interfaceBeanTransformer
-