public abstract class AbstractMarshallerImpl extends java.lang.Object implements Marshaller
Marshaller
implementation.
This class provides a partial default implementation for the
Marshaller
interface.
The only methods that a Jakarta XML Binding Provider has to implement are
marshal(Object, javax.xml.transform.Result)
,
marshal(Object, javax.xml.stream.XMLStreamWriter)
, and
marshal(Object, javax.xml.stream.XMLEventWriter)
.
Marshaller
Marshaller.Listener
JAXB_ENCODING, JAXB_FORMATTED_OUTPUT, JAXB_FRAGMENT, JAXB_NO_NAMESPACE_SCHEMA_LOCATION, JAXB_SCHEMA_LOCATION
Modifier | Constructor and Description |
---|---|
protected |
AbstractMarshallerImpl()
Do-nothing constructor for the derived classes.
|
Modifier and Type | Method and Description |
---|---|
<A extends XmlAdapter<?,?>> |
getAdapter(java.lang.Class<A> type)
Gets the adapter associated with the specified type.
|
AttachmentMarshaller |
getAttachmentMarshaller() |
protected java.lang.String |
getEncoding()
Convenience method for getting the current output encoding.
|
ValidationEventHandler |
getEventHandler()
Return the current event handler or the default event handler if one
hasn't been set.
|
protected java.lang.String |
getJavaEncoding(java.lang.String encoding)
Gets the corresponding Java encoding name from an IANA name.
|
Marshaller.Listener |
getListener()
Return
Marshaller.Listener registered with this Marshaller . |
org.w3c.dom.Node |
getNode(java.lang.Object obj)
By default, the getNode method is unsupported and throw
an
UnsupportedOperationException . |
protected java.lang.String |
getNoNSSchemaLocation()
Convenience method for getting the current noNamespaceSchemaLocation.
|
java.lang.Object |
getProperty(java.lang.String name)
Default implementation of the getProperty method handles
the four defined properties in Marshaller.
|
javax.xml.validation.Schema |
getSchema()
Get the JAXP
Schema object
being used to perform marshal-time validation. |
protected java.lang.String |
getSchemaLocation()
Convenience method for getting the current schemaLocation.
|
protected boolean |
isFormattedOutput()
Convenience method for getting the formatted output flag.
|
protected boolean |
isFragment()
Convenience method for getting the fragment flag.
|
void |
marshal(java.lang.Object obj,
org.xml.sax.ContentHandler handler)
Marshal the content tree rooted at
jaxbElement into SAX2 events. |
void |
marshal(java.lang.Object jaxbElement,
java.io.File output)
Marshal the content tree rooted at
jaxbElement into a file. |
void |
marshal(java.lang.Object obj,
org.w3c.dom.Node node)
Marshal the content tree rooted at
jaxbElement into a DOM tree. |
void |
marshal(java.lang.Object obj,
java.io.OutputStream os)
Marshal the content tree rooted at
jaxbElement into an output stream. |
void |
marshal(java.lang.Object obj,
java.io.Writer w)
Marshal the content tree rooted at
jaxbElement into a Writer. |
void |
marshal(java.lang.Object obj,
javax.xml.stream.XMLEventWriter writer)
Marshal the content tree rooted at
jaxbElement into a
XMLEventWriter . |
void |
marshal(java.lang.Object obj,
javax.xml.stream.XMLStreamWriter writer)
Marshal the content tree rooted at
jaxbElement into a
XMLStreamWriter . |
<A extends XmlAdapter<?,?>> |
setAdapter(A adapter)
Associates a configured instance of
XmlAdapter with this marshaller. |
<A extends XmlAdapter<?,?>> |
setAdapter(java.lang.Class<A> type,
A adapter)
Associates a configured instance of
XmlAdapter with this marshaller. |
void |
setAttachmentMarshaller(AttachmentMarshaller am)
Associate a context that enables binary data within an XML document
to be transmitted as XML-binary optimized attachment.
|
protected void |
setEncoding(java.lang.String encoding)
Convenience method for setting the output encoding.
|
void |
setEventHandler(ValidationEventHandler handler)
Allow an application to register a validation event handler.
|
protected void |
setFormattedOutput(boolean v)
Convenience method for setting the formatted output flag.
|
protected void |
setFragment(boolean v)
Convenience method for setting the fragment flag.
|
void |
setListener(Marshaller.Listener listener)
Register marshal event callback
Marshaller.Listener with this Marshaller . |
protected void |
setNoNSSchemaLocation(java.lang.String location)
Convenience method for setting the noNamespaceSchemaLocation.
|
void |
setProperty(java.lang.String name,
java.lang.Object value)
Default implementation of the setProperty method handles
the four defined properties in Marshaller.
|
void |
setSchema(javax.xml.validation.Schema schema)
Specify the JAXP
Schema
object that should be used to validate subsequent marshal operations
against. |
protected void |
setSchemaLocation(java.lang.String location)
Convenience method for setting the schemaLocation.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
marshal
protected AbstractMarshallerImpl()
public final void marshal(java.lang.Object obj, java.io.OutputStream os) throws JAXBException
Marshaller
jaxbElement
into an output stream.marshal
in interface Marshaller
obj
- The root of content tree to be marshalled.os
- XML will be added to this stream.JAXBException
- If any unexpected problem occurs during the marshalling.MarshalException
- If the ValidationEventHandler
returns false from its handleEvent
method or the
Marshaller
is unable to marshal jaxbElement
(or any
object reachable from jaxbElement
). See
Marshalling a Jakarta XML Binding element.public void marshal(java.lang.Object jaxbElement, java.io.File output) throws JAXBException
Marshaller
jaxbElement
into a file.marshal
in interface Marshaller
jaxbElement
- The root of content tree to be marshalled.output
- File to be written. If this file already exists, it will be overwritten.JAXBException
- If any unexpected problem occurs during the marshalling.MarshalException
- If the ValidationEventHandler
returns false from its handleEvent
method or the
Marshaller
is unable to marshal jaxbElement
(or any
object reachable from jaxbElement
). See
Marshalling a Jakarta XML Binding element.public final void marshal(java.lang.Object obj, java.io.Writer w) throws JAXBException
Marshaller
jaxbElement
into a Writer.marshal
in interface Marshaller
obj
- The root of content tree to be marshalled.w
- XML will be sent to this writer.JAXBException
- If any unexpected problem occurs during the marshalling.MarshalException
- If the ValidationEventHandler
returns false from its handleEvent
method or the
Marshaller
is unable to marshal jaxbElement
(or any
object reachable from jaxbElement
). See
Marshalling a Jakarta XML Binding element.public final void marshal(java.lang.Object obj, org.xml.sax.ContentHandler handler) throws JAXBException
Marshaller
jaxbElement
into SAX2 events.marshal
in interface Marshaller
obj
- The root of content tree to be marshalled.handler
- XML will be sent to this handler as SAX2 events.JAXBException
- If any unexpected problem occurs during the marshalling.MarshalException
- If the ValidationEventHandler
returns false from its handleEvent
method or the
Marshaller
is unable to marshal jaxbElement
(or any
object reachable from jaxbElement
). See
Marshalling a Jakarta XML Binding element.public final void marshal(java.lang.Object obj, org.w3c.dom.Node node) throws JAXBException
Marshaller
jaxbElement
into a DOM tree.marshal
in interface Marshaller
obj
- The content tree to be marshalled.node
- DOM nodes will be added as children of this node.
This parameter must be a Node that accepts children
(Document
,
DocumentFragment
, or
Element
)JAXBException
- If any unexpected problem occurs during the marshalling.MarshalException
- If the ValidationEventHandler
returns false from its handleEvent
method or the
Marshaller
is unable to marshal jaxbElement
(or any
object reachable from jaxbElement
). See
Marshalling a Jakarta XML Binding element.public org.w3c.dom.Node getNode(java.lang.Object obj) throws JAXBException
UnsupportedOperationException
.
Implementations that choose to support this method must
override this method.getNode
in interface Marshaller
obj
- - Jakarta XML Binding Java representation of XML contentJAXBException
- If any unexpected problem occursprotected java.lang.String getEncoding()
protected void setEncoding(java.lang.String encoding)
encoding
- a valid encoding as specified in the Marshaller class
documentationprotected java.lang.String getSchemaLocation()
protected void setSchemaLocation(java.lang.String location)
location
- the schemaLocation valueprotected java.lang.String getNoNSSchemaLocation()
protected void setNoNSSchemaLocation(java.lang.String location)
location
- the noNamespaceSchemaLocation valueprotected boolean isFormattedOutput()
protected void setFormattedOutput(boolean v)
v
- value of the formatted output flag.protected boolean isFragment()
protected void setFragment(boolean v)
v
- value of the fragment flag.protected java.lang.String getJavaEncoding(java.lang.String encoding) throws java.io.UnsupportedEncodingException
java.io.UnsupportedEncodingException
- If this implementation couldn't find the Java encoding name.public void setProperty(java.lang.String name, java.lang.Object value) throws PropertyException
setProperty
in interface Marshaller
name
- the name of the property to be set. This value can either
be specified using one of the constant fields or a user
supplied string.value
- the value of the property to be setPropertyException
- when there is an error processing the given
property or valuepublic java.lang.Object getProperty(java.lang.String name) throws PropertyException
getProperty
in interface Marshaller
name
- the name of the property to retrievePropertyException
- when there is an error retrieving the given property or value
property namepublic ValidationEventHandler getEventHandler() throws JAXBException
Marshaller
getEventHandler
in interface Marshaller
JAXBException
- if an error was encountered while getting the
current event handlerMarshaller.getEventHandler()
public void setEventHandler(ValidationEventHandler handler) throws JAXBException
Marshaller
The validation event handler will be called by the Jakarta XML Binding Provider if any validation errors are encountered during calls to any of the marshal API's. If the client application does not register a validation event handler before invoking one of the marshal methods, then validation events will be handled by the default event handler which will terminate the marshal operation after the first error or fatal error is encountered.
Calling this method with a null parameter will cause the Marshaller to revert back to the default default event handler.
setEventHandler
in interface Marshaller
handler
- the validation event handlerJAXBException
- if an error was encountered while setting the
event handlerMarshaller.setEventHandler(ValidationEventHandler)
public void marshal(java.lang.Object obj, javax.xml.stream.XMLEventWriter writer) throws JAXBException
Marshaller
jaxbElement
into a
XMLEventWriter
.marshal
in interface Marshaller
obj
- The content tree rooted at jaxbElement to be marshalled.writer
- XML will be sent to this writer.JAXBException
- If any unexpected problem occurs during the marshalling.MarshalException
- If the ValidationEventHandler
returns false from its handleEvent
method or the
Marshaller
is unable to marshal jaxbElement
(or any
object reachable from jaxbElement
). See
Marshalling a Jakarta XML Binding element.public void marshal(java.lang.Object obj, javax.xml.stream.XMLStreamWriter writer) throws JAXBException
Marshaller
jaxbElement
into a
XMLStreamWriter
.marshal
in interface Marshaller
obj
- The content tree to be marshalled.writer
- XML will be sent to this writer.JAXBException
- If any unexpected problem occurs during the marshalling.MarshalException
- If the ValidationEventHandler
returns false from its handleEvent
method or the
Marshaller
is unable to marshal jaxbElement
(or any
object reachable from jaxbElement
). See
Marshalling a Jakarta XML Binding element.public void setSchema(javax.xml.validation.Schema schema)
Marshaller
Schema
object that should be used to validate subsequent marshal operations
against. Passing null into this method will disable validation.
This method allows the caller to validate the marshalled XML as it's marshalled.
Initially this property is set to null
.
setSchema
in interface Marshaller
schema
- Schema object to validate marshal operations against or null to disable validationpublic javax.xml.validation.Schema getSchema()
Marshaller
Schema
object
being used to perform marshal-time validation. If there is no
Schema set on the marshaller, then this method will return null
indicating that marshal-time validation will not be performed.getSchema
in interface Marshaller
public <A extends XmlAdapter<?,?>> void setAdapter(A adapter)
Marshaller
XmlAdapter
with this marshaller.
This is a convenience method that invokes setAdapter(adapter.getClass(),adapter);
.
setAdapter
in interface Marshaller
A
- the type of the adapteradapter
- The instance of the adapter to be used. If null, it will un-register
the current adapter set for this type.Marshaller.setAdapter(Class,XmlAdapter)
public <A extends XmlAdapter<?,?>> void setAdapter(java.lang.Class<A> type, A adapter)
Marshaller
XmlAdapter
with this marshaller.
Every marshaller internally maintains a
Map
<Class
,XmlAdapter
>,
which it uses for marshalling classes whose fields/methods are annotated
with XmlJavaTypeAdapter
.
This method allows applications to use a configured instance of XmlAdapter
.
When an instance of an adapter is not given, a marshaller will create
one by invoking its default constructor.
setAdapter
in interface Marshaller
A
- the type of the adaptertype
- The type of the adapter. The specified instance will be used when
XmlJavaTypeAdapter.value()
refers to this type.adapter
- The instance of the adapter to be used. If null, it will un-register
the current adapter set for this type.public <A extends XmlAdapter<?,?>> A getAdapter(java.lang.Class<A> type)
Marshaller
Marshaller.setAdapter(A)
method.getAdapter
in interface Marshaller
A
- the type of the adaptertype
- The type of the adapter. The specified instance will be used when
XmlJavaTypeAdapter.value()
refers to this type.public void setAttachmentMarshaller(AttachmentMarshaller am)
Marshaller
setAttachmentMarshaller
in interface Marshaller
am
- the attachment marshaller to be setpublic AttachmentMarshaller getAttachmentMarshaller()
getAttachmentMarshaller
in interface Marshaller
public void setListener(Marshaller.Listener listener)
Marshaller
Register marshal event callback Marshaller.Listener
with this Marshaller
.
There is only one Listener per Marshaller. Setting a Listener replaces the previous set Listener.
One can unregister current Listener by setting listener to null
.
setListener
in interface Marshaller
listener
- an instance of a class that implements Marshaller.Listener
public Marshaller.Listener getListener()
Marshaller
Return Marshaller.Listener
registered with this Marshaller
.
getListener
in interface Marshaller
Marshaller.Listener
or null
if no Listener is registered with this Marshaller.