Package com.stardog.stark.io.language
Class BCP47LanguageHandler
java.lang.Object
com.stardog.stark.io.language.BCP47LanguageHandler
- All Implemented Interfaces:
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:
-
Field Summary
Fields inherited from interface com.stardog.stark.io.LanguageHandler
BCP47, RFC3066, RFC4646 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanisRecognizedLanguage(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.key()A unique key for this language handlernormalizeLanguage(String theValue, String theLang) Normalize both the language tag and the language if appropriate.normalizeLanguageTag(String theLang) booleanverifyLanguage(String theValue, String theLang) Verifies that the language tag is valid, optionally including an automated check on the literal value.
-
Constructor Details
-
BCP47LanguageHandler
public BCP47LanguageHandler()
-
-
Method Details
-
isRecognizedLanguage
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.- Specified by:
isRecognizedLanguagein interfaceLanguageHandler- Parameters:
theLang- The language tag to check.- Returns:
- True if the language tag is syntactically valid and could be used with
LanguageHandler.verifyLanguage(String, String)andLanguageHandler.normalizeLanguage(String, String).
-
verifyLanguage
public boolean verifyLanguage(@Nonnull String theValue, @Nonnull 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:
verifyLanguagein interfaceLanguageHandler- Parameters:
theValue- Literal value matching the given language tag.theLang- A language tag that matched withLanguageHandler.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 String theValue, @Nonnull 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, andLanguageHandler.verifyLanguage(String, String)also returns true for the given language and literal value.- Specified by:
normalizeLanguagein interfaceLanguageHandler- 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 usingLiteral.lang().- Returns:
- A
Literalcontaining 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
A unique key for this language handler- Specified by:
keyin interfaceLanguageHandler- Returns:
- A unique `String` key.
-
normalizeLanguageTag
Normalizes the given BCP47 language tag according to the rules defined by the JDK in theLocaleAPI.- Specified by:
normalizeLanguageTagin interfaceLanguageHandler- Parameters:
theLang- An unnormalized, valid, language tag- Returns:
- A normalized version of the given language tag
- Throws:
IllformedLocaleException- If the given language tag is ill-formed according to the rules specified in BCP47.
-