public abstract class IdRefMapperBase extends java.lang.Object implements IMarshaller, IUnmarshaller, IAliasable
Abstract base custom marshaller/unmarshaller for an object reference. This
marshals the reference as an empty element with a single IDREF attribute, and
unmarshals an element with the same structure to create a reference to the
object with that ID value. To use this class you need to create a subclass
with a constructor using the same signature as the one provided (calling the
base class constructor from your subclass constructor) and implement the
abstract getIdValue(java.lang.Object)
method in your subclass. You can also override
the provided getAttributeName()
method to change the name used for the
IDREF attribute. Note that this class can only be used when the definitions
precede the references in the XML document; if a referenced ID is not defined
the unmarshaller throws an exception.
Modifier and Type | Field and Description |
---|---|
private int |
m_index |
private java.lang.String |
m_name |
private java.lang.String |
m_uri |
Constructor and Description |
---|
IdRefMapperBase(java.lang.String uri,
int index,
java.lang.String name)
Aliased constructor taking a name definition for the element.
|
Modifier and Type | Method and Description |
---|---|
protected java.lang.String |
getAttributeName()
Method which can be overridden to supply a different name for the ID
reference attribute.
|
protected abstract java.lang.String |
getIdValue(java.lang.Object item)
Get the ID value from object being marshalled.
|
boolean |
isExtension(java.lang.String mapname)
Check if marshaller represents an extension mapping.
|
boolean |
isPresent(IUnmarshallingContext ctx)
Check if instance present in XML.
|
void |
marshal(java.lang.Object obj,
IMarshallingContext ictx)
Marshal instance of handled class.
|
java.lang.Object |
unmarshal(java.lang.Object obj,
IUnmarshallingContext ictx)
Unmarshal instance of handled class.
|
private java.lang.String m_uri
private int m_index
private java.lang.String m_name
public IdRefMapperBase(java.lang.String uri, int index, java.lang.String name)
uri
- namespace URI for the top-level elementindex
- namespace index corresponding to the defined URI within the
marshalling context definitionsname
- local name for the top-level elementprotected abstract java.lang.String getIdValue(java.lang.Object item)
protected java.lang.String getAttributeName()
public boolean isExtension(java.lang.String mapname)
IMarshaller
isExtension
in interface IMarshaller
mapname
- marshaller mapping name (generally the class name to be
handled, or abstract mapping type name)true
if this mapping is an extension of the abstract
mapping, false
if notpublic void marshal(java.lang.Object obj, IMarshallingContext ictx) throws JiBXException
IMarshaller
marshal
in interface IMarshaller
obj
- object to be marshalled (may be null
if property
is not optional)ictx
- XML text output contextJiBXException
- on error in marshalling processpublic boolean isPresent(IUnmarshallingContext ctx) throws JiBXException
IUnmarshaller
isPresent
in interface IUnmarshaller
ctx
- unmarshalling contexttrue
if expected parse data found,
false
if notJiBXException
- on error in unmarshalling processpublic java.lang.Object unmarshal(java.lang.Object obj, IUnmarshallingContext ictx) throws JiBXException
IUnmarshaller
unmarshal
in interface IUnmarshaller
obj
- object to be unmarshalled (may be null
)ictx
- unmarshalling contextnull
)JiBXException
- on error in unmarshalling process