XmlObject.java@XmlRootElement de JAXB et de la convention implicite de XStream (toute classe peut être sérialisée). Contrairement à eux, XmlStream exige une annotation explicite — les classes sans @XmlObject ne seront traitées ni par XmlObjectReader ni par XmlObjectWriter. Il s'agit d'une mesure de sécurité : seules les classes explicitement autorisées participent à la sérialisation.
alias()Remplace le nom de l'élément racine XML. Par défaut (chaîne vide), le nom de classe complet est utilisé : org.projectforge.business.user.PFUserDO → <org.projectforge.business.user.PFUserDO>. Avec un alias : @XmlObject(alias="user") → <user>. Les alias sont enregistrés dans AliasMap (#758) lors de l'initialisation de XmlRegistry.
Différence avec @XmlField(alias) : @XmlObject.alias définit le nom de l'élément racine (la balise qui encapsule l'objet entier), tandis que @XmlField.alias définit le nom d'un élément enfant ou d'un attribut (un champ spécifique).
XmlRegistry au démarrage analyse le classpath (ou la configuration) et trouve toutes les classes annotées avec @XmlObjectAliasMap : Classe → alias et alias → ClasseXmlObjectReader.newInstance() lors de la rencontre d'un élément XML recherche la classe correspondante via AliasMap.getClassForAlias(tagName)BeanHelper.newInstance() et remplit récursivement les champs (en utilisant @XmlField)Status.IGNORE (#760)@XmlObject n'est pas seulement un alias — c'est une autorisation explicite pour la sérialisation. Une classe sans @XmlObject est totalement exclue du processus. XStream sérialise par défaut n'importe quelle classe — créant un risque de fuite de données accidentelle (par exemple, sérialiser un proxy Hibernate avec des mots de passe). XmlStream est plus sûr mais nécessite plus de travail manuel d'annotation.
| Annotation | Fichier | Rôle |
|---|---|---|
@XmlField | #752 | Configurer la sérialisation des champs (nom, type, valeurs par défaut, format) |
@XmlObject | #754 | Activer la classe pour la sérialisation avec alias |
@XmlOmitField | #757 | Exclure complètement un champ de la sérialisation |
868d6abb7 2025 → 2026 (mise à jour année copyright) 63081666f En-têtes fichiers source : 2024→2025 b6092df09 Copyright 2023 → 2024 ab45d51fa Copyright 2001-2022 → 2001-2023 5f7ef41b8 Copyright 2021 → 2022 cd27dd997 package xstream → xmlstream ceb63e8a1 En-tête code source : (C) 2001-2021 7c79f1922 Copyright de l'en-tête source → 2020 32f634b88 Optimiser les imports dd5ca38ac Copyright de tous les en-têtes de fichiers Java mis à jour ou créés 9ebb88522 Commit initial
alias) et n'a pas changé depuis le commit initial au-delà des mises à jour de copyright et du renommage du package xstream → xmlstream. La simplicité est intentionnelle — il s'agit d'une porte d'autorisation, non d'une surface de configuration.