Fork me on GitHub

Release Notes

5.5.1 22/04/2014

Release Notes on GitHub

5.4.0 12/01/2012

Bug Fixes

  • Mapping null values within List to List mapping causes NPE link
  • Multiple superclass mappings, fields mapped over and over link
  • Deep index mapping for untyped Collection link
  • Iterate mapping with more than one hint fails link
  • Inheritance problems with custom-converters on fields link
  • Fix for generic introspection issues link
  • Does not swallow InterruptedException link

Feature Requests

  • Migration to GitHub
  • Web Site Update
  • Mapping Metadata Introspection link
  • Added possibility to convert Enums from Strings link
  • Load mappings via InputStream link

5.3.2 02/15/2011

Bug Fixes

  • NullPointerException when mapping single field to List link
  • StackOverFlow when using MapperAware Custom Converters link
  • ClassMappings get wrong ClassMap in polymorphism case link
  • Mapping of XMLGregorianCalendar not working link
  • Thread hang during initialization link
  • Add ability to define is-accessible at the type level link
  • one-way doesn't work at the mapping level link
  • Mapping String collections with "iterate" fails link

Feature Requests

  • Get a handle on mappedFields property from CustomConverter. link
  • BigDecimal and Double mapping link
  • Integrate BeanUtils 1.8 converters link

5.3.1 11/15/2010

Bug Fixes

  • DozerBeanMapper initialization is not thread safe link
  • Collection Generic type not resolved on field levellink

Feature Requests

  • Apache Camel Integration Improvement link

5.3.0 10/10/2010

Bug Fixes

  • ReflectionUtils.findAMethod can escape by returning null link
  • Unnecessary call to a method link
  • XMLGregorianCalendar instantiation fails link
  • DateFormat instantiation fails link
  • Mixed-type values in Map are incorrectly converted link
  • Fail to map an object graph correctly link
  • Semi-undocumented dependency on XMLBeans link
  • Bug with Javassist link
  • Bug in TypeResolver with generics/inheritance link
  • Remove-orphans is not handled when mapping java.util.Map link
  • Hard to use XML config when mapping from/to java.util.Map link
  • Deep property mapping and is-accesssible=true incompatible link

Feature Requests

  • Alternative Java API for mappings link
  • Commons Logging replaced with SLF4J link
  • Improved Hibernate proxy handling link
  • Warning on duplicate mappings link
  • Improved generics handling link

5.2.2 6/9/2010

Bug Fixes

  • CustomConverterContainer puts null results in cache link
  • NPE in SimpleElementReader link
  • DozerConverter fails on primitive to primitive map link
  • T extends Enum<StatisticType> link
  • Statistics are not thread safe link
  • Copy-by-reference ignored when object is in a Set link
  • ConcurrentModificationException on the first map link
  • Mapping primitive List -> primitive array does not work link

Feature Requests

  • Allow static createMethod on any class link
  • Improve debug logging link

5.2.1 4/28/2010

Bug Fixes

  • Forgotten Custom Converter Parameter in Map-backed Mappings link
  • DozerConverter does not Check for Runtime Types Properly link
  • Support for XMLGregorianCalendar link
  • Support of Map implementations other than HashMap link

Feature Requests

  • Dozer OSGi Bundle link
  • Expression Language Support (javax.el) link
  • Drop Dependency on Apache Commons Collections link

5.2.0 1/24/2010

Bug Fixes

  • Failing Top Level Mapping (this -> this) link
  • NPE on Missing Getter link
  • Exception Message Imrovement link
  • Iterate Mapping does not Check Previously Mapped Objects link
  • Stack Overflow on Recursive Object Graphs link
  • Race Condition in Statistics Area link
  • Date to Calendar Convertation link
  • Stored References to Generated Classes link
  • Fail on null Value in Set link
  • Exception on Mapping of XMLGregorianCalendar link
  • Non-Standard getter/setter names and deep-mapping issue link
  • Fix for null Element in Array link

Feature Requests

  • Support for Spring Resources link
  • Support for Collections without Setters link
  • Custom Converter with Injected Mapper link

5.1 8/25/2009

Bug Fixes

  • JAXBBeanFactory can not create bean for nested type link
  • Mapping definition of super interface is ignored link
  • Inheritance mapping with proxy object link
  • Processing Map with Null entry fails link
  • Date Format is not used for collection elements link
  • Memory Leak on Web Container reload when using JMX Beans link
  • Hints does not work for inherited classes link
  • Null values are not copied to destination Map link
  • Map with List entries is mapped incorrectly link
  • NPE when missing one of the class names in mapping definition link

Feature Requests

  • Support for Generic return types link
  • Generics in Custom Converter API link
  • Support for custom proxy resolver link
  • Support for custom class loaders link

5.0 3/3/2009

Migration Guide

Change Description New - Dozer 5.0 Old - Dozer 4.4.1
Increased minimum JDK requirements Requires JDK 1.5+ Required JDK 1.4+
Repackaged Dozer classes org.dozer net.sf.dozer.util.mapping
Maven group id net.sf.dozer net.sf.dozer
Added Generics to public api A dest =, A.class) A dest = (A), A.class)
Switched to XSD instead of DTD beanmapping.xsd dozerbeanmapping.dtd
Renamed some public Interfaces BeanFactory BeanFactoryIF
CustomFieldMapper CustomFieldMapperIF
Mapper MapperIF
Repackaged some public Interfaces org.dozer.CustomConverter net.sf.dozer.util.mapping.converters.CustomConverter
org.dozer.ConfigurableCustomConverter net.sf.dozer.util.mapping.converters.ConfigurableCustomConverter
org.dozer.DozerEventListener net.sf.dozer.util.mapping.event.DozerEventListener
Upgraded 3rd party dependencies commons-collections 3.2.1 commons-collections 3.1
commons-beanutils 1.8.0 commons-beanutils 1.7.0
commons-lang 2.4 commons-lang 2.2
commons-logging 1.1.1 commons-logging 1.0.3
junit 4.5 junit 3.8

Bug Fixes and Patches

  • DozerResolver should resolve the DTD using class classLoader link
  • Inheritance + Map-Id link
  • Exclude test classes from the dist jar link
  • Timestamp mapping broken link
  • Map method lookup link
  • DozerBeanMapper doesn't resolve graphs properly link
  • Bug using MapIds link
  • Bug with MapIds using Hints link

Feature Requests

  • Change maven group id link
  • Repackage dozer classes link
  • Add Generics to public Mapper interface link
  • Upgrade to JUnit 4 link
  • Upgrade 3rd party dependencies link
  • Switch to XSD instead of DTD link
  • Migrate to JDK 5 link
  • Rename some public interfaces link

4.4.1 1/31/2009

Bug Fixes

  • Using ContextClassLoader to load classes link

4.4 12/27/2008

Bug Fixes and Patches

  • Global Configuration is Ignored link
  • Throw exception if more than one global configuration found link
  • Problem loading Dozer bean mapper from Spring link
  • Error in loading mapping files located in jar file link
  • NullPointerException link
  • Problem with Java 1.5 enum and inheritance link
  • Deep Index Custom Converter Problem link
  • Bug fix not indexed properties (List - Vector) link
  • Deep index patch link
  • Collection deep index issue link
  • Deep Mapping with custom setter method does not work when default setter exists link
  • Improve an exception message link

Feature Requests

  • Reorganize test mapping and config files in src tree link

4.3 12/03/2008

Bug Fixes

  • Class hierarchies are not mapped in descending order link
  • Map-backed properties are not copied using deep mapping link
  • Mapping with remove-orphans changes the mapped list order link
  • Mapping with remove-orphans should call remove() on the list link
  • Bug in ReflectionUtils.getInterfacePropertyDescriptors() link
  • Classloading approach is not recommended link
  • NullPointerException when mapping a map link
  • Subclasses are not recognized link
  • Mapping with parent-child relation does not work link
  • Missing destination read method throws NPE link
  • MappingProcessor does not use hints from DestHintContainer link

Feature Requests

  • Backport to commons-collections 3.0 link
  • Mask in copy-by-reference link
  • Support for Javassist proxy objects link
  • Config parameter for Custom Converter link
  • Fix FindBugs issues link
  • Documentation update link

4.2.1 6/22/2008

Bug Fixes

4.2 12/16/2007

Bug Fixes

  • Update spring custom converter documentation 1841449
  • Trim Strings issue with data type conversion 1841448
  • Orphans not removed from Sets 1822421
  • TimeZone not copied when mapping Calendar 1815199
  • Problem when getters and setters are on different interfaces 1814758
  • Unexpected exception in LogMsgFactory 1797808
  • Map-backed mapping with map-id 1796344
  • Custom converter called on null source field 1792048
  • Patch for determining source field type 1823435

4.1 09/22/2007

Bug Fixes

  • Inheritance issue(s) with proxied data objects 1777357
  • Array mapping with XMLBeans throws NoSuchMehtod exception 1773425
  • Mapping Started Event Not firing on mapping 1768660
  • Inheritance mapping not working correctly - Part Deux 1757573
  • Test Cases section not diplaying correctly in web site docs 1657562

Feature Requests

  • Update inheritance mapping doc's 1778316
  • Repackage functional/e2e tests 1777076
  • Using multiple instances of CustomConverter 1770440
  • Dozer vs. XmlBeans generated primitive types 1764916
  • DozerEvent - sourceObject always null. 1762642
  • Path to ResourceLoader to accept any URL 1757321
  • Run existing tests in both unproxied and cglib proxied mode 1756584
  • Removal of orphans in destination collection 1755838
  • Allow global configuration of relationship-type 1750158

4.0 07/15/2007

Bug Fixes

  • Field custom converter bug with Map data types 1749982
  • Prob w/ map-get-method and date-format 1733793
  • Global custom converters missing in default ClassMap 1728385
  • Copy Reference mapping instructions ignored for subclasses 1728159
  • mvn eclipse:eclipse does not get all dependencies 1727717
  • Prob w/ map-get-method and CustomConverter 1724104

Feature Requests

  • Misc code cleanup and refactoring 1754179
  • Refactor/Clean Up Dest Bean Creator 1752379
  • Mapping deep level field in Indexed structure 1752329
  • Add map-id to field mapping debug output 1750157
  • Push mapping value hierarchy down to ClassMap and FieldMap 1749805
  • Add bidirectional relationship between FieldMap and ClassMap 1749804
  • Don't expose DozerField and DozerClass objects 1749802
  • Remove *PRIME* feature from the docs 1736864
  • Major refactor of Map backed properties 1734665
  • Repackage 1734228
  • Load classes consistently 1734163
  • Cleanup of internal exception handling 1734161
  • Add config support for auto trimming of strings 1707034
  • Mapping deep level field in Indexed structure 1473800

3.4 05/19/2007

Bug Fixes

  • Incorrectly recognizing JDK 6.0 1717547
  • Null pointer on MappingProcessor at Line 282 1717318
  • Change the way we determine JDK Version 1715819
  • Lost and Duplicated Objects 1715496
  • Fix Map VO with no custom mappings 1713550
  • Propagate exceptions while parsing allowed-exceptions xml 1713242
  • NPE when Date String when no date format specified 1711580
  • inappropriate subclass mappings applied 1674199
  • Inheritance mapping not working correctly 1486105
  • bidirectionnal mapping with sets subclasses 1664984

Feature Requests

  • Change util classes to static 1713604
  • Add PMD and Findbugs reports 1712886
  • Remove NotFoundException and DozerRuntimeExceptions 1712513
  • Add class level javadoc for classes missing it 1696636

3.3.1 04/28/2007

Bug Fixes

  • Remove Spring runtime dependency. Revert back to using Apache Commons to get Property Descriptors 1709117

3.3 04/26/2007

Bug Fixes

  • Throw exception if map-id cannot be resolved 1706291
  • When adding default field mappings, skip getter's w/params 1705525
  • When discovering default field mappings require corresponding get/set method 1704085
  • Global Bean Factory not applied to default mappings 1700448
  • Non-Cumulative mapping issues 1698069

Feature Requests

  • Use Spring's BeanUtils.getPropDescriptors() instead of jakarta 1707014
  • When auto registering mbeans check if mbean is already reg'd 1697294
  • Recursive object mapping not working with interfaces 1658168
  • Improve collection handling, esp. non-cumulative mapping 1482749

3.2.1 04/08/2007

Feature Requests

  • Boolean to number auto converstion 1695408
  • Added statistics for custom converter mappings 1695380
  • Small performance improvement for jdk1.5 users 1694734

3.2 04/03/2007

Bug Fixes

  • 3.1 Release not backwards compatible with JDK 1.3 1692620
  • Destination Value always null in CustomConverter 1679996
  • Indexed Mapping broke when is-accessible is true 1673152
  • Allowed Exceptions not working for default mappings 1658569
  • Remove is-accessible option from configuration and mapping sections in the DTD 1692603
  • Set mapping problem when field starts in upper case in mapping xml file 1549738

Feature Requests

  • Auto register Dozer JMX MBeans with the platform mbean server 1690327
  • Private constructor support when creating new instances of data objects 1690298
  • Create quick reference page for mapping xml options 1657611
  • Set/get method for last field in deep-chaing 1456486
  • Add documentation for existing custom converter support of Array types 1691021

3.1 03/25/2007


Bug Fixes

  • Dramatic Performance Degradation with Interfaces 1684237

Feature Requests

3.0 02/08/2007

Bug Fixes

  • Fixed custom converter cache 1644966
  • Fixed wildcard mapping not working with interface inheritance 1636354
  • Fixed inherited setters not found with interface inheritances 1637106
  • Fixed mapping from object to array 1616229
  • Fixed ClassMapFinder does not find ClassMap for interfaces 1615377
  • Added Spring FactoryBean 1613791
  • Fixed is-accessible problem with abstract super classes 1599457
  • Fixed ClassMap not found for interface mapping 1554793
  • Fixed issue with custom converters not being invoked for null values 1563795

Feature Requests

  • Upgrade build infrastructure to Maven2 1651498
  • Removed dependency on log4j 1644537
  • Misc performance improvements 1645687
  • Cleaned up indexed logic and custom converter logic 1620589
  • Prevent infinite loop for bi-directional data object relationships 1596766
  • Added support for custom converters at field level 1476780
  • Modified custom converting matching logic 1481357
  • Added support for custom field mappers 1654784

2.4 10/14/2006

Bug Fixes

  • Added ability to load custom mapping files from outside of classpath 1563130
  • Runtime exceptions no longer wrapped in MappingException 1561837
  • Fixed primitive array to List mapping issue 1561184
  • Fixed ConcurrentModificationException 1550275
  • Fixed Proxy/Hibernate Lazy Init Object Issues 1572949

Feature Requests

  • Request for passing up RuntimeException when stop on error is set to false 1513128
  • Request for JAXB object factory 1572996
  • Request for allowing alternate declaration of mapping files 1480372
  • Request for proper null conversion for "proxy" mappings 1471808
  • Request for Mapping deep level field in Indexed structure 1473800

2.3 09/01/2006

Bug Fixes

  • Fixed String to indexed Set using a destination hint 1543202
  • Fixed duplicate map-id's found 1539461
  • Fixed unable to map SortedSet subinterface 1538441
  • Fixed source property desciptor caching 1537668
  • Fixed isAccessible not being able to find private fields 1503670
  • Fixed index mapping with Set 1480666
  • Attempted to fix ConcurrentModificationException 1550275

Feature Requests

  • Request for new logging category for startup/init information 1475235
  • Request for bypass of set dest value when the dest value already equals src value 1481427
  • Request to use static map of threadsafe primitive + wrapper converters 1481500
  • Request to make DozerBeanMapper.getMappingProcessor() protected 1470425
  • Request for improve testability/readability of the code base 1543302
  • Request to remove SourceField, DestinationField classes 1480804
  • Request to remove SrcClass, DestClass, SrcHint, DestHint, and Hydrate classes 1539455
  • Request to move duplicate assemble key logic to common place 1481505
  • Request to add more unit testing around JMX controller classes 1481538
  • Request to make map-id more intuitive from a coding perspective 1484397
  • Request to clean up PMD errors 1539639
  • Request to add more comments to the code base 1543264

2.2 04/29/2006

2.1.1 04/18/2006

  • Fixed performance degradation.

2.1 03/15/2006

2.0.2 02/29/2006

  • Added PDF Users Guide
  • Request for more log.dubug statements to help diagnosing mapping problems RFE 1445372
  • Fixed log.error when an exception is thrown and stop on errors is true RFE 1445376

2.0.1 02/02/2006

  • Request for allow override to exclude mapping of null src field value RFE 1413480
  • Request for allow override to exclude mapping of "" src field value RFE 1417170
  • Request check mapping file for duplicate entries RFE 1416905
  • Fixed Hint is not used for Array to List Issue 1413429
  • Fixed Context Based Mapping and Nested Context based mapping does not work unless a Map Issues 1413443 and 1413451
  • Fixed LinkedHashMap not compatible with JDK 1.3 Issues 1419357
  • Fixed NPE when sourceFieldValue is null in logFieldMappingError() method

2.0 01/16/2006 12/08/2005

  • Request for ability to have overloaded set() methods. RFE 1375559
  • Request for upgrade to commons-lang-2.1. RFE 1375457
  • Request for ability to map field w/out get() set() Methods. This is a partial implementation. RFE 1373285
  • Request for if no destination for List, Set, Map inst. source class when appropriate. RFE 1373219
  • Request for enhanced ability to copy map to map. RFE 1372011
  • Request for Set to Array, Array to Set, Set to List, List to Set. RFE 1370482
  • Fixed compatibility with JDK 1.3. At one point we had this...and then reverted back by using LinkedHashSet.
  • Fixed Null Value in String Array causes NPE Issue 1373824
  • Fixed Deep property mapping and Inheritance Issue 1372000

1.5.8 11/29/2005

1.5.7 11/15/2005

  • Added support to map to/from a Map or Struts *like* DynaActionForm object. Dozer now supports mapping to/from any Map backed property. It can implement the Map Interface or be a custom map object: Forum Thread 452530
  • Request for enhancement declare a class as copy-by-reference RFE 1345821
  • Request for enhancement No way to reference self (this) in field mapping RFE 1277096
  • Request for enhancement for Collapse <field-deep> tag into <field> tag. All <field-deep> tags need to be replaced with <field> tags. RFE 1347953
  • Applied patch for Spring bean factory injection: Patch 1349799
  • Fixed Configuration Overrides Not Working Issue 1352438
  • Fixed multiple levels of custom mapping processed in wrong order Issue 1346370
  • Fixed regression on finding most specific destination mapping Issue 1346342
  • Fixed ExcludeFieldMap not inherited Issue 1345816

1.5.6 10/30/2005

  • <field-deep> enhancements: Support for copy-by-reference and type (one-way) attributes.
  • Added News section on home page. Latest release number is now on left-hand side navigation column.
  • Added support for copying an object by reference: Forum Thread
  • Request for enhancement for Custom Bean Creation Factories: RFE 1325412
  • Applied patch for MappingProcessor exception handling refactoring: Patch 1333634
  • Applied patch for finding most specific mapping: Patch 1325524
  • Fixed Empty String value is getting lost during mapping Issue 1342611
  • Fixed one-way overriden by default field mappings Issue 1339074
  • Fixed Using an Interface for a Custom Converter Class Issue 1342127
  • Fixed wrong destination object for list of custom converted object Issue 1332606
  • Fixed custom convertor not associated with hints Issue 1321647

1.5.5 10/13/2005

  • Fixed incorrect set mapping for existing destination set Issue
  • Fixed Use of Default ClassMap with date formatting Issue
  • If the destination object was mapped and is NULL, we now map it.
  • When mapping Array -> Array or List -> Array do not need hints anymore. This does not apply to Object Arrays.
  • Fixed Another Hydrate and Non-Cumulative Issue
  • Fixed DTD has field-method and field-iterate methods Issue
  • Fixed Field-Deep String to List Error Issue

1.5.4 09/20/2005

  • Added ability to Map the destination object to Interfaces, Abstract Classes, or Super Classes. See this thread for more information
  • Fixed the Hydrate and Non-Cumulative Issue
  • Removed samples folder until we can make it more up-to-date.

1.5.3 09/16/2005

  • Fixed Custom Mapping and made the interface cleaner issue
  • Fixed blank string conversion bug 1292080

1.5.2 09/14/2005

  • Added support for multiple source and destination hints in Collection and Array mapping
  • Fixed Mapping iheritance issue(s)
  • Iterate type methods can now return an Iterator for their get() method.

1.5.1 09/07/2005

  • Added <field> level one-way mapping. i.e. <field type="one-way">
  • Removed <field-method> and <field-iterate-method> and now use the <field> in combination with attributes. See this thread for more information. This has also been updated in the documentation.
  • DTD validation was disabled. It is now working.
  • Thanks to Seb :) the ClassLoader issues have been put to bed. 08/31/2005

  • Fixed ClassLoader issue

1.5.0 08/30/2005

  • Fixed map by reference defect 1264347
  • Integrated with Spring. Dozer can be used statically and as a bean
  • Fixed a global wildcard bug.
  • Upgraded to caster 0.9.6 to fix for allowing whitespace in the XML files
  • Addressed adding vs. updating List. We were not truly updating the list

1.4.6 08/19/2005

  • Addressed adding vs. updating List objects
  • Added GenericFieldMap which extends FieldMap so we can have custom behavior on simple field mappings.
  • Finally :) fixed ClassLoader bug 1263159
  • Dozer now supports overriding getter() and setter() method names
  • Addressed Cloneable VS SerializationUtils.clone() issue

1.4.5 08/18/2005

  • Addressed the ClassLoader defect issue
  • Addressed the Pass By Reference issue
  • Addressed the field exclude getter() setter() issue

1.4.4 08/16/2005

  • Added one-way mapping at mapping level into DTD
  • Added unit test for one-way mapping
  • <field> level tag source and destination hint functionality did not work unless it was an array or list. This has been fixed.

1.4.3 08/15/2005

  • Moved to DTD validation from XSD validation per defect ID 1256049
  • Added <field-exclude> tag.
  • Fixed bug where branch and lower level objects which were on the source and already been instantiated were being new()ed up on conversion back to the source.
  • If a Java Bean did not have a getter() or setter() method we would throw NPE. We now throw a MappingException with description.

1.4.2 08/10/2005

  • Support for JDK 1.3

1.4.1 07/28/2005

  • Deep field output for logging arrays
  • Field-deep tag now supports sourceTypeHint and destinationTypeHints

1.4 07/11/2005

  • Removed test data retrieval from Spring
  • MapperException is now a RuntimeException
  • Fields in a base class can now be mapped in the mapping file and all of the corresponding sub-classes will not have to specify those fields
  • Multiple mapping files can be added to the dozerContext.xml file.

1.3.3 06/07/2005

  • Added Getting Started section to documentation
  • Fixed bug inability to locate mapping file in a jar file at runtime

1.3.2 06/03/2005

  • Fixed bug 1214291 NullPointerException when no fields
  • Changed license to Apache, Version 2.0

1.3.1 06/02/2005

  • Fixed incorrect error message stating that beanmapping.xml was not in the classpath
  • Fixed documentation so that images appear offline
  • Added note about using file

1.3 06/01/2005

  • Fixed deep field mapping logic
  • Renamed castormappings.xml to dozercastormappings.xml
  • Changed default dozer mappings file to dozerBeanMapping.xml. beanmapping.xml is still supported for backwards compatability.
  • Allow override of default mapping file that will get loaded by using system property. -Ddozer.configuration=myBeanMapping.xml
  • Resolved some of the pmd errors
  • Added a validate method to Mapping Reader. We need to add more.
  • Apply top level configuration props to children during initialization process. Removed double checking in the code
  • Apply top level configuration props to default class map in processor.
  • Added some todos to working doc.
  • Added deep mapping examples to samples
  • XSD Schema validation
  • XSD Schema is now on the website

1.2 05/03/2005

  • Created a dozer-full.jar file which includes all of the run-time dependency classes needed
  • Mappings file can now be empty except for begin and end mappings tag
  • Added global configuration XML to contain settings for wildcard, dateformat, error handling, and custom converters
  • changes to allow each mapping element override global settings, and some even at the field level
  • added a check for infinite loops during mapping
  • user can specify whether or not Dozer throws exceptions or eats exceptions
  • added the ability to specify custom converter objects to handle special mapping/conversion cases
  • created a mapping processor object to allow the use of local variables. Mapper class methods are still static for ease of use.
  • Added more unit tests, as always

1.1 04/06/2005

  • fixed mapping bug with methodMap and methodDehydrate where it would transform but not convert
  • many infrastructure changes: moved beanmapping.xml parsing to castor
  • fixed bug where bogus data conversion from String to Wrapper would not produce any errors
  • The code was changed to get the default mappings after it loads the custom mappings
  • String conversions to a Date object based on a date format
  • beanmapping.xml file now has field-deep, field-hydrate, field-dehydrate, field-method, and field-iterate-method elements
  • Added more unit tests