public class DomainValidator extends Object implements 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(java.lang.String)
- validates infrastructure TLDs
(.arpa
, etc.)isValidGenericTld(java.lang.String)
- validates generic TLDs
(.com, .org
, etc.)isValidCountryCodeTld(java.lang.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.)
Modifier and Type | Class and Description |
---|---|
static class |
DomainValidator.ArrayType
enum used by
updateTLDOverride(ArrayType, String[])
to determine which override array to update / fetch |
static class |
DomainValidator.Item
Used to specify overrides when creating a new class.
|
Modifier and Type | Method and Description |
---|---|
static DomainValidator |
getInstance()
Returns the singleton instance of this validator.
|
static DomainValidator |
getInstance(boolean allowLocal)
Returns the singleton instance of this validator,
with local validation as required.
|
static DomainValidator |
getInstance(boolean allowLocal,
List<DomainValidator.Item> items)
Returns a new instance of this validator.
|
String[] |
getOverrides(DomainValidator.ArrayType table)
Get a copy of an instance level internal array.
|
static String[] |
getTLDEntries(DomainValidator.ArrayType table)
Get a copy of a class level internal array.
|
boolean |
isAllowLocal()
Does this instance allow local addresses?
|
boolean |
isValid(String domain)
Returns true if the specified
String parses
as a valid domain name with a recognized top-level domain. |
boolean |
isValidCountryCodeTld(String ccTld)
Returns true if the specified
String matches any
IANA-defined country code top-level domain. |
boolean |
isValidGenericTld(String gTld)
Returns true if the specified
String matches any
IANA-defined generic top-level domain. |
boolean |
isValidInfrastructureTld(String iTld)
Returns true if the specified
String matches any
IANA-defined infrastructure top-level domain. |
boolean |
isValidLocalTld(String lTld)
Returns true if the specified
String matches any
widely used "local" domains (localhost or localdomain). |
boolean |
isValidTld(String tld)
Returns true if the specified
String matches any
IANA-defined top-level domain. |
static void |
updateTLDOverride(DomainValidator.ArrayType table,
String[] tlds)
Update one of the TLD override arrays.
|
public static DomainValidator getInstance()
public static DomainValidator getInstance(boolean allowLocal)
allowLocal
- Should local addresses be considered valid?public static DomainValidator getInstance(boolean allowLocal, List<DomainValidator.Item> items)
DomainValidator.Item
entries which can
be used to override the generic and country code lists.
Note that any such entries override values provided by the
updateTLDOverride(ArrayType, String[])
method
If an entry for a particular type is not provided, then
the class override (if any) is retained.allowLocal
- Should local addresses be considered valid?items
- - array of DomainValidator.Item
entriespublic boolean isValid(String domain)
String
parses
as a valid domain name with a recognized top-level domain.
The parsing is case-insensitive.domain
- the parameter to check for domain name syntaxpublic boolean isValidTld(String tld)
String
matches 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 against isValidInfrastructureTld(String)
,
isValidGenericTld(String)
and isValidCountryCodeTld(String)
tld
- the parameter to check for TLD status, not nullpublic boolean isValidInfrastructureTld(String iTld)
String
matches any
IANA-defined infrastructure top-level domain. Leading dots are
ignored if present. The search is case-insensitive.iTld
- the parameter to check for infrastructure TLD status, not nullpublic boolean isValidGenericTld(String gTld)
String
matches any
IANA-defined generic top-level domain. Leading dots are ignored
if present. The search is case-insensitive.gTld
- the parameter to check for generic TLD status, not nullpublic boolean isValidCountryCodeTld(String ccTld)
String
matches any
IANA-defined country code top-level domain. Leading dots are
ignored if present. The search is case-insensitive.ccTld
- the parameter to check for country code TLD status, not nullpublic boolean isValidLocalTld(String lTld)
String
matches any
widely used "local" domains (localhost or localdomain). Leading dots are
ignored if present. The search is case-insensitive.lTld
- the parameter to check for local TLD status, not nullpublic boolean isAllowLocal()
public static void updateTLDOverride(DomainValidator.ArrayType table, String[] tlds)
For example:
DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"apache"})
To clear an override array, provide an empty array.
table
- the table to update, see DomainValidator.ArrayType
Must be one of the following
tlds
- the array of TLDs, must not be nullIllegalStateException
- if the method is called after getInstanceIllegalArgumentException
- if one of the read-only tables is requestedpublic static String[] getTLDEntries(DomainValidator.ArrayType table)
table
- the array type (any of the enum values)IllegalArgumentException
- if the table type is unexpected (should not happen)public String[] getOverrides(DomainValidator.ArrayType table)
table
- the array type (any of the enum values)IllegalArgumentException
- if the table type is unexpected, e.g. GENERIC_ROCopyright © 2002–2020 The Apache Software Foundation. All rights reserved.