Я хотел бы, чтобы мой Eclipselink 2.3 Marshaller выполнял проверку при маршаллинге. Я убедился, что Schema
правильно создан SchemaFactory
, я передаю его Marshaller.setSchema
и зарегистрировал обработчик через Marshaller.setEventHandler()
.
Результат маршала явно недействителен в соотв. к своей схеме (проверено в Eclipse), тем не менее я вижу, что моя точка останова в handleEvent(ValidationEvent event)
никогда не срабатывает.
Я упорядочиваю XML-фрагменты, используя marshal(Object, XMLStreamWriter)
, и ожидаю, что Marshaller выполнит проверку этих фрагментов в соответствии со схемой, которую я передал.
Кто-нибудь знает, почему этого не происходит?
ИЗМЕНИТЬ:
Ошибка проверки, которая должна возникнуть: 2 отсутствующих атрибута в элементе.
Элемент соответствует объекту Java, который содержится в списке‹>. Я упорядочиваю список, используя:
<xml-element java-attribute="listInstance" xml-path="ListWrapperElement/ListElement" type="foo.ElementType" container-type="java.util.ArrayList"/>
Отображение для самого элемента:
<java-type name="foo.ElementType" xml-accessor-type="PROPERTY">
<java-attributes>
// just <xml-attribute> elements here
</java-attributes>
</java-type>
Поэтому все атрибуты маршалируются в ListWrapperElement/ListElement/@attribute. 2 из них отсутствуют и не обнаружены проверкой.