## com.sun.jersey.core.provider.jaxb
Class AbstractListElementProvider

    java.lang.Object
      com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider<T>
          com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider<java.lang.Object>
              com.sun.jersey.core.provider.jaxb.AbstractListElementProvider

All Implemented Interfaces:
  javax.ws.rs.ext.MessageBodyReader<java.lang.Object>, javax.ws.rs.ext.MessageBodyWriter<java.lang.Object>

    public abstract class AbstractListElementProvider

extends AbstractJAXBProvider<java.lang.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:

- `ArrayList`
- `LinkedList`
- `HashSet`
- `TreeSet`
- `Stack`

`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@Sun.Com, Martin Matula

Nested Class Summary
`static interface` `AbstractListElementProvider.JaxbTypeChecker` This is to allow customized JAXB collections checking.

Field Summary

Fields inherited from class com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider
`UTF8`

Constructor Summary
`AbstractListElementProvider(javax.ws.rs.ext.Providers ps)`
`AbstractListElementProvider(javax.ws.rs.ext.Providers ps, javax.ws.rs.core.MediaType mt)`

Method Summary
`protected java.lang.Class` `getElementClass(java.lang.Class<?> type, java.lang.reflect.Type genericType)`
`protected java.lang.String` `getElementName(java.lang.Class<?> elementType)`
`protected java.lang.String` `getRootElementName(java.lang.Class<?> elementType)`
`protected abstract javax.xml.stream.XMLStreamReader` `getXMLStreamReader(java.lang.Class<?> elementType, javax.ws.rs.core.MediaType mediaType, javax.xml.bind.Unmarshaller unmarshaller, java.io.InputStream entityStream)` Get the XMLStreamReader for unmarshalling.
`boolean` `isReadable(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)`
`boolean` `isWriteable(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)`
`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)`
`static boolean` `verifyArrayType(java.lang.Class type, AbstractListElementProvider.JaxbTypeChecker checker)` The method could be used to check if given type is an array of JAXB beans.
`static boolean` `verifyCollectionSubclass(java.lang.Class<?> type)`
`static boolean` `verifyGenericType(java.lang.reflect.Type genericType, AbstractListElementProvider.JaxbTypeChecker checker)` The method could be used to check if given type is a collection of JAXB beans.
`abstract void` `writeList(java.lang.Class<?> elementType, java.util.Collection<?> t, javax.ws.rs.core.MediaType mediaType, java.nio.charset.Charset c, javax.xml.bind.Marshaller m, java.io.OutputStream entityStream)` Write a collection of JAXB objects as child elements of the root element.
`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 com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider
`getJAXBContext, getMarshaller, getSAXSource, getStoredJAXBContext, getUnmarshaller, isFormattedOutput, isSupported, isXmlRootElementProcessing, setConfiguration, setHeader`

Methods inherited from class com.sun.jersey.core.provider.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

### AbstractListElementProvider

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

### AbstractListElementProvider

    public AbstractListElementProvider(javax.ws.rs.ext.Providers ps,
                                       javax.ws.rs.core.MediaType mt)

Method Detail

### isReadable

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

### isWriteable

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

### verifyCollectionSubclass

    public static boolean verifyCollectionSubclass(java.lang.Class<?> type)

### verifyArrayType

    public static boolean verifyArrayType(java.lang.Class type,
                                          AbstractListElementProvider.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(java.lang.reflect.Type genericType,
                                            AbstractListElementProvider.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(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

  Throws:
    `java.io.IOException`

### writeList

    public abstract void writeList(java.lang.Class<?> elementType,
                                   java.util.Collection<?> t,
                                   javax.ws.rs.core.MediaType mediaType,
                                   java.nio.charset.Charset c,
                                   javax.xml.bind.Marshaller m,
                                   java.io.OutputStream entityStream)
                            throws javax.xml.bind.JAXBException,
                                   java.io.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:
    `javax.xml.bind.JAXBException`
    `java.io.IOException`

### readFrom

    public final 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

  Throws:
    `java.io.IOException`

### getXMLStreamReader

    protected abstract javax.xml.stream.XMLStreamReader getXMLStreamReader(java.lang.Class<?> elementType,
                                                                           javax.ws.rs.core.MediaType mediaType,
                                                                           javax.xml.bind.Unmarshaller unmarshaller,
                                                                           java.io.InputStream entityStream)
                                                                    throws javax.xml.stream.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:
    `javax.xml.stream.XMLStreamException`

### getElementClass

    protected java.lang.Class getElementClass(java.lang.Class<?> type,
                                              java.lang.reflect.Type genericType)

### getRootElementName

    protected final java.lang.String getRootElementName(java.lang.Class<?> elementType)

### getElementName

    protected final java.lang.String getElementName(java.lang.Class<?> elementType)

Copyright © 2017 Oracle Corporation. All Rights Reserved.