Class DomainValidator
- All Implemented Interfaces:
Serializable
Domain name validation routines.
This validator provides methods for validating Internet domain names and top-level domains.
Domain names are evaluated according to the standards RFC1034, section 3, and RFC1123, section 2.1. No accommodation is provided for the specialized needs of other applications; if the domain name has been URL-encoded, for example, validation will fail even though the equivalent plaintext version of the same name would have passed.
Validation is also provided for top-level domains (TLDs) as defined and maintained by the Internet Assigned Numbers Authority (IANA):
isValidInfrastructureTld(String)- validates infrastructure TLDs (.arpa, etc.)isValidGenericTld(String)- validates generic TLDs (.com, .org, etc.)isValidCountryCodeTld(String)- validates country code TLDs (.us, .uk, .cn, etc.)
(NOTE: This class does not provide IP address lookup for domain names or
methods to ensure that a given domain name matches a specific IP; see
InetAddress for that functionality.)
- Since:
- 1.4
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumEnum used byupdateTLDOverride(ArrayType, String[])to determine which override array to update / fetchstatic classSpecifies overrides when creating a new class. -
Method Summary
Modifier and TypeMethodDescriptionstatic DomainValidatorGets the singleton instance of this validator.static DomainValidatorgetInstance(boolean allowLocal) Gets the singleton instance of this validator, with local validation as required.static DomainValidatorgetInstance(boolean allowLocal, List<DomainValidator.Item> items) Gets a new instance of this validator.String[]Gets a copy of an instance level internal array.static String[]Gets a copy of a class level internal array.booleanTests whether this instance allow local addresses.booleanTests whether the specifiedStringparses as a valid domain name with a recognized top-level domain.booleanisValidCountryCodeTld(String ccTld) Tests whether the specifiedStringmatches any IANA-defined country code top-level domain.booleanisValidGenericTld(String gTld) Tests whether the specifiedStringmatches any IANA-defined generic top-level domain.booleanTests whether the specifiedStringmatches any IANA-defined infrastructure top-level domain.booleanisValidLocalTld(String lTld) Tests whether the specifiedStringmatches any widely used "local" domains (localhost or localdomain).booleanisValidTld(String tld) Returns true if the specifiedStringmatches any IANA-defined top-level domain.static voidupdateTLDOverride(DomainValidator.ArrayType table, String... tlds) Updates one of the TLD override arrays.
-
Method Details
-
getInstance
Gets the singleton instance of this validator. It will not consider local addresses as valid.- Returns:
- the singleton instance of this validator.
-
getInstance
Gets the singleton instance of this validator, with local validation as required.- Parameters:
allowLocal- Whether local addresses are considered valid.- Returns:
- the singleton instance of this validator.
-
getInstance
Gets a new instance of this validator. The user can provide a list ofDomainValidator.Itementries which can be used to override the generic and country code lists. Note that any such entries override values provided by theupdateTLDOverride(ArrayType, String[])method If an entry for a particular type is not provided, then the class override (if any) is retained.- Parameters:
allowLocal- Whether local addresses are considered valid.items- array ofDomainValidator.Itementries.- Returns:
- an instance of this validator.
- Since:
- 1.7
-
getTLDEntries
Gets a copy of a class level internal array.- Parameters:
table- the array type (any of the enum values).- Returns:
- a copy of the array.
- Throws:
IllegalArgumentException- if the table type is unexpected (should not happen).- Since:
- 1.5.1
-
updateTLDOverride
Updates one of the TLD override arrays. This must only be done at program startup, before any instances are accessed using getInstance.For example:
DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, "apache")To clear an override array, provide an empty array.
- Parameters:
table- the table to update, seeDomainValidator.ArrayTypeMust be one of the following- COUNTRY_CODE_MINUS
- COUNTRY_CODE_PLUS
- GENERIC_MINUS
- GENERIC_PLUS
- LOCAL_MINUS
- LOCAL_PLUS
tlds- the array of TLDs, must not be null.- Throws:
IllegalStateException- if the method is called after getInstance.IllegalArgumentException- if one of the read-only tables is requested.- Since:
- 1.5.0
-
getOverrides
Gets a copy of an instance level internal array.- Parameters:
table- the array type (any of the enum values).- Returns:
- a copy of the array.
- Throws:
IllegalArgumentException- if the table type is unexpected, for example, GENERIC_RO.- Since:
- 1.7
-
isAllowLocal
Tests whether this instance allow local addresses.- Returns:
- true if local addresses are allowed.
- Since:
- 1.7
-
isValid
-
isValidCountryCodeTld
Tests whether the specifiedStringmatches any IANA-defined country code top-level domain. Leading dots are ignored if present. The search is case-insensitive.- Parameters:
ccTld- the parameter to check for country code TLD status, not null.- Returns:
- true if the parameter is a country code TLD.
-
isValidGenericTld
Tests whether the specifiedStringmatches any IANA-defined generic top-level domain. Leading dots are ignored if present. The search is case-insensitive.- Parameters:
gTld- the parameter to check for generic TLD status, not null.- Returns:
- true if the parameter is a generic TLD.
-
isValidInfrastructureTld
Tests whether the specifiedStringmatches any IANA-defined infrastructure top-level domain. Leading dots are ignored if present. The search is case-insensitive.- Parameters:
iTld- the parameter to check for infrastructure TLD status, not null.- Returns:
- true if the parameter is an infrastructure TLD.
-
isValidLocalTld
Tests whether the specifiedStringmatches any widely used "local" domains (localhost or localdomain). Leading dots are ignored if present. The search is case-insensitive.- Parameters:
lTld- the parameter to check for local TLD status, not null.- Returns:
- true if the parameter is a local TLD.
-
isValidTld
Returns true if the specifiedStringmatches any IANA-defined top-level domain. Leading dots are ignored if present. The search is case-insensitive.If allowLocal is true, the TLD is checked using
isValidLocalTld(String). The TLD is then checked againstisValidInfrastructureTld(String),isValidGenericTld(String)andisValidCountryCodeTld(String).- Parameters:
tld- the parameter to check for TLD status, not null.- Returns:
- true if the parameter is a TLD.
-