3 <title>tests coverage</title>
4 <link rel ="stylesheet" type="text/css" href="../../../style.css" title="Style">
5 <script type="text/javascript" src="../../../sorttable.js"></script>
6 <script type="text/javascript">
7 targetPage = "" + window.location.search;
8 if (targetPage != "" && targetPage != "undefined")
9 targetPage = targetPage.substring(1);
10 if (targetPage.indexOf(":") != -1 || (targetPage != "" && !validURL(targetPage)))
11 targetPage = "undefined";
12 function validURL(url) {
13 var pos = url.indexOf(".html");
14 if (pos == -1 || pos != url.length - 5)
16 var allowNumber = false;
19 for (var i = 0; i < url.length - 5; i++) {
20 var ch = url.charAt(i);
21 if ('a' <= ch && ch <= 'z' ||
22 'A' <= ch && ch <= 'Z' ||
27 } else if ('0' <= ch && ch <= '9' ||
31 } else if (ch == '/' || ch == '.') {
38 if (ch == '/' && seenDot)
46 function loadFrames() {
47 if (targetPage != "" && targetPage != "undefined")
48 top.classFrame.location = top.targetPage;
56 <a href="../../../index.html?net/jaekl/frank/ViewSchedule.html" target="_top">Frames</a>
57 <a href="ViewSchedule.html" target="_top">No Frames</a>
62 <table cellspacing="0" cellpadding="0"class="report">
64 <th class="report"> </th>
65 <th class="report">%method</th>
66 <th class="report">%block</th>
67 <th class="report">%branch</th>
68 <th class="report">%line</th>
71 <td class="reportText"><span class="text">net.jaekl.frank.ViewSchedule</span></td>
72 <td class="reportValue"><table class="percentGraph" cellpadding="0" cellspacing="0" align="right"><tr><td><span class="text"><b>67</b>%(4/6)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width=" 67"></td><td class="percentUnCovered" width="33.0"></td></tr></table></td></tr></table></td>
73 <td class="reportValue"><table class="percentGraph" cellpadding="0" cellspacing="0" align="right"><tr><td><span class="text"><b>38</b>%(8/21)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width=" 38"></td><td class="percentUnCovered" width="62.0"></td></tr></table></td></tr></table></td>
74 <td class="reportValue"><table class="percentGraph" cellpadding="0" cellspacing="0" align="right"><tr><td><span class="text"><b>30</b>%(3/10)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width=" 30"></td><td class="percentUnCovered" width="70.0"></td></tr></table></td></tr></table></td>
75 <td class="reportValue"><table class="percentGraph" cellpadding="0" cellspacing="0" align="right"><tr><td><span class="text"><b>43</b>%(20/46)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width=" 43"></td><td class="percentUnCovered" width="57.0"></td></tr></table></td></tr></table></td>
80 <table cellspacing="0" cellpadding="0"class="report" id="mcoverage">
82 <th class="report">hit count</th>
83 <th class="report">method name</th>
84 <th class="report">method modifiers</th>
85 <th class="report">method signature</th>
88 <td class="reportValue_covered"><span class="text">3</span></td>
89 <td class="reportText"><span class="text"><a href="#src_19"><init></a></span></td>
90 <td class="reportText"><span class="text">[public]</span></td>
91 <td class="reportText"><span class="text">void <init>()</span></td>
94 <td class="reportValue_uncovered"><span class="text">0</span></td>
95 <td class="reportText"><span class="text"><a href="#src_63">doGet</a></span></td>
96 <td class="reportText"><span class="text">[public]</span></td>
97 <td class="reportText"><span class="text">void doGet(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)</span></td>
100 <td class="reportValue_uncovered"><span class="text">0</span></td>
101 <td class="reportText"><span class="text"><a href="#src_48">getLocale</a></span></td>
102 <td class="reportText"><span class="text">[]</span></td>
103 <td class="reportText"><span class="text">java.util.Locale getLocale(javax.servlet.http.HttpServletRequest)</span></td>
106 <td class="reportValue_covered"><span class="text">4</span></td>
107 <td class="reportText"><span class="text"><a href="#src_28">getParamInt</a></span></td>
108 <td class="reportText"><span class="text">[]</span></td>
109 <td class="reportText"><span class="text">int getParamInt(javax.servlet.http.HttpServletRequest,java.lang.String)</span></td>
112 <td class="reportValue_covered"><span class="text">8</span></td>
113 <td class="reportText"><span class="text"><a href="#src_39">getParamString</a></span></td>
114 <td class="reportText"><span class="text">[]</span></td>
115 <td class="reportText"><span class="text">java.lang.String getParamString(javax.servlet.http.HttpServletRequest,java.lang.String)</span></td>
118 <td class="reportValue_covered"><span class="text">3</span></td>
119 <td class="reportText"><span class="text"><a href="#src_96">writeErrorPage</a></span></td>
120 <td class="reportText"><span class="text">[]</span></td>
121 <td class="reportText"><span class="text">void writeErrorPage(java.io.PrintWriter,java.lang.Throwable,java.util.Locale)</span></td>
125 <table cellspacing="0" cellpadding="0" class="src">
127 <td class="numLine"> 1</td>
128 <td class="nbHits"> </td>
129 <td class="src"><pre class="src"> <span Class="keyword">package</span> net.jaekl.frank;</pre></td>
132 <td class="numLine"> 2</td>
133 <td class="nbHits"> </td>
134 <td class="src"><pre class="src"> </pre></td>
137 <td class="numLine"> 3</td>
138 <td class="nbHits"> </td>
139 <td class="src"><pre class="src"> <span Class="keyword">import</span> java.io.ByteArrayOutputStream;</pre></td>
142 <td class="numLine"> 4</td>
143 <td class="nbHits"> </td>
144 <td class="src"><pre class="src"> <span Class="keyword">import</span> java.io.FileInputStream;</pre></td>
147 <td class="numLine"> 5</td>
148 <td class="nbHits"> </td>
149 <td class="src"><pre class="src"> <span Class="keyword">import</span> java.io.IOException;</pre></td>
152 <td class="numLine"> 6</td>
153 <td class="nbHits"> </td>
154 <td class="src"><pre class="src"> <span Class="keyword">import</span> java.io.PrintStream;</pre></td>
157 <td class="numLine"> 7</td>
158 <td class="nbHits"> </td>
159 <td class="src"><pre class="src"> <span Class="keyword">import</span> java.io.PrintWriter;</pre></td>
162 <td class="numLine"> 8</td>
163 <td class="nbHits"> </td>
164 <td class="src"><pre class="src"> <span Class="keyword">import</span> java.util.Locale;</pre></td>
167 <td class="numLine"> 9</td>
168 <td class="nbHits"> </td>
169 <td class="src"><pre class="src"> </pre></td>
172 <td class="numLine"> 10</td>
173 <td class="nbHits"> </td>
174 <td class="src"><pre class="src"> <span Class="keyword">import</span> javax.servlet.ServletException;</pre></td>
177 <td class="numLine"> 11</td>
178 <td class="nbHits"> </td>
179 <td class="src"><pre class="src"> <span Class="keyword">import</span> javax.servlet.http.HttpServlet;</pre></td>
182 <td class="numLine"> 12</td>
183 <td class="nbHits"> </td>
184 <td class="src"><pre class="src"> <span Class="keyword">import</span> javax.servlet.http.HttpServletRequest;</pre></td>
187 <td class="numLine"> 13</td>
188 <td class="nbHits"> </td>
189 <td class="src"><pre class="src"> <span Class="keyword">import</span> javax.servlet.http.HttpServletResponse;</pre></td>
192 <td class="numLine"> 14</td>
193 <td class="nbHits"> </td>
194 <td class="src"><pre class="src"> </pre></td>
197 <td class="numLine"> 15</td>
198 <td class="nbHits"> </td>
199 <td class="src"><pre class="src"> <span Class="keyword">import</span> net.jaekl.frank.octranspo.Server;</pre></td>
202 <td class="numLine"> 16</td>
203 <td class="nbHits"> </td>
204 <td class="src"><pre class="src"> <span Class="keyword">import</span> net.jaekl.frank.octranspo.StopInfo;</pre></td>
207 <td class="numLine"> 17</td>
208 <td class="nbHits"> </td>
209 <td class="src"><pre class="src"> <span Class="keyword">import</span> net.jaekl.qd.util.ExceptionUtils;</pre></td>
212 <td class="numLine"> 18</td>
213 <td class="nbHits"> </td>
214 <td class="src"><pre class="src"> </pre></td>
217 <td class="numLineCover"> 19<a name="src_19"></a></td>
218 <td class="nbHitsCovered"> Block: 1/1 </td>
219 <td class="src"><pre class="src"> <span Class="keyword">public</span> <span Class="keyword">class</span> ViewSchedule <span Class="keyword">extends</span> HttpServlet {</span></pre></td>
222 <td class="numLine"> 20</td>
223 <td class="nbHits"> </td>
224 <td class="src"><pre class="src"> <span Class="keyword">private</span> <span Class="keyword">static</span> <span Class="keyword">final</span> <span Class="keyword">long</span> serialVersionUID = 1L;</pre></td>
227 <td class="numLine"> 21</td>
228 <td class="nbHits"> </td>
229 <td class="src"><pre class="src"> </pre></td>
232 <td class="numLine"> 22</td>
233 <td class="nbHits"> </td>
234 <td class="src"><pre class="src"> <span Class="keyword">static</span> <span Class="keyword">final</span> String BUNDLE_NAME = <span Class="string">"frank"</span>;</pre></td>
237 <td class="numLine"> 23</td>
238 <td class="nbHits"> </td>
239 <td class="src"><pre class="src"> <span Class="keyword">static</span> <span Class="keyword">final</span> String STOP = <span Class="string">"stop"</span>;</pre></td>
242 <td class="numLine"> 24</td>
243 <td class="nbHits"> </td>
244 <td class="src"><pre class="src"> <span Class="keyword">static</span> <span Class="keyword">final</span> String ROUTE = <span Class="string">"route"</span>;</pre></td>
247 <td class="numLine"> 25</td>
248 <td class="nbHits"> </td>
249 <td class="src"><pre class="src"> <span Class="keyword">static</span> <span Class="keyword">final</span> String LANG = <span Class="string">"lang"</span>;</pre></td>
252 <td class="numLine"> 26</td>
253 <td class="nbHits"> </td>
254 <td class="src"><pre class="src"> </pre></td>
257 <td class="numLine"> 27</td>
258 <td class="nbHits"> </td>
259 <td class="src"><pre class="src"> <span Class="keyword">int</span> getParamInt(HttpServletRequest req, String paramName) {</pre></td>
262 <td class="numLineCover"> 28<a name="src_28"></a></td>
263 <td class="nbHitsCovered"> Block: 1/1 </td>
264 <td class="src"><pre class="src"> String valueStr = getParamString(req, paramName);</span></pre></td>
267 <td class="numLine"> 29</td>
268 <td class="nbHits"> </td>
269 <td class="src"><pre class="src"> <span Class="keyword">try</span> {</pre></td>
272 <td class="numLineCover"> 30</td>
273 <td class="nbHits"> </td>
274 <td class="src"><pre class="src"> <span Class="keyword">return</span> Integer.parseInt(valueStr);</pre></td>
277 <td class="numLine"> 31</td>
278 <td class="nbHits"> </td>
279 <td class="src"><pre class="src"> }</pre></td>
282 <td class="numLineCover"> 32</td>
283 <td class="nbHitsCovered"> Block: 1/1 </td>
284 <td class="src"><pre class="src"> <span Class="keyword">catch</span> (NumberFormatException exc) {</span></pre></td>
287 <td class="numLine"> 33</td>
288 <td class="nbHits"> </td>
289 <td class="src"><pre class="src"> <span Class="comment">// TODO: Error page</span></pre></td>
292 <td class="numLineCover"> 34</td>
293 <td class="nbHits"> </td>
294 <td class="src"><pre class="src"> <span Class="keyword">return</span> 0;</pre></td>
297 <td class="numLine"> 35</td>
298 <td class="nbHits"> </td>
299 <td class="src"><pre class="src"> }</pre></td>
302 <td class="numLine"> 36</td>
303 <td class="nbHits"> </td>
304 <td class="src"><pre class="src"> }</pre></td>
307 <td class="numLine"> 37</td>
308 <td class="nbHits"> </td>
309 <td class="src"><pre class="src"> </pre></td>
312 <td class="numLine"> 38</td>
313 <td class="nbHits"> </td>
314 <td class="src"><pre class="src"> String getParamString(HttpServletRequest req, String paramName) {</pre></td>
317 <td class="numLineCover"> 39<a name="src_39"></a></td>
318 <td class="nbHitsCovered"> Block: 1/1 </td>
319 <td class="src"><pre class="src"> String valueStr = req.getParameter(paramName);</span></pre></td>
322 <td class="numLineCover"> 40</td>
323 <td class="nbHits"> </td>
324 <td class="src"><pre class="src"> <span Class="keyword">if</span> (<span Class="keyword">null</span> == valueStr|| valueStr.equals(<span Class="string">""</span>)) {</pre></td>
327 <td class="numLine"> 41</td>
328 <td class="nbHits"> </td>
329 <td class="src"><pre class="src"> <span Class="comment">// TODO: Error page</span></pre></td>
332 <td class="numLineCover"> 42</td>
333 <td class="nbHitsUncovered"> Block: 1/1 Branch: 1/2 </td>
334 <td class="src"><pre class="src"> <span Class="keyword">return</span> <span Class="keyword">null</span>;</span></pre></td>
337 <td class="numLine"> 43</td>
338 <td class="nbHits"> </td>
339 <td class="src"><pre class="src"> }</pre></td>
342 <td class="numLineCover"> 44</td>
343 <td class="nbHitsCovered"> Block: 1/1 Branch: 1/1 </td>
344 <td class="src"><pre class="src"> <span Class="keyword">return</span> valueStr;</span></pre></td>
347 <td class="numLine"> 45</td>
348 <td class="nbHits"> </td>
349 <td class="src"><pre class="src"> }</pre></td>
352 <td class="numLine"> 46</td>
353 <td class="nbHits"> </td>
354 <td class="src"><pre class="src"> </pre></td>
357 <td class="numLine"> 47</td>
358 <td class="nbHits"> </td>
359 <td class="src"><pre class="src"> Locale getLocale(HttpServletRequest req) {</pre></td>
362 <td class="numLineUnCover"> 48<a name="src_48"></a></td>
363 <td class="nbHitsUncovered"> Block: 0/1 </td>
364 <td class="src"><pre class="src"> Locale result = <span Class="keyword">null</span>;</span></pre></td>
367 <td class="numLineUnCover"> 49</td>
368 <td class="nbHits"> </td>
369 <td class="src"><pre class="src"> String lang = getParamString(req, LANG);</pre></td>
372 <td class="numLineUnCover"> 50</td>
373 <td class="nbHits"> </td>
374 <td class="src"><pre class="src"> <span Class="keyword">if</span> (<span Class="keyword">null</span> != lang) {</pre></td>
377 <td class="numLineUnCover"> 51</td>
378 <td class="nbHitsUncovered"> Block: 0/1 Branch: 0/1 </td>
379 <td class="src"><pre class="src"> result = <span Class="keyword">new</span> Locale(lang);</span></pre></td>
382 <td class="numLine"> 52</td>
383 <td class="nbHits"> </td>
384 <td class="src"><pre class="src"> }</pre></td>
387 <td class="numLineUnCover"> 53</td>
388 <td class="nbHitsUncovered"> Block: 0/1 Branch: 0/1 </td>
389 <td class="src"><pre class="src"> <span Class="keyword">if</span> (<span Class="keyword">null</span> == result) {</span></pre></td>
392 <td class="numLineUnCover"> 54</td>
393 <td class="nbHitsUncovered"> Block: 0/1 Branch: 0/1 </td>
394 <td class="src"><pre class="src"> result = Locale.getDefault();</span></pre></td>
397 <td class="numLine"> 55</td>
398 <td class="nbHits"> </td>
399 <td class="src"><pre class="src"> }</pre></td>
402 <td class="numLineUnCover"> 56</td>
403 <td class="nbHitsUncovered"> Block: 0/1 Branch: 0/1 </td>
404 <td class="src"><pre class="src"> <span Class="keyword">return</span> result;</span></pre></td>
407 <td class="numLine"> 57</td>
408 <td class="nbHits"> </td>
409 <td class="src"><pre class="src"> }</pre></td>
412 <td class="numLine"> 58</td>
413 <td class="nbHits"> </td>
414 <td class="src"><pre class="src"> </pre></td>
417 <td class="numLine"> 59</td>
418 <td class="nbHits"> </td>
419 <td class="src"><pre class="src"> @Override</pre></td>
422 <td class="numLine"> 60</td>
423 <td class="nbHits"> </td>
424 <td class="src"><pre class="src"> <span Class="keyword">public</span> <span Class="keyword">void</span> doGet(HttpServletRequest req, HttpServletResponse res)</pre></td>
427 <td class="numLine"> 61</td>
428 <td class="nbHits"> </td>
429 <td class="src"><pre class="src"> <span Class="keyword">throws</span> ServletException, IOException</pre></td>
432 <td class="numLine"> 62</td>
433 <td class="nbHits"> </td>
434 <td class="src"><pre class="src"> {</pre></td>
437 <td class="numLineUnCover"> 63<a name="src_63"></a></td>
438 <td class="nbHitsUncovered"> Block: 0/1 </td>
439 <td class="src"><pre class="src"> res.setContentType(<span Class="string">"text/html"</span>);</span></pre></td>
442 <td class="numLineUnCover"> 64</td>
443 <td class="nbHits"> </td>
444 <td class="src"><pre class="src"> PrintWriter pw = res.getWriter();</pre></td>
447 <td class="numLine"> 65</td>
448 <td class="nbHits"> </td>
449 <td class="src"><pre class="src"> </pre></td>
452 <td class="numLineUnCover"> 66</td>
453 <td class="nbHits"> </td>
454 <td class="src"><pre class="src"> Locale locale = getLocale(req);</pre></td>
457 <td class="numLineUnCover"> 67</td>
458 <td class="nbHits"> </td>
459 <td class="src"><pre class="src"> <span Class="keyword">int</span> stop = getParamInt(req, STOP);</pre></td>
462 <td class="numLineUnCover"> 68</td>
463 <td class="nbHits"> </td>
464 <td class="src"><pre class="src"> <span Class="keyword">int</span> route = getParamInt(req, ROUTE);</pre></td>
467 <td class="numLine"> 69</td>
468 <td class="nbHits"> </td>
469 <td class="src"><pre class="src"> </pre></td>
472 <td class="numLine"> 70</td>
473 <td class="nbHits"> </td>
474 <td class="src"><pre class="src"> <span Class="keyword">try</span> {</pre></td>
477 <td class="numLineUnCover"> 71</td>
478 <td class="nbHits"> </td>
479 <td class="src"><pre class="src"> FileInputStream fis = <span Class="keyword">new</span> FileInputStream(<span Class="string">"apikey.txt"</span>);</pre></td>
482 <td class="numLine"> 72</td>
483 <td class="nbHits"> </td>
484 <td class="src"><pre class="src"> <span Class="keyword">try</span> {</pre></td>
487 <td class="numLineUnCover"> 73</td>
488 <td class="nbHits"> </td>
489 <td class="src"><pre class="src"> Server server = <span Class="keyword">new</span> Server(<span Class="string">"192f31d2"</span>, fis);</pre></td>
492 <td class="numLineUnCover"> 74</td>
493 <td class="nbHits"> </td>
494 <td class="src"><pre class="src"> StopInfo stopInfo = <span Class="keyword">null</span>;</pre></td>
497 <td class="numLine"> 75</td>
498 <td class="nbHits"> </td>
499 <td class="src"><pre class="src"> </pre></td>
502 <td class="numLineUnCover"> 76</td>
503 <td class="nbHits"> </td>
504 <td class="src"><pre class="src"> <span Class="keyword">if</span> (0 == route) {</pre></td>
507 <td class="numLineUnCover"> 77</td>
508 <td class="nbHitsUncovered"> Block: 0/1 Branch: 0/1 </td>
509 <td class="src"><pre class="src"> stopInfo = server.getNextTripsForStopAllRoutes(stop);</span></pre></td>
512 <td class="numLine"> 78</td>
513 <td class="nbHits"> </td>
514 <td class="src"><pre class="src"> }</pre></td>
517 <td class="numLine"> 79</td>
518 <td class="nbHits"> </td>
519 <td class="src"><pre class="src"> <span Class="keyword">else</span> {</pre></td>
522 <td class="numLineUnCover"> 80</td>
523 <td class="nbHitsUncovered"> Block: 0/1 Branch: 0/1 </td>
524 <td class="src"><pre class="src"> stopInfo = server.getNextTripsForStop(stop, route);</span></pre></td>
527 <td class="numLine"> 81</td>
528 <td class="nbHits"> </td>
529 <td class="src"><pre class="src"> }</pre></td>
532 <td class="numLineUnCover"> 82</td>
533 <td class="nbHitsUncovered"> Block: 0/1 </td>
534 <td class="src"><pre class="src"> Schedule schedule = <span Class="keyword">new</span> Schedule(locale);</span></pre></td>
537 <td class="numLine"> 83</td>
538 <td class="nbHits"> </td>
539 <td class="src"><pre class="src"> </pre></td>
542 <td class="numLineUnCover"> 84</td>
543 <td class="nbHits"> </td>
544 <td class="src"><pre class="src"> schedule.writePage(pw, stopInfo);</pre></td>
547 <td class="numLine"> 85</td>
548 <td class="nbHits"> </td>
549 <td class="src"><pre class="src"> }</pre></td>
552 <td class="numLine"> 86</td>
553 <td class="nbHits"> </td>
554 <td class="src"><pre class="src"> <span Class="keyword">finally</span> {</pre></td>
557 <td class="numLineUnCover"> 87</td>
558 <td class="nbHitsUncovered"> Block: 0/1 </td>
559 <td class="src"><pre class="src"> ExceptionUtils.tryClose(fis);</span></pre></td>
562 <td class="numLineUnCover"> 88</td>
563 <td class="nbHits"> </td>
564 <td class="src"><pre class="src"> }</pre></td>
567 <td class="numLine"> 89</td>
568 <td class="nbHits"> </td>
569 <td class="src"><pre class="src"> }</pre></td>
572 <td class="numLineUnCover"> 90</td>
573 <td class="nbHitsUncovered"> Block: 0/1 </td>
574 <td class="src"><pre class="src"> <span Class="keyword">catch</span> (Throwable t) {</span></pre></td>
577 <td class="numLineUnCover"> 91</td>
578 <td class="nbHits"> </td>
579 <td class="src"><pre class="src"> writeErrorPage(pw, t, locale);</pre></td>
582 <td class="numLineUnCover"> 92</td>
583 <td class="nbHitsUncovered"> Block: 0/1 </td>
584 <td class="src"><pre class="src"> }</span></pre></td>
587 <td class="numLineUnCover"> 93</td>
588 <td class="nbHitsUncovered"> Block: 0/1 </td>
589 <td class="src"><pre class="src"> }</span></pre></td>
592 <td class="numLine"> 94</td>
593 <td class="nbHits"> </td>
594 <td class="src"><pre class="src"> </pre></td>
597 <td class="numLine"> 95</td>
598 <td class="nbHits"> </td>
599 <td class="src"><pre class="src"> <span Class="keyword">void</span> writeErrorPage(PrintWriter pw, Throwable t, Locale locale) {</pre></td>
602 <td class="numLineCover"> 96<a name="src_96"></a></td>
603 <td class="nbHitsCovered"> Block: 1/1 </td>
604 <td class="src"><pre class="src"> ByteArrayOutputStream baos = <span Class="keyword">new</span> ByteArrayOutputStream();</span></pre></td>
607 <td class="numLineCover"> 97</td>
608 <td class="nbHits"> </td>
609 <td class="src"><pre class="src"> PrintStream ps = <span Class="keyword">new</span> PrintStream(baos);</pre></td>
612 <td class="numLineCover"> 98</td>
613 <td class="nbHits"> </td>
614 <td class="src"><pre class="src"> FrankBundle bundle = FrankBundle.getInst(locale);</pre></td>
617 <td class="numLine"> 99</td>
618 <td class="nbHits"> </td>
619 <td class="src"><pre class="src"> </pre></td>
622 <td class="numLineCover"> 100</td>
623 <td class="nbHits"> </td>
624 <td class="src"><pre class="src"> pw.println(<span Class="string">"<HTML><HEAD><TITLE>"</span> + </pre></td>
627 <td class="numLine"> 101</td>
628 <td class="nbHits"> </td>
629 <td class="src"><pre class="src"> bundle.get(FrankBundle.FRANK) + <span Class="string">": "</span> +</pre></td>
632 <td class="numLine"> 102</td>
633 <td class="nbHits"> </td>
634 <td class="src"><pre class="src"> bundle.get(FrankBundle.ERROR_PAGE) + </pre></td>
637 <td class="numLine"> 103</td>
638 <td class="nbHits"> </td>
639 <td class="src"><pre class="src"> <span Class="string">"</TITLE></HEAD>"</span>);</pre></td>
642 <td class="numLineCover"> 104</td>
643 <td class="nbHits"> </td>
644 <td class="src"><pre class="src"> pw.println(<span Class="string">"<BODY><H1>"</span> +</pre></td>
647 <td class="numLine"> 105</td>
648 <td class="nbHits"> </td>
649 <td class="src"><pre class="src"> bundle.get(FrankBundle.FRANK) + <span Class="string">": "</span> +</pre></td>
652 <td class="numLine"> 106</td>
653 <td class="nbHits"> </td>
654 <td class="src"><pre class="src"> bundle.get(FrankBundle.UNEXPECTED_ERROR) + </pre></td>
657 <td class="numLine"> 107</td>
658 <td class="nbHits"> </td>
659 <td class="src"><pre class="src"> <span Class="string">"</H1><P><PRE>"</span>);</pre></td>
662 <td class="numLine"> 108</td>
663 <td class="nbHits"> </td>
664 <td class="src"><pre class="src"> </pre></td>
667 <td class="numLine"> 109</td>
668 <td class="nbHits"> </td>
669 <td class="src"><pre class="src"> <span Class="comment">// Note that, if we cared about security, we would log this stack trace to a</span></pre></td>
672 <td class="numLine"> 110</td>
673 <td class="nbHits"> </td>
674 <td class="src"><pre class="src"> <span Class="comment">// server log, and only report a cross-reference to the log file back to the </span></pre></td>
677 <td class="numLine"> 111</td>
678 <td class="nbHits"> </td>
679 <td class="src"><pre class="src"> <span Class="comment">// end user's browser, to avoid potentially exposing internal info that we </span></pre></td>
682 <td class="numLine"> 112</td>
683 <td class="nbHits"> </td>
684 <td class="src"><pre class="src"> <span Class="comment">// don't want to share.</span></pre></td>
687 <td class="numLine"> 113</td>
688 <td class="nbHits"> </td>
689 <td class="src"><pre class="src"> <span Class="comment">// At least at this point, we don't care (that much), and trade off a </span></pre></td>
692 <td class="numLine"> 114</td>
693 <td class="nbHits"> </td>
694 <td class="src"><pre class="src"> <span Class="comment">// potential information leak in favour of reducing our code complexity</span></pre></td>
697 <td class="numLine"> 115</td>
698 <td class="nbHits"> </td>
699 <td class="src"><pre class="src"> <span Class="comment">// and the administrator's workload.</span></pre></td>
702 <td class="numLineCover"> 116</td>
703 <td class="nbHits"> </td>
704 <td class="src"><pre class="src"> t.printStackTrace(ps);</pre></td>
707 <td class="numLineCover"> 117</td>
708 <td class="nbHits"> </td>
709 <td class="src"><pre class="src"> String stackTrace = baos.toString(); </pre></td>
712 <td class="numLineCover"> 118</td>
713 <td class="nbHits"> </td>
714 <td class="src"><pre class="src"> pw.println(stackTrace);</pre></td>
717 <td class="numLine"> 119</td>
718 <td class="nbHits"> </td>
719 <td class="src"><pre class="src"> </pre></td>
722 <td class="numLineCover"> 120</td>
723 <td class="nbHits"> </td>
724 <td class="src"><pre class="src"> pw.println(<span Class="string">"</PRE></P></BODY>"</span>);</pre></td>
727 <td class="numLineCover"> 121</td>
728 <td class="nbHits"> </td>
729 <td class="src"><pre class="src"> pw.println(<span Class="string">"</HTML>"</span>);</pre></td>
732 <td class="numLineCover"> 122</td>
733 <td class="nbHits"> </td>
734 <td class="src"><pre class="src"> }</pre></td>
737 <td class="numLine"> 123</td>
738 <td class="nbHits"> </td>
739 <td class="src"><pre class="src"> </pre></td>
742 <td class="numLine"> 124</td>
743 <td class="nbHits"> </td>
744 <td class="src"><pre class="src"> </pre></td>
747 <td class="numLine"> 125</td>
748 <td class="nbHits"> </td>
749 <td class="src"><pre class="src"> }</pre></td>
753 <p><table cellpadding="0" cellspacing="0" class="report"> <tr class="report"> <td class="reportText"><span class="text"> Report generated 11/12/14 11:31 PM </span></td> </tr></table>