CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-github-dozermapper--dozer-core

Java Bean to Java Bean mapper that recursively copies data from one object to another

Pending
Overview
Eval results
Files

builder-configuration.mddocs/

Builder Configuration

Fluent API for creating and configuring mapper instances with custom settings, mapping files, converters, and other advanced options.

Capabilities

Basic Builder Creation

Creates a new builder instance with default configuration.

/**
 * Creates new builder. All the configuration has its default values.
 * @return new instance of the builder.
 */
public static DozerBeanMapperBuilder create();

Default Mapper Creation

Creates a mapper with default configuration and optional default mapping file.

/**
 * Creates an instance of Mapper, with all the configuration set to its default values.
 * The only special handling is for mapping file. If there is a file with name dozerBeanMapping.xml
 * available on classpath, this file will be used by created mapper. Otherwise the mapper is implicit.
 * @return new instance of Mapper with default configuration and optionally initiated mapping file.
 */
public static Mapper buildDefault();

Usage Example:

import com.github.dozermapper.core.Mapper;
import com.github.dozermapper.core.DozerBeanMapperBuilder;

// Create with defaults - looks for dozerBeanMapping.xml on classpath
Mapper mapper = DozerBeanMapperBuilder.buildDefault();

// Create custom builder
DozerBeanMapperBuilder builder = DozerBeanMapperBuilder.create();

Mapping Files Configuration

Registers XML mapping configuration files.

/**
 * Adds mappingFiles to the list of URLs to be used as mapping configuration. 
 * It is possible to load files from file system via file: prefix. 
 * If no prefix is given, loaded from classpath.
 * @param mappingFiles URLs to mapping files to be added.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withMappingFiles(String... mappingFiles);

/**
 * Adds mappingFiles to the list of URLs to be used as mapping configuration.
 * @param mappingFiles URLs to mapping files to be added.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withMappingFiles(List<String> mappingFiles);

Usage Example:

Mapper mapper = DozerBeanMapperBuilder.create()
    .withMappingFiles("mapping1.xml", "mapping2.xml")
    .withMappingFiles("file:/path/to/external/mapping.xml")
    .build();

ClassLoader Configuration

Sets custom classloader for Dozer to use when loading classes and resources.

/**
 * Sets DozerClassLoader to be used whenever Dozer needs to load a class or resource.
 * @param classLoader custom classloader to be used by Dozer.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withClassLoader(DozerClassLoader classLoader);

/**
 * Sets classloader to be used whenever Dozer needs to load a class or resource.
 * @param classLoader custom classloader to be used by Dozer. Will be wrapped into DefaultClassLoader.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withClassLoader(ClassLoader classLoader);

Custom Converter Registration

Registers custom converters for specialized type mappings.

/**
 * Registers a CustomConverter for the mapper. Multiple calls will register converters in order.
 * @param customConverter converter to be registered.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withCustomConverter(CustomConverter customConverter);

/**
 * Registers CustomConverters for the mapper.
 * @param customConverters converters to be registered.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withCustomConverters(CustomConverter... customConverters);

/**
 * Registers CustomConverters for the mapper.
 * @param customConverters converters to be registered.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withCustomConverters(List<CustomConverter> customConverters);

Usage Example:

Mapper mapper = DozerBeanMapperBuilder.create()
    .withCustomConverter(new DateToStringConverter())
    .withCustomConverter(new MoneyConverter())
    .build();

XML Mapping Streams

Registers suppliers of XML mapping InputStreams for dynamic mapping configuration.

/**
 * Registers a supplier of InputStream which is expected to contain data of XML mapping file.
 * @param xmlMappingSupplier supplier of a Dozer mapping XML InputStream.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withXmlMapping(Supplier<InputStream> xmlMappingSupplier);

Programmatic Mapping Builders

Registers Java-based mapping builders for programmatic mapping configuration.

/**
 * Registers BeanMappingBuilders for the mapper. 
 * Builders are executed at the moment of build() method call.
 * @param mappingBuilder mapping builder to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withMappingBuilder(BeanMappingBuilder mappingBuilder);

/**
 * Registers BeanMappingBuilders for the mapper.
 * @param mappingBuilders mapping builders to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withMappingBuilders(BeanMappingBuilder... mappingBuilders);

/**
 * Registers BeanMappingBuilders for the mapper.
 * @param mappingBuilders mapping builders to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withMappingBuilders(List<BeanMappingBuilder> mappingBuilders);

Generic Mapping Builders

Registers generic mapping builders for advanced mapping scenarios.

/**
 * Registers BeanMappingsBuilders for the mapper.
 * @param beanMappingsBuilder mapping builder to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withBeanMappingsBuilders(BeanMappingsBuilder beanMappingsBuilder);

/**
 * Registers BeanMappingsBuilders for the mapper.
 * @param beanMappingsBuilder mapping builders to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withBeanMappingsBuilders(BeanMappingsBuilder... beanMappingsBuilder);

/**
 * Registers BeanMappingsBuilders for the mapper.
 * @param beanMappingsBuilder mapping builders to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withBeanMappingsBuilders(List<BeanMappingsBuilder> beanMappingsBuilder);

Event Listener Registration

Registers event listeners for mapping lifecycle hooks.

/**
 * Registers EventListeners for the mapper. Multiple calls register listeners in order.
 * @param eventListener listener to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withEventListener(EventListener eventListener);

/**
 * Registers EventListeners for the mapper.
 * @param eventListeners listeners to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withEventListeners(EventListener... eventListeners);

/**
 * Registers EventListeners for the mapper.
 * @param eventListeners listeners to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withEventListeners(List<EventListener> eventListeners);

Custom Field Mapper

Registers a custom field mapper for handling all field mappings.

/**
 * Registers a CustomFieldMapper for the mapper. Mapper has only one custom field mapper,
 * and consecutive calls will override previously specified value.
 * @param customFieldMapper custom field mapper to be registered for the mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withCustomFieldMapper(CustomFieldMapper customFieldMapper);

ID-Based Custom Converters

Registers custom converters that can be referenced by ID in mapping configurations.

/**
 * Registers a CustomConverter which can be referenced in mapping by provided ID.
 * Converter instances provided this way are considered stateful and will not be initialized for each mapping.
 * @param converterId unique ID of the converter, used as reference in mappings.
 * @param converter converter to be used for provided ID.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withCustomConverterWithId(String converterId, CustomConverter converter);

/**
 * Registers CustomConverters which can be referenced in mapping by provided IDs.
 * @param customConvertersWithId converters to be used by mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withCustomConvertersWithIds(Map<String, CustomConverter> customConvertersWithId);

Bean Factory Registration

Registers custom bean factories for object creation during mapping.

/**
 * Registers a BeanFactory for the mapper.
 * @param factoryName unique name of the factory.
 * @param beanFactory factory to be used by mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withBeanFactory(String factoryName, BeanFactory beanFactory);

/**
 * Registers BeanFactories for the mapper.
 * @param beanFactories factories to be used by mapper.
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withBeanFactorys(Map<String, BeanFactory> beanFactories);

Advanced Configuration

Advanced configuration options for specialized scenarios.

/**
 * Registers a SettingsProcessor for the mapper. Which can be used to resolve a settings instance.
 * @param processor processor to use
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withSettingsProcessor(SettingsProcessor processor);

/**
 * Registers an ELEngine for the mapper.
 * Which can be used to resolve expressions within the defined mappings.
 * @param elEngine elEngine to use
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withELEngine(ELEngine elEngine);

/**
 * Registers an ElementReader for the mapper.
 * Which can be used to resolve expressions within the defined XML mappings.
 * @param elementReader elementReader to use
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withElementReader(ElementReader elementReader);

/**
 * Registers a CacheManager for the mapper.
 * Which can be used to control the caching behaviour
 * @param cacheManager cacheManager to use
 * @return modified builder to be further configured.
 */
public DozerBeanMapperBuilder withCacheManager(CacheManager cacheManager);

Build Mapper

Creates the configured mapper instance.

/**
 * Creates an instance of Mapper. Mapper is configured according to the current builder state.
 * Subsequent calls of this method will return new instances.
 * @return new instance of Mapper.
 */
public Mapper build();

Complete Configuration Example

import com.github.dozermapper.core.Mapper;
import com.github.dozermapper.core.DozerBeanMapperBuilder;

// Comprehensive configuration example
Mapper mapper = DozerBeanMapperBuilder.create()
    .withMappingFiles("user-mappings.xml", "product-mappings.xml")
    .withCustomConverter(new DateToStringConverter())
    .withCustomConverter(new MoneyToStringConverter())
    .withCustomConverterWithId("uuid-converter", new UUIDConverter())
    .withEventListener(new MappingAuditListener())
    .withEventListener(new PerformanceMonitorListener())
    .withBeanFactory("userFactory", new UserBeanFactory())
    .withMappingBuilder(new UserMappingBuilder())
    .build();

Configuration Best Practices

Builder Reuse

Builders are not reusable - create new builders for different configurations:

// Don't reuse builders
DozerBeanMapperBuilder builder = DozerBeanMapperBuilder.create();
Mapper mapper1 = builder.withCustomConverter(converter1).build();
Mapper mapper2 = builder.withCustomConverter(converter2).build(); // Wrong!

// Create new builders
Mapper mapper1 = DozerBeanMapperBuilder.create()
    .withCustomConverter(converter1).build();
Mapper mapper2 = DozerBeanMapperBuilder.create()
    .withCustomConverter(converter2).build(); // Correct!

Performance Considerations

  • Builder configuration is performed once during build() call
  • Built mapper instances are thread-safe and should be cached
  • Avoid rebuilding mappers with identical configurations

Install with Tessl CLI

npx tessl i tessl/maven-com-github-dozermapper--dozer-core

docs

bean-factory.md

builder-configuration.md

core-mapping.md

custom-conversion.md

event-system.md

index.md

metadata-access.md

programmatic-mapping.md

tile.json