Class Jaxb2Marshaller
- All Implemented Interfaces:
Aware,BeanClassLoaderAware,InitializingBean,GenericMarshaller,GenericUnmarshaller,Marshaller,MimeMarshaller,MimeUnmarshaller,Unmarshaller
GenericMarshaller interface for JAXB 2.2.
The typical usage will be to set either the "contextPath" or the "classesToBeBound" property on this bean, possibly customize the marshaller and unmarshaller by setting properties, schemas, adapters, and listeners, and to refer to it.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev, Sam Brannen
- See Also:
-
setContextPath(java.lang.String)setClassesToBeBound(java.lang.Class<?>...)setJaxbContextProperties(java.util.Map<java.lang.String, ?>)setMarshallerProperties(java.util.Map<java.lang.String, ?>)setUnmarshallerProperties(java.util.Map<java.lang.String, ?>)setSchema(org.springframework.core.io.Resource)setSchemas(org.springframework.core.io.Resource...)setMarshallerListener(jakarta.xml.bind.Marshaller.Listener)setUnmarshallerListener(jakarta.xml.bind.Unmarshaller.Listener)setAdapters(jakarta.xml.bind.annotation.adapters.XmlAdapter<?, ?>...)
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidInvoked by the containingBeanFactoryafter it has set all bean properties and satisfiedBeanFactoryAware,ApplicationContextAwareetc.protected XmlMappingExceptionConvert the givenJAXBExceptionto an appropriate exception from theorg.springframework.oxmhierarchy.Return a newly created JAXB marshaller.Return a newly created JAXB unmarshaller.Class<?>[]Return the list of Java classes to be recognized by a newly created JAXBContext.Return the JAXB context path.Return the JAXBContext used by this marshaller, lazily building it if necessary.String[]Return the packages to search for JAXB2 annotations.protected voidinitJaxbMarshaller(Marshaller marshaller) Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior.protected voidinitJaxbUnmarshaller(Unmarshaller unmarshaller) Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior.booleanReturn whether XML external entities are allowed.booleanReturn whether DTD parsing is supported.voidMarshal the object graph with the given root into the providedResult.voidmarshal(Object graph, Result result, MimeContainer mimeContainer) Marshals the object graph with the given root into the providedResult, writing binary data to aMimeContainer.voidsetAdapters(XmlAdapter<?, ?>... adapters) Specify theXmlAdapters to be registered with the JAXBMarshallerandUnmarshaller.voidsetBeanClassLoader(ClassLoader classLoader) Callback that supplies the beanclass loaderto a bean instance.voidsetCheckForXmlRootElement(boolean checkForXmlRootElement) Specify whether thesupports(Class)should check for@XmlRootElementannotations.voidsetClassesToBeBound(Class<?>... classesToBeBound) Set the list of Java classes to be recognized by a newly created JAXBContext.voidsetContextPath(String contextPath) Set a JAXB context path.voidsetContextPaths(String... contextPaths) Set multiple JAXB context paths.voidsetJaxbContextProperties(Map<String, ?> jaxbContextProperties) Set theJAXBContextproperties.voidsetLazyInit(boolean lazyInit) Set whether to lazily initialize theJAXBContextfor this marshaller.voidsetMappedClass(Class<?> mappedClass) Specify a JAXB mapped class for partial unmarshalling.voidsetMarshallerListener(Marshaller.Listener marshallerListener) Specify theMarshaller.Listenerto be registered with the JAXBMarshaller.voidsetMarshallerProperties(Map<String, ?> properties) Set the JAXBMarshallerproperties.voidsetMtomEnabled(boolean mtomEnabled) Specify whether MTOM support should be enabled or not.voidsetPackagesToScan(String... packagesToScan) Set the packages to search for classes with JAXB2 annotations in the classpath.voidsetProcessExternalEntities(boolean processExternalEntities) Indicate whether external XML entities are processed when unmarshalling.voidSet the schema resource to use for validation.voidsetSchemaLanguage(String schemaLanguage) Set the schema language.voidsetSchemaResourceResolver(LSResourceResolver schemaResourceResolver) Set the resource resolver, as used to load the schema resources.voidsetSchemas(Resource... schemaResources) Set the schema resources to use for validation.voidsetSupportDtd(boolean supportDtd) Indicate whether DTD parsing should be supported.voidsetSupportJaxbElementClass(boolean supportJaxbElementClass) voidsetUnmarshallerListener(Unmarshaller.Listener unmarshallerListener) Set theUnmarshaller.Listenerto be registered with the JAXBUnmarshaller.voidsetUnmarshallerProperties(Map<String, ?> properties) Set the JAXBUnmarshallerproperties.voidsetValidationEventHandler(ValidationEventHandler validationEventHandler) Set the JAXB validation event handler.booleanIndicate whether this marshaller can marshal instances of the supplied type.booleanIndicates whether this marshaller can marshal instances of the supplied generic type.Unmarshal the givenSourceinto an object graph.unmarshal(Source source, MimeContainer mimeContainer) Unmarshals the given providedSourceinto an object graph, reading binary attachments from aMimeContainer.protected ObjectunmarshalStaxSource(Unmarshaller jaxbUnmarshaller, Source staxSource)
-
Field Details
-
logger
Logger available to subclasses.
-
-
Constructor Details
-
Jaxb2Marshaller
public Jaxb2Marshaller()
-
-
Method Details
-
setContextPaths
Set multiple JAXB context paths. The given array of context paths gets converted to a colon-delimited string, as supported by JAXB. -
setContextPath
Set a JAXB context path.Setting either this property,
"classesToBeBound"or"packagesToScan"is required. -
getContextPath
Return the JAXB context path. -
setClassesToBeBound
Set the list of Java classes to be recognized by a newly created JAXBContext.Setting either this property,
"contextPath"or"packagesToScan"is required. -
getClassesToBeBound
Return the list of Java classes to be recognized by a newly created JAXBContext. -
setPackagesToScan
Set the packages to search for classes with JAXB2 annotations in the classpath. This is using a Spring-bases search and therefore analogous to Spring's component-scan feature (ClassPathBeanDefinitionScanner).Setting either this property,
"contextPath"or"classesToBeBound"is required. -
getPackagesToScan
Return the packages to search for JAXB2 annotations. -
setJaxbContextProperties
Set theJAXBContextproperties. These implementation-specific properties will be set on the underlyingJAXBContext. -
setMarshallerProperties
Set the JAXBMarshallerproperties.These properties will be set on the underlying JAXB
Marshaller, and allow for features such as indentation.- Parameters:
properties- the properties- See Also:
-
setUnmarshallerProperties
Set the JAXBUnmarshallerproperties.These properties will be set on the underlying JAXB
Unmarshaller.- Parameters:
properties- the properties- See Also:
-
setMarshallerListener
Specify theMarshaller.Listenerto be registered with the JAXBMarshaller. -
setUnmarshallerListener
Set theUnmarshaller.Listenerto be registered with the JAXBUnmarshaller. -
setValidationEventHandler
Set the JAXB validation event handler. This event handler will be called by JAXB if any validation errors are encountered during calls to any of the marshal APIs. -
setAdapters
Specify theXmlAdapters to be registered with the JAXBMarshallerandUnmarshaller. -
setSchema
Set the schema resource to use for validation. -
setSchemas
Set the schema resources to use for validation. -
setSchemaLanguage
Set the schema language. Default is the W3C XML Schema:http://www.w3.org/2001/XMLSchema". -
setSchemaResourceResolver
Set the resource resolver, as used to load the schema resources. -
setLazyInit
public void setLazyInit(boolean lazyInit) Set whether to lazily initialize theJAXBContextfor this marshaller. Default isfalseto initialize on startup; can be switched totrue.Early initialization just applies if
afterPropertiesSet()is called. -
setMtomEnabled
public void setMtomEnabled(boolean mtomEnabled) Specify whether MTOM support should be enabled or not. Default isfalse: marshalling using XOP/MTOM not being enabled. -
setSupportJaxbElementClass
public void setSupportJaxbElementClass(boolean supportJaxbElementClass) Specify whether thesupports(Class)returnstruefor theJAXBElementclass.Default is
false, meaning thatsupports(Class)always returnsfalseforJAXBElementclasses (thoughsupports(Type)can returntrue, since it can obtain the type parameters ofJAXBElement).This property is typically enabled in combination with usage of classes like
MarshallingView, since theModelAndViewdoes not offer type parameter information at runtime.- See Also:
-
setCheckForXmlRootElement
public void setCheckForXmlRootElement(boolean checkForXmlRootElement) Specify whether thesupports(Class)should check for@XmlRootElementannotations.Default is
true, meaning thatsupports(Class)will check for this annotation. However, some JAXB implementations (i.e. EclipseLink MOXy) allow for defining the bindings in an external definition file, thus keeping the classes annotations free. Setting this property tofalsesupports these JAXB implementations.- See Also:
-
setMappedClass
Specify a JAXB mapped class for partial unmarshalling. -
setSupportDtd
public void setSupportDtd(boolean supportDtd) Indicate whether DTD parsing should be supported.Default is
falsemeaning that DTD is disabled. -
isSupportDtd
public boolean isSupportDtd()Return whether DTD parsing is supported. -
setProcessExternalEntities
public void setProcessExternalEntities(boolean processExternalEntities) Indicate whether external XML entities are processed when unmarshalling.Default is
false, meaning that external entities are not resolved. Note that processing of external entities will only be enabled/disabled when theSourcepassed tounmarshal(Source)is aSAXSourceorStreamSource. It has no effect forDOMSourceorStAXSourceinstances.Note: setting this option to
truealso automatically setssetSupportDtd(boolean)totrue. -
isProcessExternalEntities
public boolean isProcessExternalEntities()Return whether XML external entities are allowed. -
setBeanClassLoader
Description copied from interface:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
setBeanClassLoaderin interfaceBeanClassLoaderAware- Parameters:
classLoader- the owning class loader
-
afterPropertiesSet
Description copied from interface:InitializingBeanInvoked by the containingBeanFactoryafter it has set all bean properties and satisfiedBeanFactoryAware,ApplicationContextAwareetc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- Specified by:
afterPropertiesSetin interfaceInitializingBean- Throws:
Exception- in the event of misconfiguration (such as failure to set an essential property) or if initialization fails for any other reason
-
getJaxbContext
Return the JAXBContext used by this marshaller, lazily building it if necessary. -
supports
Description copied from interface:MarshallerIndicate whether this marshaller can marshal instances of the supplied type.- Specified by:
supportsin interfaceMarshaller- Specified by:
supportsin interfaceUnmarshaller- Parameters:
clazz- the class that this marshaller is being asked if it can marshal- Returns:
trueif this marshaller can indeed marshal instances of the supplied class;falseotherwise
-
supports
Description copied from interface:GenericMarshallerIndicates whether this marshaller can marshal instances of the supplied generic type.- Specified by:
supportsin interfaceGenericMarshaller- Specified by:
supportsin interfaceGenericUnmarshaller- Parameters:
genericType- the type that this marshaller is being asked if it can marshal- Returns:
trueif this marshaller can indeed marshal instances of the supplied type;falseotherwise
-
marshal
Description copied from interface:MarshallerMarshal the object graph with the given root into the providedResult.- Specified by:
marshalin interfaceMarshaller- Parameters:
graph- the root of the object graph to marshalresult- the result to marshal to- Throws:
XmlMappingException- if the given object cannot be marshalled to the result
-
marshal
public void marshal(Object graph, Result result, @Nullable MimeContainer mimeContainer) throws XmlMappingException Description copied from interface:MimeMarshallerMarshals the object graph with the given root into the providedResult, writing binary data to aMimeContainer.- Specified by:
marshalin interfaceMimeMarshaller- Parameters:
graph- the root of the object graph to marshalresult- the result to marshal tomimeContainer- the MIME container to write extracted binary content to- Throws:
XmlMappingException- if the given object cannot be marshalled to the result
-
createMarshaller
Return a newly created JAXB marshaller.Note: JAXB marshallers are not necessarily thread-safe. This method is public as of 5.2.
- Since:
- 5.2
- See Also:
-
initJaxbMarshaller
Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior. Gets called after creation of JAXBMarshaller, and after the respective properties have been set.The default implementation sets the
defined properties, thevalidation event handler, theschemas,listener, andadapters.- Throws:
JAXBException
-
unmarshal
Description copied from interface:UnmarshallerUnmarshal the givenSourceinto an object graph.- Specified by:
unmarshalin interfaceUnmarshaller- Parameters:
source- the source to marshal from- Returns:
- the object graph
- Throws:
XmlMappingException- if the given source cannot be mapped to an object
-
unmarshal
public Object unmarshal(Source source, @Nullable MimeContainer mimeContainer) throws XmlMappingException Description copied from interface:MimeUnmarshallerUnmarshals the given providedSourceinto an object graph, reading binary attachments from aMimeContainer.- Specified by:
unmarshalin interfaceMimeUnmarshaller- Parameters:
source- the source to marshal frommimeContainer- the MIME container to read extracted binary content from- Returns:
- the object graph
- Throws:
XmlMappingException- if the given source cannot be mapped to an object
-
createUnmarshaller
Return a newly created JAXB unmarshaller.Note: JAXB unmarshallers are not necessarily thread-safe. This method is public as of 5.2.
- Since:
- 5.2
- See Also:
-
unmarshalStaxSource
protected Object unmarshalStaxSource(Unmarshaller jaxbUnmarshaller, Source staxSource) throws JAXBException - Throws:
JAXBException
-
initJaxbUnmarshaller
Template method that can be overridden by concrete JAXB marshallers for custom initialization behavior. Gets called after creation of JAXBMarshaller, and after the respective properties have been set.The default implementation sets the
defined properties, thevalidation event handler, theschemas,listener, andadapters.- Throws:
JAXBException
-
convertJaxbException
Convert the givenJAXBExceptionto an appropriate exception from theorg.springframework.oxmhierarchy.- Parameters:
ex-JAXBExceptionthat occurred- Returns:
- the corresponding
XmlMappingException
-