类 Jaxb2CollectionHttpMessageConverter<T extends Collection>

类型参数:
T - the converted object type
所有已实现的接口:
GenericHttpMessageConverter<T>, HttpMessageConverter<T>

public class Jaxb2CollectionHttpMessageConverter<T extends Collection> extends AbstractJaxb2HttpMessageConverter<T> implements GenericHttpMessageConverter<T>
An HttpMessageConverter that can read XML collections using JAXB2.

This converter can read collections that contain classes annotated with XmlRootElement and XmlType. Note that this converter does not support writing.

从以下版本开始:
4.0
作者:
Arjen Poutsma, Rossen Stoyanchev, Sam Brannen
  • 字段详细资料

  • 构造器详细资料

    • Jaxb2CollectionHttpMessageConverter

      public Jaxb2CollectionHttpMessageConverter()
  • 方法详细资料

    • canRead

      public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType)
      Always returns false since Jaxb2CollectionHttpMessageConverter required generic type information in order to read a Collection.
      指定者:
      canRead 在接口中 HttpMessageConverter<T extends Collection>
      覆盖:
      canRead 在类中 AbstractHttpMessageConverter<T extends Collection>
      参数:
      clazz - the class to test for readability
      mediaType - the media type to read (can be null if not specified); typically the value of a Content-Type header.
      返回:
      true if readable; false otherwise
    • canRead

      public boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType)
      Indicates whether the given type can be read by this converter. This method should perform the same checks than HttpMessageConverter.canRead(Class, MediaType) with additional ones related to the generic type.

      Jaxb2CollectionHttpMessageConverter can read a generic Collection where the generic type is a JAXB type annotated with XmlRootElement or XmlType.

      指定者:
      canRead 在接口中 GenericHttpMessageConverter<T extends Collection>
      参数:
      type - the (potentially generic) type to test for readability
      contextClass - a context class for the target type, for example a class in which the target type appears in a method signature (can be null)
      mediaType - the media type to read, can be null if not specified. Typically the value of a Content-Type header.
      返回:
      true if readable; false otherwise
    • canWrite

      public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType)
      Always returns false since Jaxb2CollectionHttpMessageConverter does not convert collections to XML.
      指定者:
      canWrite 在接口中 HttpMessageConverter<T extends Collection>
      覆盖:
      canWrite 在类中 AbstractHttpMessageConverter<T extends Collection>
      参数:
      clazz - the class to test for writability
      mediaType - the media type to write (can be null if not specified); typically the value of an Accept header.
      返回:
      true if writable; false otherwise
    • canWrite

      public boolean canWrite(@Nullable Type type, @Nullable Class<?> clazz, @Nullable MediaType mediaType)
      Always returns false since Jaxb2CollectionHttpMessageConverter does not convert collections to XML.
      指定者:
      canWrite 在接口中 GenericHttpMessageConverter<T extends Collection>
      参数:
      type - the (potentially generic) type to test for writability (can be null if not specified)
      clazz - the source object class to test for writability
      mediaType - the media type to write (can be null if not specified); typically the value of an Accept header.
      返回:
      true if writable; false otherwise
    • supports

      protected boolean supports(Class<?> clazz)
      从类复制的说明: AbstractHttpMessageConverter
      Indicates whether the given class is supported by this converter.
      指定者:
      supports 在类中 AbstractHttpMessageConverter<T extends Collection>
      参数:
      clazz - the class to test for support
      返回:
      true if supported; false otherwise
    • readFromSource

      protected T readFromSource(Class<? extends T> clazz, HttpHeaders headers, Source source) throws Exception
      从类复制的说明: AbstractXmlHttpMessageConverter
      指定者:
      readFromSource 在类中 AbstractXmlHttpMessageConverter<T extends Collection>
      参数:
      clazz - the type of object to return
      headers - the HTTP input headers
      source - the HTTP input body
      返回:
      the converted object
      抛出:
      Exception - in case of I/O or conversion errors
    • read

      public T read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
      从接口复制的说明: GenericHttpMessageConverter
      Read an object of the given type form the given input message, and returns it.
      指定者:
      read 在接口中 GenericHttpMessageConverter<T extends Collection>
      参数:
      type - the (potentially generic) type of object to return. This type must have previously been passed to the canRead method of this interface, which must have returned true.
      contextClass - a context class for the target type, for example a class in which the target type appears in a method signature (can be null)
      inputMessage - the HTTP input message to read from
      返回:
      the converted object
      抛出:
      IOException - in case of I/O errors
      HttpMessageNotReadableException - in case of conversion errors
    • createCollection

      protected T createCollection(Class<?> collectionClass)
      Create a Collection of the given type, with the given initial capacity (if supported by the Collection type).
      参数:
      collectionClass - the type of Collection to instantiate
      返回:
      the created Collection instance
    • moveToFirstChildOfRootElement

      private int moveToFirstChildOfRootElement(XMLStreamReader streamReader) throws XMLStreamException
      抛出:
      XMLStreamException
    • moveToNextElement

      private int moveToNextElement(XMLStreamReader streamReader) throws XMLStreamException
      抛出:
      XMLStreamException
    • write

      public void write(T t, @Nullable Type type, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
      从接口复制的说明: GenericHttpMessageConverter
      Write an given object to the given output message.
      指定者:
      write 在接口中 GenericHttpMessageConverter<T extends Collection>
      参数:
      t - the object to write to the output message. The type of this object must have previously been passed to the canWrite method of this interface, which must have returned true.
      type - the (potentially generic) type of object to write. This type must have previously been passed to the canWrite method of this interface, which must have returned true. Can be null if not specified.
      contentType - the content type to use when writing. May be null to indicate that the default content type of the converter must be used. If not null, this media type must have previously been passed to the canWrite method of this interface, which must have returned true.
      outputMessage - the message to write to
      抛出:
      IOException - in case of I/O errors
      HttpMessageNotWritableException - in case of conversion errors
    • writeToResult

      protected void writeToResult(T t, HttpHeaders headers, Result result) throws Exception
      从类复制的说明: AbstractXmlHttpMessageConverter
      指定者:
      writeToResult 在类中 AbstractXmlHttpMessageConverter<T extends Collection>
      参数:
      t - the object to write to the output message
      headers - the HTTP output headers
      result - the HTTP output body
      抛出:
      Exception - in case of I/O or conversion errors
    • createXmlInputFactory

      protected XMLInputFactory createXmlInputFactory()
      Create an XMLInputFactory that this converter will use to create XMLStreamReader and XMLEventReader objects.

      Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, so this method will only be called once.

      另请参阅:
      • StaxUtils.createDefensiveInputFactory()