XmlConstants.javaКласс глобальных констант для фреймворка XmlStream. 36 строк. Содержит три значения, которые используются как магические числа/строки (sentinel values) — специальные значения, которые гарантированно не встретятся в реальных данных, и поэтому могут быть использованы как маркер "значение по умолчанию".
MAGIC_INT_NUMBER = -21111970 — отрицательное восьмизначное число, которое никогда не будет легитимным ID или количеством. Используется как значение по умолчанию для defaultIntValue в аннотации @XmlField. Если поле int имеет значение -21111970, оно НЕ сериализуется в XML. Вероятно, день рождения разработчика (21.11.1970).MAGIC_STRING = "faiNg8jojae4Aiy5thaiz7Iefu4Egoarafa6Fu3xEekil8ae" — 46-символьная случайная строка без пробелов и спецсимволов. Используется как значение по умолчанию для defaultStringValue. Никакой реальный пользователь никогда не введёт эту строку. При совпадении — поле не сериализуется.NULL_IDENTIFIER = "null" — специальный строковый идентификатор для null-значений в XML. Когда поле имеет значение null, XmlObjectWriter записывает строку "null". XmlObjectReader при чтении строки "null" восстанавливает null. Комментарий в коде: "Not really usable for strings, but should interpreted as null value by all other converters" — для строковых полей это не работает (строка "null" может быть легитимным значением), но для чисел, дат, булевых значений — работает.Идея: при сериализации, если значение поля равно значению по умолчанию (указанному в аннотации @XmlField), поле пропускается — не записывается в XML. При десериализации, если поле отсутствует в XML, ему присваивается значение по умолчанию. Это уменьшает размер XML и делает его более читаемым (только значимые поля).
MAGIC_INT_NUMBER и MAGIC_STRING служат sentinel-значениями "не задано" — они отличают "разработчик явно установил default=0" от "разработчик не указал default вообще". Метод hasDefaultType() в XmlObjectWriter сравнивает c этими сентинелами.
868d6abb7 2025 → 2026 (обновление копирайта) 63081666f Source file headers: 2024→2025 b6092df09 Copyright 2023 → 2024 ab45d51fa Copyright 2001-2022 → 2001-2023 5f7ef41b8 Copyright 2021 → 2022 cd27dd997 package xstream → xmlstream (переименование для избежания путаницы с XStream) ceb63e8a1 Source code header: (C) 2001-2021 7c79f1922 Copyright of source header → 2020 dd5ca38ac CopyRight of all java file-header updated or created 9ebb88522 Initial commit
Константы не менялись с момента создания. Только обновления копирайта и переименование пакета. Стабильность ожидаема — изменение этих sentinel-значений сломало бы совместимость со всеми ранее записанными XML-файлами.