| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> |
| <title>Coverage Report</title> |
| <link title="Style" type="text/css" rel="stylesheet" href="css/main.css"/> |
| <script type="text/javascript" src="js/popup.js"></script> |
| </head> |
| <body> |
| <h5>Coverage Report - org.apache.shiro.web.servlet.SimpleCookie</h5> |
| <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.shiro.web.servlet.SimpleCookie.html">SimpleCookie</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">86%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:86px"><span class="text">131/151</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">77%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">28/36</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.5833333333333333;</span>1.583</td></tr> |
| |
| </table> |
| <div class="separator"> </div> |
| <table cellspacing="0" cellpadding="0" class="src"> |
| <tr> <td class="numLine"> 1</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr> |
| <tr> <td class="numLine"> 2</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></pre></td></tr> |
| <tr> <td class="numLine"> 3</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></pre></td></tr> |
| <tr> <td class="numLine"> 4</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * distributed with this work for additional information</span></pre></td></tr> |
| <tr> <td class="numLine"> 5</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></pre></td></tr> |
| <tr> <td class="numLine"> 6</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></pre></td></tr> |
| <tr> <td class="numLine"> 7</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "License"); you may not use this file except in compliance</span></pre></td></tr> |
| <tr> <td class="numLine"> 8</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with the License. You may obtain a copy of the License at</span></pre></td></tr> |
| <tr> <td class="numLine"> 9</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 10</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 11</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 12</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Unless required by applicable law or agreed to in writing,</span></pre></td></tr> |
| <tr> <td class="numLine"> 13</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * software distributed under the License is distributed on an</span></pre></td></tr> |
| <tr> <td class="numLine"> 14</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></pre></td></tr> |
| <tr> <td class="numLine"> 15</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * KIND, either express or implied. See the License for the</span></pre></td></tr> |
| <tr> <td class="numLine"> 16</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specific language governing permissions and limitations</span></pre></td></tr> |
| <tr> <td class="numLine"> 17</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * under the License.</span></pre></td></tr> |
| <tr> <td class="numLine"> 18</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 19</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">package</span> org.apache.shiro.web.servlet;</pre></td></tr> |
| <tr> <td class="numLine"> 20</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 21</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.util.StringUtils;</pre></td></tr> |
| <tr> <td class="numLine"> 22</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.slf4j.Logger;</pre></td></tr> |
| <tr> <td class="numLine"> 23</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.slf4j.LoggerFactory;</pre></td></tr> |
| <tr> <td class="numLine"> 24</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 25</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.servlet.http.HttpServletRequest;</pre></td></tr> |
| <tr> <td class="numLine"> 26</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.servlet.http.HttpServletResponse;</pre></td></tr> |
| <tr> <td class="numLine"> 27</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.text.DateFormat;</pre></td></tr> |
| <tr> <td class="numLine"> 28</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.text.SimpleDateFormat;</pre></td></tr> |
| <tr> <td class="numLine"> 29</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Calendar;</pre></td></tr> |
| <tr> <td class="numLine"> 30</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Date;</pre></td></tr> |
| <tr> <td class="numLine"> 31</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"> 32</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.TimeZone;</pre></td></tr> |
| <tr> <td class="numLine"> 33</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 34</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 35</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Default {@link Cookie Cookie} implementation. 'HttpOnly' is supported out of the box, even on</span></pre></td></tr> |
| <tr> <td class="numLine"> 36</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Servlet {@code 2.4} and {@code 2.5} container implementations, using raw header writing logic and not</span></pre></td></tr> |
| <tr> <td class="numLine"> 37</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link javax.servlet.http.Cookie javax.servlet.http.Cookie} objects (which only has 'HttpOnly' support in Servlet</span></pre></td></tr> |
| <tr> <td class="numLine"> 38</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code 2.6} specifications and above).</span></pre></td></tr> |
| <tr> <td class="numLine"> 39</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 40</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 41</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 42</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> SimpleCookie <span class="keyword">implements</span> Cookie {</pre></td></tr> |
| <tr> <td class="numLine"> 43</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 44</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 45</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code -1}, indicating the cookie should expire when the browser closes.</span></pre></td></tr> |
| <tr> <td class="numLine"> 46</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 47</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> DEFAULT_MAX_AGE = -1;</pre></td></tr> |
| <tr> <td class="numLine"> 48</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 49</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 50</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code -1} indicating that no version property should be set on the cookie.</span></pre></td></tr> |
| <tr> <td class="numLine"> 51</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 52</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> DEFAULT_VERSION = -1;</pre></td></tr> |
| <tr> <td class="numLine"> 53</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 54</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//These constants are protected on purpose so that the test case can use them</span></pre></td></tr> |
| <tr> <td class="numLine"> 55</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String NAME_VALUE_DELIMITER = <span class="string">"="</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 56</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String ATTRIBUTE_DELIMITER = <span class="string">"; "</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 57</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">long</span> DAY_MILLIS = 86400000; <span class="comment">//1 day = 86,400,000 milliseconds</span></pre></td></tr> |
| <tr> <td class="numLine"> 58</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String GMT_TIME_ZONE_ID = <span class="string">"GMT"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 59</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String COOKIE_DATE_FORMAT_STRING = <span class="string">"EEE, dd-MMM-yyyy HH:mm:ss z"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 60</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 61</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String COOKIE_HEADER_NAME = <span class="string">"Set-Cookie"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 62</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String PATH_ATTRIBUTE_NAME = <span class="string">"Path"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 63</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String EXPIRES_ATTRIBUTE_NAME = <span class="string">"Expires"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 64</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String MAXAGE_ATTRIBUTE_NAME = <span class="string">"Max-Age"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 65</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String DOMAIN_ATTRIBUTE_NAME = <span class="string">"Domain"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 66</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String VERSION_ATTRIBUTE_NAME = <span class="string">"Version"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 67</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String COMMENT_ATTRIBUTE_NAME = <span class="string">"Comment"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 68</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String SECURE_ATTRIBUTE_NAME = <span class="string">"Secure"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 69</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> String HTTP_ONLY_ATTRIBUTE_NAME = <span class="string">"HttpOnly"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 70</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 71</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> <span class="keyword">transient</span> Logger log = LoggerFactory.getLogger(SimpleCookie.<span class="keyword">class</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 72</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 73</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String name;</pre></td></tr> |
| <tr> <td class="numLine"> 74</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String value;</pre></td></tr> |
| <tr> <td class="numLine"> 75</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String comment;</pre></td></tr> |
| <tr> <td class="numLine"> 76</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String domain;</pre></td></tr> |
| <tr> <td class="numLine"> 77</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String path;</pre></td></tr> |
| <tr> <td class="numLine"> 78</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">int</span> maxAge;</pre></td></tr> |
| <tr> <td class="numLine"> 79</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">int</span> version;</pre></td></tr> |
| <tr> <td class="numLine"> 80</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> secure;</pre></td></tr> |
| <tr> <td class="numLine"> 81</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> httpOnly;</pre></td></tr> |
| <tr> <td class="numLine"> 82</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 83</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> <span class="keyword">public</span> SimpleCookie() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 84</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.maxAge = DEFAULT_MAX_AGE;</pre></td></tr> |
| <tr> <td class="numLineCover"> 85</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.version = DEFAULT_VERSION;</pre></td></tr> |
| <tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.httpOnly = <span class="keyword">true</span>; <span class="comment">//most of the cookies ever used by Shiro should be as secure as possible.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"> 42</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 88</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 89</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> SimpleCookie(String name) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 90</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> <span class="keyword">this</span>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 91</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.name = name;</pre></td></tr> |
| <tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"> 41</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 93</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 94</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">public</span> SimpleCookie(Cookie cookie) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 95</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.name = cookie.getName();</pre></td></tr> |
| <tr> <td class="numLineCover"> 96</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.value = cookie.getValue();</pre></td></tr> |
| <tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.comment = cookie.getComment();</pre></td></tr> |
| <tr> <td class="numLineCover"> 98</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.domain = cookie.getDomain();</pre></td></tr> |
| <tr> <td class="numLineCover"> 99</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.path = cookie.getPath();</pre></td></tr> |
| <tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.maxAge = Math.max(DEFAULT_MAX_AGE, cookie.getMaxAge());</pre></td></tr> |
| <tr> <td class="numLineCover"> 101</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.version = Math.max(DEFAULT_VERSION, cookie.getVersion());</pre></td></tr> |
| <tr> <td class="numLineCover"> 102</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.secure = cookie.isSecure();</pre></td></tr> |
| <tr> <td class="numLineCover"> 103</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.httpOnly = cookie.isHttpOnly();</pre></td></tr> |
| <tr> <td class="numLineCover"> 104</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 105</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 106</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String getName() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 107</td> <td class="nbHitsCovered"> 33</td> <td class="src"><pre class="src"> <span class="keyword">return</span> name;</pre></td></tr> |
| <tr> <td class="numLine"> 108</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 109</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 110</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setName(String name) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 111</td> <td class="nbHitsUncovered"><a title="Line 111: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 111: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (!StringUtils.hasText(name)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 112</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Name cannot be null/empty."</span>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 113</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 114</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.name = name;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 115</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 116</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 117</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String getValue() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 118</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> value;</pre></td></tr> |
| <tr> <td class="numLine"> 119</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 120</td> <td class="nbHits"> </td> |
| <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="keyword">public</span> <span class="keyword">void</span> setValue(String value) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.value = value;</pre></td></tr> |
| <tr> <td class="numLineCover"> 123</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 124</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">public</span> String getComment() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 126</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> comment;</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"> 128</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 129</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setComment(String comment) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 130</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.comment = comment;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 131</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 132</td> <td class="nbHits"> </td> |
| <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">public</span> String getDomain() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 134</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">return</span> domain;</pre></td></tr> |
| <tr> <td class="numLine"> 135</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 136</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 137</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setDomain(String domain) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.domain = domain;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 139</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</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">public</span> String getPath() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 142</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path;</pre></td></tr> |
| <tr> <td class="numLine"> 143</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</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="keyword">public</span> <span class="keyword">void</span> setPath(String path) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 146</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.path = path;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 147</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 148</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 149</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">int</span> getMaxAge() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 150</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> maxAge;</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"> </pre></td></tr> |
| <tr> <td class="numLine"> 153</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setMaxAge(<span class="keyword">int</span> maxAge) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 154</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.maxAge = Math.max(DEFAULT_MAX_AGE, maxAge);</pre></td></tr> |
| <tr> <td class="numLineCover"> 155</td> <td class="nbHitsCovered"> 20</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"> </pre></td></tr> |
| <tr> <td class="numLine"> 157</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">int</span> getVersion() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">return</span> version;</pre></td></tr> |
| <tr> <td class="numLine"> 159</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</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"> 161</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setVersion(<span class="keyword">int</span> version) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 162</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.version = Math.max(DEFAULT_VERSION, version);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 163</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 164</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 165</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> isSecure() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 166</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">return</span> secure;</pre></td></tr> |
| <tr> <td class="numLine"> 167</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 168</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 169</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setSecure(<span class="keyword">boolean</span> secure) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 170</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.secure = secure;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 171</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 172</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 173</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> isHttpOnly() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 174</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> httpOnly;</pre></td></tr> |
| <tr> <td class="numLine"> 175</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 176</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 177</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setHttpOnly(<span class="keyword">boolean</span> httpOnly) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 178</td> <td class="nbHitsCovered"> 38</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.httpOnly = httpOnly;</pre></td></tr> |
| <tr> <td class="numLineCover"> 179</td> <td class="nbHitsCovered"> 38</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 180</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 181</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 182</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the Cookie's calculated path setting. If the {@link javax.servlet.http.Cookie#getPath() path} is {@code null}, then the</span></pre></td></tr> |
| <tr> <td class="numLine"> 183</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code request}'s {@link javax.servlet.http.HttpServletRequest#getContextPath() context path}</span></pre></td></tr> |
| <tr> <td class="numLine"> 184</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * will be returned. If getContextPath() is the empty string or null then the ROOT_PATH constant is returned.</span></pre></td></tr> |
| <tr> <td class="numLine"> 185</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 186</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param request the incoming HttpServletRequest</span></pre></td></tr> |
| <tr> <td class="numLine"> 187</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the path to be used as the path when the cookie is created or removed</span></pre></td></tr> |
| <tr> <td class="numLine"> 188</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> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String calculatePath(HttpServletRequest request) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 190</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> String path = StringUtils.clean(getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 191</td> <td class="nbHitsCovered"><a title="Line 191: Conditional coverage 100% (2/2)."> 12</a></td> <td class="src"><pre class="src"> <a title="Line 191: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!StringUtils.hasText(path)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> path = StringUtils.clean(request.getContextPath());</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"> 194</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 195</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//fix for http://issues.apache.org/jira/browse/SHIRO-9:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 196</td> <td class="nbHitsCovered"><a title="Line 196: Conditional coverage 100% (2/2)."> 12</a></td> <td class="src"><pre class="src"> <a title="Line 196: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 197</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> path = ROOT_PATH;</pre></td></tr> |
| <tr> <td class="numLine"> 198</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 199</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> log.trace(<span class="string">"calculated path: {}"</span>, path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 200</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path;</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"> 202</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 203</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> saveTo(HttpServletRequest request, HttpServletResponse response) {</pre></td></tr> |
| <tr> <td class="numLine"> 204</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 205</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> String name = getName();</pre></td></tr> |
| <tr> <td class="numLineCover"> 206</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> String value = getValue();</pre></td></tr> |
| <tr> <td class="numLineCover"> 207</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> String comment = getComment();</pre></td></tr> |
| <tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> String domain = getDomain();</pre></td></tr> |
| <tr> <td class="numLineCover"> 209</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> String path = calculatePath(request);</pre></td></tr> |
| <tr> <td class="numLineCover"> 210</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> <span class="keyword">int</span> maxAge = getMaxAge();</pre></td></tr> |
| <tr> <td class="numLineCover"> 211</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> <span class="keyword">int</span> version = getVersion();</pre></td></tr> |
| <tr> <td class="numLineCover"> 212</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> secure = isSecure();</pre></td></tr> |
| <tr> <td class="numLineCover"> 213</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> httpOnly = isHttpOnly();</pre></td></tr> |
| <tr> <td class="numLine"> 214</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> addCookieHeader(response, name, value, comment, domain, path, maxAge, version, secure, httpOnly);</pre></td></tr> |
| <tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 217</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 218</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> addCookieHeader(HttpServletResponse response, String name, String value, String comment,</pre></td></tr> |
| <tr> <td class="numLine"> 219</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> String domain, String path, <span class="keyword">int</span> maxAge, <span class="keyword">int</span> version,</pre></td></tr> |
| <tr> <td class="numLine"> 220</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> secure, <span class="keyword">boolean</span> httpOnly) {</pre></td></tr> |
| <tr> <td class="numLine"> 221</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 222</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> String headerValue = buildHeaderValue(name, value, comment, domain, path, maxAge, version, secure, httpOnly);</pre></td></tr> |
| <tr> <td class="numLineCover"> 223</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> response.addHeader(COOKIE_HEADER_NAME, headerValue);</pre></td></tr> |
| <tr> <td class="numLine"> 224</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 225</td> <td class="nbHitsUncovered"><a title="Line 225: Conditional coverage 50% (1/2)."> 12</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 225: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (log.isDebugEnabled()) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 226</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> log.debug(<span class="string">"Added HttpServletResponse Cookie [{}]"</span>, headerValue);</pre></td></tr> |
| <tr> <td class="numLine"> 227</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 228</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 229</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <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"> 231</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This implementation followed the grammar defined here for convenience:</span></pre></td></tr> |
| <tr> <td class="numLine"> 232</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <a href="http://github.com/abarth/http-state/blob/master/notes/2009-11-07-Yui-Naruse.txt">Cookie grammar</a>.</span></pre></td></tr> |
| <tr> <td class="numLine"> 233</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 234</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the 'Set-Cookie' header value for this cookie instance.</span></pre></td></tr> |
| <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"> 236</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 237</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> String buildHeaderValue(String name, String value, String comment,</pre></td></tr> |
| <tr> <td class="numLine"> 238</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> String domain, String path, <span class="keyword">int</span> maxAge, <span class="keyword">int</span> version,</pre></td></tr> |
| <tr> <td class="numLine"> 239</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> secure, <span class="keyword">boolean</span> httpOnly) {</pre></td></tr> |
| <tr> <td class="numLine"> 240</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 241</td> <td class="nbHitsUncovered"><a title="Line 241: Conditional coverage 50% (1/2)."> 13</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 241: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!StringUtils.hasText(name)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 242</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalStateException(<span class="string">"Cookie name cannot be null/empty."</span>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 243</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 244</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 245</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> StringBuilder sb = <span class="keyword">new</span> StringBuilder(name).append(NAME_VALUE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLine"> 246</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 247</td> <td class="nbHitsUncovered"><a title="Line 247: Conditional coverage 50% (1/2)."> 13</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 247: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (StringUtils.hasText(value)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 248</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> sb.append(value);</pre></td></tr> |
| <tr> <td class="numLine"> 249</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 250</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 251</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> appendComment(sb, comment);</pre></td></tr> |
| <tr> <td class="numLineCover"> 252</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> appendDomain(sb, domain);</pre></td></tr> |
| <tr> <td class="numLineCover"> 253</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> appendPath(sb, path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 254</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> appendExpires(sb, maxAge);</pre></td></tr> |
| <tr> <td class="numLineCover"> 255</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> appendVersion(sb, version);</pre></td></tr> |
| <tr> <td class="numLineCover"> 256</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> appendSecure(sb, secure);</pre></td></tr> |
| <tr> <td class="numLineCover"> 257</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> appendHttpOnly(sb, httpOnly);</pre></td></tr> |
| <tr> <td class="numLine"> 258</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 259</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sb.toString();</pre></td></tr> |
| <tr> <td class="numLine"> 260</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 261</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 262</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 263</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> appendComment(StringBuilder sb, String comment) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 264</td> <td class="nbHitsCovered"><a title="Line 264: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 264: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (StringUtils.hasText(comment)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 265</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> sb.append(ATTRIBUTE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLineCover"> 266</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> sb.append(COMMENT_ATTRIBUTE_NAME).append(NAME_VALUE_DELIMITER).append(comment);</pre></td></tr> |
| <tr> <td class="numLine"> 267</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 268</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</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"> <span class="keyword">private</span> <span class="keyword">void</span> appendDomain(StringBuilder sb, String domain) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 271</td> <td class="nbHitsCovered"><a title="Line 271: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 271: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (StringUtils.hasText(domain)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 272</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> sb.append(ATTRIBUTE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLineCover"> 273</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> sb.append(DOMAIN_ATTRIBUTE_NAME).append(NAME_VALUE_DELIMITER).append(domain);</pre></td></tr> |
| <tr> <td class="numLine"> 274</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 275</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 276</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 277</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> appendPath(StringBuilder sb, String path) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 278</td> <td class="nbHitsUncovered"><a title="Line 278: Conditional coverage 50% (1/2)."> 13</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 278: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (StringUtils.hasText(path)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 279</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> sb.append(ATTRIBUTE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLineCover"> 280</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> sb.append(PATH_ATTRIBUTE_NAME).append(NAME_VALUE_DELIMITER).append(path);</pre></td></tr> |
| <tr> <td class="numLine"> 281</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 282</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 283</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 284</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> appendExpires(StringBuilder sb, <span class="keyword">int</span> maxAge) {</pre></td></tr> |
| <tr> <td class="numLine"> 285</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if maxAge is negative, cookie should should expire when browser closes</span></pre></td></tr> |
| <tr> <td class="numLine"> 286</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Don't write the maxAge cookie value if it's negative - at least on Firefox it'll cause the </span></pre></td></tr> |
| <tr> <td class="numLine"> 287</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// cookie to be deleted immediately</span></pre></td></tr> |
| <tr> <td class="numLine"> 288</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Write the expires header used by older browsers, but may be unnecessary</span></pre></td></tr> |
| <tr> <td class="numLine"> 289</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// and it is not by the spec, see http://www.faqs.org/rfcs/rfc2965.html</span></pre></td></tr> |
| <tr> <td class="numLine"> 290</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// TODO consider completely removing the following </span></pre></td></tr> |
| <tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"><a title="Line 291: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 291: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (maxAge >= 0) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 292</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> sb.append(ATTRIBUTE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLineCover"> 293</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> sb.append(MAXAGE_ATTRIBUTE_NAME).append(NAME_VALUE_DELIMITER).append(maxAge);</pre></td></tr> |
| <tr> <td class="numLineCover"> 294</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> sb.append(ATTRIBUTE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLine"> 295</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Date expires;</pre></td></tr> |
| <tr> <td class="numLineCover"> 296</td> <td class="nbHitsUncovered"><a title="Line 296: Conditional coverage 50% (1/2)."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 296: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (maxAge == 0) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 297</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//delete the cookie by specifying a time in the past (1 day ago):</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 298</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> expires = <span class="keyword">new</span> Date(System.currentTimeMillis() - DAY_MILLIS);</pre></td></tr> |
| <tr> <td class="numLine"> 299</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 300</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">//Value is in seconds. So take 'now' and add that many seconds, and that's our expiration date:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 301</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Calendar cal = Calendar.getInstance();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 302</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cal.add(Calendar.SECOND, maxAge);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 303</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> expires = cal.getTime();</span></pre></td></tr> |
| <tr> <td class="numLine"> 304</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 305</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> String formatted = toCookieDate(expires);</pre></td></tr> |
| <tr> <td class="numLineCover"> 306</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> sb.append(EXPIRES_ATTRIBUTE_NAME).append(NAME_VALUE_DELIMITER).append(formatted);</pre></td></tr> |
| <tr> <td class="numLine"> 307</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 308</td> <td class="nbHitsCovered"> 13</td> <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="numLine"> 310</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> appendVersion(StringBuilder sb, <span class="keyword">int</span> version) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 311</td> <td class="nbHitsUncovered"><a title="Line 311: Conditional coverage 50% (1/2)."> 13</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 311: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (version > DEFAULT_VERSION) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 312</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> sb.append(ATTRIBUTE_DELIMITER);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 313</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> sb.append(VERSION_ATTRIBUTE_NAME).append(NAME_VALUE_DELIMITER).append(version);</span></pre></td></tr> |
| <tr> <td class="numLine"> 314</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 315</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 316</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 317</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> appendSecure(StringBuilder sb, <span class="keyword">boolean</span> secure) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 318</td> <td class="nbHitsCovered"><a title="Line 318: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 318: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (secure) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 319</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> sb.append(ATTRIBUTE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLineCover"> 320</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> sb.append(SECURE_ATTRIBUTE_NAME); <span class="comment">//No value for this attribute</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="numLineCover"> 322</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</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="numLine"> 324</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> appendHttpOnly(StringBuilder sb, <span class="keyword">boolean</span> httpOnly) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 325</td> <td class="nbHitsCovered"><a title="Line 325: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 325: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (httpOnly) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 326</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> sb.append(ATTRIBUTE_DELIMITER);</pre></td></tr> |
| <tr> <td class="numLineCover"> 327</td> <td class="nbHitsCovered"> 7</td> <td class="src"><pre class="src"> sb.append(HTTP_ONLY_ATTRIBUTE_NAME); <span class="comment">//No value for this attribute</span></pre></td></tr> |
| <tr> <td class="numLine"> 328</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 329</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 330</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 331</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 332</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Formats a date into a cookie date compatible string (Netscape's specification).</span></pre></td></tr> |
| <tr> <td class="numLine"> 333</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 334</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param date the date to format</span></pre></td></tr> |
| <tr> <td class="numLine"> 335</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return an HTTP 1.0/1.1 Cookie compatible date string (GMT-based).</span></pre></td></tr> |
| <tr> <td class="numLine"> 336</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 337</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> String toCookieDate(Date date) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> TimeZone tz = TimeZone.getTimeZone(GMT_TIME_ZONE_ID);</pre></td></tr> |
| <tr> <td class="numLineCover"> 339</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> DateFormat fmt = <span class="keyword">new</span> SimpleDateFormat(COOKIE_DATE_FORMAT_STRING, Locale.US);</pre></td></tr> |
| <tr> <td class="numLineCover"> 340</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> fmt.setTimeZone(tz);</pre></td></tr> |
| <tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> fmt.format(date);</pre></td></tr> |
| <tr> <td class="numLine"> 342</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</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"> 344</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> removeFrom(HttpServletRequest request, HttpServletResponse response) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> String name = getName();</pre></td></tr> |
| <tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> String value = DELETED_COOKIE_VALUE;</pre></td></tr> |
| <tr> <td class="numLineCover"> 347</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> String comment = <span class="keyword">null</span>; <span class="comment">//don't need to add extra size to the response - comments are irrelevant for deletions</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> String domain = getDomain();</pre></td></tr> |
| <tr> <td class="numLineCover"> 349</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> String path = calculatePath(request);</pre></td></tr> |
| <tr> <td class="numLineCover"> 350</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">int</span> maxAge = 0; <span class="comment">//always zero for deletion</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 351</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">int</span> version = getVersion();</pre></td></tr> |
| <tr> <td class="numLineCover"> 352</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> secure = isSecure();</pre></td></tr> |
| <tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> httpOnly = <span class="keyword">false</span>; <span class="comment">//no need to add the extra text, plus the value 'deleteMe' is not sensitive at all</span></pre></td></tr> |
| <tr> <td class="numLine"> 354</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> addCookieHeader(response, name, value, comment, domain, path, maxAge, version, secure, httpOnly);</pre></td></tr> |
| <tr> <td class="numLine"> 356</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> log.trace(<span class="string">"Removed '{}' cookie by setting maxAge=0"</span>, name);</pre></td></tr> |
| <tr> <td class="numLineCover"> 358</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 359</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 360</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String readValue(HttpServletRequest request, HttpServletResponse ignored) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 361</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> String name = getName();</pre></td></tr> |
| <tr> <td class="numLineCover"> 362</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> String value = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 363</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> javax.servlet.http.Cookie cookie = getCookie(request, name);</pre></td></tr> |
| <tr> <td class="numLineCover"> 364</td> <td class="nbHitsCovered"><a title="Line 364: Conditional coverage 100% (2/2)."> 14</a></td> <td class="src"><pre class="src"> <a title="Line 364: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cookie != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 365</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> value = cookie.getValue();</pre></td></tr> |
| <tr> <td class="numLineCover"> 366</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> log.debug(<span class="string">"Found '{}' cookie value [{}]"</span>, name, value);</pre></td></tr> |
| <tr> <td class="numLine"> 367</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 368</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> log.trace(<span class="string">"No '{}' cookie value"</span>, name);</pre></td></tr> |
| <tr> <td class="numLine"> 369</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 370</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 371</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">return</span> value;</pre></td></tr> |
| <tr> <td class="numLine"> 372</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 373</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 374</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 375</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the cookie with the given name from the request or {@code null} if no cookie</span></pre></td></tr> |
| <tr> <td class="numLine"> 376</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with that name could be found.</span></pre></td></tr> |
| <tr> <td class="numLine"> 377</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 378</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param request the current executing http request.</span></pre></td></tr> |
| <tr> <td class="numLine"> 379</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param cookieName the name of the cookie to find and return.</span></pre></td></tr> |
| <tr> <td class="numLine"> 380</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the cookie with the given name from the request or {@code null} if no cookie</span></pre></td></tr> |
| <tr> <td class="numLine"> 381</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with that name could be found.</span></pre></td></tr> |
| <tr> <td class="numLine"> 382</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 383</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> javax.servlet.http.Cookie getCookie(HttpServletRequest request, String cookieName) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 384</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> javax.servlet.http.Cookie cookies[] = request.getCookies();</pre></td></tr> |
| <tr> <td class="numLineCover"> 385</td> <td class="nbHitsCovered"><a title="Line 385: Conditional coverage 100% (2/2)."> 14</a></td> <td class="src"><pre class="src"> <a title="Line 385: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cookies != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 386</td> <td class="nbHitsCovered"><a title="Line 386: Conditional coverage 100% (2/2)."> 7</a></td> <td class="src"><pre class="src"> <a title="Line 386: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (javax.servlet.http.Cookie cookie : cookies) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 387</td> <td class="nbHitsCovered"><a title="Line 387: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 387: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cookie.getName().equals(cookieName)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">return</span> cookie;</pre></td></tr> |
| <tr> <td class="numLine"> 389</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 390</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 391</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 392</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 393</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 394</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| </table> |
| |
| <div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 5/25/16 11:32 PM.</div> |
| </body> |
| </html> |