Class JAXBXmlTypeProvider
- All Implemented Interfaces:
jakarta.ws.rs.ext.MessageBodyReader<Object>,jakarta.ws.rs.ext.MessageBodyWriter<Object>,AsyncBufferedMessageBodyWriter<Object>,AsyncMessageBodyWriter<Object>
A JAXB entity provider that handles classes without XmlRootElement annotation. Classes which have
been generated by XJC will most likely not contain this annotation, In order for these classes to
marshalled, they must be wrapped within a JAXBElement instance. This is typically accomplished by
invoking a method on the class which serves as the XmlRegistry and is named ObjectFactory.
This provider is selected when the class is annotated with an XmlType annotation and
not an XmlRootElement annotation.
This provider simplifies this task by attempting to locate the XmlRegistry for the target class. By
default, a JAXB implementation will create a class called ObjectFactory and is located in the same package
as the target class. When this class is located, it will contain a "create" method that takes the object
instance as a parameter. For example, of the target type is called "Contact", then the ObjectFactory class
will have a method:
public JAXBElement<Contact> createContact(Contact value);
- Version:
- $Revision:$
- Author:
- Ryan J. McDonough
-
Field Summary
FieldsFields inherited from class org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider
providers -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic ObjectfindObjectFactory(Class<?> type) Attempts to locateXmlRegistryfor the XML type.protected booleanisReadWritable(Class<?> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType) readFrom(Class<Object> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, jakarta.ws.rs.core.MultivaluedMap<String, String> httpHeaders, InputStream entityStream) static jakarta.xml.bind.JAXBElement<?> wrapInJAXBElement(Object t, Class<?> type) If this object is managed by an XmlRegistry, this method will invoke the registry and wrap the object in a JAXBElement so that it can be marshalled.voidwriteTo(Object t, Class<?> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, jakarta.ws.rs.core.MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) Methods inherited from class org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider
decorateMarshaller, decorateUnmarshaller, findJAXBContext, getCharset, getMarshaller, isDisableDTDs, isDisableExternalEntities, isEnableSecureProcessingFeature, isReadable, isWriteable, needsSecurity, processWithSecureProcessing, setCharset, setDisableDTDs, setDisableExternalEntities, setEnableSecureProcessingFeatureMethods inherited from class org.jboss.resteasy.plugins.providers.AbstractEntityProvider
getSizeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.jboss.resteasy.core.messagebody.AsyncBufferedMessageBodyWriter
asyncWriteToMethods inherited from interface jakarta.ws.rs.ext.MessageBodyWriter
getSize
-
Field Details
-
OBJECT_FACTORY_NAME
- See Also:
-
-
Constructor Details
-
JAXBXmlTypeProvider
public JAXBXmlTypeProvider()
-
-
Method Details
-
writeTo
public void writeTo(Object t, Class<?> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, jakarta.ws.rs.core.MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException- Specified by:
writeToin interfacejakarta.ws.rs.ext.MessageBodyWriter<Object>- Overrides:
writeToin classAbstractJAXBProvider<Object>- Throws:
IOException
-
readFrom
public Object readFrom(Class<Object> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, jakarta.ws.rs.core.MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException- Specified by:
readFromin interfacejakarta.ws.rs.ext.MessageBodyReader<Object>- Overrides:
readFromin classAbstractJAXBProvider<Object>- Throws:
IOException
-
isReadWritable
protected boolean isReadWritable(Class<?> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType) - Specified by:
isReadWritablein classAbstractJAXBProvider<Object>
-
findObjectFactory
Attempts to locateXmlRegistryfor the XML type. Usually, a class named ObjectFactory is located in the same package as the type we're trying to marshall. This method simply locates this class and instantiates it if found.- Parameters:
type- type class- Returns:
- object factory instance
-
wrapInJAXBElement
If this object is managed by an XmlRegistry, this method will invoke the registry and wrap the object in a JAXBElement so that it can be marshalled.- Parameters:
t- object to wraptype- type class- Returns:
- jaxb element
-