Class BCP47LanguageHandler

  • All Implemented Interfaces:
    LanguageHandler

    public final class BCP47LanguageHandler
    extends java.lang.Object
    implements LanguageHandler
    A language handler that can verify BCP47 formatted language tags.

    This language handler normalises language tags to lower-case if normalizeLanguage(String, String) is used.

    Author:
    Peter Ansell
    See Also:
    BCP47
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean isRecognizedLanguage​(java.lang.String theLang)
      Checks if the given language tag is recognized by this language handler, including cases where the language tag is recognized, but is not yet normalized.
      java.lang.String key()
      A unique key for this language handler
      Literal normalizeLanguage​(java.lang.String theValue, java.lang.String theLang)
      Normalize both the language tag and the language if appropriate.
      java.lang.String normalizeLanguageTag​(java.lang.String theLang)
      Normalizes the given BCP47 language tag according to the rules defined by the JDK in the Locale API.
      boolean verifyLanguage​(java.lang.String theValue, java.lang.String theLang)
      Verifies that the language tag is valid, optionally including an automated check on the literal value.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BCP47LanguageHandler

        public BCP47LanguageHandler()
    • Method Detail

      • verifyLanguage

        public boolean verifyLanguage​(@Nonnull
                                      java.lang.String theValue,
                                      @Nonnull
                                      java.lang.String theLang)
                               throws InvalidLiteral
        Verifies that the language tag is valid, optionally including an automated check on the literal value.

        This method must only be called after verifying that LanguageHandler.isRecognizedLanguage(String) returns true for the given language tag.

        Specified by:
        verifyLanguage in interface LanguageHandler
        Parameters:
        theValue - Literal value matching the given language tag.
        theLang - A language tag that matched with LanguageHandler.isRecognizedLanguage(String).
        Returns:
        `true` if the language tag is recognized by this language handler, and it is verified to be syntactically valid.
        Throws:
        InvalidLiteral - If the language tag was not recognized.
      • normalizeLanguage

        @Nonnull
        public Literal normalizeLanguage​(@Nonnull
                                         java.lang.String theValue,
                                         @Nonnull
                                         java.lang.String theLang)
                                  throws InvalidLiteral
        Normalize both the language tag and the language if appropriate.

        This method must only be called after verifying that LanguageHandler.isRecognizedLanguage(String) returns true for the given language tag, and LanguageHandler.verifyLanguage(String, String) also returns true for the given language and literal value.

        Specified by:
        normalizeLanguage in interface LanguageHandler
        Parameters:
        theValue - Required literal value to use in the normalization process and to provide the value for the resulting literal.
        theLang - The language tag which is to be normalized. This tag is available in normalized form from the result using Literal.lang().
        Returns:
        A Literal containing the normalized literal value and language tag.
        Throws:
        InvalidLiteral - If the language tag was not recognized or verified, or the literal value could not be normalized due to an error.
      • key

        @Nonnull
        public java.lang.String key()
        A unique key for this language handler
        Specified by:
        key in interface LanguageHandler
        Returns:
        A unique `String` key.
      • normalizeLanguageTag

        public java.lang.String normalizeLanguageTag​(@Nonnull
                                                     java.lang.String theLang)
                                              throws java.util.IllformedLocaleException
        Normalizes the given BCP47 language tag according to the rules defined by the JDK in the Locale API.
        Specified by:
        normalizeLanguageTag in interface LanguageHandler
        Parameters:
        theLang - An unnormalized, valid, language tag
        Returns:
        A normalized version of the given language tag
        Throws:
        java.util.IllformedLocaleException - If the given language tag is ill-formed according to the rules specified in BCP47.