- java.lang.Object
-
- com.sun.xml.bind.api.ClassResolver
-
public abstract class ClassResolver extends Object
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 onUnmarshaller
viaUnmarshaller.setProperty(String, Object)
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 intoXmlAnyElement
withlax=true
, unmarshaller callsresolveElementName(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 newJAXBContext
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 likeException
s thrown fromresolveElementName(String, String)
.- Since:
- 2.1
- Author:
- Kohsuke Kawaguchi
-
-
Constructor Summary
Constructors Constructor Description ClassResolver()
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description abstract Class<?>
resolveElementName(String nsUri, String localName)
JAXB calls this method when it sees an unknown element.
-
-
-
Method Detail
-
resolveElementName
@Nullable public abstract Class<?> resolveElementName(@NotNull String nsUri, @NotNull String localName) throws Exception
JAXB calls this method when it sees an unknown element.See the class javadoc for details.
- Parameters:
nsUri
- Namespace URI of the unknown element. Can be empty but never null.localName
- Local name of the unknown element. Never be empty nor null.- Returns:
- If a non-null class is returned, it will be used to unmarshal this element.
If null is returned, the resolution is assumed to be failed, and
the unmarshaller will behave as if there was no
ClassResolver
to begin with (that is, to report it toValidationEventHandler
, then move on.) - Throws:
Exception
- Throwing anyRuntimeException
causes the unmarshaller to stop immediately. The exception will be propagated up the call stack. Throwing any other checkedException
results in the error reproted toValidationEventHandler
(just like any other error during the unmarshalling.)
-
-