com.sun.xml.bind.v2.runtime.unmarshaller
Class DefaultIDResolver

java.lang.Object
  extended by com.sun.xml.bind.IDResolver
      extended by com.sun.xml.bind.v2.runtime.unmarshaller.DefaultIDResolver

final class DefaultIDResolver
extends IDResolver

Default implementation of IDResolver.


Constructor Summary
DefaultIDResolver()
           
 
Method Summary
 void bind(String id, Object obj)
          Binds the given object to the specified ID.
 Callable resolve(String id, Class targetType)
          Obtains the object to be pointed by the IDREF value.
 void startDocument(ValidationEventHandler eventHandler)
          Called when the unmarshalling starts.
 
Methods inherited from class com.sun.xml.bind.IDResolver
endDocument
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultIDResolver

DefaultIDResolver()
Method Detail

startDocument

public void startDocument(ValidationEventHandler eventHandler)
                   throws SAXException
Description copied from class: IDResolver
Called when the unmarshalling starts.

Since one Unmarshaller may be used multiple times to unmarshal documents, one IDResolver may be used multiple times, too.

Overrides:
startDocument in class IDResolver
Parameters:
eventHandler - Any errors found during the unmarshalling should be reported to this object.
Throws:
SAXException

bind

public void bind(String id,
                 Object obj)
Description copied from class: IDResolver
Binds the given object to the specified ID.

While a document is being unmarshalled, every time an ID value is found, this method is invoked to remember the association between ID and objects. This association is supposed to be used later to resolve IDREFs.

This method is invoked right away as soon as a new ID value is found.

Specified by:
bind in class IDResolver
Parameters:
id - The ID value found in the document being unmarshalled. Always non-null.
obj - The object being unmarshalled which is going to own the ID. Always non-null.

resolve

public Callable resolve(String id,
                        Class targetType)
Description copied from class: IDResolver
Obtains the object to be pointed by the IDREF value.

While a document is being unmarshalled, every time an IDREF value is found, this method is invoked immediately to obtain the object that the IDREF is pointing to.

This method returns a Callable to support forward-references. When this method returns with a non-null return value, the JAXB RI unmarshaller invokes the Callable.call() method immediately. If the implementation can find the target object (in which case it was a backward reference), then a non-null object shall be returned, and it is used as the target object.

When a forward-reference happens, the call method should return null. In this case the JAXB RI unmarshaller invokes the call method again after all the documents are fully unmarshalled. If the call method still returns null, then the JAXB RI unmarshaller treats it as an error.

A Callable object returned from this method may not throw any exception other than a SAXException (which means a fatal error.)

Specified by:
resolve in class IDResolver
Parameters:
id - The IDREF value found in the document being unmarshalled. Always non-null.
targetType - The expected type to which ID resolves to. JAXB infers this information from the signature of the fields that has XmlIDREF. When a property is a collection, this parameter will be the type of the individual item in the collection.
Returns:
null if the implementation is sure that the parameter combination will never yield a valid object. Otherwise non-null.