All notable changes to this project will be documented in this file.
- Replaces 12-branch if-else chains in
ConversionProcessorFactoryandConversionAnalyzerwith switch expressions and cached processor singletons, eliminating per-call object allocation in the type conversion hot path - Removes
AtomicReferenceallocation inReflectionUtils.getRealTargetusing instanceof pattern matching; eliminates redundantisAnnotationPresentcheck beforegetAnnotation - Replaces stream-based type checks in
ClassUtils.isSpecialTypeandisCustomSpecialTypewith plain loops to avoid lambda allocation on frequently-called paths - Replaces
LinkedListwithArrayListinClassUtils.getMethodsfor better cache locality; replaces intermediatecollect(toList())withtoList()throughout - Replaces inner stream+lambda in
AbstractTransformer.withFieldMappingandwithFieldTransformerwith plain for-each loops - Replaces
keySet().stream().collect(toMap(...))inMapPopulatorwith anentrySet()imperative loop and pre-sizedHashMap; applies instanceof pattern matching to eliminategetClass().equals()calls - Adds JMH microbenchmarks covering simple-bean, complex-bean, map, and type-conversion transformation paths
- Refactors
TransformerImplto use direct field access via reflection utilities instead of string-literal field names, improving maintainability and robustness - Eliminates redundant
ThreadLocalinitialisation by reusing the existingrootSourceStackinstance - Raises JaCoCo code coverage thresholds to 100% across all modules and adds the corresponding branch-coverage tests
- Fixes a regression introduced in 3.0.1 where field transformers applied to collection elements were incorrectly resolved against the root source object instead of the current element, causing a NullPointerException when a flat field name mapping existed with the same name as the destination field
- Fixes an issue that was preventing the transformation of Kotlin classes with default parameter values
- Fixes MissingFieldException when mapping a root-level primitive field into a nested destination object via
withFieldMapping(issue #559)
- Increase the jdk version to 17
- Bumps to the latest version available all the project dependencies
- Replaces javax with jakarta
- Add the possibility to customize the special types avoiding any transformation on them
- Adds the Bill of Materials (BOM) module
- Fixes an issue that was preventing skipping the injection for a given field. For more info about the feature see here.
- Updated
hibernate-validatorversion to6.2.1.Final(was7.0.1.Final). This replaces the jakarta validation with the javax one.
- Removes Java Records objects to avoid hosting projects to being forced to use the
enable-previewoptions
- Adds a function to reset all the defined settings
- Adds the possibility to map the same source field into multiple fields
- Adds the possibility to apply the same field transformation function on multiple fields
- Updated
eg-oss-parentversion to2.4.1(was2.4.0).
- Renames the package from
com.hotelstocom.expediagroup
- Adds the javadoc generation to the release
- Fixes an issue that was preventing the transformation of Object type fields
- Increase the jdk version to 15
- Enables the Java Record transformation