XmlObject.java@XmlRootElement und XStreams impliziter Konvention (jede Klasse kann serialisiert werden). Im Gegensatz dazu erfordert XmlStream eine explizite Annotation — Klassen ohne @XmlObject werden weder von XmlObjectReader noch von XmlObjectWriter verarbeitet. Dies ist eine Sicherheitsmaßnahme: Nur explizit zugelassene Klassen nehmen an der Serialisierung teil.
alias()Überschreibt den Namen des XML-Wurzelelements. Standardmäßig (leerer String) wird der vollqualifizierte Klassenname verwendet: org.projectforge.business.user.PFUserDO → <org.projectforge.business.user.PFUserDO>. Mit Alias: @XmlObject(alias="user") → <user>. Aliase werden in AliasMap (#758) während der XmlRegistry-Initialisierung registriert.
Unterschied zu @XmlField(alias): @XmlObject.alias legt den Namen des Wurzelelements fest (das Tag, das das gesamte Objekt umschließt), während @XmlField.alias einen Kind-Element- oder Attributnamen (ein bestimmtes Feld) festlegt.
XmlRegistry durchsucht beim Start den Klassenpfad (oder die Konfiguration) und findet alle mit @XmlObject annotierten KlassenAliasMap registriert: Klasse → Alias und Alias → KlasseXmlObjectReader.newInstance() sucht beim Auftreten eines XML-Elements die entsprechende Klasse über AliasMap.getClassForAlias(tagName)BeanHelper.newInstance() und füllt rekursiv Felder (unter Verwendung von @XmlField)Status.IGNORE zurück (#760)@XmlObject ist nicht nur ein Alias — es ist eine explizite Erlaubnis zur Serialisierung. Eine Klasse ohne @XmlObject wird vollständig vom Prozess ausgeschlossen. XStream serialisiert standardmäßig jede Klasse — was ein Risiko unbeabsichtigter Datenlecks darstellt (z. B. Serialisierung eines Hibernate-Proxys mit Passwörtern). XmlStream ist sicherer, erfordert aber mehr manuelle Annotationsarbeit.
| Annotation | Datei | Rolle |
|---|---|---|
@XmlField | #752 | Konfiguriert die Feldserialisierung (Name, Typ, Standardwerte, Format) |
@XmlObject | #754 | Aktiviert die Klasse für die Serialisierung mit Alias |
@XmlOmitField | #757 | Schließt ein Feld vollständig von der Serialisierung aus |
868d6abb7 2025 → 2026 (Aktualisierung des Copyright-Jahres) 63081666f Quellcodedatei-Header: 2024→2025 b6092df09 Copyright 2023 → 2024 ab45d51fa Copyright 2001-2022 → 2001-2023 5f7ef41b8 Copyright 2021 → 2022 cd27dd997 Paket xstream → xmlstream ceb63e8a1 Quellcode-Header: (C) 2001-2021 7c79f1922 Copyright des Quell-Headers → 2020 32f634b88 Optimierung der Importe dd5ca38ac Copyright aller Java-Datei-Header aktualisiert oder erstellt 9ebb88522 Erster Commit
alias) und hat sich seit dem ersten Commit nicht geändert, abgesehen von Copyright-Aktualisierungen und der Paketumbenennung von xstream → xmlstream. Die Einfachheit ist beabsichtigt — dies ist ein Berechtigungsgate, keine Konfigurationsoberfläche.