org.springframework.core.convert.support

Class GenericConversionService

  • java.lang.Object
    • org.springframework.core.convert.support.GenericConversionService
    • Constructor Detail

      • GenericConversionService

        public GenericConversionService()
    • Method Detail

      • addConverter

        public void addConverter(Converter<?,?> converter)
        Description copied from interface: ConverterRegistry
        Add a plain converter to this registry. The convertible source/target type pair is derived from the Converter's parameterized types.
        Specified by:
        addConverter in interface ConverterRegistry
      • addConverter

        public <S,T> void addConverter(java.lang.Class<S> sourceType,
                                       java.lang.Class<T> targetType,
                                       Converter<? super S,? extends T> converter)
        Description copied from interface: ConverterRegistry
        Add a plain converter to this registry. The convertible source/target type pair is specified explicitly.

        Allows for a Converter to be reused for multiple distinct pairs without having to create a Converter class for each pair.

        Specified by:
        addConverter in interface ConverterRegistry
      • addConverterFactory

        public void addConverterFactory(ConverterFactory<?,?> factory)
        Description copied from interface: ConverterRegistry
        Add a ranged converter factory to this registry. The convertible source/target type pair is derived from the ConverterFactory's parameterized types.
        Specified by:
        addConverterFactory in interface ConverterRegistry
      • removeConvertible

        public void removeConvertible(java.lang.Class<?> sourceType,
                                      java.lang.Class<?> targetType)
        Description copied from interface: ConverterRegistry
        Remove any converters from sourceType to targetType.
        Specified by:
        removeConvertible in interface ConverterRegistry
        Parameters:
        sourceType - the source type
        targetType - the target type
      • canConvert

        public boolean canConvert(@Nullable
                                  java.lang.Class<?> sourceType,
                                  java.lang.Class<?> targetType)
        Description copied from interface: ConversionService
        Return true if objects of sourceType can be converted to the targetType.

        If this method returns true, it means ConversionService.convert(Object, Class) is capable of converting an instance of sourceType to targetType.

        Special note on collections, arrays, and maps types: For conversion between collection, array, and map types, this method will return true even though a convert invocation may still generate a ConversionException if the underlying elements are not convertible. Callers are expected to handle this exceptional case when working with collections and maps.

        Specified by:
        canConvert in interface ConversionService
        Parameters:
        sourceType - the source type to convert from (may be null if source is null)
        targetType - the target type to convert to (required)
        Returns:
        true if a conversion can be performed, false if not
      • canConvert

        public boolean canConvert(@Nullable
                                  TypeDescriptor sourceType,
                                  TypeDescriptor targetType)
        Description copied from interface: ConversionService
        Return true if objects of sourceType can be converted to the targetType. The TypeDescriptors provide additional context about the source and target locations where conversion would occur, often object fields or property locations.

        If this method returns true, it means ConversionService.convert(Object, TypeDescriptor, TypeDescriptor) is capable of converting an instance of sourceType to targetType.

        Special note on collections, arrays, and maps types: For conversion between collection, array, and map types, this method will return true even though a convert invocation may still generate a ConversionException if the underlying elements are not convertible. Callers are expected to handle this exceptional case when working with collections and maps.

        Specified by:
        canConvert in interface ConversionService
        Parameters:
        sourceType - context about the source type to convert from (may be null if source is null)
        targetType - context about the target type to convert to (required)
        Returns:
        true if a conversion can be performed between the source and target types, false if not
      • canBypassConvert

        public boolean canBypassConvert(@Nullable
                                        TypeDescriptor sourceType,
                                        TypeDescriptor targetType)
        Return whether conversion between the source type and the target type can be bypassed.

        More precisely, this method will return true if objects of sourceType can be converted to the target type by returning the source object unchanged.

        Parameters:
        sourceType - context about the source type to convert from (may be null if source is null)
        targetType - context about the target type to convert to (required)
        Returns:
        true if conversion can be bypassed; false otherwise
        Throws:
        java.lang.IllegalArgumentException - if targetType is null
        Since:
        3.2
      • convert

        @Nullable
        public <T> T convert(@Nullable
                                       java.lang.Object source,
                                       java.lang.Class<T> targetType)
        Description copied from interface: ConversionService
        Convert the given source to the specified targetType.
        Specified by:
        convert in interface ConversionService
        Parameters:
        source - the source object to convert (may be null)
        targetType - the target type to convert to (required)
        Returns:
        the converted object, an instance of targetType
      • convert

        @Nullable
        public java.lang.Object convert(@Nullable
                                                  java.lang.Object source,
                                                  @Nullable
                                                  TypeDescriptor sourceType,
                                                  TypeDescriptor targetType)
        Description copied from interface: ConversionService
        Convert the given source to the specified targetType. The TypeDescriptors provide additional context about the source and target locations where conversion will occur, often object fields or property locations.
        Specified by:
        convert in interface ConversionService
        Parameters:
        source - the source object to convert (may be null)
        sourceType - context about the source type to convert from (may be null if source is null)
        targetType - context about the target type to convert to (required)
        Returns:
        the converted object, an instance of targetType
      • convert

        @Nullable
        public java.lang.Object convert(@Nullable
                                                  java.lang.Object source,
                                                  TypeDescriptor targetType)
        Convenience operation for converting a source object to the specified targetType, where the target type is a descriptor that provides additional conversion context. Simply delegates to convert(Object, TypeDescriptor, TypeDescriptor) and encapsulates the construction of the source type descriptor using TypeDescriptor.forObject(Object).
        Parameters:
        source - the source object
        targetType - the target type
        Returns:
        the converted value
        Throws:
        ConversionException - if a conversion exception occurred
        java.lang.IllegalArgumentException - if targetType is null, or sourceType is null but source is not null
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • convertNullSource

        @Nullable
        protected java.lang.Object convertNullSource(@Nullable
                                                               TypeDescriptor sourceType,
                                                               TypeDescriptor targetType)
        Template method to convert a null source.

        The default implementation returns null or the Java 8 Optional.empty() instance if the target type is java.util.Optional. Subclasses may override this to return custom null objects for specific target types.

        Parameters:
        sourceType - the source type to convert from
        targetType - the target type to convert to
        Returns:
        the converted null object
      • getConverter

        @Nullable
        protected GenericConverter getConverter(TypeDescriptor sourceType,
                                                          TypeDescriptor targetType)
        Hook method to lookup the converter for a given sourceType/targetType pair. First queries this ConversionService's converter cache. On a cache miss, then performs an exhaustive search for a matching converter. If no converter matches, returns the default converter.
        Parameters:
        sourceType - the source type to convert from
        targetType - the target type to convert to
        Returns:
        the generic converter that will perform the conversion, or null if no suitable converter was found
        See Also:
        getDefaultConverter(TypeDescriptor, TypeDescriptor)
      • getDefaultConverter

        @Nullable
        protected GenericConverter getDefaultConverter(TypeDescriptor sourceType,
                                                                 TypeDescriptor targetType)
        Return the default converter if no converter is found for the given sourceType/targetType pair.

        Returns a NO_OP Converter if the source type is assignable to the target type. Returns null otherwise, indicating no suitable converter could be found.

        Parameters:
        sourceType - the source type to convert from
        targetType - the target type to convert to
        Returns:
        the default generic converter that will perform the conversion