Class ChainedConverter<S,​T>

  • Type Parameters:
    S - The source type of the converter
    T - The target type of the converter
    All Implemented Interfaces:
    ContentTypeConverter<S,​T>

    public class ChainedConverter<S,​T>
    extends Object
    implements ContentTypeConverter<S,​T>
    A converter that delegates to a chain of other ContentTypeConverters to convert from a source to a target for which there is not necessarily a single converter available.
    Since:
    2.0
    Author:
    Allard Buijze
    • Constructor Detail

      • ChainedConverter

        public ChainedConverter​(List<ContentTypeConverter<?,​?>> delegates)
        Creates a new instance that uses the given delegates to form a chain of converters. Note that the delegates must for a Continuous chain, meaning that each item must produce an IntermediateRepresentation of a type that can be consumed by the next delegate. To automatically calculate a route between converters, see calculateChain(source, target, candidates)
        Parameters:
        delegates - the chain of delegates to perform the conversion
    • Method Detail

      • calculateChain

        public static <S,​T> ChainedConverter<S,​T> calculateChain​(Class<S> sourceType,
                                                                             Class<T> targetType,
                                                                             Collection<ContentTypeConverter<?,​?>> candidates)
        Returns a converter that can convert an IntermediateRepresentation from the given sourceType to the given targetType using a chain formed with given candidates. The returned converter uses some (or all) of the given candidates as delegates.
        Type Parameters:
        S - The source type of the converter
        T - The target type of the converter
        Parameters:
        sourceType - The source type of the converter
        targetType - The target type of the converter
        candidates - The candidates to form a chain with
        Returns:
        A converter for the given source and target types
        Throws:
        CannotConvertBetweenTypesException - if no converter can be created using given candidates
      • canConvert

        public static <S,​T> boolean canConvert​(Class<S> sourceContentType,
                                                     Class<T> targetContentType,
                                                     List<ContentTypeConverter<?,​?>> converters)
        Indicates whether this converter is capable of converting the given sourceContentType into targetContentType, using the given converters. When true, it may use any number of the given converters to form a chain.
        Type Parameters:
        S - The content type of the source object
        T - The content type of the target object
        Parameters:
        sourceContentType - The content type of the source object
        targetContentType - The content type of the target object
        converters - The converters eligible for use
        Returns:
        true if this Converter can convert between the given types, using the given converters. Otherwise false.
      • convert

        public T convert​(S original)
        Description copied from interface: ContentTypeConverter
        Converts the given object into another. Typically, these values are contained by a SerializedObject instance.
        Specified by:
        convert in interface ContentTypeConverter<S,​T>
        Parameters:
        original - the value to convert
        Returns:
        the converted value