Bonjour à tous,
Je me retrouve devant une situation que je n'arrive pas à éclaircir avec les collègues. Le point d'entrée de mon problème est que le management désire que l'on implémente du test unitaire sur nos applications (point dont je ne remets pas du tout en question la nécessité ).
Mon composant est un Web Service JAX-WS / Metro tournant sur JBoss 5.1. Sa logique métier est de transformer un contrat qui sort de notre système de gestion des contrats vers une structure plus simple. La définition WSDL de mon composant importe donc la définition XSD du contrat de notre système de gestion. Le contrat est le premier paramètre de la fonction d'entrée de mon composant (il y en a d'autres qui ne sont pas importants).
J'utilise pour générer les classes de la structure XML l'outil wsimport. Il me génère une classe par élément XML de la structure du contrat, ainsi qu'un objet ObjectFactory. De plus, il crée également des stubs d'interface et de port pour le Web Service. La fonction d'entrée de mon WS forward ensuite le contrat à un EJB applicatif qui fait la transformation vers la structure de sortie du composant.
Mon problème vient lorsque je veux initialiser la structure objet représentant le XML de notre système de gestion des contrats et appeler les fonctions de mon EJB applicatif par JUnit en dehors du serveur applicatif. Nos contrats sont en effets une structure XML TRES complexe (entre 100k et 1Mo de "flat XML" au format texte). Initialiser la structure à la main avec des new() est totalement impossible à moins d'y prendre quelques mois plein temps (et en y perdant une bonne partie de sa santé mentale).
Le contrat n'étant pas obtenu pendant l'exécution de mon composant mais étant un paramètre d'entrée, il ne m'est (à mon avis) pas possible de créer un MOCK permettant de simuler l'appel et d'y passer un contrat fixe. Je n'arrive également pas à trouver de code dans ce qui est généré par wsimport permettant de faire une initialisation globale à partir de texte contenant du XML. Visiblement tout ceci est "caché" dans JBoss et l'initialisation de la structure objet doit se situer au niveau de l'ouverture du paquet SOAP d'une manière ou d'une autre. Je connais peu les détails, ça fonctionne et je n'avais pas besoin de chercher plus loin.
J'ai :
- Un package de classes générées par wsimport
- Un fichier XML au format texte que je peux avoir par un appel direct au système de gestion des contrats (par exemple par SOAPUI).
J'aimerais :
- Un morceau de code qui prend le XML au format texte (variable de type String) en paramètre et qui retourne la structure objet représentant ce XML. Ceci avec les classes de mon package généré (je saurais comment obtenir un DOM par exemple, mais ça ne m'avancerais pas pour avoir les variables d'entrée pour les fonctions de mon EJB applicatif).
Merci de vos remarques, suggestions ou commentaires.
Partager