Package org.evolvis.tartools.rfc822
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 theisDomain(String)method.- Author:
- mirabilos (t.glaser@tarent.de)
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedFQDN(String input)Private constructor, use the factory methodof(String)instead
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected intaccept()Advances the current position to the next characterprotected intbra(int deltapos)Jumps to a specified input character position, relative jumpprotected intcur()Returns the wide character at the current positionbooleanisDomain()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 jumpprotected 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 positionprotected intpos()Returns the current input character position, for saving and restoring (withjmp(int)) and for error messagesprotected Strings()Returns the input string, for use with substring comparisons (this is safe because Java™ strings are immutable)protected intskip(BiFunction<Integer,Integer,Boolean> matcher)Advances the current position as long as the matcher returns true and end of input is not yet reachedprotected intskip(Function<Integer,Boolean> matcher)Advances the current position as long as the matcher returns true and end of input is not yet reached; cf.
-
-
-
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 hostname was null or longer than 254 characters, the new 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, FQDNs could be 255 octet 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, FQDNs could be 255 octet in length, but these may cause problems with DNS and will not work in SMTP anyway.- Parameters:
hostname- to check- Returns:
- true if hostname is 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*; seePath.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 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 positioin- 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, 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 -1 if 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 -1 if 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 -1 if end of input is reached
- Throws:
IndexOutOfBoundsException- if end of input was already reached
-
skip
protected final int skip(BiFunction<Integer,Integer,Boolean> matcher)
Advances the current position as long as the matcher returns true and end of input is not yet reached
-
skip
protected final int skip(Function<Integer,Boolean> matcher)
Advances the current position as long as the matcher returns true and end of input is not yet reached; cf.skip(BiFunction)- Parameters:
matcher- gets called with justcur()as argument- Returns:
- codepoint of the first character where the matcher returned false, or -1
-
-