blob: 2c0c45c7cbb40e530dad33c8123808d2678073a5 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Fri Feb 26 09:50:23 CST 2021 -->
<title>URIUtil (Jetty :: Project 9.4.38.v20210224 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-26">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="URIUtil (Jetty :: Project 9.4.38.v20210224 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/URIUtil.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.util</a></div>
<h2 title="Class URIUtil" class="title">Class URIUtil</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.util.URIUtil</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.lang.Cloneable</code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">URIUtil</span>
extends java.lang.Object
implements java.lang.Cloneable</pre>
<div class="block">URI Utility methods.
<p>
This class assists with the decoding and encoding or HTTP URI's.
It differs from the java.net.URL class as it does not provide
communications ability, but it does assist with query string
formatting.
</p></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="UrlEncoded.html" title="class in org.eclipse.jetty.util"><code>UrlEncoded</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.nio.charset.Charset</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#__CHARSET">__CHARSET</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#HTTP">HTTP</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#HTTPS">HTTPS</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SLASH">SLASH</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addEncodedPaths(java.lang.String,java.lang.String)">addEncodedPaths</a></span>&#8203;(java.lang.String&nbsp;p1,
java.lang.String&nbsp;p2)</code></th>
<td class="colLast">
<div class="block">Add two encoded URI path segments.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static java.net.URI</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addPath(java.net.URI,java.lang.String)">addPath</a></span>&#8203;(java.net.URI&nbsp;uri,
java.lang.String&nbsp;path)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addPathQuery(java.lang.String,java.lang.String)">addPathQuery</a></span>&#8203;(java.lang.String&nbsp;path,
java.lang.String&nbsp;query)</code></th>
<td class="colLast">
<div class="block">Add a path and a query string</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addPaths(java.lang.String,java.lang.String)">addPaths</a></span>&#8203;(java.lang.String&nbsp;p1,
java.lang.String&nbsp;p2)</code></th>
<td class="colLast">
<div class="block">Add two Decoded URI path segments.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addQueries(java.lang.String,java.lang.String)">addQueries</a></span>&#8203;(java.lang.String&nbsp;query1,
java.lang.String&nbsp;query2)</code></th>
<td class="colLast">
<div class="block">Combine two query strings into one.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#appendSchemeHostPort(java.lang.StringBuffer,java.lang.String,java.lang.String,int)">appendSchemeHostPort</a></span>&#8203;(java.lang.StringBuffer&nbsp;url,
java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port)</code></th>
<td class="colLast">
<div class="block">Append scheme, host and port URI prefix, handling IPv6 address encoding and default ports</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#appendSchemeHostPort(java.lang.StringBuilder,java.lang.String,java.lang.String,int)">appendSchemeHostPort</a></span>&#8203;(java.lang.StringBuilder&nbsp;url,
java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port)</code></th>
<td class="colLast">
<div class="block">Append scheme, host and port URI prefix, handling IPv6 address encoding and default ports</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#canonicalEncodedPath(java.lang.String)">canonicalEncodedPath</a></span>&#8203;(java.lang.String&nbsp;path)</code></th>
<td class="colLast">
<div class="block">Convert a path to a cananonical form.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#canonicalPath(java.lang.String)">canonicalPath</a></span>&#8203;(java.lang.String&nbsp;path)</code></th>
<td class="colLast">
<div class="block">Convert an encoded path to a canonical form.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#compactPath(java.lang.String)">compactPath</a></span>&#8203;(java.lang.String&nbsp;path)</code></th>
<td class="colLast">
<div class="block">Convert a path to a compact form.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decodePath(java.lang.String)">decodePath</a></span>&#8203;(java.lang.String&nbsp;path)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decodePath(java.lang.String,int,int)">decodePath</a></span>&#8203;(java.lang.String&nbsp;path,
int&nbsp;offset,
int&nbsp;length)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decodeSpecific(java.lang.String,java.lang.String)">decodeSpecific</a></span>&#8203;(java.lang.String&nbsp;str,
java.lang.String&nbsp;charsToDecode)</code></th>
<td class="colLast">
<div class="block">Decode a raw String and convert any specific URI encoded sequences into characters.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#encodePath(java.lang.String)">encodePath</a></span>&#8203;(java.lang.String&nbsp;path)</code></th>
<td class="colLast">
<div class="block">Encode a URI path.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static java.lang.StringBuilder</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#encodePath(java.lang.StringBuilder,java.lang.String)">encodePath</a></span>&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;path)</code></th>
<td class="colLast">
<div class="block">Encode a URI path.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#encodeSpaces(java.lang.String)">encodeSpaces</a></span>&#8203;(java.lang.String&nbsp;str)</code></th>
<td class="colLast">
<div class="block">Encode a raw URI String and convert any raw spaces to
their "%20" equivalent.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#encodeSpecific(java.lang.String,java.lang.String)">encodeSpecific</a></span>&#8203;(java.lang.String&nbsp;str,
java.lang.String&nbsp;charsToEncode)</code></th>
<td class="colLast">
<div class="block">Encode a raw String and convert any specific characters to their URI encoded equivalent.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>static java.lang.StringBuilder</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#encodeString(java.lang.StringBuilder,java.lang.String,java.lang.String)">encodeString</a></span>&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;path,
java.lang.String&nbsp;encode)</code></th>
<td class="colLast">
<div class="block">Encode a URI path.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalsIgnoreEncodings(java.lang.String,java.lang.String)">equalsIgnoreEncodings</a></span>&#8203;(java.lang.String&nbsp;uriA,
java.lang.String&nbsp;uriB)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#equalsIgnoreEncodings(java.net.URI,java.net.URI)">equalsIgnoreEncodings</a></span>&#8203;(java.net.URI&nbsp;uriA,
java.net.URI&nbsp;uriB)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJarSource(java.lang.String)">getJarSource</a></span>&#8203;(java.lang.String&nbsp;uri)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>static java.net.URI</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getJarSource(java.net.URI)">getJarSource</a></span>&#8203;(java.net.URI&nbsp;uri)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getUriLastPathSegment(java.net.URI)">getUriLastPathSegment</a></span>&#8203;(java.net.URI&nbsp;uri)</code></th>
<td class="colLast">
<div class="block">Given a URI, attempt to get the last segment.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasScheme(java.lang.String)">hasScheme</a></span>&#8203;(java.lang.String&nbsp;uri)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newURI(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String)">newURI</a></span>&#8203;(java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port,
java.lang.String&nbsp;path,
java.lang.String&nbsp;query)</code></th>
<td class="colLast">
<div class="block">Create a new URI from the arguments, handling IPv6 host encoding and default ports</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>static java.lang.StringBuilder</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newURIBuilder(java.lang.String,java.lang.String,int)">newURIBuilder</a></span>&#8203;(java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port)</code></th>
<td class="colLast">
<div class="block">Create a new URI StringBuilder from the arguments, handling IPv6 host encoding and default ports</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#parentPath(java.lang.String)">parentPath</a></span>&#8203;(java.lang.String&nbsp;p)</code></th>
<td class="colLast">
<div class="block">Return the parent Path.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="SLASH">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SLASH</h4>
<pre>public static final&nbsp;java.lang.String SLASH</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.eclipse.jetty.util.URIUtil.SLASH">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="HTTP">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>HTTP</h4>
<pre>public static final&nbsp;java.lang.String HTTP</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.eclipse.jetty.util.URIUtil.HTTP">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="HTTPS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>HTTPS</h4>
<pre>public static final&nbsp;java.lang.String HTTPS</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.eclipse.jetty.util.URIUtil.HTTPS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="__CHARSET">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>__CHARSET</h4>
<pre>public static final&nbsp;java.nio.charset.Charset __CHARSET</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="encodePath(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encodePath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;encodePath&#8203;(java.lang.String&nbsp;path)</pre>
<div class="block">Encode a URI path.
This is the same encoding offered by URLEncoder, except that
the '/' character is not encoded.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - The path the encode</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The encoded path</dd>
</dl>
</li>
</ul>
<a id="encodePath(java.lang.StringBuilder,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encodePath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.StringBuilder&nbsp;encodePath&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;path)</pre>
<div class="block">Encode a URI path.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - The path the encode</dd>
<dd><code>buf</code> - StringBuilder to encode path into (or null)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The StringBuilder or null if no substitutions required.</dd>
</dl>
</li>
</ul>
<a id="encodeSpaces(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encodeSpaces</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;encodeSpaces&#8203;(java.lang.String&nbsp;str)</pre>
<div class="block">Encode a raw URI String and convert any raw spaces to
their "%20" equivalent.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>str</code> - input raw string</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>output with spaces converted to "%20"</dd>
</dl>
</li>
</ul>
<a id="encodeSpecific(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encodeSpecific</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;encodeSpecific&#8203;(java.lang.String&nbsp;str,
java.lang.String&nbsp;charsToEncode)</pre>
<div class="block">Encode a raw String and convert any specific characters to their URI encoded equivalent.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>str</code> - input raw string</dd>
<dd><code>charsToEncode</code> - the list of raw characters that need to be encoded (if encountered)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>output with specified characters encoded.</dd>
</dl>
</li>
</ul>
<a id="decodeSpecific(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decodeSpecific</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;decodeSpecific&#8203;(java.lang.String&nbsp;str,
java.lang.String&nbsp;charsToDecode)</pre>
<div class="block">Decode a raw String and convert any specific URI encoded sequences into characters.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>str</code> - input raw string</dd>
<dd><code>charsToDecode</code> - the list of raw characters that need to be decoded (if encountered), leaving all other encoded sequences alone.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>output with specified characters decoded.</dd>
</dl>
</li>
</ul>
<a id="encodeString(java.lang.StringBuilder,java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encodeString</h4>
<pre class="methodSignature">public static&nbsp;java.lang.StringBuilder&nbsp;encodeString&#8203;(java.lang.StringBuilder&nbsp;buf,
java.lang.String&nbsp;path,
java.lang.String&nbsp;encode)</pre>
<div class="block">Encode a URI path.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - The path the encode</dd>
<dd><code>buf</code> - StringBuilder to encode path into (or null)</dd>
<dd><code>encode</code> - String of characters to encode. % is always encoded.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The StringBuilder or null if no substitutions required.</dd>
</dl>
</li>
</ul>
<a id="decodePath(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decodePath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;decodePath&#8203;(java.lang.String&nbsp;path)</pre>
</li>
</ul>
<a id="decodePath(java.lang.String,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decodePath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;decodePath&#8203;(java.lang.String&nbsp;path,
int&nbsp;offset,
int&nbsp;length)</pre>
</li>
</ul>
<a id="addEncodedPaths(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addEncodedPaths</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;addEncodedPaths&#8203;(java.lang.String&nbsp;p1,
java.lang.String&nbsp;p2)</pre>
<div class="block">Add two encoded URI path segments.
Handles null and empty paths, path and query params
(eg ?a=b or ;JSESSIONID=xxx) and avoids duplicate '/'</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>p1</code> - URI path segment (should be encoded)</dd>
<dd><code>p2</code> - URI path segment (should be encoded)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Legally combined path segments.</dd>
</dl>
</li>
</ul>
<a id="addPaths(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addPaths</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;addPaths&#8203;(java.lang.String&nbsp;p1,
java.lang.String&nbsp;p2)</pre>
<div class="block">Add two Decoded URI path segments.
Handles null and empty paths. Path and query params (eg ?a=b or
;JSESSIONID=xxx) are not handled</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>p1</code> - URI path segment (should be decoded)</dd>
<dd><code>p2</code> - URI path segment (should be decoded)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Legally combined path segments.</dd>
</dl>
</li>
</ul>
<a id="addPathQuery(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addPathQuery</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;addPathQuery&#8203;(java.lang.String&nbsp;path,
java.lang.String&nbsp;query)</pre>
<div class="block">Add a path and a query string</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - The path which may already contain contain a query</dd>
<dd><code>query</code> - The query string or null if no query to be added</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The path with any non null query added after a '?' or '&amp;' as appropriate.</dd>
</dl>
</li>
</ul>
<a id="getUriLastPathSegment(java.net.URI)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUriLastPathSegment</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;getUriLastPathSegment&#8203;(java.net.URI&nbsp;uri)</pre>
<div class="block">Given a URI, attempt to get the last segment.
<p>
If this is a <code>jar:file://</code> style URI, then
the JAR filename is returned (not the deep <code>!/path</code> location)
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>uri</code> - the URI to look in</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the last segment.</dd>
</dl>
</li>
</ul>
<a id="parentPath(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parentPath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;parentPath&#8203;(java.lang.String&nbsp;p)</pre>
<div class="block">Return the parent Path.
Treat a URI like a directory path and return the parent directory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>p</code> - the path to return a parent reference to</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parent path of the URI</dd>
</dl>
</li>
</ul>
<a id="canonicalPath(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canonicalPath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;canonicalPath&#8203;(java.lang.String&nbsp;path)</pre>
<div class="block">Convert an encoded path to a canonical form.
<p>
All instances of "." and ".." are factored out.
Null is returned if the path tries to .. above its root.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - the path to convert, decoded, with path separators '/' and no queries.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the canonical path, or null if path traversal above root.</dd>
</dl>
</li>
</ul>
<a id="canonicalEncodedPath(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canonicalEncodedPath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;canonicalEncodedPath&#8203;(java.lang.String&nbsp;path)</pre>
<div class="block">Convert a path to a cananonical form.
<p>
All instances of "." and ".." are factored out.
</p>
<p>
Null is returned if the path tries to .. above its root.
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - the path to convert (expects URI/URL form, encoded, and with path separators '/')</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the canonical path, or null if path traversal above root.</dd>
</dl>
</li>
</ul>
<a id="compactPath(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compactPath</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;compactPath&#8203;(java.lang.String&nbsp;path)</pre>
<div class="block">Convert a path to a compact form.
All instances of "//" and "///" etc. are factored out to single "/"</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>path</code> - the path to compact</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the compacted path</dd>
</dl>
</li>
</ul>
<a id="hasScheme(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasScheme</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;hasScheme&#8203;(java.lang.String&nbsp;uri)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>uri</code> - URI</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the uri has a scheme</dd>
</dl>
</li>
</ul>
<a id="newURI(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newURI</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;newURI&#8203;(java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port,
java.lang.String&nbsp;path,
java.lang.String&nbsp;query)</pre>
<div class="block">Create a new URI from the arguments, handling IPv6 host encoding and default ports</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scheme</code> - the URI scheme</dd>
<dd><code>server</code> - the URI server</dd>
<dd><code>port</code> - the URI port</dd>
<dd><code>path</code> - the URI path</dd>
<dd><code>query</code> - the URI query</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A String URI</dd>
</dl>
</li>
</ul>
<a id="newURIBuilder(java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newURIBuilder</h4>
<pre class="methodSignature">public static&nbsp;java.lang.StringBuilder&nbsp;newURIBuilder&#8203;(java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port)</pre>
<div class="block">Create a new URI StringBuilder from the arguments, handling IPv6 host encoding and default ports</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scheme</code> - the URI scheme</dd>
<dd><code>server</code> - the URI server</dd>
<dd><code>port</code> - the URI port</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a StringBuilder containing URI prefix</dd>
</dl>
</li>
</ul>
<a id="appendSchemeHostPort(java.lang.StringBuilder,java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>appendSchemeHostPort</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;appendSchemeHostPort&#8203;(java.lang.StringBuilder&nbsp;url,
java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port)</pre>
<div class="block">Append scheme, host and port URI prefix, handling IPv6 address encoding and default ports</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>url</code> - StringBuilder to append to</dd>
<dd><code>scheme</code> - the URI scheme</dd>
<dd><code>server</code> - the URI server</dd>
<dd><code>port</code> - the URI port</dd>
</dl>
</li>
</ul>
<a id="appendSchemeHostPort(java.lang.StringBuffer,java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>appendSchemeHostPort</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;appendSchemeHostPort&#8203;(java.lang.StringBuffer&nbsp;url,
java.lang.String&nbsp;scheme,
java.lang.String&nbsp;server,
int&nbsp;port)</pre>
<div class="block">Append scheme, host and port URI prefix, handling IPv6 address encoding and default ports</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>url</code> - StringBuffer to append to</dd>
<dd><code>scheme</code> - the URI scheme</dd>
<dd><code>server</code> - the URI server</dd>
<dd><code>port</code> - the URI port</dd>
</dl>
</li>
</ul>
<a id="equalsIgnoreEncodings(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalsIgnoreEncodings</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;equalsIgnoreEncodings&#8203;(java.lang.String&nbsp;uriA,
java.lang.String&nbsp;uriB)</pre>
</li>
</ul>
<a id="equalsIgnoreEncodings(java.net.URI,java.net.URI)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalsIgnoreEncodings</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;equalsIgnoreEncodings&#8203;(java.net.URI&nbsp;uriA,
java.net.URI&nbsp;uriB)</pre>
</li>
</ul>
<a id="addPath(java.net.URI,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addPath</h4>
<pre class="methodSignature">public static&nbsp;java.net.URI&nbsp;addPath&#8203;(java.net.URI&nbsp;uri,
java.lang.String&nbsp;path)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>uri</code> - A URI to add the path to</dd>
<dd><code>path</code> - A decoded path element</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>URI with path added.</dd>
</dl>
</li>
</ul>
<a id="addQueries(java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addQueries</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;addQueries&#8203;(java.lang.String&nbsp;query1,
java.lang.String&nbsp;query2)</pre>
<div class="block">Combine two query strings into one. Each query string should not contain the beginning '?' character, but
may contain multiple parameters separated by the '&amp;' character.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>query1</code> - the first query string.</dd>
<dd><code>query2</code> - the second query string.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the combination of the two query strings.</dd>
</dl>
</li>
</ul>
<a id="getJarSource(java.net.URI)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJarSource</h4>
<pre class="methodSignature">public static&nbsp;java.net.URI&nbsp;getJarSource&#8203;(java.net.URI&nbsp;uri)</pre>
</li>
</ul>
<a id="getJarSource(java.lang.String)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getJarSource</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;getJarSource&#8203;(java.lang.String&nbsp;uri)</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/URIUtil.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2021 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>