public class ConnectionUrlParser extends java.lang.Object implements DatabaseUrlContainer
scheme://authority/path?query#fragment
This results in splitting the connection string URL and processing its internal parts:
| Modifier and Type | Class and Description |
|---|---|
static class |
ConnectionUrlParser.Pair<T,U>
This class is a simple container for two elements.
|
| Modifier and Type | Field and Description |
|---|---|
private static java.lang.String |
ADDRESS_EQUALS_HOST_INFO_PREFIX |
private static java.util.regex.Pattern |
ADDRESS_EQUALS_HOST_PTRN |
private java.lang.String |
authority |
private java.lang.String |
baseConnectionString |
private static java.util.regex.Pattern |
CONNECTION_STRING_PTRN |
private static java.lang.String |
DUMMY_SCHEMA |
private static java.util.regex.Pattern |
GENERIC_HOST_PTRN |
private static java.util.regex.Pattern |
HOST_LIST_PTRN |
private static java.lang.String |
HOSTS_LIST_CLOSING_MARKERS |
private static java.lang.String |
HOSTS_LIST_OPENING_MARKERS |
private static java.lang.String |
HOSTS_SEPARATOR |
private static java.lang.String |
KEY_VALUE_HOST_INFO_CLOSING_MARKER |
private static java.lang.String |
KEY_VALUE_HOST_INFO_OPENING_MARKER |
private static java.util.regex.Pattern |
KEY_VALUE_HOST_PTRN |
private java.util.List<HostInfo> |
parsedHosts |
private java.util.Map<java.lang.String,java.lang.String> |
parsedProperties |
private java.lang.String |
path |
private static java.util.regex.Pattern |
PROPERTIES_PTRN |
private java.lang.String |
query |
private java.lang.String |
scheme |
private static java.util.regex.Pattern |
SCHEME_PTRN |
private static java.lang.String |
USER_HOST_SEPARATOR |
private static java.lang.String |
USER_PASS_SEPARATOR |
| Modifier | Constructor and Description |
|---|---|
private |
ConnectionUrlParser(java.lang.String connString)
Constructs a connection string parser for the given connection string.
|
| Modifier and Type | Method and Description |
|---|---|
private HostInfo |
buildHostInfoForEmptyHost(java.lang.String user,
java.lang.String password,
java.lang.String hostInfo)
Builds an
HostInfo instance for empty host authority segments. |
private HostInfo |
buildHostInfoResortingToAddressEqualsSyntaxParser(java.lang.String user,
java.lang.String password,
java.lang.String hostInfo)
Parses the host information using the alternate syntax "address=(key1=value1)(key2=value2)...".
|
private HostInfo |
buildHostInfoResortingToGenericSyntaxParser(java.lang.String user,
java.lang.String password,
java.lang.String hostInfo)
Parses the host information using the generic syntax "host:port".
|
private HostInfo |
buildHostInfoResortingToKeyValueSyntaxParser(java.lang.String user,
java.lang.String password,
java.lang.String hostInfo)
Parses the host information using the alternate syntax "(key1=value1, key2=value2, ...)".
|
private java.util.List<HostInfo> |
buildHostInfoResortingToSubHostsListParser(java.lang.String user,
java.lang.String password,
java.lang.String hostInfo)
Parses the host information using the alternate sub hosts lists syntax "[host1, host2, ...]".
|
private HostInfo |
buildHostInfoResortingToUriParser(java.lang.String user,
java.lang.String password,
java.lang.String hostInfo)
Parses the host information resorting to a URI object.
|
private static java.lang.String |
decode(java.lang.String text)
URL-decode the given string.
|
private static java.lang.String |
decodeSkippingPlusSign(java.lang.String text)
URL-decode the given string skipping all occurrences of the plus sign.
|
java.lang.String |
getAuthority()
Returns the authority section.
|
java.lang.String |
getDatabaseUrl()
Returns the original database URL that produced this connection string parser.
|
java.util.List<HostInfo> |
getHosts()
Returns the hosts information.
|
java.lang.String |
getPath()
Returns the path section.
|
java.util.Map<java.lang.String,java.lang.String> |
getProperties()
Returns the properties map contained in this connection string.
|
java.lang.String |
getQuery()
Returns the query section.
|
java.lang.String |
getScheme()
Returns the scheme section.
|
static boolean |
isConnectionStringSupported(java.lang.String connString)
Checks if the scheme part of given connection string matches one of the
ConnectionUrl.Types supported by Connector/J. |
private void |
parseAuthoritySection()
Parses the authority section (user and/or host identification) of the connection string URI.
|
private void |
parseAuthoritySegment(java.lang.String authSegment)
Parses the given sub authority segment, which can take one of the following syntaxes:
_user_:_password_@_host_:_port_
_user_:_password_@(key1=value1,key2=value2,...)
_user_:_password_@address=(key1=value1)(key2=value2)...
|
private void |
parseConnectionString()
Splits the connection string in its main sections.
|
static ConnectionUrlParser |
parseConnectionString(java.lang.String connString)
Static factory method for constructing instances of this class.
|
static ConnectionUrlParser.Pair<java.lang.String,java.lang.Integer> |
parseHostPortPair(java.lang.String hostInfo)
Parses a host:port pair and returns the two elements in a
ConnectionUrlParser.Pair |
private void |
parseQuerySection()
Parses the connection properties section and stores the extracted key/value pairs into a local map.
|
static ConnectionUrlParser.Pair<java.lang.String,java.lang.String> |
parseUserInfo(java.lang.String userInfo)
Parses the given user information which is formed by the parts [user][:password].
|
private java.util.Map<java.lang.String,java.lang.String> |
processKeyValuePattern(java.util.regex.Pattern pattern,
java.lang.String input)
Takes a two-matching-groups (respectively named "key" and "value") pattern which is successively tested against the given string and produces a key/value
map with the matched values.
|
private ConnectionUrlParser.Pair<java.lang.String,java.lang.String> |
splitByUserInfoAndHostInfo(java.lang.String authSegment)
Splits the given authority segment in the user information part and the host part.
|
java.lang.String |
toString()
Returns a string representation of this object.
|
private static final java.lang.String DUMMY_SCHEMA
private static final java.lang.String USER_PASS_SEPARATOR
private static final java.lang.String USER_HOST_SEPARATOR
private static final java.lang.String HOSTS_SEPARATOR
private static final java.lang.String KEY_VALUE_HOST_INFO_OPENING_MARKER
private static final java.lang.String KEY_VALUE_HOST_INFO_CLOSING_MARKER
private static final java.lang.String HOSTS_LIST_OPENING_MARKERS
private static final java.lang.String HOSTS_LIST_CLOSING_MARKERS
private static final java.lang.String ADDRESS_EQUALS_HOST_INFO_PREFIX
private static final java.util.regex.Pattern CONNECTION_STRING_PTRN
private static final java.util.regex.Pattern SCHEME_PTRN
private static final java.util.regex.Pattern HOST_LIST_PTRN
private static final java.util.regex.Pattern GENERIC_HOST_PTRN
private static final java.util.regex.Pattern KEY_VALUE_HOST_PTRN
private static final java.util.regex.Pattern ADDRESS_EQUALS_HOST_PTRN
private static final java.util.regex.Pattern PROPERTIES_PTRN
private final java.lang.String baseConnectionString
private java.lang.String scheme
private java.lang.String authority
private java.lang.String path
private java.lang.String query
private java.util.List<HostInfo> parsedHosts
private java.util.Map<java.lang.String,java.lang.String> parsedProperties
private ConnectionUrlParser(java.lang.String connString)
connString - the connection string to parsepublic static ConnectionUrlParser parseConnectionString(java.lang.String connString)
connString - The connection string to parse.ConnectionUrlParserpublic static boolean isConnectionStringSupported(java.lang.String connString)
ConnectionUrl.Types supported by Connector/J.
Throws WrongArgumentException if connString is null.connString - connection stringprivate void parseConnectionString()
private void parseAuthoritySection()
private void parseAuthoritySegment(java.lang.String authSegment)
authSegment - the string containing the authority segmentprivate HostInfo buildHostInfoForEmptyHost(java.lang.String user, java.lang.String password, java.lang.String hostInfo)
HostInfo instance for empty host authority segments.private HostInfo buildHostInfoResortingToUriParser(java.lang.String user, java.lang.String password, java.lang.String hostInfo)
private java.util.List<HostInfo> buildHostInfoResortingToSubHostsListParser(java.lang.String user, java.lang.String password, java.lang.String hostInfo)
user - the user to include in all the resulting HostInfopassword - the password to include in all the resulting HostInfohostInfo - the string containing the host information partHostInfo instances containing the parsed information or null if unable to parse the host informationprivate HostInfo buildHostInfoResortingToKeyValueSyntaxParser(java.lang.String user, java.lang.String password, java.lang.String hostInfo)
private HostInfo buildHostInfoResortingToAddressEqualsSyntaxParser(java.lang.String user, java.lang.String password, java.lang.String hostInfo)
private HostInfo buildHostInfoResortingToGenericSyntaxParser(java.lang.String user, java.lang.String password, java.lang.String hostInfo)
private ConnectionUrlParser.Pair<java.lang.String,java.lang.String> splitByUserInfoAndHostInfo(java.lang.String authSegment)
authSegment - the string containing the authority segment, i.e., the user and host information partsConnectionUrlParser.Pair containing the user information in the left side and the host information in the rightpublic static ConnectionUrlParser.Pair<java.lang.String,java.lang.String> parseUserInfo(java.lang.String userInfo)
userInfo - the string containing the user informationConnectionUrlParser.Pair containing the user and password information or null if the user information can't be parsedpublic static ConnectionUrlParser.Pair<java.lang.String,java.lang.Integer> parseHostPortPair(java.lang.String hostInfo)
ConnectionUrlParser.PairhostInfo - the host:pair to parseConnectionUrlParser.Pair containing the host and port information or null if the host information can't be parsedprivate void parseQuerySection()
private java.util.Map<java.lang.String,java.lang.String> processKeyValuePattern(java.util.regex.Pattern pattern,
java.lang.String input)
pattern - the regular expression pattern to match against toinput - the input stringprivate static java.lang.String decode(java.lang.String text)
text - the string to decodeprivate static java.lang.String decodeSkippingPlusSign(java.lang.String text)
text - the string to decodepublic java.lang.String getDatabaseUrl()
getDatabaseUrl in interface DatabaseUrlContainerpublic java.lang.String getScheme()
public java.lang.String getAuthority()
public java.lang.String getPath()
public java.lang.String getQuery()
public java.util.List<HostInfo> getHosts()
public java.util.Map<java.lang.String,java.lang.String> getProperties()
public java.lang.String toString()
toString in class java.lang.Object