Package io.microsphere.net
Class URLUtils
- java.lang.Object
-
- io.microsphere.net.URLUtils
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULT_ENCODINGThe default encoding : "UTF-8"static java.lang.StringDEFAULT_HANDLER_PACKAGE_PREFIXThe prefix of package forHandlersstatic java.net.URL[]EMPTY_URL_ARRAYThe empty array ofURLstatic java.lang.StringFILE_URL_PREFIXThe prefix ofURLfor file protocol : "file:/"static java.lang.StringHANDLER_CONVENTION_CLASS_NAMEThe convention class name ofHandler.static java.lang.StringHANDLER_PACKAGES_PROPERTY_NAMEThe property which specifies the package prefix list to be scanned for protocol handlers.static charHANDLER_PACKAGES_SEPARATOR_CHARThe separator character ofHandlers'packages.static java.lang.StringSUB_PROTOCOL_MATRIX_NAMEThe matrix name for the URLs' sub-protocol
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidattachURLStreamHandlerFactory(java.net.URLStreamHandlerFactory factory)Set the specifiedURLStreamHandlerFactoryforURL'sif not set before, otherwise, add it intoCompositeURLStreamHandlerFactorythat will be set.static java.lang.StringbuildMatrixString(java.lang.String name, java.lang.String... values)Build the Matrix Stringstatic java.lang.StringbuildMatrixString(java.util.Map<java.lang.String,java.util.List<java.lang.String>> matrixParameters)Build the Matrix Stringprotected static java.lang.StringbuildString(java.lang.String name, java.lang.String[] values, char separator, char joiner)static java.lang.StringbuildURI(java.lang.String... paths)Build multiple paths to URIprotected static voidclearURLStreamHandlerFactory()static voidclose(java.net.URLConnection conn)Closes a URLConnection.static java.lang.Stringdecode(java.lang.String value)decode(String, String)with "UTF-8" encodingstatic java.lang.Stringdecode(java.lang.String value, java.lang.String encoding)Decodes aapplication/x-www-form-urlencodedstring using a specific encoding scheme.protected static java.lang.StringdoResolveArchiveEntryPath(java.lang.String path)protected static java.io.FiledoResolveArchiveFile(java.net.URL url)static java.lang.Stringencode(java.lang.String value)encode(String, String)with "UTF-8" encodingstatic java.lang.Stringencode(java.lang.String value, java.lang.String encoding)Translates a string intoapplication/x-www-form-urlencodedformat using a specific encoding scheme.protected static java.lang.StringgetFirst(java.util.Map<java.lang.String,java.util.List<java.lang.String>> parameters, java.lang.String name)protected static MutableURLStreamHandlerFactorygetMutableURLStreamHandlerFactory()protected static MutableURLStreamHandlerFactorygetMutableURLStreamHandlerFactory(boolean createIfAbsent)static java.lang.StringgetSubProtocol(java.lang.String url)static java.net.URLStreamHandlerFactorygetURLStreamHandlerFactory()protected static intindexOfMatrixString(java.lang.String value)static booleanisArchiveURL(java.net.URL url)Is an archive URL?static booleanisDirectoryURL(java.net.URL url)Is directory URL?static booleanisJarURL(java.net.URL url)Is Jar URL?static java.lang.StringnormalizePath(java.lang.String path)Normalize Path(maybe from File or URL), will remove duplicated slash or backslash from path.static java.net.URLofURL(java.lang.String url)Convert theurltoURLprotected static java.lang.StringreformProtocol(java.lang.String protocol, java.lang.String spec)protected static java.lang.StringreformProtocol(java.lang.String protocol, java.util.List<java.lang.String> subProtocols)static voidregisterURLStreamHandler(ExtendableProtocolURLStreamHandler handler)Register an instance ofExtendableProtocolURLStreamHandlerstatic voidregisterURLStreamHandler(java.lang.String protocol, java.net.URLStreamHandler handler)Register an instance ofURLStreamHandlerwith the specified protocolprotected static java.io.FileresolveArchiveDirectory(java.net.URL resourceURL)static java.lang.StringresolveArchiveEntryPath(java.net.URL archiveFileURL)Resolve the entry path from Archive File URLstatic java.io.FileresolveArchiveFile(java.net.URL resourceURL)Resolve archive filestatic java.lang.StringresolveAuthority(java.lang.String authority)static java.lang.StringresolveAuthority(java.net.URL url)static java.lang.StringresolveBasePath(java.net.URL url)Resolve base path from the specified URLstatic java.util.Map<java.lang.String,java.util.List<java.lang.String>>resolveMatrixParameters(java.lang.String url)Resolve the matrix parametersMapfrom specified URL,The parameter name as key ,parameter value list as keyprotected static java.util.Map<java.lang.String,java.util.List<java.lang.String>>resolveParameters(java.lang.String paramsString, char separatorChar)static java.lang.StringresolvePath(java.net.URL url)static java.lang.StringresolveProtocol(java.lang.String url)Resolve the protocol from the specifiedURLstringstatic java.util.Map<java.lang.String,java.util.List<java.lang.String>>resolveQueryParameters(java.lang.String url)Resolve the query parametersMapfrom specified URL,The parameter name as key ,parameter value list as keystatic java.util.List<java.lang.String>resolveSubProtocols(java.lang.String url)static java.util.List<java.lang.String>resolveSubProtocols(java.net.URL url)static java.lang.StringtoExternalForm(java.net.URL url)Converts a URL of a specific protocol to a String.static java.util.jar.JarFiletoJarFile(java.net.URL url)protected static java.lang.StringtruncateMatrixString(java.lang.String value)
-
-
-
Field Detail
-
DEFAULT_ENCODING
public static final java.lang.String DEFAULT_ENCODING
The default encoding : "UTF-8"
-
EMPTY_URL_ARRAY
public static final java.net.URL[] EMPTY_URL_ARRAY
The empty array ofURL
-
FILE_URL_PREFIX
public static final java.lang.String FILE_URL_PREFIX
The prefix ofURLfor file protocol : "file:/"- See Also:
- Constant Field Values
-
HANDLER_PACKAGES_PROPERTY_NAME
public static final java.lang.String HANDLER_PACKAGES_PROPERTY_NAME
The property which specifies the package prefix list to be scanned for protocol handlers. The value of this property (if any) should be a vertical bar delimited list of package names to search through for a protocol handler to load. The policy of this class is that all protocol handlers will be in a class called.Handler, and each package in the list is examined in turn for a matching handler. If none are found (or the property is not specified), the default package prefix, sun.net.www.protocol, is used. The search proceeds from the first package in the list to the last and stops when a match is found. - See Also:
- Constant Field Values
-
DEFAULT_HANDLER_PACKAGE_PREFIX
public static final java.lang.String DEFAULT_HANDLER_PACKAGE_PREFIX
The prefix of package forHandlers- See Also:
- Constant Field Values
-
HANDLER_PACKAGES_SEPARATOR_CHAR
public static final char HANDLER_PACKAGES_SEPARATOR_CHAR
The separator character ofHandlers'packages.- See Also:
- Constant Field Values
-
HANDLER_CONVENTION_CLASS_NAME
public static final java.lang.String HANDLER_CONVENTION_CLASS_NAME
The convention class name ofHandler.- See Also:
- Constant Field Values
-
SUB_PROTOCOL_MATRIX_NAME
public static final java.lang.String SUB_PROTOCOL_MATRIX_NAME
The matrix name for the URLs' sub-protocol- See Also:
- Constant Field Values
-
-
Method Detail
-
ofURL
public static java.net.URL ofURL(java.lang.String url)
Convert theurltoURL- Parameters:
url-- Returns:
- non-null
- Throws:
java.lang.IllegalArgumentException- ifurlis malformed
-
resolveArchiveEntryPath
public static java.lang.String resolveArchiveEntryPath(java.net.URL archiveFileURL) throws java.lang.NullPointerExceptionResolve the entry path from Archive File URL- Parameters:
archiveFileURL- Archive File URL- Returns:
- Relative path in archive
- Throws:
java.lang.NullPointerException-archiveFileURLisnull
-
doResolveArchiveEntryPath
protected static java.lang.String doResolveArchiveEntryPath(java.lang.String path)
-
resolveBasePath
public static java.lang.String resolveBasePath(java.net.URL url) throws java.lang.NullPointerExceptionResolve base path from the specified URL- Parameters:
url- the specified URL- Returns:
- base path
- Throws:
java.lang.NullPointerException- ifurlisnull
-
resolveArchiveFile
public static java.io.File resolveArchiveFile(java.net.URL resourceURL) throws java.lang.NullPointerExceptionResolve archive file- Parameters:
resourceURL- the URL of resource- Returns:
- Resolve archive file If exists
- Throws:
java.lang.NullPointerException
-
doResolveArchiveFile
protected static java.io.File doResolveArchiveFile(java.net.URL url) throws java.lang.NullPointerException- Throws:
java.lang.NullPointerException
-
resolveArchiveDirectory
protected static java.io.File resolveArchiveDirectory(java.net.URL resourceURL)
-
resolveQueryParameters
@Nonnull public static java.util.Map<java.lang.String,java.util.List<java.lang.String>> resolveQueryParameters(java.lang.String url)
Resolve the query parametersMapfrom specified URL,The parameter name as key ,parameter value list as key- Parameters:
url- URL- Returns:
- Non-null and Read-only
Map, the order of parameters is determined by query string
-
resolveMatrixParameters
@Nonnull public static java.util.Map<java.lang.String,java.util.List<java.lang.String>> resolveMatrixParameters(java.lang.String url)
Resolve the matrix parametersMapfrom specified URL,The parameter name as key ,parameter value list as key- Parameters:
url- URL- Returns:
- Non-null and Read-only
Map, the order of parameters is determined by matrix string
-
normalizePath
public static java.lang.String normalizePath(java.lang.String path)
Normalize Path(maybe from File or URL), will remove duplicated slash or backslash from path. For example,resolvePath("C:\\Windows\\\\temp") == "C:/Windows/temp"; resolvePath("C:\\\\\Windows\\/temp") == "C:/Windows/temp"; resolvePath("/home/////index.html") == "/home/index.html";- Parameters:
path- Path- Returns:
- a newly resolved path
-
encode
public static java.lang.String encode(java.lang.String value, java.lang.String encoding) throws java.lang.IllegalArgumentExceptionTranslates a string intoapplication/x-www-form-urlencodedformat using a specific encoding scheme. This method uses the supplied encoding scheme to obtain the bytes for unsafe characters. Note: The World Wide Web Consortium Recommendation states that UTF-8 should be used. Not doing so may introduce incompatibilites.- Parameters:
value-Stringto be translated.encoding- The name of a supported character encoding.- Returns:
- the translated
String. - Throws:
java.lang.IllegalArgumentException- If the named encoding is not supported- See Also:
URLDecoder.decode(String, String)
-
encode
public static java.lang.String encode(java.lang.String value)
encode(String, String)with "UTF-8" encoding- Parameters:
value- theStringto decode- Returns:
- the newly encoded
String
-
decode
public static java.lang.String decode(java.lang.String value)
decode(String, String)with "UTF-8" encoding- Parameters:
value- theStringto decode- Returns:
- the newly decoded
String
-
decode
public static java.lang.String decode(java.lang.String value, java.lang.String encoding) throws java.lang.IllegalArgumentExceptionDecodes aapplication/x-www-form-urlencodedstring using a specific encoding scheme. The supplied encoding is used to determine what characters are represented by any consecutive sequences of the form "%xy". Note: The World Wide Web Consortium Recommendation states that UTF-8 should be used. Not doing so may introduce incompatibilites.- Parameters:
value- theStringto decodeencoding- The name of a supported encoding- Returns:
- the newly decoded
String - Throws:
java.lang.IllegalArgumentException- If character encoding needs to be consulted, but named character encoding is not supported
-
isDirectoryURL
public static boolean isDirectoryURL(java.net.URL url)
Is directory URL?- Parameters:
url- URL- Returns:
- if directory , return
true
-
isJarURL
public static boolean isJarURL(java.net.URL url)
Is Jar URL?- Parameters:
url- URL- Returns:
- If jar , return
true
-
isArchiveURL
public static boolean isArchiveURL(java.net.URL url)
Is an archive URL?- Parameters:
url- URL- Returns:
- If an archive , return
true
-
toJarFile
public static java.util.jar.JarFile toJarFile(java.net.URL url)
-
buildURI
public static java.lang.String buildURI(java.lang.String... paths)
Build multiple paths to URI- Parameters:
paths- multiple paths- Returns:
- URI
-
buildMatrixString
public static java.lang.String buildMatrixString(java.util.Map<java.lang.String,java.util.List<java.lang.String>> matrixParameters)
Build the Matrix String- Parameters:
matrixParameters- theMapof matrix parameters- Returns:
- the Matrix String
-
buildMatrixString
public static java.lang.String buildMatrixString(java.lang.String name, java.lang.String... values)Build the Matrix String- Parameters:
name- the name of matrix parametervalues- the values of matrix parameter- Returns:
- the Matrix String
-
toExternalForm
public static java.lang.String toExternalForm(java.net.URL url) throws java.lang.NullPointerExceptionConverts a URL of a specific protocol to a String.- Parameters:
url-URL- Returns:
- non-null
- Throws:
java.lang.NullPointerException- Ifurlisnull
-
getSubProtocol
public static java.lang.String getSubProtocol(java.lang.String url)
-
resolveSubProtocols
public static java.util.List<java.lang.String> resolveSubProtocols(java.net.URL url)
-
resolveSubProtocols
public static java.util.List<java.lang.String> resolveSubProtocols(java.lang.String url)
-
resolveProtocol
public static java.lang.String resolveProtocol(java.lang.String url)
Resolve the protocol from the specifiedURLstring- Parameters:
url- theURLstring- Returns:
nullif can't be resolved
-
resolveAuthority
public static java.lang.String resolveAuthority(java.net.URL url)
-
resolveAuthority
public static java.lang.String resolveAuthority(java.lang.String authority)
-
resolvePath
public static java.lang.String resolvePath(java.net.URL url)
-
truncateMatrixString
protected static java.lang.String truncateMatrixString(java.lang.String value)
-
indexOfMatrixString
protected static int indexOfMatrixString(java.lang.String value)
-
attachURLStreamHandlerFactory
public static void attachURLStreamHandlerFactory(java.net.URLStreamHandlerFactory factory)
Set the specifiedURLStreamHandlerFactoryforURL'sif not set before, otherwise, add it intoCompositeURLStreamHandlerFactorythat will be set.- Parameters:
factory-URLStreamHandlerFactory
-
getURLStreamHandlerFactory
public static java.net.URLStreamHandlerFactory getURLStreamHandlerFactory()
-
registerURLStreamHandler
public static void registerURLStreamHandler(ExtendableProtocolURLStreamHandler handler)
Register an instance ofExtendableProtocolURLStreamHandler- Parameters:
handler-ExtendableProtocolURLStreamHandler
-
registerURLStreamHandler
public static void registerURLStreamHandler(java.lang.String protocol, java.net.URLStreamHandler handler)Register an instance ofURLStreamHandlerwith the specified protocol- Parameters:
protocol- the specified protocol ofURLhandler-URLStreamHandler
-
close
public static void close(java.net.URLConnection conn)
Closes a URLConnection.- Parameters:
conn- the connection to close.
-
getMutableURLStreamHandlerFactory
protected static MutableURLStreamHandlerFactory getMutableURLStreamHandlerFactory()
-
getMutableURLStreamHandlerFactory
protected static MutableURLStreamHandlerFactory getMutableURLStreamHandlerFactory(boolean createIfAbsent)
-
clearURLStreamHandlerFactory
protected static void clearURLStreamHandlerFactory()
-
reformProtocol
protected static java.lang.String reformProtocol(java.lang.String protocol, java.lang.String spec)
-
reformProtocol
protected static java.lang.String reformProtocol(java.lang.String protocol, java.util.List<java.lang.String> subProtocols)
-
resolveParameters
protected static java.util.Map<java.lang.String,java.util.List<java.lang.String>> resolveParameters(java.lang.String paramsString, char separatorChar)
-
buildString
protected static java.lang.String buildString(java.lang.String name, java.lang.String[] values, char separator, char joiner)
-
getFirst
protected static java.lang.String getFirst(java.util.Map<java.lang.String,java.util.List<java.lang.String>> parameters, java.lang.String name)
-
-