Class FQDN
- java.lang.Object
-
- org.evolvis.tartools.rfc822.FQDN
-
public class FQDN extends Object
Represents an FQDN (“domain” production) for use in eMail.
The main entry point is the
isDomain(String)method. The parser does not trim surrounding whitespace by itself.- Author:
- mirabilos (t.glaser@tarent.de)
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected intaccept()Advances the current position to the next character.protected intbra(int deltapos)Jumps to a specified input character position, relative jump.protected intcur()Returns the wide character at the current position.booleanisDomain()Checks if a supposed hostname is a valid Fully-Qualified Domain Name.static booleanisDomain(String hostname)Checks if a supposed hostname is a valid Fully-Qualified Domain Name.protected intjmp(int pos)Jumps to a specified input character position, absolute jump.protected static <T extends org.evolvis.tartools.rfc822.Parser>
Tof(Class<T> cls, String input)Constructs a parser.static FQDNof(String hostname)Creates and initialises a new parser for Fully-Qualified Domain Names.protected intpeek()Returns the wide character after the one at the current position.protected intpos()Returns the current input character position.protected Strings()Returns the input string, for use with substring comparisons.protected intskip(Function<Integer,Boolean> matcher)Advances the current position using a regular matcher.protected intskipPeek(BiFunction<Integer,Integer,Boolean> matcher)Advances the current position using a peeking matcher.
-
-
-
Constructor Detail
-
FQDN
protected FQDN(String input)
Private constructor. Use the factory methodof(String)instead.- Parameters:
input- string to analyse
-
-
Method Detail
-
of
public static FQDN of(String hostname)
Creates and initialises a new parser for Fully-Qualified Domain Names.- Parameters:
hostname- to parse- Returns:
- null if
hostnamewas null or longer than 254 characters, the new parser instance otherwise
-
isDomain
public boolean isDomain()
Checks if a supposed hostname is a valid Fully-Qualified Domain Name.
Valid FQDNs are up to 254 octets in length, comprised only of labels (letters, digits and hyphen-minus, but not beginning or ending with a hyphen-minus) up to 63 octets long, separated by dots (‘.’).
Strictly speaking an FQDN could be 255 octets in length, but these may cause problems with DNS and will not work in SMTP anyway.
- Returns:
- true if the hostname passed during construction is valid, else false
-
isDomain
public static boolean isDomain(String hostname)
Checks if a supposed hostname is a valid Fully-Qualified Domain Name.
Valid FQDNs are up to 254 octets in length, comprised only of labels (letters, digits and hyphen-minus, but not beginning or ending with a hyphen-minus) up to 63 octets long, separated by dots (‘.’).
Strictly speaking an FQDN could be 255 octets in length, but these may cause problems with DNS and will not work in SMTP anyway.
- Parameters:
hostname- to check- Returns:
- true if
hostnameis valid, false otherwise
-
of
protected static <T extends org.evolvis.tartools.rfc822.Parser> T of(Class<T> cls, String input)
Constructs a parser. Intended to be used by subclasses from static factory methods *only*; see
Path.of(String)for an example.- Type Parameters:
T- subclass of Parser to construct- Parameters:
cls- subclass of Parser to constructinput- user-providedStringto parse- Returns:
- null if input was null or too large, the new parser subclass instance otherwise
-
jmp
protected final int jmp(int pos)
Jumps to a specified input character position, absolute jump.- Parameters:
pos- to jump to- Returns:
- the codepoint at that position
- Throws:
IndexOutOfBoundsException- if pos is not in or just past the input
-
bra
protected final int bra(int deltapos)
Jumps to a specified input character position, relative jump.- Parameters:
deltapos- to add to the current position- Returns:
- the codepoint at that position
- Throws:
IndexOutOfBoundsException- if pos is not in or just past the input
-
pos
protected final int pos()
Returns the current input character position. Useful for saving and restoring (withjmp(int)) and for error messages.- Returns:
- position
-
s
protected final String s()
Returns the input string, for use with substring comparisons. (This is safe because Java™ strings are immutable.)- Returns:
- String input
-
cur
protected final int cur()
Returns the wide character at the current position.- Returns:
- UCS-4 codepoint, or
-1if end of input is reached
-
peek
protected final int peek()
Returns the wide character after the one at the current position.- Returns:
- UCS-4 codepoint, or
-1if end of input is reached
-
accept
protected final int accept()
Advances the current position to the next character.- Returns:
- codepoint of the next character, or
-1if end of input is reached - Throws:
IndexOutOfBoundsException- if end of input was already reached
-
skipPeek
protected final int skipPeek(BiFunction<Integer,Integer,Boolean> matcher)
Advances the current position using a peeking matcher. Continues as long as thematcherreturns true and end of input is not yet reached.- Parameters:
matcher- gets called withcur()andpeek()as arguments- Returns:
- codepoint of the first character where the matcher returned false,
or
-1if end of input is reached - See Also:
skip(Function)
-
skip
protected final int skip(Function<Integer,Boolean> matcher)
Advances the current position using a regular matcher. Continues as long as thematcherreturns true and end of input is not yet reached.- Parameters:
matcher- gets called with justcur()as argument- Returns:
- codepoint of the first character where the matcher returned false,
or
-1if end of input is reached - See Also:
skipPeek(BiFunction)
-
-