2014-07-07 3 views
3

Кто-нибудь знает, как преобразовать следующее в формат вызова api для Dozer? Документация на сайте сопоставления Dozer довольно тонкая, когда дело касается сопоставлений java.Конфигурация отображения даты Dozer API без XML

<mappings> 
    <configuration> 
    <date-format>MM/dd/yyyy HH:mm</date-format> 
    </configuration> 

    <mapping wildcard="true"> 
    <class-a>org.dozer.vo.TestObject</class-a> 
    <class-b>org.dozer.vo.TestObjectPrime</class-b> 
    <field> 
     <a>dateString</a> 
     <b>dateObject</b> 
    </field> 
    </mapping> 
    <mapping> 
    <class-a>org.dozer.vo.SomeObject</class-a> 
    <class-b>org.dozer.vo.SomeOtherObject</class-b> 
    <field> 
     <a>srcField</a> 
     <b>destField</b> 
    </field> 
    </mapping> 
</mappings> 

ответ

3

Начиная с версии 5.5.1 бульдозера, API syntax cannot perform all mappings. Конфигурация < > Элемент в вашем сопоставлении может быть выполнен только с помощью XML.

Если вы можете принять версию, которая обходит < конфигурации > ограничения путем добавления некоторого дублирования, то отображение API ниже должно совпадать отображение XML:

BeanMappingBuilder mappingBuilder = new BeanMappingBuilder() { 
    @Override 
    protected void configure() { 

     String dateFormat = "MM/dd/yyyy HH:mm"; 

     mapping(TestObject.class, TestObjectPrime.class, 
       TypeMappingOptions.wildcard(true), 
       TypeMappingOptions.dateFormat(dateFormat)) 
       .fields("dateString", "dateObject"); 

     mapping(SomeObject.class, SomeOtherObject.class, 
       TypeMappingOptions.dateFormat(dateFormat)) 
       .fields("srcField", "destField"); 
    } 
}; 

DozerBeanMapper apiBeanMapper = new DozerBeanMapper(); 
apiBeanMapper.addMapping(mappingBuilder); 

Если вы заинтересованы в дополнительной информации, я 'добавлен простой ApiAndXmlMappingTest example в PasteBin.