org.glassfish.jersey.message.internal
Class AbstractCollectionJaxbProvider

java.lang.Object
  extended by org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider<T>
      extended by org.glassfish.jersey.message.internal.AbstractJaxbProvider<Object>
          extended by org.glassfish.jersey.message.internal.AbstractCollectionJaxbProvider
All Implemented Interfaces:
javax.ws.rs.ext.MessageBodyReader<Object>, javax.ws.rs.ext.MessageBodyWriter<Object>
Direct Known Subclasses:
XmlCollectionJaxbProvider

public abstract class AbstractCollectionJaxbProvider
extends AbstractJaxbProvider<Object>

An abstract provider for T[], Collection<T>, and its subtypes as long as they have the public default constructor or are interfaces implemented by one the following classes:

T must be a JAXB type annotated with XmlRootElement.

Implementing classes may extend this class to provide specific marshalling and unmarshalling behaviour.

When unmarshalling a UnmarshalException will result in a WebApplicationException being thrown with a status of 400 (Client error), and a JAXBException will result in a WebApplicationException being thrown with a status of 500 (Internal Server error).

When marshalling a JAXBException will result in a WebApplicationException being thrown with a status of 500 (Internal Server error).

Author:
Paul Sandoz, Martin Matula

Nested Class Summary
static interface AbstractCollectionJaxbProvider.JaxbTypeChecker
          This is to allow customized JAXB collections checking.
 
Field Summary
 
Fields inherited from class org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider
UTF8
 
Constructor Summary
AbstractCollectionJaxbProvider(javax.ws.rs.ext.Providers ps)
           
AbstractCollectionJaxbProvider(javax.ws.rs.ext.Providers ps, javax.ws.rs.core.MediaType mt)
           
 
Method Summary
protected static Class getElementClass(Class<?> type, Type genericType)
           
protected static String getElementName(Class<?> elementType)
           
protected  String getRootElementName(Class<?> elementType)
           
protected abstract  XMLStreamReader getXMLStreamReader(Class<?> elementType, javax.ws.rs.core.MediaType mediaType, Unmarshaller unmarshaller, InputStream entityStream)
          Get the XMLStreamReader for unmarshalling.
 boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)
           
 boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)
           
 Object readFrom(Class<Object> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<String,String> httpHeaders, InputStream inputStream)
           
static boolean verifyArrayType(Class type, AbstractCollectionJaxbProvider.JaxbTypeChecker checker)
          The method could be used to check if given type is an array of JAXB beans.
static boolean verifyCollectionSubclass(Class<?> type)
           
static boolean verifyGenericType(Type genericType, AbstractCollectionJaxbProvider.JaxbTypeChecker checker)
          The method could be used to check if given type is a collection of JAXB beans.
abstract  void writeList(Class<?> elementType, Collection<?> t, javax.ws.rs.core.MediaType mediaType, Charset c, Marshaller m, OutputStream entityStream)
          Write a collection of JAXB objects as child elements of the root element.
 void writeTo(Object t, Class<?> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<String,Object> httpHeaders, OutputStream entityStream)
           
 
Methods inherited from class org.glassfish.jersey.message.internal.AbstractJaxbProvider
getMarshaller, getSAXSource, getStoredJaxbContext, getUnmarshaller, isFormattedOutput, isSupported, isXmlRootElementProcessing, setConfiguration, setHeader
 
Methods inherited from class org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider
getCharset, getSize, readFromAsString, writeTo, writeTo, writeToAsString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractCollectionJaxbProvider

public AbstractCollectionJaxbProvider(javax.ws.rs.ext.Providers ps)

AbstractCollectionJaxbProvider

public AbstractCollectionJaxbProvider(javax.ws.rs.ext.Providers ps,
                                      javax.ws.rs.core.MediaType mt)
Method Detail

isReadable

public boolean isReadable(Class<?> type,
                          Type genericType,
                          Annotation[] annotations,
                          javax.ws.rs.core.MediaType mediaType)

isWriteable

public boolean isWriteable(Class<?> type,
                           Type genericType,
                           Annotation[] annotations,
                           javax.ws.rs.core.MediaType mediaType)

verifyCollectionSubclass

public static boolean verifyCollectionSubclass(Class<?> type)

verifyArrayType

public static boolean verifyArrayType(Class type,
                                      AbstractCollectionJaxbProvider.JaxbTypeChecker checker)
The method could be used to check if given type is an array of JAXB beans. It allows customizing the "is this a JAXB bean?" part.

Parameters:
type - the array to be checked
checker - allows JAXB bean check customization
Returns:
true if given type is an array of JAXB beans

verifyGenericType

public static boolean verifyGenericType(Type genericType,
                                        AbstractCollectionJaxbProvider.JaxbTypeChecker checker)
The method could be used to check if given type is a collection of JAXB beans. It allows customizing the "is this a JAXB bean?" part.

Parameters:
genericType - the type to be checked
checker - allows JAXB bean check customization
Returns:
true if given type is a collection of JAXB beans

writeTo

public final void writeTo(Object t,
                          Class<?> type,
                          Type genericType,
                          Annotation[] annotations,
                          javax.ws.rs.core.MediaType mediaType,
                          javax.ws.rs.core.MultivaluedMap<String,Object> httpHeaders,
                          OutputStream entityStream)
                   throws IOException
Throws:
IOException

writeList

public abstract void writeList(Class<?> elementType,
                               Collection<?> t,
                               javax.ws.rs.core.MediaType mediaType,
                               Charset c,
                               Marshaller m,
                               OutputStream entityStream)
                        throws JAXBException,
                               IOException
Write a collection of JAXB objects as child elements of the root element.

Parameters:
elementType - the element type in the collection.
t - the collecton to marshall
mediaType - the media type
c - the charset
m - the marshaller
entityStream - the output stream to marshall the collection
Throws:
JAXBException
IOException

readFrom

public final Object readFrom(Class<Object> type,
                             Type genericType,
                             Annotation[] annotations,
                             javax.ws.rs.core.MediaType mediaType,
                             javax.ws.rs.core.MultivaluedMap<String,String> httpHeaders,
                             InputStream inputStream)
                      throws IOException
Throws:
IOException

getXMLStreamReader

protected abstract XMLStreamReader getXMLStreamReader(Class<?> elementType,
                                                      javax.ws.rs.core.MediaType mediaType,
                                                      Unmarshaller unmarshaller,
                                                      InputStream entityStream)
                                               throws XMLStreamException
Get the XMLStreamReader for unmarshalling.

Parameters:
elementType - the individual element type.
mediaType - the media type.
unmarshaller - the unmarshaller as a carrier of possible config options.
entityStream - the input stream.
Returns:
the XMLStreamReader.
Throws:
XMLStreamException

getElementClass

protected static Class getElementClass(Class<?> type,
                                       Type genericType)

getRootElementName

protected final String getRootElementName(Class<?> elementType)

getElementName

protected static final String getElementName(Class<?> elementType)


Copyright © 2007-2014, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.