Interface ChronoExtension


public interface ChronoExtension

Defines a configuration-dependent extension of the chronological elements of a Chronology used in formatting and parsing.

Author:
Meno Hochschild
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    accept​(Class<?> chronoType)
    Will be called by a java.util.ServiceLoader in order to determine if the given chronological type should register this extension or not.
    default boolean
    canResolve​(ChronoElement<?> element)
    Gives a hint to the parser if the element in question can be resolved by resolve().
    getElements​(Locale locale, AttributeQuery attributes)
    Returns the element set for given configuration.
    resolve​(ChronoEntity<?> entity, Locale locale, AttributeQuery attributes)
    Updates the given value source if necessary in order to resolve the values of extension elements to values of standard elements.
  • Method Details

    • accept

      boolean accept(Class<?> chronoType)

      Will be called by a java.util.ServiceLoader in order to determine if the given chronological type should register this extension or not.

      Parameters:
      chronoType - chronological type
      Returns:
      true if given type should register this extension else false
      Since:
      3.0
    • getElements

      Set<ChronoElement<?>> getElements(Locale locale, AttributeQuery attributes)

      Returns the element set for given configuration.

      An empty Set indicates that this extension is not relevant for the given configuration.

      Parameters:
      locale - language and country setting
      attributes - global configuration attributes of formatter
      Returns:
      extended element model
    • resolve

      ChronoEntity<?> resolve(ChronoEntity<?> entity, Locale locale, AttributeQuery attributes)

      Updates the given value source if necessary in order to resolve the values of extension elements to values of standard elements.

      Implementations are allowed to use null as pseudo-value in order to delete an element from given source via the expression entity.with(element, null). Note: The argument has exceptionally no chronology.

      Parameters:
      entity - any kind of map from chronological elements to their values (note that the main use case of parsed data has no chronology and allows the virtual value null to be set as indication for removing associated element)
      locale - language and country setting
      attributes - global configuration attributes of parser
      Returns:
      eventually changed entity
      Throws:
      IllegalArgumentException - if resolving fails due to inconsistencies
      Since:
      3.0
      See Also:
      ChronoEntity.with(ChronoElement, V)
    • canResolve

      default boolean canResolve(ChronoElement<?> element)

      Gives a hint to the parser if the element in question can be resolved by resolve().

      This method serves for optimization purpose and helps the parser to decide if chronological extensions are needed at all during parsing. Subclasses should override this method in most cases.

      Parameters:
      element - the element to be checked
      Returns:
      true if this extension can resolve given element else false
      Since:
      3.40/4.35
      See Also:
      resolve(ChronoEntity, Locale, AttributeQuery)