Class ConverterManager


  • public final class ConverterManager
    extends java.lang.Object
    ConverterManager controls the date and time converters.

    This class enables additional conversion classes to be added via addInstantConverter(InstantConverter), which may replace an existing converter. Similar methods exist for duration, time period and interval converters.

    This class is threadsafe, so adding/removing converters can be done at any time. Updating the set of converters is relatively expensive, and so should not be performed often.

    The default instant converters are:

    • ReadableInstant
    • String
    • Calendar
    • Date (includes sql package subclasses)
    • Long (milliseconds)
    • null (now)
    The default partial converters are:
    • ReadablePartial
    • ReadableInstant
    • String
    • Calendar
    • Date (includes sql package subclasses)
    • Long (milliseconds)
    • null (now)
    The default duration converters are:
    • ReadableDuration
    • ReadableInterval
    • String
    • Long (milliseconds)
    • null (zero ms)
    The default time period converters are:
    • ReadablePeriod
    • ReadableInterval
    • String
    • null (zero)
    The default interval converters are:
    • ReadableInterval
    • String
    • null (zero-length from now to now)
    Since:
    1.0
    • Method Detail

      • getInstantConverter

        public InstantConverter getInstantConverter​(java.lang.Object object)
        Gets the best converter for the object specified.
        Parameters:
        object - the object to convert
        Returns:
        the converter to use
        Throws:
        java.lang.IllegalArgumentException - if no suitable converter
        java.lang.IllegalStateException - if multiple converters match the type equally well
      • getInstantConverters

        public InstantConverter[] getInstantConverters()
        Gets a copy of the set of converters.
        Returns:
        the converters, a copy of the real data, never null
      • addInstantConverter

        public InstantConverter addInstantConverter​(InstantConverter converter)
                                             throws java.lang.SecurityException
        Adds a converter to the set of converters. If a matching converter is already in the set, the given converter replaces it. If the converter is exactly the same as one already in the set, no changes are made.

        The order in which converters are added is not relevant. The best converter is selected by examining the object hierarchy.

        Parameters:
        converter - the converter to add, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • removeInstantConverter

        public InstantConverter removeInstantConverter​(InstantConverter converter)
                                                throws java.lang.SecurityException
        Removes a converter from the set of converters. If the converter was not in the set, no changes are made.
        Parameters:
        converter - the converter to remove, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • getPartialConverter

        public PartialConverter getPartialConverter​(java.lang.Object object)
        Gets the best converter for the object specified.
        Parameters:
        object - the object to convert
        Returns:
        the converter to use
        Throws:
        java.lang.IllegalArgumentException - if no suitable converter
        java.lang.IllegalStateException - if multiple converters match the type equally well
      • getPartialConverters

        public PartialConverter[] getPartialConverters()
        Gets a copy of the set of converters.
        Returns:
        the converters, a copy of the real data, never null
      • addPartialConverter

        public PartialConverter addPartialConverter​(PartialConverter converter)
                                             throws java.lang.SecurityException
        Adds a converter to the set of converters. If a matching converter is already in the set, the given converter replaces it. If the converter is exactly the same as one already in the set, no changes are made.

        The order in which converters are added is not relevant. The best converter is selected by examining the object hierarchy.

        Parameters:
        converter - the converter to add, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • removePartialConverter

        public PartialConverter removePartialConverter​(PartialConverter converter)
                                                throws java.lang.SecurityException
        Removes a converter from the set of converters. If the converter was not in the set, no changes are made.
        Parameters:
        converter - the converter to remove, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • getDurationConverter

        public DurationConverter getDurationConverter​(java.lang.Object object)
        Gets the best converter for the object specified.
        Parameters:
        object - the object to convert
        Returns:
        the converter to use
        Throws:
        java.lang.IllegalArgumentException - if no suitable converter
        java.lang.IllegalStateException - if multiple converters match the type equally well
      • getDurationConverters

        public DurationConverter[] getDurationConverters()
        Gets a copy of the list of converters.
        Returns:
        the converters, a copy of the real data, never null
      • addDurationConverter

        public DurationConverter addDurationConverter​(DurationConverter converter)
                                               throws java.lang.SecurityException
        Adds a converter to the set of converters. If a matching converter is already in the set, the given converter replaces it. If the converter is exactly the same as one already in the set, no changes are made.

        The order in which converters are added is not relevant. The best converter is selected by examining the object hierarchy.

        Parameters:
        converter - the converter to add, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • removeDurationConverter

        public DurationConverter removeDurationConverter​(DurationConverter converter)
                                                  throws java.lang.SecurityException
        Removes a converter from the set of converters. If the converter was not in the set, no changes are made.
        Parameters:
        converter - the converter to remove, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • getPeriodConverter

        public PeriodConverter getPeriodConverter​(java.lang.Object object)
        Gets the best converter for the object specified.
        Parameters:
        object - the object to convert
        Returns:
        the converter to use
        Throws:
        java.lang.IllegalArgumentException - if no suitable converter
        java.lang.IllegalStateException - if multiple converters match the type equally well
      • getPeriodConverters

        public PeriodConverter[] getPeriodConverters()
        Gets a copy of the list of converters.
        Returns:
        the converters, a copy of the real data, never null
      • addPeriodConverter

        public PeriodConverter addPeriodConverter​(PeriodConverter converter)
                                           throws java.lang.SecurityException
        Adds a converter to the set of converters. If a matching converter is already in the set, the given converter replaces it. If the converter is exactly the same as one already in the set, no changes are made.

        The order in which converters are added is not relevant. The best converter is selected by examining the object hierarchy.

        Parameters:
        converter - the converter to add, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • removePeriodConverter

        public PeriodConverter removePeriodConverter​(PeriodConverter converter)
                                              throws java.lang.SecurityException
        Removes a converter from the set of converters. If the converter was not in the set, no changes are made.
        Parameters:
        converter - the converter to remove, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • getIntervalConverter

        public IntervalConverter getIntervalConverter​(java.lang.Object object)
        Gets the best converter for the object specified.
        Parameters:
        object - the object to convert
        Returns:
        the converter to use
        Throws:
        java.lang.IllegalArgumentException - if no suitable converter
        java.lang.IllegalStateException - if multiple converters match the type equally well
      • getIntervalConverters

        public IntervalConverter[] getIntervalConverters()
        Gets a copy of the list of converters.
        Returns:
        the converters, a copy of the real data, never null
      • addIntervalConverter

        public IntervalConverter addIntervalConverter​(IntervalConverter converter)
                                               throws java.lang.SecurityException
        Adds a converter to the set of converters. If a matching converter is already in the set, the given converter replaces it. If the converter is exactly the same as one already in the set, no changes are made.

        The order in which converters are added is not relevant. The best converter is selected by examining the object hierarchy.

        Parameters:
        converter - the converter to add, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • removeIntervalConverter

        public IntervalConverter removeIntervalConverter​(IntervalConverter converter)
                                                  throws java.lang.SecurityException
        Removes a converter from the set of converters. If the converter was not in the set, no changes are made.
        Parameters:
        converter - the converter to remove, null ignored
        Returns:
        replaced converter, or null
        Throws:
        java.lang.SecurityException
      • toString

        public java.lang.String toString()
        Gets a debug representation of the object.
        Overrides:
        toString in class java.lang.Object