Dozer cartographie des propriétés booléennes
Il semble que les Bulldozers ne sera pas mapper une propriété Booléenne si l'accesseur de cette propriété est définie comme isProperty()
plutôt que getProperty()
.
Suivantes groovy script illustre le problème:
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
L'affirmation sur la dernière ligne échoue. Cependant, si je renomme ProductDto.isFoo()
à ProductDto.getFoo()
il passe.
Est-il un drapeau/option je peux le mettre dans le Bouteur de mappage de fichier qui vous permettra de charger à utiliser un is
ou get
accesseur pour les propriétés booléennes? Sinon, je pourrais ajouter une règle personnalisée pour chaque propriété booléenne, mais ce n'est pas très attrayant.
Bien que l'exemple ci-dessus est écrit en Groovy, je n'ai pas de raison de croire que le même comportement ne serait pas exposé par l'équivalent en code Java.
Ces Otd sont générés par JAXB (qui génère un "est" accesseur, plutôt qu'un "get" accesseur pour les booléens), donc je ne peux pas renommer les accesseurs. Je suis à l'aide de Bulldozers 5.3.2.
source d'informationauteur Dónal
Vous devez vous connecter pour publier un commentaire.
Peut-être vous pouvez utiliser des méthode de lecture de l'utiliser.
ici l'exemple de la cartographie (Écrire dans dozer-fichier de mappage)
Alors maintenant bulldozer va utiliser isFoo au lieu de prédéfinies getFoo.
Espérons que cela fonctionne pour vous. 🙂
Génération "est" méthodes pour le Booléen classe wrapper est un bug dans JAXB, voir Java Beans, BeanUtils, et le Booléen classe wrapper et http://java.net/jira/browse/JAXB-131 pour plus de détails. Semble être fixé dans jaxb 2.1.13
C'est un bug dans JAXB, la petite-b
boolean
devrait avoirisFoo()
. Vous pouvez soit utiliser l'-enableIntrospection option avec les versions ultérieures de JAXB, ou utilisez le peu vieux boolean getter xjc plugin http://fisheye5.cenqua.com/browse/~raw,r=MAIN/jaxb2-commons/www/boolean-getter/index.htmlIl y a aussi un autre moyen d'atteindre le bon bulldozer de la cartographie (la plus propre à mon avis):
OU le chemin déjà mentionné plus haut: