Отображение логического свойства dozer

Похоже, что Dozer не будет отображать логическое свойство, если метод доступа этого свойства определен как isProperty () , а не getProperty () .

Следующий отличный сценарий иллюстрирует проблему:

import org.dozer.*

class ProductCommand {
    Boolean foo 
}

public class ProductDto  {

    private Boolean foo;        

    public Boolean isFoo() { this.foo }    
    public void setFoo(Boolean p0) { this.foo = p0 }           
}

def mapper =  new DozerBeanMapper()

dto = new ProductDto(foo: true)
assert dto.isFoo()

ProductCommand mappedCmd = mapper.map(dto, ProductCommand)
assert mappedCmd.foo

Утверждение в последней строке не выполняется. Однако, если я переименую ProductDto.isFoo () в ProductDto.getFoo () , он пройдет.

Есть ли флаг / параметр, который я могу установить в файле сопоставления Dozer, который будет указывать ему использовать метод доступа is или get для логических свойств? В качестве альтернативы я мог бы добавить собственное правило для каждого логического свойства, но это не очень привлекательно.

Хотя приведенный выше пример написан на Groovy, у меня нет оснований полагать, что такое же поведение не будет продемонстрировано эквивалентным Код Java.

Эти DTO генерируются JAXB (который генерирует метод доступа «is», а не метод доступа «get» для логических значений), поэтому я не могу переименовать методы доступа. Я использую Dozer 5.3.2.

11
задан matt b 6 April 2012 в 15:20
поделиться