Spec-Zone.ru › OpenJDK 8

Класс ValidatorHandler

  • java.lang.Object
    • javax.xml.validation.ValidatorHandler
Все реализуемые интерфейсы:
ContentHandler

public abstract class ValidatorHandler
extends Object
implements ContentHandler

Потоковый валидатор, работающий с потоком SAX.

Объект ValidatorHandler не потокобезопасен и не допускает повторного входа. Другими словами, приложение отвечает за обеспечение того, чтобы один объект ValidatorHandler не использовался из более чем одной потоковой нити в любой момент времени.

ValidatorHandler проверяет, следуют ли события SAX набору ограничений, описанных в ассоциированной Schema, и дополнительно может изменять события SAX (например, добавляя значения по умолчанию и т.д.).

ValidatorHandler расширяет ContentHandler, но уточняет базовый ContentHandler следующим образом:

  1. События startElement/endElement должны получать непустые строки для uri, localName, и qname, даже если SAX разрешает некоторые из них быть null. Аналогично, заданный пользователем ContentHandler получит непустые строки для всех трех параметров.
  2. Приложения должны гарантировать, что ValidatorHandler правильно вызывают ContentHandler.startPrefixMapping(String,String) и ContentHandler.endPrefixMapping(String). Аналогично, заданный пользователем ContentHandler получит события startPrefixMapping/endPrefixMapping. Если ValidatorHandler вводит дополнительные связи пространств имен, заданный пользователем ContentHandler получит дополнительные события startPrefixMapping/endPrefixMapping.
  3. Attributes для метода ContentHandler.startElement(String,String,String,Attributes) может или не может содержать атрибуты xmlns*.

Объект ValidatorHandler автоматически сбрасывается каждый раз при вызове метода startDocument.

Распознаваемые свойства и функции

Этот стандарт определяет следующую функцию, которую должны распознавать все реализации ValidatorHandler.

http://xml.org/sax/features/namespace-prefixes

Эта функция контролирует, как ValidatorHandler вводит связи пространств имен, которые отсутствовали в исходном потоке событий SAX. При установке этой функции в значение true, необходимо убедиться, что пользовательский ContentHandler увидит соответствующий атрибут xmlns* в объекте Attributes обратного вызова ContentHandler.startElement(String,String,String,Attributes). В противном случае, атрибуты xmlns* не должны добавляться к Attributes, переданному указанному пользователем ContentHandler.

(Обратите внимание, что независимо от этого переключателя, связи пространств имен всегда сообщаются приложениям через методы ContentHandler.startPrefixMapping(String,String) и ContentHandler.endPrefixMapping(String) заданного пользователем ContentHandler.)

Обратите внимание, что эта функция НЕ влияет на способ получения ValidatorHandler событий SAX. Она просто изменяет способ дополнения им событий SAX.

Эта функция установлена в значение false по умолчанию.

С тех пор:
1.5

Конструкторы

Модификатор Конструктор и описание
protected ValidatorHandler()

Конструктор для производных классов.

Методы

Модификатор и тип Метод и описание
abstract ContentHandler getContentHandler()

Получает ContentHandler, который получает результат валидации.

abstract ErrorHandler getErrorHandler()

Получает текущий ErrorHandler, установленный для этого ValidatorHandler.

boolean getFeature(String name)

Получает значение флага функции.

Object getProperty(String name)

Получает значение свойства.

abstract LSResourceResolver getResourceResolver()

Получает текущий LSResourceResolver, установленный для этого ValidatorHandler.

abstract TypeInfoProvider getTypeInfoProvider()

Получает реализацию TypeInfoProvider для этого ValidatorHandler.

abstract void setContentHandler(ContentHandler receiver)

Устанавливает ContentHandler, который получает результат валидации.

abstract void setErrorHandler(ErrorHandler errorHandler)

Устанавливает ErrorHandler для получения ошибок, возникших во время валидации.

void setFeature(String name, boolean value)

Устанавливает функцию для данного ValidatorHandler.

void setProperty(String name, Object object)

Устанавливает значение свойства.

abstract void setResourceResolver(LSResourceResolver resourceResolver)

Устанавливает LSResourceResolver для настройки разрешения ресурсов во время валидации.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, унаследованные от интерфейса org.xml.sax.ContentHandler

characters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping

Конструкторы

ValidatorHandler

protected ValidatorHandler()

Конструктор для производных классов.

Конструктор ничего не делает.

Производные классы должны создать объекты ValidatorHandler, которые имеют null ErrorHandler и null LSResourceResolver.

Методы

setContentHandler

public abstract void setContentHandler(ContentHandler receiver)

Устанавливает ContentHandler, который получает результат расширенной валидации.

Когда указан ContentHandler, ValidatorHandler будет работать как фильтр и по сути скопирует входящие события в указанный ContentHandler.

При этом ValidatorHandler может изменять события, например, добавляя атрибуты по умолчанию.

ValidatorHandler может буферизовать события до определенного предела, но чтобы ValidatorHandler можно было использовать парсером, необходимо выполнить следующее требование.

  1. Когда вызываются ContentHandler.startElement(String, String, String, Attributes), ContentHandler.endElement(String, String, String), ContentHandler.startDocument() или ContentHandler.endDocument() на ValidatorHandler, тот же метод для указанного ContentHandler должен быть вызван для того же события до возврата вызова.
  2. ValidatorHandler не должен вводить новые элементы, которые отсутствовали во входных данных.
  3. ValidatorHandler не должен удалять атрибуты, которые присутствовали во входных данных.

Если метод обратного вызова для указанного ContentHandler вызывает исключение, то тот же объект исключения должен быть сгенерирован ValidatorHandler. ErrorHandler не должен получать уведомление об этом исключении.

Этот метод может вызываться даже в середине процесса валидации.

Параметры:
receiver - ContentHandler или значение null.

getContentHandler

public abstract ContentHandler getContentHandler()

Получает ContentHandler, который получает результат расширенной валидации.

Возвращает:
Этот метод возвращает объект, который был в последний раз задан с помощью метода getContentHandler(), или null, если этот метод никогда не вызывался с момента создания этого ValidatorHandler.
См. также:
setContentHandler(ContentHandler)

setErrorHandler

public abstract void setErrorHandler(ErrorHandler errorHandler)

Устанавливает ErrorHandler для получения ошибок, возникших во время валидации.

Обработчик ошибок может использоваться для настройки процесса обработки ошибок во время валидации. Когда установлен ErrorHandler, ошибки, обнаруженные во время валидации, сначала будут отправлены в ErrorHandler.

Обработчик ошибок может немедленно прервать дальнейшую валидацию, выбросив SAXException из обработчика. Или, например, он может вывести ошибку на экран и попытаться продолжить валидацию, нормально вернувшись из ErrorHandler.

Если любое исключение Throwable выбрасывается из ErrorHandler, то тот же объект Throwable будет переброшен в корень стека вызовов.

ValidatorHandler запрещается выбрасывать SAXException без предварительного сообщения об этом в ErrorHandler.

Если ErrorHandler равен null, реализация будет вести себя так, как если бы был установлен следующий ErrorHandler:

class DraconianErrorHandler implements ErrorHandler {
     public void fatalError( SAXParseException e ) throws SAXException {
         throw e;
     }
     public void error( SAXParseException e ) throws SAXException {
         throw e;
     }
     public void warning( SAXParseException e ) throws SAXException {
         // noop
     }
 }

При создании нового объекта ValidatorHandler, это поле по умолчанию устанавливается в null.

Параметры:
errorHandler - Новый обработчик ошибок для установки. Этот параметр может быть null.

getErrorHandler

public abstract ErrorHandler getErrorHandler()

Возвращает текущего ErrorHandler, установленного для этого ValidatorHandler.

Возвращает:
Этот метод возвращает объект, который был в последний раз задан с помощью метода setErrorHandler(ErrorHandler), или null, если этот метод никогда не вызывался с момента создания этого ValidatorHandler.
См. также:
setErrorHandler(ErrorHandler)

setResourceResolver

public abstract void setResourceResolver(LSResourceResolver resourceResolver)

Устанавливает LSResourceResolver для настройки разрешения ресурсов во время валидации.

ValidatorHandler использует LSResourceResolver при необходимости поиска внешних ресурсов во время валидации, хотя то, что именно составляет "поиск внешних ресурсов", зависит от каждого языка схем.

Если LSResourceResolver равно null, реализация будет вести себя так, как если бы был установлен следующий LSResourceResolver:

class DumbLSResourceResolver implements LSResourceResolver {
     public LSInput resolveResource(
         String publicId, String systemId, String baseURI) {

         return null; // always return null
     }
 }

Если LSResourceResolver вызывает исключение RuntimeException (или экземпляры его производных классов), то ValidatorHandler прервет парсинг, и вызывающий метод validate получит то же исключение RuntimeException.

При создании нового объекта ValidatorHandler, это поле по умолчанию устанавливается в null.

Параметры:
resourceResolver - Новый разрешитель ресурсов для установки. Этот параметр может быть null.

getResourceResolver

public abstract LSResourceResolver getResourceResolver()

Возвращает текущего LSResourceResolver, установленного для этого ValidatorHandler.

Возвращает:
Этот метод возвращает объект, который был в последний раз задан с помощью метода setResourceResolver(LSResourceResolver), или null, если этот метод никогда не вызывался с момента создания этого ValidatorHandler.
См. также:
setErrorHandler(ErrorHandler)

getTypeInfoProvider

public abstract TypeInfoProvider getTypeInfoProvider()

Получает реализацию TypeInfoProvider для этого ValidatorHandler.

Полученный TypeInfoProvider можно запросить во время парсинга для доступа к информации о типах, определенных валидатором.

Некоторые языки схем не определяют понятие типа; для таких языков этот метод может не поддерживаться. Однако для соответствия данному спецификации, реализации для W3C XML Schema 1.0 должны поддерживать эту операцию.

Возвращает:
null, если валидатор/язык схемы не поддерживает понятие TypeInfo. В противном случае возвращается непустой действительный TypeInfoProvider.

getFeature

public boolean getFeature(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException

Получает значение флага функции.

Имя функции — это любой полностью квалифицированный URI. ValidatorHandler может распознать имя функции, но временно не сможет вернуть его значение. Некоторые значения функций могут быть доступны только в определенных контекстах, таких как до, во время или после валидации.

Реализаторы могут (и должны) изобретать свои собственные функции, используя имена, основанные на своих собственных URI.

Параметры:
name - Имя функции, которое представляет собой непустой полностью квалифицированный URI.
Возвращает:
Текущее значение функции (true или false).
Исключения:
SAXNotRecognizedException - Если значение функции не может быть присвоено или получено.
SAXNotSupportedException - Если ValidatorHandler распознаёт имя функции, но не может определить его значение в данный момент.
NullPointerException - Когда name имеет значение null.
См. также:
setFeature(String, boolean)

setFeature

public void setFeature(String name,
                       boolean value)
                throws SAXNotRecognizedException,
                       SAXNotSupportedException

Установите функцию для этого ValidatorHandler.

Функция может использоваться для управления способом, которым ValidatorHandler анализирует схемы. Имя функции — любой полностью квалифицированный URI. Возможно, SchemaFactory может экспонировать значение функции, но не сможет изменить текущее значение. Некоторые значения функций могут быть неизменяемыми или изменяемыми только в определенных контекстах, таких как до, во время или после валидации.

Все реализации обязаны поддерживать функцию XMLConstants.FEATURE_SECURE_PROCESSING. Когда функция:

  • true: реализация ограничит обработку XML в соответствии с пределами реализации. Примеры включают пределы расширения сущностей и конструкции XML Schema, которые потребляют большое количество ресурсов. Если обработка XML ограничена по соображениям безопасности, это будет сообщено с помощью вызова зарегистрированного ErrorHandler.fatalError(SAXParseException exception). См. setErrorHandler(ErrorHandler errorHandler).
  • false: реализация будет обрабатывать XML в соответствии со спецификациями XML без учета возможных ограничений реализации.
Параметры:
name - Имя функции, которое является непустым полностью квалифицированным URI.
value - Запрашиваемое значение функции (true или false).
Исключения:
SAXNotRecognizedException - Если значение функции не может быть назначено или получено.
SAXNotSupportedException - Когда ValidatorHandler распознает имя функции, но не может установить запрашиваемое значение.
NullPointerException - Когда name равно null.
См. также:
getFeature(String)

setProperty

public void setProperty(String name,
                        Object object)
                 throws SAXNotRecognizedException,
                        SAXNotSupportedException

Установите значение свойства.

Имя свойства — любой полностью квалифицированный URI. Возможно, ValidatorHandler распознает имя свойства, но не сможет изменить текущее значение. Некоторые значения свойств могут быть неизменяемыми или изменяемыми только в определенных контекстах, например, до, во время или после валидации.

Для ValidatorHandler не требуется распознавание задания каких-либо конкретных имён свойств.

Параметры:
name - Имя свойства, которое является непустым полностью квалифицированным URI.
object - Запрашиваемое значение свойства.
Исключения:
SAXNotRecognizedException - Если значение свойства нельзя назначить или получить.
SAXNotSupportedException - Когда ValidatorHandler распознаёт имя свойства, но не может установить запрашиваемое значение.
NullPointerException - Когда name равно null.

getProperty

public Object getProperty(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException

Получение значения свойства.

Имя свойства — любой полностью квалифицированный URI. Возможно, ValidatorHandler распознает имя свойства, но временно не сможет вернуть его значение. Некоторые значения свойств могут быть доступны только в определённых контекстах, таких как до, во время или после валидации.

Для ValidatorHandler не требуется распознавание каких-либо конкретных имён свойств.

Реализаторы могут (и должны) изобретать свои собственные свойства, используя имена, основанные на своих собственных URI.

Параметры:
name - Имя свойства, которое является непустым полностью квалифицированным URI.
Возвращает:
Текущее значение свойства.
Исключения:
SAXNotRecognizedException - Если значение свойства нельзя назначить или получить.
SAXNotSupportedException - Когда XMLReader распознаёт имя свойства, но не может определить его значение в данный момент.
NullPointerException - Когда name равно null.
См. также:
setProperty(String, Object)

© 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