blob: 4f620b1f1b0e8a07b3b2a55f421f0f7cd3a0522f [file] [log] [blame]
//
// Copyright (c) 2020 Contributors to the Eclipse Foundation
//
[appendix]
== Deprecated JAXB 1.0 Functionality
=== Overview
Due to significant re-architecture in JAXB
2.0 to improve efficiency, usability, schema-derived footprint and
binding framework runtime footprint, certain JAXB 1.0 operations are no
longer required to be implemented in JAXB 2.0. These deprecated
operations do still need to be supported by a JAXB 2.0 binding runtime
for JAXB 1.0 schema-derived classes.
=== On-demand Validation
It is optional for a JAXB 2.0 implementation
to implement on-demand validation for JAXB 2.0 mapped classes. There is
no reasonable way to implement this functionality of JAXB 2.0 annotated
classes and leverage JAXP 1.3 validation facility. For backwards
compatibility, an implementation is required to support this
functionality for JAXB 1.0 schema-derived classes.
==== Validator for JAXB 1.0 schema-derived classes
_The following text is from JAXB 1.0
Specification and applies to JAXB 1.0 schema-derived classes._
An application may wish to validate the
correctness of the Java content tree based on schema validation
constraints. This form of validation enables an application to initiate
the validation process on a Java content tree at a point in time that it
feels it should be valid. The application is notified about validation
errors and warnings detected in the Java content tree.
The `Validator` class is responsible for
controlling the validation of a content tree of in-memory objects. The
following summarizes the available operations on the class.
[source,java,indent="4"]
----
public interface Validator {
ValidationEventHandler getEventHandler()
void setEventHandler(ValidationEventHandler)
boolean validate(java.lang.Object subrootObject)
boolean validateRoot(java.lang.Object rootObject)
java.lang.Object getProperty(java.lang.String name)
void setProperty(java.lang.String name, java.lang.Object value)
}
----
`The JAXBContext` class provides a factory
to create a `Validator` instance. After an application has made a series
of modifications to a Java content tree, the application validates the
content tree on-demand. As far as the application is concerned, this
validation takes place against the Java content instances and validation
constraint warnings and errors are reported to the application relative
to the Java content tree. Validation is initiated by invoking the
`validateRoot(Object)` method on the root of the Java content tree or by
invoking `validate(Object)` method to validate any arbitrary subtree of
the Java content tree. The only difference between these two methods is
global constraint checking (i.e. verifying ID/IDREF constraints.) The
`validateRoot(Object)` method includes global constraint checking as
part of its operation, whereas the `validate(Object)` method does not.
The validator governs the process of
validating the content tree, serves as a registry for identifier
references, and ensures that all local (and when appropriate, global)
structural constraints are checked before the validation process is
complete.
If a violation of a local or global
structural constraint is detected, then the application is notified of
the event with a callback passing an instance of a `ValidationEvent` as
a parameter.