Modified:
websites/production/commons/content/proper/commons-validator/cobertura/org.apache.commons.validator.routines.UrlValidator.html
==============================================================================
---
websites/production/commons/content/proper/commons-validator/cobertura/org.apache.commons.validator.routines.UrlValidator.html
(original)
+++
websites/production/commons/content/proper/commons-validator/cobertura/org.apache.commons.validator.routines.UrlValidator.html
Tue Jan 13 20:07:34 2015
@@ -12,7 +12,7 @@
<div class="separator"> </div>
<table class="report">
<thead><tr> <td class="heading">Classes in this File</td> <td
class="heading"><a class="dfn" href="help.html"
onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td
class="heading"><a class="dfn" href="help.html"
onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td
class="heading"><a class="dfn" href="help.html"
onclick="popupwindow('help.html'); return
false;">Complexity</a></td></tr></thead>
- <tr><td><a
href="org.apache.commons.validator.routines.UrlValidator.html">UrlValidator</a></td><td><table
cellpadding="0px" cellspacing="0px" class="percentgraph"><tr
class="percentgraph"><td align="right" class="percentgraph"
width="40">93%</td><td class="percentgraph"><div class="percentgraph"><div
class="greenbar" style="width:93px"><span
class="text">99/106</span></div></div></td></tr></table></td><td><table
cellpadding="0px" cellspacing="0px" class="percentgraph"><tr
class="percentgraph"><td align="right" class="percentgraph"
width="40">89%</td><td class="percentgraph"><div class="percentgraph"><div
class="greenbar" style="width:89px"><span
class="text">68/76</span></div></div></td></tr></table></td><td
class="value"><span class="hidden">4.6875;</span>4,688</td></tr>
+ <tr><td><a
href="org.apache.commons.validator.routines.UrlValidator.html">UrlValidator</a></td><td><table
cellpadding="0px" cellspacing="0px" class="percentgraph"><tr
class="percentgraph"><td align="right" class="percentgraph"
width="40">94%</td><td class="percentgraph"><div class="percentgraph"><div
class="greenbar" style="width:94px"><span
class="text">99/105</span></div></div></td></tr></table></td><td><table
cellpadding="0px" cellspacing="0px" class="percentgraph"><tr
class="percentgraph"><td align="right" class="percentgraph"
width="40">90%</td><td class="percentgraph"><div class="percentgraph"><div
class="greenbar" style="width:90px"><span
class="text">69/76</span></div></div></td></tr></table></td><td
class="value"><span class="hidden">4.625;</span>4,625</td></tr>
</table>
<div class="separator"> </div>
@@ -56,11 +56,11 @@
<tr> <td class="numLine"> 19</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span>
java.io.Serializable;</pre></td></tr>
<tr> <td class="numLine"> 20</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="keyword">import</span>
java.util.Arrays;</pre></td></tr>
-<tr> <td class="numLine"> 21</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span>
java.util.Collections;</pre></td></tr>
-<tr> <td class="numLine"> 22</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 21</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span>
java.util.HashSet;</pre></td></tr>
+<tr> <td class="numLine"> 22</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="keyword">import</span>
java.util.Locale;</pre></td></tr>
<tr> <td class="numLine"> 23</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span>
java.util.Set;</pre></td></tr>
<tr> <td class="numLine"> 24</td> <td class="nbHits"> </td>
@@ -160,7 +160,7 @@
<tr> <td class="numLine"> 71</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*</span></pre></td></tr>
<tr> <td class="numLine"> 72</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @version
$Revision: 1647967 $ $Date: 2014-12-26 13:44:11 +0100 (Fr, 26 Dez 2014)
$</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * @version
$Revision: 1649932 $</span></pre></td></tr>
<tr> <td class="numLine"> 73</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @since
Validator 1.4</span></pre></td></tr>
<tr> <td class="numLine"> 74</td> <td class="nbHits"> </td>
@@ -222,259 +222,260 @@
<tr> <td class="numLine"> 102</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 103</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">// Drop
numeric, and "+-." for now</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 104</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String AUTHORITY_CHARS_REGEX = <span
class="string">"\\p{Alnum}\\-\\."</span>;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * This
expression derived/taken from the BNF for URI (RFC2396).</span></pre></td></tr>
<tr> <td class="numLine"> 105</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
<tr> <td class="numLine"> 106</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String URL_REGEX =</pre></td></tr>
<tr> <td class="numLine"> 107</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * This
expression derived/taken from the BNF for URI (RFC2396).</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="string">"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"</span>;</pre></td></tr>
<tr> <td class="numLine"> 108</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 109</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String URL_REGEX =</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">//
12 3 4 5 6 7 8 9</span></pre></td></tr>
+<tr> <td class="numLineCover"> 109</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern URL_PATTERN =
Pattern.compile(URL_REGEX);</pre></td></tr>
<tr> <td class="numLine"> 110</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="string">"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"</span>;</pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 111</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">//
12 3 4 5 6 7 8 9</span></pre></td></tr>
-<tr> <td class="numLineCover"> 112</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern URL_PATTERN =
Pattern.compile(URL_REGEX);</pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+<tr> <td class="numLine"> 112</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> *
Schema/Protocol (ie. http:, ftp:, file:, etc).</span></pre></td></tr>
<tr> <td class="numLine"> 113</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
<tr> <td class="numLine"> 114</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span> PARSE_URL_SCHEME
= 2;</pre></td></tr>
<tr> <td class="numLine"> 115</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *
Schema/Protocol (ie. http:, ftp:, file:, etc).</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 116</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 117</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span> PARSE_URL_SCHEME
= 2;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Includes
hostname/ip and port number.</span></pre></td></tr>
<tr> <td class="numLine"> 118</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
<tr> <td class="numLine"> 119</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_URL_AUTHORITY = 4;</pre></td></tr>
<tr> <td class="numLine"> 120</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Includes
hostname/ip and port number.</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 121</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span> PARSE_URL_PATH =
5;</pre></td></tr>
<tr> <td class="numLine"> 122</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_URL_AUTHORITY = 4;</pre></td></tr>
-<tr> <td class="numLine"> 123</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLine"> 123</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span> PARSE_URL_QUERY =
7;</pre></td></tr>
<tr> <td class="numLine"> 124</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span> PARSE_URL_PATH =
5;</pre></td></tr>
-<tr> <td class="numLine"> 125</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLine"> 125</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_URL_FRAGMENT = 9;</pre></td></tr>
<tr> <td class="numLine"> 126</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span> PARSE_URL_QUERY =
7;</pre></td></tr>
-<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 128</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_URL_FRAGMENT = 9;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Protocol
scheme (e.g. http, ftp, https).</span></pre></td></tr>
<tr> <td class="numLine"> 129</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
<tr> <td class="numLine"> 130</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 131</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Protocol
(ie. http:, ftp:,https:).</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String SCHEME_REGEX = <span
class="string">"^\\p{Alpha}[\\p{Alnum}\\+\\-\\.]*"</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 131</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern SCHEME_PATTERN =
Pattern.compile(SCHEME_REGEX);</pre></td></tr>
<tr> <td class="numLine"> 132</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 133</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String SCHEME_REGEX = <span
class="string">"^\\p{Alpha}[\\p{Alnum}\\+\\-\\.]*"</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 134</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern SCHEME_PATTERN =
Pattern.compile(SCHEME_REGEX);</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">// Drop
numeric, and "+-." for now</span></pre></td></tr>
+<tr> <td class="numLine"> 134</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">// TODO
does not allow for optional userinfo. </span></pre></td></tr>
<tr> <td class="numLine"> 135</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">//
Validation of character set is done by isValidAuthority</span></pre></td></tr>
<tr> <td class="numLine"> 136</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String AUTHORITY_REGEX =</pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String AUTHORITY_CHARS_REGEX = <span
class="string">"\\p{Alnum}\\-\\."</span>;</pre></td></tr>
<tr> <td class="numLine"> 137</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="string">"^(["</span> + AUTHORITY_CHARS_REGEX + <span
class="string">"]*)(:\\d*)?(.*)?"</span>;</pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 138</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">// 1
2 3</span></pre></td></tr>
-<tr> <td class="numLineCover"> 139</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern AUTHORITY_PATTERN =
Pattern.compile(AUTHORITY_REGEX);</pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String AUTHORITY_REGEX =</pre></td></tr>
+<tr> <td class="numLine"> 139</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="string">"^(["</span> + AUTHORITY_CHARS_REGEX + <span
class="string">"]*)(:\\d*)?(.*)?"</span>;</pre></td></tr>
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 141</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_AUTHORITY_HOST_IP = 1;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">// 1
2 3</span></pre></td></tr>
+<tr> <td class="numLineCover"> 141</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern AUTHORITY_PATTERN =
Pattern.compile(AUTHORITY_REGEX);</pre></td></tr>
<tr> <td class="numLine"> 142</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 143</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_AUTHORITY_PORT = 2;</pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_AUTHORITY_HOST_IP = 1;</pre></td></tr>
<tr> <td class="numLine"> 144</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_AUTHORITY_PORT = 2;</pre></td></tr>
<tr> <td class="numLine"> 146</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Should
always be empty.</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 147</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 148</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_AUTHORITY_EXTRA = 3;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Should
always be empty. The code currently allows spaces.</span></pre></td></tr>
<tr> <td class="numLine"> 149</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
<tr> <td class="numLine"> 150</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String PATH_REGEX = <span
class="string">"^(/[-\\w:@&?=+,.!/~*'%$_;\\(\\)]*)?$"</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 151</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern PATH_PATTERN =
Pattern.compile(PATH_REGEX);</pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> <span class="keyword">int</span>
PARSE_AUTHORITY_EXTRA = 3;</pre></td></tr>
+<tr> <td class="numLine"> 151</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 152</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String PATH_REGEX = <span
class="string">"^(/[-\\w:@&?=+,.!/~*'%$_;\\(\\)]*)?$"</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 153</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern PATH_PATTERN =
Pattern.compile(PATH_REGEX);</pre></td></tr>
+<tr> <td class="numLine"> 154</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 153</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String QUERY_REGEX = <span
class="string">"^(.*)$"</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 154</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern QUERY_PATTERN =
Pattern.compile(QUERY_REGEX);</pre></td></tr>
<tr> <td class="numLine"> 155</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String QUERY_REGEX = <span
class="string">"^(.*)$"</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 156</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern QUERY_PATTERN =
Pattern.compile(QUERY_REGEX);</pre></td></tr>
+<tr> <td class="numLine"> 157</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 156</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String LEGAL_ASCII_REGEX = <span
class="string">"^\\p{ASCII}+$"</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 157</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern ASCII_PATTERN =
Pattern.compile(LEGAL_ASCII_REGEX);</pre></td></tr>
<tr> <td class="numLine"> 158</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 159</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String PORT_REGEX = <span
class="string">"^:(\\d{1,5})$"</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 160</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern PORT_PATTERN =
Pattern.compile(PORT_REGEX);</pre></td></tr>
-<tr> <td class="numLine"> 161</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 159</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> Pattern PORT_PATTERN =
Pattern.compile(PORT_REGEX);</pre></td></tr>
+<tr> <td class="numLine"> 160</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 162</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 161</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 163</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 162</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Holds
the set of current validation options.</span></pre></td></tr>
-<tr> <td class="numLine"> 164</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 163</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 165</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 164</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">final</span> <span
class="keyword">long</span> options;</pre></td></tr>
-<tr> <td class="numLine"> 166</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 165</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 167</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 166</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 168</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 167</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * The set
of schemes that are allowed to be in a URL.</span></pre></td></tr>
-<tr> <td class="numLine"> 169</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 168</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+<tr> <td class="numLine"> 169</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">final</span> Set
allowedSchemes; <span class="comment">// Must be
lower-case</span></pre></td></tr>
<tr> <td class="numLine"> 170</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">final</span> Set
allowedSchemes;</pre></td></tr>
-<tr> <td class="numLine"> 171</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 172</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 171</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 173</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 172</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Regular
expressions used to manually validate authorities if IANA</span></pre></td></tr>
-<tr> <td class="numLine"> 174</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 173</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * domain
name validation isn't desired.</span></pre></td></tr>
-<tr> <td class="numLine"> 175</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 174</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 176</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 175</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">private</span> <span class="keyword">final</span>
RegexValidator authorityValidator;</pre></td></tr>
-<tr> <td class="numLine"> 177</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 176</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 178</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 177</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 179</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 178</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * If no
schemes are provided, default to this set.</span></pre></td></tr>
-<tr> <td class="numLine"> 180</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 179</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLineCover"> 181</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String[] DEFAULT_SCHEMES = {<span
class="string">"http"</span>, <span class="string">"https"</span>, <span
class="string">"ftp"</span>};</pre></td></tr>
-<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 180</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> String[] DEFAULT_SCHEMES = {<span
class="string">"http"</span>, <span class="string">"https"</span>, <span
class="string">"ftp"</span>}; <span class="comment">// Must be
lower-case</span></pre></td></tr>
+<tr> <td class="numLine"> 181</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 183</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 184</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 183</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
Singleton instance of this class with default schemes and
options.</span></pre></td></tr>
-<tr> <td class="numLine"> 185</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 184</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLineCover"> 186</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> UrlValidator DEFAULT_URL_VALIDATOR = <span
class="keyword">new</span> UrlValidator();</pre></td></tr>
-<tr> <td class="numLine"> 187</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 185</td> <td
class="nbHitsCovered"> 1</td> <td class="src"><pre class="src">
<span class="keyword">private</span> <span class="keyword">static</span> <span
class="keyword">final</span> UrlValidator DEFAULT_URL_VALIDATOR = <span
class="keyword">new</span> UrlValidator();</pre></td></tr>
+<tr> <td class="numLine"> 186</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 188</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 187</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 189</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 188</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Returns
the singleton instance of this class with default schemes and
options.</span></pre></td></tr>
-<tr> <td class="numLine"> 190</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 189</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return
singleton instance with default schemes and options</span></pre></td></tr>
-<tr> <td class="numLine"> 191</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 190</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 192</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 191</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">public</span> <span class="keyword">static</span> UrlValidator
getInstance() {</pre></td></tr>
-<tr> <td class="numLineCover"> 193</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
DEFAULT_URL_VALIDATOR;</span></pre></td></tr>
-<tr> <td class="numLine"> 194</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 192</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
DEFAULT_URL_VALIDATOR;</span></pre></td></tr>
+<tr> <td class="numLine"> 193</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 195</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 194</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 196</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 195</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 196</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Create a
UrlValidator with default properties.</span></pre></td></tr>
-<tr> <td class="numLine"> 198</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 199</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 198</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">public</span> UrlValidator() {</pre></td></tr>
-<tr> <td class="numLineCover"> 200</td> <td
class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(<span
class="keyword">null</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 201</td> <td
class="nbHitsCovered"> 3</td> <td class="src"><pre class="src">
}</pre></td></tr>
-<tr> <td class="numLine"> 202</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 199</td> <td
class="nbHitsCovered"> 8</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(<span
class="keyword">null</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 200</td> <td
class="nbHitsCovered"> 8</td> <td class="src"><pre class="src">
}</pre></td></tr>
+<tr> <td class="numLine"> 201</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 203</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 202</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 204</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 203</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Behavior
of validation is modified by passing in several strings
options:</span></pre></td></tr>
-<tr> <td class="numLine"> 205</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 204</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param
schemes Pass in one or more url schemes to consider valid, passing
in</span></pre></td></tr>
-<tr> <td class="numLine"> 206</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 205</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * a
null will default to "http,https,ftp" being valid.</span></pre></td></tr>
-<tr> <td class="numLine"> 207</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 206</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
If a non-null schemes is specified then all valid schemes
must</span></pre></td></tr>
-<tr> <td class="numLine"> 208</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 207</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
be specified. Setting the ALLOW_ALL_SCHEMES option will</span></pre></td></tr>
-<tr> <td class="numLine"> 209</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 208</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
ignore the contents of schemes.</span></pre></td></tr>
-<tr> <td class="numLine"> 210</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 209</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 211</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 210</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">public</span> UrlValidator(String[] schemes) {</pre></td></tr>
-<tr> <td class="numLineCover"> 212</td> <td
class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(schemes, 0L);</pre></td></tr>
-<tr> <td class="numLineCover"> 213</td> <td
class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">
}</pre></td></tr>
-<tr> <td class="numLine"> 214</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 211</td> <td
class="nbHitsCovered"> 10</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(schemes, 0L);</pre></td></tr>
+<tr> <td class="numLineCover"> 212</td> <td
class="nbHitsCovered"> 10</td> <td class="src"><pre class="src">
}</pre></td></tr>
+<tr> <td class="numLine"> 213</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 215</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 214</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 216</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 215</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
Initialize a UrlValidator with the given validation
options.</span></pre></td></tr>
-<tr> <td class="numLine"> 217</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 216</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param
options The options should be set using the public constants declared
in</span></pre></td></tr>
-<tr> <td class="numLine"> 218</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 217</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * this
class. To set multiple options you simply add them together. For
example,</span></pre></td></tr>
-<tr> <td class="numLine"> 219</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 218</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
ALLOW_2_SLASHES + NO_FRAGMENTS enables both of those
options.</span></pre></td></tr>
-<tr> <td class="numLine"> 220</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 219</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 221</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 220</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">public</span> UrlValidator(<span class="keyword">long</span>
options) {</pre></td></tr>
-<tr> <td class="numLineCover"> 222</td> <td
class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(<span class="keyword">null</span>, <span
class="keyword">null</span>, options);</pre></td></tr>
-<tr> <td class="numLineCover"> 223</td> <td
class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">
}</pre></td></tr>
-<tr> <td class="numLine"> 224</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 221</td> <td
class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(<span class="keyword">null</span>, <span
class="keyword">null</span>, options);</pre></td></tr>
+<tr> <td class="numLineCover"> 222</td> <td
class="nbHitsCovered"> 4</td> <td class="src"><pre class="src">
}</pre></td></tr>
+<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 225</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 224</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 226</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 225</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Behavior
of validation is modified by passing in options:</span></pre></td></tr>
+<tr> <td class="numLine"> 226</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> * @param
schemes The set of valid schemes. Ignored if the ALLOW_ALL_SCHEMES option is
set.</span></pre></td></tr>
<tr> <td class="numLine"> 227</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @param
schemes The set of valid schemes.</span></pre></td></tr>
-<tr> <td class="numLine"> 228</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param
options The options should be set using the public constants declared
in</span></pre></td></tr>
-<tr> <td class="numLine"> 229</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 228</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * this
class. To set multiple options you simply add them together. For
example,</span></pre></td></tr>
-<tr> <td class="numLine"> 230</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 229</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
ALLOW_2_SLASHES + NO_FRAGMENTS enables both of those
options.</span></pre></td></tr>
-<tr> <td class="numLine"> 231</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 230</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLine"> 232</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 231</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">public</span> UrlValidator(String[] schemes, <span
class="keyword">long</span> options) {</pre></td></tr>
-<tr> <td class="numLineCover"> 233</td> <td
class="nbHitsCovered"> 7</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(schemes, <span
class="keyword">null</span>, options);</pre></td></tr>
-<tr> <td class="numLineCover"> 234</td> <td
class="nbHitsCovered"> 7</td> <td class="src"><pre class="src">
}</pre></td></tr>
-<tr> <td class="numLine"> 235</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 232</td> <td
class="nbHitsCovered"> 13</td> <td class="src"><pre class="src">
<span class="keyword">this</span>(schemes, <span
class="keyword">null</span>, options);</pre></td></tr>
+<tr> <td class="numLineCover"> 233</td> <td
class="nbHitsCovered"> 13</td> <td class="src"><pre class="src">
}</pre></td></tr>
+<tr> <td class="numLine"> 234</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 236</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 235</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
-<tr> <td class="numLine"> 237</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 236</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
Initialize a UrlValidator with the given validation
options.</span></pre></td></tr>
-<tr> <td class="numLine"> 238</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 237</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param
authorityValidator Regular expression validator used to validate the authority
part</span></pre></td></tr>
+<tr> <td class="numLine"> 238</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> * This
allows the user to override the standard set of domains.</span></pre></td></tr>
<tr> <td class="numLine"> 239</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param
options Validation options. Set using the public constants of this
class.</span></pre></td></tr>
<tr> <td class="numLine"> 240</td> <td class="nbHits"> </td>
@@ -496,7 +497,7 @@
<tr> <td class="numLine"> 249</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *
Customizable constructor. Validation behavior is modifed by passing in
options.</span></pre></td></tr>
<tr> <td class="numLine"> 250</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @param
schemes the set of valid schemes</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * @param
schemes the set of valid schemes. Ignored if the ALLOW_ALL_SCHEMES option is
set.</span></pre></td></tr>
<tr> <td class="numLine"> 251</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param
authorityValidator Regular expression validator used to validate the authority
part</span></pre></td></tr>
<tr> <td class="numLine"> 252</td> <td class="nbHits"> </td>
@@ -509,396 +510,414 @@
<td class="src"><pre class="src"> <span class="comment"> * enables
both of those options.</span></pre></td></tr>
<tr> <td class="numLine"> 256</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
-<tr> <td class="numLineCover"> 257</td> <td
class="nbHitsCovered"> 14</td> <td class="src"><pre class="src">
<span class="keyword">public</span> UrlValidator(String[] schemes,
RegexValidator authorityValidator, <span class="keyword">long</span> options)
{</pre></td></tr>
-<tr> <td class="numLineCover"> 258</td> <td
class="nbHitsCovered"> 14</td> <td class="src"><pre class="src">
<span class="keyword">this</span>.options = options;</pre></td></tr>
+<tr> <td class="numLineCover"> 257</td> <td
class="nbHitsCovered"> 20</td> <td class="src"><pre class="src">
<span class="keyword">public</span> UrlValidator(String[] schemes,
RegexValidator authorityValidator, <span class="keyword">long</span> options)
{</pre></td></tr>
+<tr> <td class="numLineCover"> 258</td> <td
class="nbHitsCovered"> 20</td> <td class="src"><pre class="src">
<span class="keyword">this</span>.options = options;</pre></td></tr>
<tr> <td class="numLine"> 259</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 260</td> <td class="nbHitsCovered"><a
title="Line 260: Conditional coverage 100% (2/2)."> 14</a></td> <td
class="src"><pre class="src"> <a title="Line 260: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (isOn(ALLOW_ALL_SCHEMES))
{</a></pre></td></tr>
+<tr> <td class="numLineCover"> 260</td> <td class="nbHitsCovered"><a
title="Line 260: Conditional coverage 100% (2/2)."> 20</a></td> <td
class="src"><pre class="src"> <a title="Line 260: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (isOn(ALLOW_ALL_SCHEMES))
{</a></pre></td></tr>
<tr> <td class="numLineCover"> 261</td> <td
class="nbHitsCovered"> 2</td> <td class="src"><pre class="src">
allowedSchemes = Collections.EMPTY_SET;</pre></td></tr>
<tr> <td class="numLine"> 262</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span
class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"><a
title="Line 263: Conditional coverage 100% (2/2)."> 12</a></td> <td
class="src"><pre class="src"> <a title="Line 263: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (schemes == <span
class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 264</td> <td
class="nbHitsCovered"> 8</td> <td class="src"><pre class="src">
schemes = DEFAULT_SCHEMES;</pre></td></tr>
+<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"><a
title="Line 263: Conditional coverage 100% (2/2)."> 18</a></td> <td
class="src"><pre class="src"> <a title="Line 263: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (schemes == <span
class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 264</td> <td
class="nbHitsCovered"> 13</td> <td class="src"><pre class="src">
schemes = DEFAULT_SCHEMES;</pre></td></tr>
<tr> <td class="numLine"> 265</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 266</td> <td
class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">
allowedSchemes = <span class="keyword">new</span>
HashSet();</pre></td></tr>
-<tr> <td class="numLineCover"> 267</td> <td
class="nbHitsCovered"> 12</td> <td class="src"><pre class="src">
allowedSchemes.addAll(Arrays.asList(schemes));</pre></td></tr>
-<tr> <td class="numLine"> 268</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 266</td> <td
class="nbHitsCovered"> 18</td> <td class="src"><pre class="src">
allowedSchemes = <span class="keyword">new</span>
HashSet(schemes.length);</pre></td></tr>
+<tr> <td class="numLineCover"> 267</td> <td class="nbHitsCovered"><a
title="Line 267: Conditional coverage 100% (2/2)."> 69</a></td> <td
class="src"><pre class="src"> <a title="Line 267: Conditional coverage
100% (2/2)."> <span class="keyword">for</span>(<span
class="keyword">int</span> i=0; i < schemes.length; i++)
{</a></pre></td></tr>
+<tr> <td class="numLineCover"> 268</td> <td
class="nbHitsCovered"> 51</td> <td class="src"><pre class="src">
allowedSchemes.add(schemes[i].toLowerCase(Locale.ENGLISH));</pre></td></tr>
<tr> <td class="numLine"> 269</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 270</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 271</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 270</td> <td
class="nbHitsCovered"> 14</td> <td class="src"><pre class="src">
<span class="keyword">this</span>.authorityValidator =
authorityValidator;</pre></td></tr>
-<tr> <td class="numLineCover"> 271</td> <td
class="nbHitsCovered"> 14</td> <td class="src"><pre class="src">
}</pre></td></tr>
-<tr> <td class="numLine"> 272</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 273</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+<tr> <td class="numLineCover"> 272</td> <td
class="nbHitsCovered"> 20</td> <td class="src"><pre class="src">
<span class="keyword">this</span>.authorityValidator =
authorityValidator;</pre></td></tr>
+<tr> <td class="numLineCover"> 273</td> <td
class="nbHitsCovered"> 20</td> <td class="src"><pre class="src">
}</pre></td></tr>
<tr> <td class="numLine"> 274</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *
<p>Checks if a field has a valid url
address.</p></span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 275</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 276</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @param
value The value validation is being performed on. A
<code>null</code></span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> *
<p>Checks if a field has a valid url
address.</p></span></pre></td></tr>
<tr> <td class="numLine"> 277</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * value is
considered invalid.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*</span></pre></td></tr>
<tr> <td class="numLine"> 278</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @return
true if the url is valid.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Note
that the method calls #isValidAuthority()</span></pre></td></tr>
<tr> <td class="numLine"> 279</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * which
checks that the domain is valid.</span></pre></td></tr>
<tr> <td class="numLine"> 280</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">public</span> <span class="keyword">boolean</span>
isValid(String value) {</pre></td></tr>
-<tr> <td class="numLineCover"> 281</td> <td class="nbHitsUncovered"><a
title="Line 281: Conditional coverage 50% (1/2)."> 79838</a></td> <td
class="src"><pre class="src"><span class="srcUncovered"> <a title="Line
281: Conditional coverage 50% (1/2)."> <span class="keyword">if</span>
(value == <span class="keyword">null</span>) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 282</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
<span class="keyword">false</span>;</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*</span></pre></td></tr>
+<tr> <td class="numLine"> 281</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> * @param
value The value validation is being performed on. A
<code>null</code></span></pre></td></tr>
+<tr> <td class="numLine"> 282</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> * value is
considered invalid.</span></pre></td></tr>
<tr> <td class="numLine"> 283</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * @return
true if the url is valid.</span></pre></td></tr>
<tr> <td class="numLine"> 284</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 285</td> <td class="nbHitsUncovered"><a
title="Line 285: Conditional coverage 50% (1/2)."> 79838</a></td> <td
class="src"><pre class="src"><span class="srcUncovered"> <a title="Line
285: Conditional coverage 50% (1/2)."> <span class="keyword">if</span>
(!ASCII_PATTERN.matcher(value).matches()) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 286</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
<span class="keyword">false</span>;</span></pre></td></tr>
-<tr> <td class="numLine"> 287</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+<tr> <td class="numLine"> 285</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span
class="keyword">public</span> <span class="keyword">boolean</span>
isValid(String value) {</pre></td></tr>
+<tr> <td class="numLineCover"> 286</td> <td class="nbHitsUncovered"><a
title="Line 286: Conditional coverage 50% (1/2)."> 79889</a></td> <td
class="src"><pre class="src"><span class="srcUncovered"> <a title="Line
286: Conditional coverage 50% (1/2)."> <span class="keyword">if</span>
(value == <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 287</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
<span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine"> 288</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 289</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLine"> 290</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">//
Check the whole url address structure</span></pre></td></tr>
-<tr> <td class="numLineCover"> 290</td> <td
class="nbHitsCovered"> 79838</td> <td class="src"><pre class="src">
Matcher urlMatcher = URL_PATTERN.matcher(value);</pre></td></tr>
-<tr> <td class="numLineCover"> 291</td> <td class="nbHitsUncovered"><a
title="Line 291: Conditional coverage 50% (1/2)."> 79838</a></td> <td
class="src"><pre class="src"><span class="srcUncovered"> <a title="Line
291: Conditional coverage 50% (1/2)."> <span class="keyword">if</span>
(!urlMatcher.matches()) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 292</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
<span class="keyword">false</span>;</span></pre></td></tr>
-<tr> <td class="numLine"> 293</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 291</td> <td
class="nbHitsCovered"> 79889</td> <td class="src"><pre class="src">
Matcher urlMatcher = URL_PATTERN.matcher(value);</pre></td></tr>
+<tr> <td class="numLineCover"> 292</td> <td class="nbHitsUncovered"><a
title="Line 292: Conditional coverage 50% (1/2)."> 79889</a></td> <td
class="src"><pre class="src"><span class="srcUncovered"> <a title="Line
292: Conditional coverage 50% (1/2)."> <span class="keyword">if</span>
(!urlMatcher.matches()) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 293</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
<span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine"> 294</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 295</td> <td
class="nbHitsCovered"> 79838</td> <td class="src"><pre class="src">
String scheme = urlMatcher.group(PARSE_URL_SCHEME);</pre></td></tr>
-<tr> <td class="numLineCover"> 296</td> <td class="nbHitsCovered"><a
title="Line 296: Conditional coverage 100% (2/2)."> 79838</a></td> <td
class="src"><pre class="src"> <a title="Line 296: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (!isValidScheme(scheme))
{</a></pre></td></tr>
-<tr> <td class="numLineCover"> 297</td> <td
class="nbHitsCovered"> 29930</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLine"> 298</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 295</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLineCover"> 296</td> <td
class="nbHitsCovered"> 79889</td> <td class="src"><pre class="src">
String scheme = urlMatcher.group(PARSE_URL_SCHEME);</pre></td></tr>
+<tr> <td class="numLineCover"> 297</td> <td class="nbHitsCovered"><a
title="Line 297: Conditional coverage 100% (2/2)."> 79889</a></td> <td
class="src"><pre class="src"> <a title="Line 297: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (!isValidScheme(scheme))
{</a></pre></td></tr>
+<tr> <td class="numLineCover"> 298</td> <td
class="nbHitsCovered"> 29930</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 299</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 300</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 300</td> <td
class="nbHitsCovered"> 49908</td> <td class="src"><pre class="src">
String authority = urlMatcher.group(PARSE_URL_AUTHORITY);</pre></td></tr>
-<tr> <td class="numLineCover"> 301</td> <td class="nbHitsCovered"><a
title="Line 301: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> 49908</a></td> <td class="src"><pre class="src"> <a
title="Line 301: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> <span class="keyword">if</span> (<span
class="string">"file"</span>.equals(scheme) && <span
class="string">""</span>.equals(authority)) {</a></pre></td></tr>
-<tr> <td class="numLine"> 302</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">//
Special case - file: allows an empty authority</span></pre></td></tr>
+<tr> <td class="numLineCover"> 301</td> <td
class="nbHitsCovered"> 49959</td> <td class="src"><pre class="src">
String authority = urlMatcher.group(PARSE_URL_AUTHORITY);</pre></td></tr>
+<tr> <td class="numLineCover"> 302</td> <td class="nbHitsCovered"><a
title="Line 302: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> 49959</a></td> <td class="src"><pre class="src"> <a
title="Line 302: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> <span class="keyword">if</span> (<span
class="string">"file"</span>.equals(scheme) && <span
class="string">""</span>.equals(authority)) {</a></pre></td></tr>
<tr> <td class="numLine"> 303</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> } <span
class="keyword">else</span> {</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment">//
Special case - file: allows an empty authority</span></pre></td></tr>
<tr> <td class="numLine"> 304</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">//
Validate the authority</span></pre></td></tr>
-<tr> <td class="numLineCover"> 305</td> <td class="nbHitsCovered"><a
title="Line 305: Conditional coverage 100% (2/2)."> 49905</a></td> <td
class="src"><pre class="src"> <a title="Line 305: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!isValidAuthority(authority)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 306</td> <td
class="nbHitsCovered"> 42007</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLine"> 307</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+ <td class="src"><pre class="src"> } <span
class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLine"> 305</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">//
Validate the authority</span></pre></td></tr>
+<tr> <td class="numLineCover"> 306</td> <td class="nbHitsCovered"><a
title="Line 306: Conditional coverage 100% (2/2)."> 49956</a></td> <td
class="src"><pre class="src"> <a title="Line 306: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!isValidAuthority(authority)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 307</td> <td
class="nbHitsCovered"> 42012</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 308</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 309</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 310</td> <td class="nbHitsCovered"><a
title="Line 310: Conditional coverage 100% (2/2)."> 7901</a></td> <td
class="src"><pre class="src"> <a title="Line 310: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!isValidPath(urlMatcher.group(PARSE_URL_PATH))) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 311</td> <td
class="nbHitsCovered"> 2521</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLine"> 312</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 313</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 310</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 314</td> <td class="nbHitsUncovered"><a
title="Line 314: Conditional coverage 50% (1/2)."> 5380</a></td> <td
class="src"><pre class="src"><span class="srcUncovered"> <a title="Line
314: Conditional coverage 50% (1/2)."> <span class="keyword">if</span>
(!isValidQuery(urlMatcher.group(PARSE_URL_QUERY))) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 315</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
<span class="keyword">false</span>;</span></pre></td></tr>
-<tr> <td class="numLine"> 316</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 311</td> <td class="nbHitsCovered"><a
title="Line 311: Conditional coverage 100% (2/2)."> 7947</a></td> <td
class="src"><pre class="src"> <a title="Line 311: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!isValidPath(urlMatcher.group(PARSE_URL_PATH))) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 312</td> <td
class="nbHitsCovered"> 2521</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLine"> 313</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 314</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 318</td> <td class="nbHitsCovered"><a
title="Line 318: Conditional coverage 100% (2/2)."> 5380</a></td> <td
class="src"><pre class="src"> <a title="Line 318: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!isValidFragment(urlMatcher.group(PARSE_URL_FRAGMENT))) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 319</td> <td
class="nbHitsCovered"> 630</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLine"> 320</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 315</td> <td class="nbHitsUncovered"><a
title="Line 315: Conditional coverage 50% (1/2)."> 5426</a></td> <td
class="src"><pre class="src"><span class="srcUncovered"> <a title="Line
315: Conditional coverage 50% (1/2)."> <span class="keyword">if</span>
(!isValidQuery(urlMatcher.group(PARSE_URL_QUERY))) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 316</td> <td
class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span
class="srcUncovered"> <span class="keyword">return</span>
<span class="keyword">false</span>;</span></pre></td></tr>
+<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 318</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> </pre></td></tr>
+<tr> <td class="numLineCover"> 319</td> <td class="nbHitsCovered"><a
title="Line 319: Conditional coverage 100% (2/2)."> 5426</a></td> <td
class="src"><pre class="src"> <a title="Line 319: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!isValidFragment(urlMatcher.group(PARSE_URL_FRAGMENT))) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 320</td> <td
class="nbHitsCovered"> 630</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 321</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLine"> 322</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 322</td> <td
class="nbHitsCovered"> 4750</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">true</span>;</pre></td></tr>
-<tr> <td class="numLine"> 323</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 323</td> <td
class="nbHitsCovered"> 4796</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 324</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 325</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 326</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Validate
scheme. If schemes[] was initialized to a non null,</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 327</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * then
only those scheme's are allowed. Note this is slightly
different</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Validate
scheme. If schemes[] was initialized to a non null,</span></pre></td></tr>
<tr> <td class="numLine"> 328</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * than for
the constructor.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * then
only those schemes are allowed.</span></pre></td></tr>
<tr> <td class="numLine"> 329</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @param
scheme The scheme to validate. A <code>null</code> value is
considered</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> *
Otherwise the default schemes are "http", "https", "ftp".</span></pre></td></tr>
<tr> <td class="numLine"> 330</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> *
invalid.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Matching
is case-blind.</span></pre></td></tr>
<tr> <td class="numLine"> 331</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @return
true if valid.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * @param
scheme The scheme to validate. A <code>null</code> value is
considered</span></pre></td></tr>
<tr> <td class="numLine"> 332</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> *
invalid.</span></pre></td></tr>
<tr> <td class="numLine"> 333</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment"> * @return
true if valid.</span></pre></td></tr>
+<tr> <td class="numLine"> 334</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+<tr> <td class="numLine"> 335</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span
class="keyword">protected</span> <span class="keyword">boolean</span>
isValidScheme(String scheme) {</pre></td></tr>
-<tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"><a
title="Line 334: Conditional coverage 100% (2/2)."> 79842</a></td> <td
class="src"><pre class="src"> <a title="Line 334: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (scheme == <span
class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 335</td> <td
class="nbHitsCovered"> 19950</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
+<tr> <td class="numLineCover"> 336</td> <td class="nbHitsCovered"><a
title="Line 336: Conditional coverage 100% (2/2)."> 79897</a></td> <td
class="src"><pre class="src"> <a title="Line 336: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (scheme == <span
class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 337</td> <td
class="nbHitsCovered"> 19950</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLine"> 338</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 337</td> <td class="nbHits"> </td>
+<tr> <td class="numLine"> 339</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"><a
title="Line 338: Conditional coverage 100% (2/2)."> 59892</a></td> <td
class="src"><pre class="src"> <a title="Line 338: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!SCHEME_PATTERN.matcher(scheme).matches()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 339</td> <td
class="nbHitsCovered"> 9975</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 340</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> <span class="comment">// TODO
could be removed if external schemes were checked in the ctor before being
stored</span></pre></td></tr>
+<tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"><a
title="Line 341: Conditional coverage 100% (2/2)."> 59947</a></td> <td
class="src"><pre class="src"> <a title="Line 341: Conditional coverage
100% (2/2)."> <span class="keyword">if</span>
(!SCHEME_PATTERN.matcher(scheme).matches()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 342</td> <td
class="nbHitsCovered"> 9976</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLine"> 343</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 341</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 342</td> <td class="nbHitsCovered"><a
title="Line 342: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> 49917</a></td> <td class="src"><pre class="src"> <a
title="Line 342: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> <span class="keyword">if</span> (isOff(ALLOW_ALL_SCHEMES)
&& !allowedSchemes.contains(scheme)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 343</td> <td
class="nbHitsCovered"> 8</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 344</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLine"> 345</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 346</td> <td
class="nbHitsCovered"> 49909</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"><a
title="Line 345: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> 49971</a></td> <td class="src"><pre class="src"> <a
title="Line 345: Conditional coverage 100% (4/4) [each condition: 100%,
100%]."> <span class="keyword">if</span> (isOff(ALLOW_ALL_SCHEMES)
&& !allowedSchemes.contains(scheme.toLowerCase(Locale.ENGLISH)))
{</a></pre></td></tr>
+<tr> <td class="numLineCover"> 346</td> <td
class="nbHitsCovered"> 8</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 347</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> }</pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 348</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLine"> 349</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
+<tr> <td class="numLineCover"> 349</td> <td
class="nbHitsCovered"> 49963</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 350</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * Returns
true if the authority is properly formatted. An authority is the
combination</span></pre></td></tr>
+ <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 351</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * of
hostname and port. A <code>null</code> authority value is
considered invalid.</span></pre></td></tr>
+ <td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @param
authority Authority value to validate.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span
class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 353</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment"> * @return
true if authority (hostname and port) is valid.</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Returns
true if the authority is properly formatted. An authority is the
combination</span></pre></td></tr>
<tr> <td class="numLine"> 354</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span class="comment">
*/</span></pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * of
hostname and port. A <code>null</code> authority value is
considered invalid.</span></pre></td></tr>
<tr> <td class="numLine"> 355</td> <td class="nbHits"> </td>
- <td class="src"><pre class="src"> <span
class="keyword">protected</span> <span class="keyword">boolean</span>
isValidAuthority(String authority) {</pre></td></tr>
-<tr> <td class="numLineCover"> 356</td> <td class="nbHitsCovered"><a
title="Line 356: Conditional coverage 100% (2/2)."> 49905</a></td> <td
class="src"><pre class="src"> <a title="Line 356: Conditional coverage
100% (2/2)."> <span class="keyword">if</span> (authority == <span
class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 357</td> <td
class="nbHitsCovered"> 19881</td> <td class="src"><pre class="src">
<span class="keyword">return</span> <span
class="keyword">false</span>;</pre></td></tr>
+ <td class="src"><pre class="src"> <span class="comment"> * Note:
this implementation validates the domain unless a RegexValidator was
provided.</span></pre></td></tr>
+<tr> <td class="numLine"> 356</td> <td class="nbHits"> </td>
[... 390 lines stripped ...]