kopipi

Tous les développeurs Java sont confrontés régulièrement au problème de la duplication de beans dans les architectures n-tiers. C’est un choix certes discutable mais que j’approuve personnellement de séparer les modèles des différentes couches logiques.

Pour répondre à cette problématique, la solution classique est d’écrire des translateurs chargés de convertir les données d’un modèle vers un autre. Il existe des frameworks permettant de se libérer de ce travail assez rébarbatif. Il y a le fameux BeanUtils d’Apache, mais cette classe utilitaire est trop simple pour pouvoir résoudre des translations non symétriques, par exemple convertir une String en Date. Le framework Dozer propose une solution plus puissante, mais pour être franc, je trouve ce framework très difficile à l’usage. Déporter la logique applicative, fut-elle aussi simple que la conversion d’un format vers un autre, dans un fichier de configuration est une mauvaise idée à mon goût.

Partant de ce constat de frustration face à ce problème récurrent dans le monde des applications de gestion, je me suis attelé à la création de kopipi, un petit framework simple et élégant à l’usage. Je me suis directement inspiré de la JSR 303 (Bean Validation). Cette JSR permet de valider des données en écrivant des validateurs atomiques et réutilisables, et en mappant les attributs à valider avec ces validateurs grâce à des annotations. Kopipi utilise exactement le même principe : écriture de translateurs atomiques et réutilisables, et mapping entre translateurs et attributs grâce aux annotations.

Grâce au caractère réutilisable des translateurs, le travail d’écriture est considérablement réduit, d’autant plus que kopipi offre un mode de translation par défaut qui convient parfaitement aux objets immutables tel que les String ou les Integer. Dans le cas des translations symétriques d’objets mutables, kopipi fourni un translateur par clonage qui requière simplement que les objets traduits soient cloneables. Tout cela est détaillé dans la documentation technique.

A venir : possibilité d’écrire des translateurs lorsque les types source et cible sont identiques, injection de dépendance pour pouvoir appeler la couche service dans un translateur, etc…

Je vous invite à me faire part de toutes vos remarques et suggestions en souhaitant que kopipi participe à la réussite de vos projets de développement.

Publicités

0 Responses to “kopipi”



  1. Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s





%d blogueurs aiment cette page :