java.lang.Object
org.refcodes.web.Url
- All Implemented Interfaces:
org.refcodes.mixin.CredentialsAccessor
,org.refcodes.mixin.Dumpable
,org.refcodes.mixin.IdentityAccessor
,org.refcodes.mixin.PathAccessor
,org.refcodes.mixin.PortAccessor
,org.refcodes.mixin.SecretAccessor
,org.refcodes.net.IpAddressAccessor
,FragmentAccessor
,HostAccessor
,QueryFieldsAccessor
,SchemeAccessor
- Direct Known Subclasses:
UrlBuilder
public class Url
extends Object
implements org.refcodes.mixin.Dumpable, SchemeAccessor, HostAccessor, org.refcodes.net.IpAddressAccessor, org.refcodes.mixin.PortAccessor, org.refcodes.mixin.PathAccessor, QueryFieldsAccessor, FragmentAccessor, org.refcodes.mixin.CredentialsAccessor
The
Url
class represents an immutable URL: An URL looks something
like this:
"scheme://[identity[:secret]@]host[:port][/path][?query][#fragment] In
contrast to the java.net
URL
, this URL also supports
"relative" locators with neither a scheme nor a host declaration. If the
relative locator starts with a "/" slash, then we assume not having a host
being provided: "/path?query#fragment" When it does *not* start with a "/"
slash, then we assume that the first element being the host:
"[identity[:secret]@]host[:port]/path[?query][#fragment]"-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.mixin.CredentialsAccessor
org.refcodes.mixin.CredentialsAccessor.CredentialsBuilder<B extends org.refcodes.mixin.CredentialsAccessor.CredentialsBuilder<B>>, org.refcodes.mixin.CredentialsAccessor.CredentialsMutator, org.refcodes.mixin.CredentialsAccessor.CredentialsProperty
Nested classes/interfaces inherited from interface org.refcodes.web.FragmentAccessor
FragmentAccessor.FragmentBuilder<B extends FragmentAccessor.FragmentBuilder<?>>, FragmentAccessor.FragmentMutator, FragmentAccessor.FragmentProperty
Nested classes/interfaces inherited from interface org.refcodes.web.HostAccessor
HostAccessor.HostBuilder<B extends HostAccessor.HostBuilder<?>>, HostAccessor.HostMutator, HostAccessor.HostProperty
Nested classes/interfaces inherited from interface org.refcodes.mixin.IdentityAccessor
org.refcodes.mixin.IdentityAccessor.IdentityBuilder<B extends org.refcodes.mixin.IdentityAccessor.IdentityBuilder<B>>, org.refcodes.mixin.IdentityAccessor.IdentityMutator, org.refcodes.mixin.IdentityAccessor.IdentityProperty
Nested classes/interfaces inherited from interface org.refcodes.net.IpAddressAccessor
org.refcodes.net.IpAddressAccessor.IpAddressBuilder<B extends org.refcodes.net.IpAddressAccessor.IpAddressBuilder<B>>, org.refcodes.net.IpAddressAccessor.IpAddressMutator, org.refcodes.net.IpAddressAccessor.IpAddressProperty
Nested classes/interfaces inherited from interface org.refcodes.mixin.PathAccessor
org.refcodes.mixin.PathAccessor.PathBuilder<B extends org.refcodes.mixin.PathAccessor.PathBuilder<?>>, org.refcodes.mixin.PathAccessor.PathMutator, org.refcodes.mixin.PathAccessor.PathProperty
Nested classes/interfaces inherited from interface org.refcodes.mixin.PortAccessor
org.refcodes.mixin.PortAccessor.PortBuilder<B extends org.refcodes.mixin.PortAccessor.PortBuilder<B>>, org.refcodes.mixin.PortAccessor.PortMutator, org.refcodes.mixin.PortAccessor.PortProperty
Nested classes/interfaces inherited from interface org.refcodes.web.QueryFieldsAccessor
QueryFieldsAccessor.QueryFieldsBuilder<B extends QueryFieldsAccessor.QueryFieldsBuilder<?>>, QueryFieldsAccessor.QueryFieldsMutator, QueryFieldsAccessor.QueryFieldsProperty
Nested classes/interfaces inherited from interface org.refcodes.web.SchemeAccessor
SchemeAccessor.SchemeBuilder<B extends SchemeAccessor.SchemeBuilder<B>>, SchemeAccessor.SchemeMutator, SchemeAccessor.SchemeProperty
Nested classes/interfaces inherited from interface org.refcodes.mixin.SecretAccessor
org.refcodes.mixin.SecretAccessor.SecretBuilder<B extends org.refcodes.mixin.SecretAccessor.SecretBuilder<B>>, org.refcodes.mixin.SecretAccessor.SecretMutator, org.refcodes.mixin.SecretAccessor.SecretProperty
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
Url()
Default constructor.Constructs anUrl
with the common attributes.Constructs anUrl
with the common attributes.Constructs anUrl
with the common attributes.Url
(String aProtocol, String aHost, int aPort, String aPath, FormFields aQueryFields) Constructs anUrl
with the common attributes.Url
(String aProtocol, String aHost, int aPort, String aPath, FormFields aQueryFields, String aFragment) Constructs anUrl
with the common attributes.Constructs anUrl
with the common attributes.Url
(String aProtocol, String aHost, String aPath, FormFields aQueryFields) Constructs anUrl
with the common attributes.Constructs anUrl
with the common attributes.Url
(String aUrl, FormFields aQueryFields) Url
(String aUrl, FormFields aQueryFields, String aFragment) Constructs anUrl
with the common attributes.Constructs anUrl
with the common attributes.Constructs anUrl
with the common attributes.Url
(org.refcodes.data.Scheme aScheme, String aHost, int aPort, String aPath, FormFields aQueryFields) Constructs anUrl
with the common attributes.Url
(org.refcodes.data.Scheme aScheme, String aHost, int aPort, String aPath, FormFields aQueryFields, String aFragment) Constructs anUrl
with the common attributes.Constructs anUrl
with the common attributes.Url
(org.refcodes.data.Scheme aScheme, String aHost, String aPath, FormFields aQueryFields) Constructs anUrl
with the common attributes.Url
(org.refcodes.data.Scheme aScheme, String aHost, String aPath, FormFields aQueryFields, String aFragment) Constructs anUrl
with the common attributes. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
protected void
Retrieves the fragment from the fragment property.getHost()
Retrieves the host from the host property.int[]
getPath()
int
getPort()
Retrieves the request Query-Fields from the request Query-Fields property.org.refcodes.data.Scheme
Retrieves the UrlScheme from the URL scheme.protected void
protected void
setIpAddress
(int[] aIpAddress) protected void
protected void
setPort
(int aPort) protected void
setProtocol
(String aProtocol) protected void
setScheme
(org.refcodes.data.Scheme aScheme) toHost()
Returns the "host" depending on whether an IP-Address has been provided or a host name.Creates the locator part from theUrl
instance's state, excluding the fragment or the query fields.Retrieves the protocol representation from theScheme
.toString()
protected static String
toTruncatePath
(String aPath) Removes any leading and trailing path delimiters (as ofDelimiter.PATH
).protected static String
toTruncatePathPrefix
(String aPath) Removes any leading path delimiters (as ofDelimiter.PATH
).protected static String
toTruncatePathSuffix
(String aPath) Removes any trailing path delimiters (as ofDelimiter.PATH
).toURL()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.refcodes.mixin.Dumpable
toDump, toDump
Methods inherited from interface org.refcodes.net.IpAddressAccessor
toCidrNotation
-
Field Details
-
_scheme
protected org.refcodes.data.Scheme _scheme -
_protocol
-
_host
-
_ipAddress
protected int[] _ipAddress -
_path
-
_port
protected int _port -
_queryFields
-
_identity
-
_secret
-
_fragment
-
-
Constructor Details
-
Url
protected Url()Default constructor. Make sure to set required attributes for a valid URL. -
Url
- Parameters:
aUrl
- TheUrl
from which to construct this instance.
-
Url
- Parameters:
aUrl
- The URLString
to be parsed. The URL consists of the scheme (protocol), the identify and the secret (optional), the host as well as an optional port and the (optional) path.- Throws:
MalformedURLException
- in case the provided URL is considered being malformed.
-
Url
- Parameters:
aUrl
- The URLString
to be parsed. The URL consists of the scheme (protocol), the identify and the secret (optional), the host as well as an optional port and the (optional) path.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.- Throws:
MalformedURLException
- in case the provided URL is considered being malformed.
-
Url
- Parameters:
aUrl
- The URLString
to be parsed. The URL consists of the scheme (protocol), the identify and the secret (optional), the host as well as an optional port and the (optional) path.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.aFragment
- The fragment to be set.- Throws:
MalformedURLException
- in case the provided URL is considered being malformed.
-
Url
- Parameters:
aURL
- TheURL
to be used.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.aPath
- The path on the host to which the base destination URL is to point to.
-
Url
public Url(org.refcodes.data.Scheme aScheme, String aHost, int aPort, String aPath, FormFields aQueryFields) Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.aPath
- The path on the host to which the base destination URL is to point to.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.
-
Url
public Url(org.refcodes.data.Scheme aScheme, String aHost, int aPort, String aPath, FormFields aQueryFields, String aFragment) Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.aPath
- The path on the host to which the base destination URL is to point to.aFragment
- The fragment to be set.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.aPath
- The path on the host to which the base destination URL is to point to.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.aPath
- The path on the host to which the base destination URL is to point to.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.
-
Url
public Url(String aProtocol, String aHost, int aPort, String aPath, FormFields aQueryFields, String aFragment) Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPort
- The port to be used when connecting to the host.aPath
- The path on the host to which the base destination URL is to point to.aFragment
- The fragment to be set.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPath
- The path on the host to which the base destination URL is to point to.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPath
- The path on the host to which the base destination URL is to point to.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.
-
Url
public Url(org.refcodes.data.Scheme aScheme, String aHost, String aPath, FormFields aQueryFields, String aFragment) Constructs anUrl
with the common attributes.- Parameters:
aScheme
- TheScheme
(e.g. HTTP or HTTPS) to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPath
- The path on the host to which the base destination URL is to point to.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.aFragment
- The fragment to be set.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPath
- The path on the host to which the base destination URL is to point to.
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPath
- The path on the host to which the base destination URL is to point to.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.
-
Url
-
Url
Constructs anUrl
with the common attributes.- Parameters:
aProtocol
- The protocolString
(e.g. "http://" or "https://") to be used for the destination URL.aHost
- The host to which the destination URL is to point to.aPath
- The path on the host to which the base destination URL is to point to.aQueryFields
- The Query-Fields to be used for the HTTP Query-String.aFragment
- The fragment to be set.
-
Url
-
-
Method Details
-
getFragment
Retrieves the fragment from the fragment property.- Specified by:
getFragment
in interfaceFragmentAccessor
- Returns:
- The fragment stored by the fragment property.
-
getHost
Retrieves the host from the host property.- Specified by:
getHost
in interfaceHostAccessor
- Returns:
- The host stored by the host property.
-
getIdentity
- Specified by:
getIdentity
in interfaceorg.refcodes.mixin.IdentityAccessor
-
getIpAddress
public int[] getIpAddress()- Specified by:
getIpAddress
in interfaceorg.refcodes.net.IpAddressAccessor
-
getPath
- Specified by:
getPath
in interfaceorg.refcodes.mixin.PathAccessor
-
getPort
public int getPort()- Specified by:
getPort
in interfaceorg.refcodes.mixin.PortAccessor
-
getQueryFields
Retrieves the request Query-Fields from the request Query-Fields property.- Specified by:
getQueryFields
in interfaceQueryFieldsAccessor
- Returns:
- The request Query-Fields stored by the request Query-Fields property.
-
getScheme
public org.refcodes.data.Scheme getScheme()Retrieves the UrlScheme from the URL scheme.- Specified by:
getScheme
in interfaceSchemeAccessor
- Returns:
- The UrlScheme stored by the URL scheme.
-
getSecret
- Specified by:
getSecret
in interfaceorg.refcodes.mixin.SecretAccessor
-
toProtocol
Retrieves the protocol representation from theScheme
. In case of a scheme unknown by theScheme
enumeration, thenSchemeAccessor.getScheme()
might return null whilstSchemeAccessor.toProtocol()
still retrieves the unknown scheme's protocol representation (as ofSchemeAccessor.SchemeMutator.setProtocol(String)
).- Specified by:
toProtocol
in interfaceSchemeAccessor
- Returns:
- The protocol representation for the URL.
-
toHost
Returns the "host" depending on whether an IP-Address has been provided or a host name.- Returns:
- The determined host.
-
toHttpUrl
-
toLocator
Creates the locator part from theUrl
instance's state, excluding the fragment or the query fields.- Returns:
- The locator for the given
Url
.
-
toURL
- Returns:
- The according
URL
instance. - Throws:
MalformedURLException
- thrown in case the state of yourUrl
instance cannot be used to construct a validURL
, you may be missing some properties.
-
toString
-
fromUrl
- Parameters:
aUrl
- The URL from which to determine the state.- Throws:
MalformedURLException
- in case the provided URL is considered being malformed.
-
fromURL
-
setScheme
protected void setScheme(org.refcodes.data.Scheme aScheme) -
setProtocol
-
setHost
-
setIpAddress
protected void setIpAddress(int[] aIpAddress) -
setPort
protected void setPort(int aPort) -
setPath
-
toTruncatePathPrefix
Removes any leading path delimiters (as ofDelimiter.PATH
).- Parameters:
aPath
- The path to be processed.- Returns:
- The path without any leading path delimiters.
-
toTruncatePathSuffix
Removes any trailing path delimiters (as ofDelimiter.PATH
).- Parameters:
aPath
- The path to be processed.- Returns:
- The path without any trailing path delimiters.
-
toTruncatePath
Removes any leading and trailing path delimiters (as ofDelimiter.PATH
).- Parameters:
aPath
- The path to be processed.- Returns:
- The path with neither any leading nor any trailing path delimiters.
-