Interface TranslatorSource

All Known Implementing Classes:
TranslatorSourceImpl

A source for Translators, either by name or by property type. The source knows about two sets of translators: the standard translators contributed directly to the service and the alternate translators, contributed to the TranslatorAlternatesSource service. Each contributed translator must have a unique name. Generally, Translators are matched by type (i.e., the type matching a particular property that will be read or updated). Contributions to this service use a StrategyRegistry to match by type. Translators can also be selected by name. The TranslatorAlternatesSource service configuration is often used for this purpose. The contribution key must match the translator type.
  • Method Details

    • get

      Returns the translator with the given name (either a standard translator, or an alternate).
      Parameters:
      name - name of translator (as configured, but case is ignored)
      Returns:
      the shared translator instance
      Throws:
      RuntimeException - if no translator is configured for the provided name
    • findByType

      Finds a Translator that is appropriate to the given type, which is usually obtained via Binding.getBindingType(). Performs an inheritance-based search for the best match, among the standard translator (not alternates).
      Parameters:
      valueType - the type of value for which a default translator is needed
      Returns:
      the matching translator, or null if no match can be found
    • getByType

      Finds a Translator that is appropriate to the given type, which is usually obtained via Binding.getBindingType(). Performs an inheritance-based search for the best match, among the standard translators (not alternates).
      Parameters:
      valueType - the type of value for which a default translator is needed
      Returns:
      the matching translator
      Throws:
      IllegalArgumentException - if no standard validator matches the provided type