Spec-Zone.ru › OpenJDK 8

Интерфейс валидатора

Устаревшее.

с JAXB 2.0

public interface Validator

Начиная с JAXB 2.0, этот класс устарел и необязателен.

Класс Validator отвечает за управление валидацией деревьев содержимого во время выполнения.

Три формы валидации

Валидация во время разбора (Unmarshal-Time Validation)
Этот вид валидации позволяет приложению-клиенту получать информацию о валидационных ошибках и предупреждениях, обнаруженных во время разбора XML-данных в дерево Java-содержимого, и полностью независим от других типов валидации. Чтобы включить или выключить его, см. javadoc для Unmarshaller.setValidating. Все поставщики JAXB 1.0 обязаны поддерживать эту операцию.
Валидация по требованию (On-Demand Validation)
Этот вид валидации позволяет приложению-клиенту получать информацию о валидационных ошибках и предупреждениях, обнаруженных в дереве Java-содержимого. В любой момент приложения-клиенты могут вызвать метод Validator.validate на дереве Java-содержимого (или любой его поддереве). Все поставщики JAXB 1.0 обязаны поддерживать эту операцию.
Быстрая валидация (Fail-Fast Validation)
Этот вид валидации позволяет приложению-клиенту получить немедленную обратную связь о модификациях дерева Java-содержимого, нарушающих ограничения типов на Java-свойства, как определено в спецификации. Поставщики JAXB не обязаны поддерживать этот тип валидации. Из поставщиков JAXB, которые поддерживают этот тип валидации, некоторые могут потребовать от вас принять решение во время компиляции схемы о том, будет ли приложение-клиент иметь право запрашивать быструю валидацию во время выполнения.

Класс Validator отвечает за управление валидацией по требованию. Класс Unmarshaller отвечает за управление валидацией во время разбора (Unmarshal-Time Validation) во время операций разбора. Хотя нет формального метода включения валидации во время операций сборки (marshal), Marshaller может обнаруживать ошибки, которые будут сообщаться зарегистрированному на нем обработчику ValidationEventHandler.

Использование обработчика по умолчанию

If the client application does not set an event handler on their Validator, Unmarshaller, or Marshaller prior to calling the validate, unmarshal, or marshal methods, then a default event handler will receive notification of any errors or warnings encountered. The default event handler will cause the current operation to halt after encountering the first error or fatal error (but will attempt to continue after receiving warnings).

Обработка событий валидации

Использование обработчика по умолчанию
Обработчик по умолчанию будет использоваться, если вы не укажете другой через API setEventHandler в Validator, Unmarshaller, или Marshaller.
Реализация и регистрация пользовательского обработчика событий
Приложения-клиенты, которым требуется сложная обработка событий, могут реализовать интерфейс ValidationEventHandler и зарегистрировать его в Unmarshaller и/или Validator.
Использование утилиты ValidationEventCollector
Для удобства предоставляется специализированный обработчик событий, который просто собирает все объекты ValidationEvent , созданные во время операций разбора, валидации и сборки, и возвращает их приложению-клиенту в виде java.util.Collection.

Валидация и корректность

Обработка событий валидации происходит по-разному в зависимости от того, как приложение-клиент настроено на их обработку, как описано в предыдущем разделе. Однако есть определенные случаи, когда поставщик JAXB указывает, что он больше не может надежно обнаруживать и сообщать об ошибках. В таких случаях поставщик JAXB установит уровень серьезности ValidationEvent в FATAL_ERROR, чтобы указать, что операции разбора, валидации или сборки должны быть прекращены. Обработчик событий по умолчанию и утилита ValidationEventCollector должны прекратить обработку после уведомления об ошибке уровня FATAL. Приложения-клиенты, которые предоставляют собственный обработчик ValidationEventHandler, также должны прекратить обработку после уведомления об ошибке уровня FATAL. В противном случае могут возникнуть неожиданные проблемы.

Поддерживаемые свойства

В настоящее время нет свойств, которые должны поддерживаться всеми поставщиками JAXB в Validator. Однако некоторые поставщики могут поддерживать свой собственный набор поставщика-специфических свойств.

С:
JAXB1.0
См. также:
JAXBContext, Unmarshaller, ValidationEventHandler, ValidationEvent, ValidationEventCollector

Методы

Модификатор и тип Метод и описание
ValidationEventHandler getEventHandler()

Устаревшее.

с JAXB2.0

Object getProperty(String name)

Устаревшее.

с JAXB2.0

void setEventHandler(ValidationEventHandler handler)

Устаревшее.

с JAXB2.0

void setProperty(String name, Object value)

Устаревшее.

с JAXB2.0

boolean validate(Object subrootObj)

Устаревшее.

с JAXB2.0

boolean validateRoot(Object rootObj)

Устаревшее.

с JAXB2.0

Методы

setEventHandler

void setEventHandler(ValidationEventHandler handler)
              throws JAXBException

Устаревшее. с JAXB2.0

Позволяет приложению зарегистрировать обработчик событий валидации.

Обработчик событий валидации будет вызываться поставщиком JAXB, если во время вызовов validate будут обнаружены ошибки валидации. Если приложение-клиент не зарегистрирует обработчик событий валидации перед вызовом метода validate, то события валидации будут обрабатываться обработчиком по умолчанию, который завершит операцию validate после обнаружения первой ошибки или ошибки FATAL.

Вызов этого метода с нулевым параметром приведет к возврату Validator к обработчику по умолчанию.

Параметры:
handler - обработчик событий валидации
Выбрасывает:
JAXBException - если при установке обработчика возникла ошибка

getEventHandler

ValidationEventHandler getEventHandler()
                                throws JAXBException

Устаревшее. с JAXB2.0

Возвращает текущего обработчика событий или обработчик по умолчанию, если он не был задан.

Возвращает:
текущий ValidationEventHandler или обработчик по умолчанию, если он не был задан
Выбрасывает:
JAXBException - если при получении текущего обработчика возникла ошибка

validate

boolean validate(Object subrootObj)
          throws JAXBException

Устаревшее. с JAXB2.0

Валидирует дерево Java-содержимого, начиная с subrootObj.

Приложения-клиенты могут использовать этот метод для валидации деревьев Java-содержимого по требованию во время выполнения. Этот метод может использоваться для валидации любого произвольного поддерева дерева Java-содержимого. Глобальная проверка ограничений не будет выполняться в рамках этой операции (т.е. ограничения ID/IDREF).

Параметры:
subrootObj - объект, с которого начать валидацию
Возвращает:
true, если поддерево, укорененное в subrootObj, является корректным, иначе false
Выбрасывает:
JAXBException - если во время валидации возникла непредвиденная проблема
ValidationException - Если ValidationEventHandler возвращает false из своего метода handleEvent или Validator не может валидировать дерево содержимого, укорененное в subrootObj
IllegalArgumentException - Если параметр subrootObj имеет значение null

validateRoot

boolean validateRoot(Object rootObj)
              throws JAXBException

Устаревшее. с JAXB2.0

Валидирует дерево Java-содержимого, укорененное в rootObj.

Приложения-клиенты могут использовать этот метод для валидации деревьев Java-содержимого по требованию во время выполнения. Этот метод используется для валидации всего дерева Java-содержимого. Глобальная проверка ограничений будет выполняться в рамках этой операции (т.е. ограничения ID/IDREF).

Параметры:
rootObj - корневой объект, с которого начать валидацию
Возвращает:
true, если дерево, укорененное в rootObj, является корректным, иначе false
Выбрасывает:
JAXBException - если во время валидации возникла непредвиденная проблема
ValidationException - Если ValidationEventHandler возвращает false из своего метода handleEvent или Validator не может валидировать дерево содержимого, укорененное в rootObj
IllegalArgumentException - Если параметр rootObj имеет значение null

setProperty

void setProperty(String name,
                 Object value)
          throws PropertyException

Устаревшее. с JAXB2.0

Устанавливает определенное свойство в базовой реализации Validator. Этот метод может использоваться только для установки одного из стандартных свойств JAXB или свойства, специфичного для поставщика. Попытка установить неопределенное свойство приведет к выбрасыванию PropertyException. См. Поддерживаемые свойства.

Параметры:
name - имя свойства, которое нужно установить. Это значение может быть указано с использованием одного из константных полей или пользователем.
value - значение свойства, которое нужно установить
Выбрасывает:
PropertyException - когда возникает ошибка при обработке указанного свойства или значения
IllegalArgumentException - Если параметр name имеет значение null

getProperty

Object getProperty(String name)
            throws PropertyException

Устаревшее. с JAXB2.0

Получает определенное свойство в базовой реализации Validator. Этот метод может использоваться только для получения одного из стандартных свойств JAXB или свойства, специфичного для поставщика. Попытка получить неопределенное свойство приведет к выбрасыванию PropertyException. См. Поддерживаемые свойства.

Параметры:
name - имя свойства для получения
Возвращает:
значение запрошенного свойства
Выбрасывает:
PropertyException - когда возникает ошибка при получении указанного свойства или значения имени свойства
IllegalArgumentException - Если параметр name имеет значение null

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API