Dynamically locates classes to represent elements discovered during the unmarshalling.
THIS INTERFACE IS SUBJECT TO CHANGE WITHOUT NOTICE.
Background
JAXBContext.newInstance(Class) requires that application informs JAXB
about all the classes that it may see in the instance document. While this allows
JAXB to take time to optimize the unmarshalling, it is sometimes inconvenient
for applications.
This is where
ClassResolver comes to resucue.
A
ClassResolver instance can be specified on
Unmarshaller via
Unmarshaller.setProperty(StringObject) as follows:
unmarshaller.setProperty( ClassResolver.class.getName(), new MyClassResolverImpl() );
When an
Unmarshaller encounters (i) an unknown root element or (ii) unknown
elements where unmarshaller is trying to unmarshal into
XmlAnyElement with
lax=true, unmarshaller calls
ClassResolver.resolveElementName(String,String) method to see if the application may be able to supply a class that corresponds
to that class.
When a
Class is returned, a new
JAXBContext is created with
all the classes known to it so far, plus a new class returned. This operation
may fail (for example because of some conflicting annotations.) This failure
is handled just like
Exception s thrown from
ClassResolver.resolveElementName(StringString) .
author: Kohsuke Kawaguchi since: 2.1 |