Class JAXBXmlTypeProvider
- java.lang.Object
-
- org.jboss.resteasy.plugins.providers.AbstractEntityProvider<T>
-
- org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider<java.lang.Object>
-
- org.jboss.resteasy.plugins.providers.jaxb.JAXBXmlTypeProvider
-
- All Implemented Interfaces:
javax.ws.rs.ext.MessageBodyReader<java.lang.Object>
,javax.ws.rs.ext.MessageBodyWriter<java.lang.Object>
@Provider @Produces({"application/xml","application/*+xml","text/xml","text/*+xml"}) @Consumes({"application/xml","application/*+xml","text/xml","text/*+xml"}) public class JAXBXmlTypeProvider extends AbstractJAXBProvider<java.lang.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 aJAXBElement
instance. This is typically accomplished by invoking a method on the class which serves as theXmlRegistry
and is named ObjectFactory.This provider is selected when the class is annotated with an
XmlType
annotation and not anXmlRootElement
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
createContact(Contact value); - Version:
- $Revision:$
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
OBJECT_FACTORY_NAME
-
Fields inherited from class org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider
providers
-
-
Constructor Summary
Constructors Constructor Description JAXBXmlTypeProvider()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.lang.Object
findObjectFactory(java.lang.Class<?> type)
Attempts to locateXmlRegistry
for the XML type.protected boolean
isReadWritable(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)
FIXME Comment thisjava.lang.Object
readFrom(java.lang.Class<java.lang.Object> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> httpHeaders, java.io.InputStream entityStream)
static javax.xml.bind.JAXBElement<?>
wrapInJAXBElement(java.lang.Object t, java.lang.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.void
writeTo(java.lang.Object t, java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> httpHeaders, java.io.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, setEnableSecureProcessingFeature
-
Methods inherited from class org.jboss.resteasy.plugins.providers.AbstractEntityProvider
getSize
-
-
-
-
Field Detail
-
OBJECT_FACTORY_NAME
protected static final java.lang.String OBJECT_FACTORY_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
writeTo
public void writeTo(java.lang.Object t, java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> httpHeaders, java.io.OutputStream entityStream) throws java.io.IOException
- Specified by:
writeTo
in interfacejavax.ws.rs.ext.MessageBodyWriter<java.lang.Object>
- Overrides:
writeTo
in classAbstractJAXBProvider<java.lang.Object>
- Throws:
java.io.IOException
-
readFrom
public java.lang.Object readFrom(java.lang.Class<java.lang.Object> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> httpHeaders, java.io.InputStream entityStream) throws java.io.IOException
- Specified by:
readFrom
in interfacejavax.ws.rs.ext.MessageBodyReader<java.lang.Object>
- Overrides:
readFrom
in classAbstractJAXBProvider<java.lang.Object>
- Throws:
java.io.IOException
-
isReadWritable
protected boolean isReadWritable(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)
Description copied from class:AbstractJAXBProvider
FIXME Comment this- Specified by:
isReadWritable
in classAbstractJAXBProvider<java.lang.Object>
- Returns:
-
findObjectFactory
public static java.lang.Object findObjectFactory(java.lang.Class<?> type)
Attempts to locateXmlRegistry
for 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:
t
-type
-- Returns:
-
wrapInJAXBElement
public static javax.xml.bind.JAXBElement<?> wrapInJAXBElement(java.lang.Object t, java.lang.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.- Parameters:
t
-type
-- Returns:
-
-