Class FallbackStringToObjectConverter

  • All Implemented Interfaces:
    DefaultArgumentConverter.StringToObjectConverter

    class FallbackStringToObjectConverter
    extends java.lang.Object
    implements DefaultArgumentConverter.StringToObjectConverter
    FallbackStringToObjectConverter is a DefaultArgumentConverter.StringToObjectConverter that provides a fallback conversion strategy for converting from a String to a given target type by invoking a static factory method or factory constructor defined in the target type.

    Search Algorithm

    1. Search for a single, non-private static factory method in the target type that converts from a String to the target type. Use the factory method if present.
    2. Search for a single, non-private constructor in the target type that accepts a String. Use the constructor if present.

    If multiple suitable factory methods are discovered they will be ignored. If neither a single factory method nor a single constructor is found, this converter acts as a no-op.

    Since:
    5.1
    See Also:
    DefaultArgumentConverter
    • Field Detail

      • NULL_EXECUTABLE

        private static final java.util.function.Function<java.lang.String,​java.lang.Object> NULL_EXECUTABLE
        Implementation of the NULL Object Pattern.
      • factoryExecutableCache

        private static final java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,​java.util.function.Function<java.lang.String,​java.lang.Object>> factoryExecutableCache
        Cache for factory methods and factory constructors.

        Searches that do not find a factory method or constructor are tracked by the presence of a NULL_EXECUTABLE object stored in the map. This prevents the framework from repeatedly searching for things which are already known not to exist.

    • Constructor Detail

      • FallbackStringToObjectConverter

        FallbackStringToObjectConverter()
    • Method Detail

      • findFactoryExecutable

        private static java.util.function.Function<java.lang.String,​java.lang.Object> findFactoryExecutable​(java.lang.Class<?> targetType)
      • findFactoryMethod

        private static java.lang.reflect.Method findFactoryMethod​(java.lang.Class<?> targetType)
      • findFactoryConstructor

        private static java.lang.reflect.Constructor<?> findFactoryConstructor​(java.lang.Class<?> targetType)
      • isNotPrivateAndAcceptsSingleStringArgument

        private static boolean isNotPrivateAndAcceptsSingleStringArgument​(java.lang.reflect.Executable executable)