Bonjour,
J'ai un xml schéma XSD qui me permet de générer mes classes java avec XJC. Pour ça pas de souci.
J'ai créé une classe qui hérite d'une classe créée par XJC dans laquelle j'ai rajouté des primitives et des méthodes pour le fonctionnement de mon algo. Pas de souci, tout fonctionne bien.
Mais j'ai un souci dès que j'ajoute dans ma classe fille une primitive de type Iterator.
J'ai le message d'erreur "JAXB can't handle interfaces" à l'écécution.
J'ai recherché une solution et j'ai trouvé beaucoup de sites qui parlent de ce pb mais j'avoue que mon anglais est limité et les choses ne sont pas claires pour moi.
Voici un extrait de mon code pour clarifier ceci (je mets le stricte nécessaire):
Voici la classe générée par XJC depuis mon XSD :
J'ai donc une collection List. Cette classe est générée et je ne veux pas y toucher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class OperatingWithRelativeTimeRate implements Serializable { private final static long serialVersionUID = 1L; @XmlElement(name = "RelativeTimeRate") protected List<RelativeTimeRate> relativeTimeRate; }
Voici la classe que j'ai écrite moi et qui hérite de la première :
Pour mon algo, j'ai besoin de garder un itérateur sur ma liste pour optimiser le parcours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class OperatingWithRelativeTimeRateExtension extends OperatingWithRelativeTimeRate implements Serializable { (...) private Iterator<RelativeTimeRate> _iterOnOperatingTable; }
Tout fonctionne très bien sans cet itérateur. Mais dès que je le mets j'ai l'erreur Can't handle Interface à l'éxécution.
J'ai cherché le moyen de spécifier dans la classe fille de ne pas prendre en compte la primitive Iterator. Mais j'ai pas trouvé.
Peut être aussi qu'il y aurait une autre solution pour conserver l'info position dans ma liste, mais je ne vois pas.
Je précise que je suis dans une phase d'optimisation. J'ai profiler mon appli et 90% du temps proc est passé dans le parcours de cette liste. Pour un teste simple, le calcul prend plus de 6H30. Donc l'optimisation est énorme.
Voici en bref l'objet de mon appli pour mieux comprendre :
Mon appli fait de la simultation en mécanique des fluides.
Les données d'entrées permettant de faire une simulation sont écrites par l'utilisateur au format XML en respectant le XSD évoqué.
Le problème se pose à l'écécution lors du unmarshaller du fichier source des données d'entrées.
Mon algo fait plusieurs milliers d'itérations afin d'arriver à une solution.
Dans cet algo j'ai besoin d'aller chercher une info dans la liste. A chaque itération je parcours donc ma liste depuis le début. Hors cette liste est ordonnée et à chaque incrément je veux avoir l'info se trouvant après.
Donc je cherche absolument le moyen d'éviter ce parcours en stockant la position dans la liste pour accéder immédiatement à l'élément suivant.
Tous les sites que j'ai pu trouver ne répondent pas exactement à mon pb puisqu'ils évoquent tous l'opération inverse : le marshalling pour généré un XML depuis le code JAVA.
Est ce que quelqu'un pourait m'aider ou m'aiguiller pour trouver une solution SVP.
Merci d'avance.
Cdlt.
Partager