Ubiquity est un outil permettant d’effectuer des copies d’objets vers d’autres objets. Pour être plus précis, le framework permet, à la manière d’un adaptateur, de transformer un type d’objet en un autre.
Il a été développé par +Francois Laroche
Vous me direz, il existe déjà pas mal d’outils pour effectuer ce genre de tâche. Ce n'est pas faux. Néanmoins, lorsque les autres outils se basent sur la réflexion, Ubiquity présente une autre façon de mettre en oeuvre le mapping.
Ubiquity va parser le bytecode et générer à la volée le code nécessaire à la copie d’objet à objet.
Cette technique permet de battre des records de performance et de se trouver 20 fois plus rapide que Dozer.
Le copieur effectue une copie récursive en profondeur.
Pour son fonctionnement, l’outil ne requiert qu’une seule dépendance à l’api ASM.
Sa mise en oeuvre se résume en 3 lignes de code :
ubiquity ubiquity = new Ubiquity();
MyObject1 myObject1 = new MyOject1();
// Populate and have fun with your objet
MyObject2 myObject2 = ubiquity.Map(myObject1, MyObject 2.class);
Face à des cas plus complexes, le framework fournit des points d’entrée permettant de traiter des cas particuliers.
Il supporte les collections standard du JDK avec la possibilité de fournir l’implémentation d’un factory ( CollectionFactory ) en cas de traitement spécifique.
Ubiquity fournit également un jeu d’annotations utilitaires.
Cet outil se focalise sur une tâche, la copie d’objet à objet, et il le fait très bien (et ceci sans étape déclarative).
Le code est hébergé sur Github.
Vu la simplicité de mise en oeuvre, aucune excuse pour ne pas l’essayer 🙂