org.springframework.oxm.xstream

## Class CatchAllConverter

- java.lang.Object
- - org.springframework.oxm.xstream.CatchAllConverter

- All Implemented Interfaces:
    com.thoughtworks.xstream.converters.Converter, com.thoughtworks.xstream.converters.ConverterMatcher

      public class CatchAllConverter
      extends Object
      implements com.thoughtworks.xstream.converters.Converter

  XStream `Converter` that supports all classes, but throws exceptions for (un)marshalling.

  Main purpose of this class is to register this converter as a catchall last converter with a normal or higher priority, in addition to converters that explicitly support the domain classes that should be supported. As a result, default XStream converters with lower priorities and possible security vulnerabilities do not get invoked.

  For instance:

       XStreamMarshaller unmarshaller = new XStreamMarshaller();
       unmarshaller.getXStream().registerConverter(new MyDomainClassConverter(), XStream.PRIORITY_VERY_HIGH);
       unmarshaller.getXStream().registerConverter(new CatchAllConverter(), XStream.PRIORITY_NORMAL);
       MyDomainClass o = unmarshaller.unmarshal(source);

      Since:
        4.0
      Author:
        Arjen Poutsma

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CatchAllConverter()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canConvert(Class type)`
    `void` | `marshal(Object source, com.thoughtworks.xstream.io.HierarchicalStreamWriter writer, com.thoughtworks.xstream.converters.MarshallingContext context)`
    `Object` | `unmarshal(com.thoughtworks.xstream.io.HierarchicalStreamReader reader, com.thoughtworks.xstream.converters.UnmarshallingContext context)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CatchAllConverter

          public CatchAllConverter()

  - ### Method Detail

    - #### canConvert

          public boolean canConvert(Class type)

      Specified by:
        `canConvert` in interface `com.thoughtworks.xstream.converters.ConverterMatcher`

    - #### marshal

          public void marshal(Object source,
                     com.thoughtworks.xstream.io.HierarchicalStreamWriter writer,
                     com.thoughtworks.xstream.converters.MarshallingContext context)

      Specified by:
        `marshal` in interface `com.thoughtworks.xstream.converters.Converter`

    - #### unmarshal

          public Object unmarshal(com.thoughtworks.xstream.io.HierarchicalStreamReader reader,
                         com.thoughtworks.xstream.converters.UnmarshallingContext context)

      Specified by:
        `unmarshal` in interface `com.thoughtworks.xstream.converters.Converter`