Initial
[frank.git] / report / net / jaekl / frank / ViewSchedule.html
1 <html>
2 <head>
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)
15       return false;
16     var allowNumber = false;
17     var allowSep = false;
18     var seenDot = 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' ||
23           ch == '$' ||
24           ch == '_') {
25             allowNumber = true;
26             allowSep = true;
27       } else if ('0' <= ch && ch <= '9' ||
28                  ch == '-') {
29                    if (!allowNumber)
30                      return false;
31       } else if (ch == '/' || ch == '.') {
32         if (!allowSep)
33           return false;
34         allowNumber = false;
35         allowSep = false;
36         if (ch == '.')
37           seenDot = true;
38         if (ch == '/' && seenDot)
39           return false;
40       } else {
41         return false;
42       }
43     }
44     return true;
45   }
46   function loadFrames() {
47     if (targetPage != "" && targetPage != "undefined")
48       top.classFrame.location = top.targetPage;
49   }
50 </script>
51 </head>
52 <body>
53 <table>
54 <tr>
55 <td>
56 <a href="../../../index.html?net/jaekl/frank/ViewSchedule.html" target="_top">Frames</a>
57 <a href="ViewSchedule.html" target="_top">No Frames</a>
58 </td>
59 </tr>
60 </table>
61 <p>
62  <table cellspacing="0" cellpadding="0"class="report">
63  <tr class="report">
64  <th class="report">&nbsp;</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>
69  </tr>
70  <tr class="report">
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>
76  </tr>
77  </table>
78  <p>
79  <p>
80  <table cellspacing="0" cellpadding="0"class="report" id="mcoverage">
81  <tr class="report">
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>
86  </tr>
87  <tr class="report">
88  <td class="reportValue_covered"><span class="text">3</span></td>
89  <td class="reportText"><span class="text"><a href="#src_19">&lt;init&gt;</a></span></td>
90  <td class="reportText"><span class="text">[public]</span></td>
91  <td class="reportText"><span class="text">void &lt;init&gt;()</span></td>
92  </tr>
93  <tr class="report">
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>
98  </tr>
99  <tr class="report">
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>
104  </tr>
105  <tr class="report">
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>
110  </tr>
111  <tr class="report">
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>
116  </tr>
117  <tr class="report">
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>
122  </tr>
123  </table>
124  <p>
125  <table cellspacing="0" cellpadding="0" class="src">
126  <tr>
127  <td class="numLine">&nbsp;1</td>
128  <td class="nbHits">&nbsp;</td>
129  <td class="src"><pre class="src">&nbsp;<span Class="keyword">package</span> net.jaekl.frank;</pre></td>
130  </tr>
131  <tr>
132  <td class="numLine">&nbsp;2</td>
133  <td class="nbHits">&nbsp;</td>
134  <td class="src"><pre class="src">&nbsp;</pre></td>
135  </tr>
136  <tr>
137  <td class="numLine">&nbsp;3</td>
138  <td class="nbHits">&nbsp;</td>
139  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> java.io.ByteArrayOutputStream;</pre></td>
140  </tr>
141  <tr>
142  <td class="numLine">&nbsp;4</td>
143  <td class="nbHits">&nbsp;</td>
144  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> java.io.FileInputStream;</pre></td>
145  </tr>
146  <tr>
147  <td class="numLine">&nbsp;5</td>
148  <td class="nbHits">&nbsp;</td>
149  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> java.io.IOException;</pre></td>
150  </tr>
151  <tr>
152  <td class="numLine">&nbsp;6</td>
153  <td class="nbHits">&nbsp;</td>
154  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> java.io.PrintStream;</pre></td>
155  </tr>
156  <tr>
157  <td class="numLine">&nbsp;7</td>
158  <td class="nbHits">&nbsp;</td>
159  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> java.io.PrintWriter;</pre></td>
160  </tr>
161  <tr>
162  <td class="numLine">&nbsp;8</td>
163  <td class="nbHits">&nbsp;</td>
164  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> java.util.Locale;</pre></td>
165  </tr>
166  <tr>
167  <td class="numLine">&nbsp;9</td>
168  <td class="nbHits">&nbsp;</td>
169  <td class="src"><pre class="src">&nbsp;</pre></td>
170  </tr>
171  <tr>
172  <td class="numLine">&nbsp;10</td>
173  <td class="nbHits">&nbsp;</td>
174  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> javax.servlet.ServletException;</pre></td>
175  </tr>
176  <tr>
177  <td class="numLine">&nbsp;11</td>
178  <td class="nbHits">&nbsp;</td>
179  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> javax.servlet.http.HttpServlet;</pre></td>
180  </tr>
181  <tr>
182  <td class="numLine">&nbsp;12</td>
183  <td class="nbHits">&nbsp;</td>
184  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> javax.servlet.http.HttpServletRequest;</pre></td>
185  </tr>
186  <tr>
187  <td class="numLine">&nbsp;13</td>
188  <td class="nbHits">&nbsp;</td>
189  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> javax.servlet.http.HttpServletResponse;</pre></td>
190  </tr>
191  <tr>
192  <td class="numLine">&nbsp;14</td>
193  <td class="nbHits">&nbsp;</td>
194  <td class="src"><pre class="src">&nbsp;</pre></td>
195  </tr>
196  <tr>
197  <td class="numLine">&nbsp;15</td>
198  <td class="nbHits">&nbsp;</td>
199  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> net.jaekl.frank.octranspo.Server;</pre></td>
200  </tr>
201  <tr>
202  <td class="numLine">&nbsp;16</td>
203  <td class="nbHits">&nbsp;</td>
204  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> net.jaekl.frank.octranspo.StopInfo;</pre></td>
205  </tr>
206  <tr>
207  <td class="numLine">&nbsp;17</td>
208  <td class="nbHits">&nbsp;</td>
209  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> net.jaekl.qd.util.ExceptionUtils;</pre></td>
210  </tr>
211  <tr>
212  <td class="numLine">&nbsp;18</td>
213  <td class="nbHits">&nbsp;</td>
214  <td class="src"><pre class="src">&nbsp;</pre></td>
215  </tr>
216  <tr>
217  <td class="numLineCover">&nbsp;19<a name="src_19"></a></td>
218  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
219  <td class="src"><pre class="src">&nbsp;<span Class="keyword">public</span> <span Class="keyword">class</span> ViewSchedule <span Class="keyword">extends</span> HttpServlet {</span></pre></td>
220  </tr>
221  <tr>
222  <td class="numLine">&nbsp;20</td>
223  <td class="nbHits">&nbsp;</td>
224  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">private</span> <span Class="keyword">static</span> <span Class="keyword">final</span> <span Class="keyword">long</span> serialVersionUID = 1L;</pre></td>
225  </tr>
226  <tr>
227  <td class="numLine">&nbsp;21</td>
228  <td class="nbHits">&nbsp;</td>
229  <td class="src"><pre class="src">&nbsp;        </pre></td>
230  </tr>
231  <tr>
232  <td class="numLine">&nbsp;22</td>
233  <td class="nbHits">&nbsp;</td>
234  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">static</span> <span Class="keyword">final</span> String BUNDLE_NAME = <span Class="string">"frank"</span>;</pre></td>
235  </tr>
236  <tr>
237  <td class="numLine">&nbsp;23</td>
238  <td class="nbHits">&nbsp;</td>
239  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">static</span> <span Class="keyword">final</span> String STOP = <span Class="string">"stop"</span>;</pre></td>
240  </tr>
241  <tr>
242  <td class="numLine">&nbsp;24</td>
243  <td class="nbHits">&nbsp;</td>
244  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">static</span> <span Class="keyword">final</span> String ROUTE = <span Class="string">"route"</span>;</pre></td>
245  </tr>
246  <tr>
247  <td class="numLine">&nbsp;25</td>
248  <td class="nbHits">&nbsp;</td>
249  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">static</span> <span Class="keyword">final</span> String LANG = <span Class="string">"lang"</span>;</pre></td>
250  </tr>
251  <tr>
252  <td class="numLine">&nbsp;26</td>
253  <td class="nbHits">&nbsp;</td>
254  <td class="src"><pre class="src">&nbsp;        </pre></td>
255  </tr>
256  <tr>
257  <td class="numLine">&nbsp;27</td>
258  <td class="nbHits">&nbsp;</td>
259  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">int</span> getParamInt(HttpServletRequest req, String paramName) {</pre></td>
260  </tr>
261  <tr>
262  <td class="numLineCover">&nbsp;28<a name="src_28"></a></td>
263  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
264  <td class="src"><pre class="src">&nbsp;                String valueStr = getParamString(req, paramName);</span></pre></td>
265  </tr>
266  <tr>
267  <td class="numLine">&nbsp;29</td>
268  <td class="nbHits">&nbsp;</td>
269  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">try</span> {</pre></td>
270  </tr>
271  <tr>
272  <td class="numLineCover">&nbsp;30</td>
273  <td class="nbHits">&nbsp;</td>
274  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">return</span> Integer.parseInt(valueStr);</pre></td>
275  </tr>
276  <tr>
277  <td class="numLine">&nbsp;31</td>
278  <td class="nbHits">&nbsp;</td>
279  <td class="src"><pre class="src">&nbsp;                }</pre></td>
280  </tr>
281  <tr>
282  <td class="numLineCover">&nbsp;32</td>
283  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
284  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">catch</span> (NumberFormatException exc) {</span></pre></td>
285  </tr>
286  <tr>
287  <td class="numLine">&nbsp;33</td>
288  <td class="nbHits">&nbsp;</td>
289  <td class="src"><pre class="src">&nbsp;                        <span Class="comment">// TODO:  Error page</span></pre></td>
290  </tr>
291  <tr>
292  <td class="numLineCover">&nbsp;34</td>
293  <td class="nbHits">&nbsp;</td>
294  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">return</span> 0;</pre></td>
295  </tr>
296  <tr>
297  <td class="numLine">&nbsp;35</td>
298  <td class="nbHits">&nbsp;</td>
299  <td class="src"><pre class="src">&nbsp;                }</pre></td>
300  </tr>
301  <tr>
302  <td class="numLine">&nbsp;36</td>
303  <td class="nbHits">&nbsp;</td>
304  <td class="src"><pre class="src">&nbsp;        }</pre></td>
305  </tr>
306  <tr>
307  <td class="numLine">&nbsp;37</td>
308  <td class="nbHits">&nbsp;</td>
309  <td class="src"><pre class="src">&nbsp;        </pre></td>
310  </tr>
311  <tr>
312  <td class="numLine">&nbsp;38</td>
313  <td class="nbHits">&nbsp;</td>
314  <td class="src"><pre class="src">&nbsp;        String getParamString(HttpServletRequest req, String paramName) {</pre></td>
315  </tr>
316  <tr>
317  <td class="numLineCover">&nbsp;39<a name="src_39"></a></td>
318  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
319  <td class="src"><pre class="src">&nbsp;                String valueStr = req.getParameter(paramName);</span></pre></td>
320  </tr>
321  <tr>
322  <td class="numLineCover">&nbsp;40</td>
323  <td class="nbHits">&nbsp;</td>
324  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">if</span> (<span Class="keyword">null</span> == valueStr|| valueStr.equals(<span Class="string">""</span>)) {</pre></td>
325  </tr>
326  <tr>
327  <td class="numLine">&nbsp;41</td>
328  <td class="nbHits">&nbsp;</td>
329  <td class="src"><pre class="src">&nbsp;                        <span Class="comment">// TODO:  Error page</span></pre></td>
330  </tr>
331  <tr>
332  <td class="numLineCover">&nbsp;42</td>
333  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;1/1&nbsp;Branch:&nbsp;1/2&nbsp;</td>
334  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">return</span> <span Class="keyword">null</span>;</span></pre></td>
335  </tr>
336  <tr>
337  <td class="numLine">&nbsp;43</td>
338  <td class="nbHits">&nbsp;</td>
339  <td class="src"><pre class="src">&nbsp;                }</pre></td>
340  </tr>
341  <tr>
342  <td class="numLineCover">&nbsp;44</td>
343  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;Branch:&nbsp;1/1&nbsp;</td>
344  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">return</span> valueStr;</span></pre></td>
345  </tr>
346  <tr>
347  <td class="numLine">&nbsp;45</td>
348  <td class="nbHits">&nbsp;</td>
349  <td class="src"><pre class="src">&nbsp;        }</pre></td>
350  </tr>
351  <tr>
352  <td class="numLine">&nbsp;46</td>
353  <td class="nbHits">&nbsp;</td>
354  <td class="src"><pre class="src">&nbsp;        </pre></td>
355  </tr>
356  <tr>
357  <td class="numLine">&nbsp;47</td>
358  <td class="nbHits">&nbsp;</td>
359  <td class="src"><pre class="src">&nbsp;        Locale getLocale(HttpServletRequest req) {</pre></td>
360  </tr>
361  <tr>
362  <td class="numLineUnCover">&nbsp;48<a name="src_48"></a></td>
363  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
364  <td class="src"><pre class="src">&nbsp;                Locale result = <span Class="keyword">null</span>;</span></pre></td>
365  </tr>
366  <tr>
367  <td class="numLineUnCover">&nbsp;49</td>
368  <td class="nbHits">&nbsp;</td>
369  <td class="src"><pre class="src">&nbsp;                String lang = getParamString(req, LANG);</pre></td>
370  </tr>
371  <tr>
372  <td class="numLineUnCover">&nbsp;50</td>
373  <td class="nbHits">&nbsp;</td>
374  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">if</span> (<span Class="keyword">null</span> != lang) {</pre></td>
375  </tr>
376  <tr>
377  <td class="numLineUnCover">&nbsp;51</td>
378  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
379  <td class="src"><pre class="src">&nbsp;                        result = <span Class="keyword">new</span> Locale(lang);</span></pre></td>
380  </tr>
381  <tr>
382  <td class="numLine">&nbsp;52</td>
383  <td class="nbHits">&nbsp;</td>
384  <td class="src"><pre class="src">&nbsp;                }</pre></td>
385  </tr>
386  <tr>
387  <td class="numLineUnCover">&nbsp;53</td>
388  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
389  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">if</span> (<span Class="keyword">null</span> == result) {</span></pre></td>
390  </tr>
391  <tr>
392  <td class="numLineUnCover">&nbsp;54</td>
393  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
394  <td class="src"><pre class="src">&nbsp;                        result = Locale.getDefault();</span></pre></td>
395  </tr>
396  <tr>
397  <td class="numLine">&nbsp;55</td>
398  <td class="nbHits">&nbsp;</td>
399  <td class="src"><pre class="src">&nbsp;                }</pre></td>
400  </tr>
401  <tr>
402  <td class="numLineUnCover">&nbsp;56</td>
403  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
404  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">return</span> result;</span></pre></td>
405  </tr>
406  <tr>
407  <td class="numLine">&nbsp;57</td>
408  <td class="nbHits">&nbsp;</td>
409  <td class="src"><pre class="src">&nbsp;        }</pre></td>
410  </tr>
411  <tr>
412  <td class="numLine">&nbsp;58</td>
413  <td class="nbHits">&nbsp;</td>
414  <td class="src"><pre class="src">&nbsp;</pre></td>
415  </tr>
416  <tr>
417  <td class="numLine">&nbsp;59</td>
418  <td class="nbHits">&nbsp;</td>
419  <td class="src"><pre class="src">&nbsp;        @Override</pre></td>
420  </tr>
421  <tr>
422  <td class="numLine">&nbsp;60</td>
423  <td class="nbHits">&nbsp;</td>
424  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">public</span> <span Class="keyword">void</span> doGet(HttpServletRequest req, HttpServletResponse res)</pre></td>
425  </tr>
426  <tr>
427  <td class="numLine">&nbsp;61</td>
428  <td class="nbHits">&nbsp;</td>
429  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">throws</span> ServletException, IOException</pre></td>
430  </tr>
431  <tr>
432  <td class="numLine">&nbsp;62</td>
433  <td class="nbHits">&nbsp;</td>
434  <td class="src"><pre class="src">&nbsp;        {</pre></td>
435  </tr>
436  <tr>
437  <td class="numLineUnCover">&nbsp;63<a name="src_63"></a></td>
438  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
439  <td class="src"><pre class="src">&nbsp;                res.setContentType(<span Class="string">"text/html"</span>);</span></pre></td>
440  </tr>
441  <tr>
442  <td class="numLineUnCover">&nbsp;64</td>
443  <td class="nbHits">&nbsp;</td>
444  <td class="src"><pre class="src">&nbsp;                PrintWriter pw = res.getWriter();</pre></td>
445  </tr>
446  <tr>
447  <td class="numLine">&nbsp;65</td>
448  <td class="nbHits">&nbsp;</td>
449  <td class="src"><pre class="src">&nbsp;                </pre></td>
450  </tr>
451  <tr>
452  <td class="numLineUnCover">&nbsp;66</td>
453  <td class="nbHits">&nbsp;</td>
454  <td class="src"><pre class="src">&nbsp;                Locale locale = getLocale(req);</pre></td>
455  </tr>
456  <tr>
457  <td class="numLineUnCover">&nbsp;67</td>
458  <td class="nbHits">&nbsp;</td>
459  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">int</span> stop = getParamInt(req, STOP);</pre></td>
460  </tr>
461  <tr>
462  <td class="numLineUnCover">&nbsp;68</td>
463  <td class="nbHits">&nbsp;</td>
464  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">int</span> route = getParamInt(req, ROUTE);</pre></td>
465  </tr>
466  <tr>
467  <td class="numLine">&nbsp;69</td>
468  <td class="nbHits">&nbsp;</td>
469  <td class="src"><pre class="src">&nbsp;                </pre></td>
470  </tr>
471  <tr>
472  <td class="numLine">&nbsp;70</td>
473  <td class="nbHits">&nbsp;</td>
474  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">try</span> {</pre></td>
475  </tr>
476  <tr>
477  <td class="numLineUnCover">&nbsp;71</td>
478  <td class="nbHits">&nbsp;</td>
479  <td class="src"><pre class="src">&nbsp;                        FileInputStream fis = <span Class="keyword">new</span> FileInputStream(<span Class="string">"apikey.txt"</span>);</pre></td>
480  </tr>
481  <tr>
482  <td class="numLine">&nbsp;72</td>
483  <td class="nbHits">&nbsp;</td>
484  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">try</span> {</pre></td>
485  </tr>
486  <tr>
487  <td class="numLineUnCover">&nbsp;73</td>
488  <td class="nbHits">&nbsp;</td>
489  <td class="src"><pre class="src">&nbsp;                                Server server = <span Class="keyword">new</span> Server(<span Class="string">"192f31d2"</span>, fis);</pre></td>
490  </tr>
491  <tr>
492  <td class="numLineUnCover">&nbsp;74</td>
493  <td class="nbHits">&nbsp;</td>
494  <td class="src"><pre class="src">&nbsp;                                StopInfo stopInfo = <span Class="keyword">null</span>;</pre></td>
495  </tr>
496  <tr>
497  <td class="numLine">&nbsp;75</td>
498  <td class="nbHits">&nbsp;</td>
499  <td class="src"><pre class="src">&nbsp;                                </pre></td>
500  </tr>
501  <tr>
502  <td class="numLineUnCover">&nbsp;76</td>
503  <td class="nbHits">&nbsp;</td>
504  <td class="src"><pre class="src">&nbsp;                                <span Class="keyword">if</span> (0 == route) {</pre></td>
505  </tr>
506  <tr>
507  <td class="numLineUnCover">&nbsp;77</td>
508  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
509  <td class="src"><pre class="src">&nbsp;                                        stopInfo = server.getNextTripsForStopAllRoutes(stop);</span></pre></td>
510  </tr>
511  <tr>
512  <td class="numLine">&nbsp;78</td>
513  <td class="nbHits">&nbsp;</td>
514  <td class="src"><pre class="src">&nbsp;                                }</pre></td>
515  </tr>
516  <tr>
517  <td class="numLine">&nbsp;79</td>
518  <td class="nbHits">&nbsp;</td>
519  <td class="src"><pre class="src">&nbsp;                                <span Class="keyword">else</span> {</pre></td>
520  </tr>
521  <tr>
522  <td class="numLineUnCover">&nbsp;80</td>
523  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
524  <td class="src"><pre class="src">&nbsp;                                        stopInfo = server.getNextTripsForStop(stop, route);</span></pre></td>
525  </tr>
526  <tr>
527  <td class="numLine">&nbsp;81</td>
528  <td class="nbHits">&nbsp;</td>
529  <td class="src"><pre class="src">&nbsp;                                }</pre></td>
530  </tr>
531  <tr>
532  <td class="numLineUnCover">&nbsp;82</td>
533  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
534  <td class="src"><pre class="src">&nbsp;                                Schedule schedule = <span Class="keyword">new</span> Schedule(locale);</span></pre></td>
535  </tr>
536  <tr>
537  <td class="numLine">&nbsp;83</td>
538  <td class="nbHits">&nbsp;</td>
539  <td class="src"><pre class="src">&nbsp;                                </pre></td>
540  </tr>
541  <tr>
542  <td class="numLineUnCover">&nbsp;84</td>
543  <td class="nbHits">&nbsp;</td>
544  <td class="src"><pre class="src">&nbsp;                                schedule.writePage(pw, stopInfo);</pre></td>
545  </tr>
546  <tr>
547  <td class="numLine">&nbsp;85</td>
548  <td class="nbHits">&nbsp;</td>
549  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
550  </tr>
551  <tr>
552  <td class="numLine">&nbsp;86</td>
553  <td class="nbHits">&nbsp;</td>
554  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">finally</span> {</pre></td>
555  </tr>
556  <tr>
557  <td class="numLineUnCover">&nbsp;87</td>
558  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
559  <td class="src"><pre class="src">&nbsp;                                ExceptionUtils.tryClose(fis);</span></pre></td>
560  </tr>
561  <tr>
562  <td class="numLineUnCover">&nbsp;88</td>
563  <td class="nbHits">&nbsp;</td>
564  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
565  </tr>
566  <tr>
567  <td class="numLine">&nbsp;89</td>
568  <td class="nbHits">&nbsp;</td>
569  <td class="src"><pre class="src">&nbsp;                }</pre></td>
570  </tr>
571  <tr>
572  <td class="numLineUnCover">&nbsp;90</td>
573  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
574  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">catch</span> (Throwable t) {</span></pre></td>
575  </tr>
576  <tr>
577  <td class="numLineUnCover">&nbsp;91</td>
578  <td class="nbHits">&nbsp;</td>
579  <td class="src"><pre class="src">&nbsp;                        writeErrorPage(pw, t, locale);</pre></td>
580  </tr>
581  <tr>
582  <td class="numLineUnCover">&nbsp;92</td>
583  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
584  <td class="src"><pre class="src">&nbsp;                }</span></pre></td>
585  </tr>
586  <tr>
587  <td class="numLineUnCover">&nbsp;93</td>
588  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
589  <td class="src"><pre class="src">&nbsp;        }</span></pre></td>
590  </tr>
591  <tr>
592  <td class="numLine">&nbsp;94</td>
593  <td class="nbHits">&nbsp;</td>
594  <td class="src"><pre class="src">&nbsp;        </pre></td>
595  </tr>
596  <tr>
597  <td class="numLine">&nbsp;95</td>
598  <td class="nbHits">&nbsp;</td>
599  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">void</span> writeErrorPage(PrintWriter pw, Throwable t, Locale locale) {</pre></td>
600  </tr>
601  <tr>
602  <td class="numLineCover">&nbsp;96<a name="src_96"></a></td>
603  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
604  <td class="src"><pre class="src">&nbsp;                ByteArrayOutputStream baos = <span Class="keyword">new</span> ByteArrayOutputStream();</span></pre></td>
605  </tr>
606  <tr>
607  <td class="numLineCover">&nbsp;97</td>
608  <td class="nbHits">&nbsp;</td>
609  <td class="src"><pre class="src">&nbsp;                PrintStream ps = <span Class="keyword">new</span> PrintStream(baos);</pre></td>
610  </tr>
611  <tr>
612  <td class="numLineCover">&nbsp;98</td>
613  <td class="nbHits">&nbsp;</td>
614  <td class="src"><pre class="src">&nbsp;                FrankBundle bundle = FrankBundle.getInst(locale);</pre></td>
615  </tr>
616  <tr>
617  <td class="numLine">&nbsp;99</td>
618  <td class="nbHits">&nbsp;</td>
619  <td class="src"><pre class="src">&nbsp;                </pre></td>
620  </tr>
621  <tr>
622  <td class="numLineCover">&nbsp;100</td>
623  <td class="nbHits">&nbsp;</td>
624  <td class="src"><pre class="src">&nbsp;                pw.println(<span Class="string">"&#60;HTML&#62;&#60;HEAD&#62;&#60;TITLE&#62;"</span> + </pre></td>
625  </tr>
626  <tr>
627  <td class="numLine">&nbsp;101</td>
628  <td class="nbHits">&nbsp;</td>
629  <td class="src"><pre class="src">&nbsp;                                bundle.get(FrankBundle.FRANK) + <span Class="string">": "</span> +</pre></td>
630  </tr>
631  <tr>
632  <td class="numLine">&nbsp;102</td>
633  <td class="nbHits">&nbsp;</td>
634  <td class="src"><pre class="src">&nbsp;                                bundle.get(FrankBundle.ERROR_PAGE) + </pre></td>
635  </tr>
636  <tr>
637  <td class="numLine">&nbsp;103</td>
638  <td class="nbHits">&nbsp;</td>
639  <td class="src"><pre class="src">&nbsp;                                <span Class="string">"&#60;/TITLE&#62;&#60;/HEAD&#62;"</span>);</pre></td>
640  </tr>
641  <tr>
642  <td class="numLineCover">&nbsp;104</td>
643  <td class="nbHits">&nbsp;</td>
644  <td class="src"><pre class="src">&nbsp;                pw.println(<span Class="string">"&#60;BODY&#62;&#60;H1&#62;"</span> +</pre></td>
645  </tr>
646  <tr>
647  <td class="numLine">&nbsp;105</td>
648  <td class="nbHits">&nbsp;</td>
649  <td class="src"><pre class="src">&nbsp;                                bundle.get(FrankBundle.FRANK) + <span Class="string">": "</span> +</pre></td>
650  </tr>
651  <tr>
652  <td class="numLine">&nbsp;106</td>
653  <td class="nbHits">&nbsp;</td>
654  <td class="src"><pre class="src">&nbsp;                                bundle.get(FrankBundle.UNEXPECTED_ERROR) + </pre></td>
655  </tr>
656  <tr>
657  <td class="numLine">&nbsp;107</td>
658  <td class="nbHits">&nbsp;</td>
659  <td class="src"><pre class="src">&nbsp;                                <span Class="string">"&#60;/H1&#62;&#60;P&#62;&#60;PRE&#62;"</span>);</pre></td>
660  </tr>
661  <tr>
662  <td class="numLine">&nbsp;108</td>
663  <td class="nbHits">&nbsp;</td>
664  <td class="src"><pre class="src">&nbsp;</pre></td>
665  </tr>
666  <tr>
667  <td class="numLine">&nbsp;109</td>
668  <td class="nbHits">&nbsp;</td>
669  <td class="src"><pre class="src">&nbsp;                <span Class="comment">// Note that, if we cared about security, we would log this stack trace to a</span></pre></td>
670  </tr>
671  <tr>
672  <td class="numLine">&nbsp;110</td>
673  <td class="nbHits">&nbsp;</td>
674  <td class="src"><pre class="src">&nbsp;                <span Class="comment">// server log, and only report a cross-reference to the log file back to the </span></pre></td>
675  </tr>
676  <tr>
677  <td class="numLine">&nbsp;111</td>
678  <td class="nbHits">&nbsp;</td>
679  <td class="src"><pre class="src">&nbsp;                <span Class="comment">// end user's browser, to avoid potentially exposing internal info that we </span></pre></td>
680  </tr>
681  <tr>
682  <td class="numLine">&nbsp;112</td>
683  <td class="nbHits">&nbsp;</td>
684  <td class="src"><pre class="src">&nbsp;                <span Class="comment">// don't want to share.</span></pre></td>
685  </tr>
686  <tr>
687  <td class="numLine">&nbsp;113</td>
688  <td class="nbHits">&nbsp;</td>
689  <td class="src"><pre class="src">&nbsp;                <span Class="comment">// At least at this point, we don't care (that much), and trade off a </span></pre></td>
690  </tr>
691  <tr>
692  <td class="numLine">&nbsp;114</td>
693  <td class="nbHits">&nbsp;</td>
694  <td class="src"><pre class="src">&nbsp;                <span Class="comment">// potential information leak in favour of reducing our code complexity</span></pre></td>
695  </tr>
696  <tr>
697  <td class="numLine">&nbsp;115</td>
698  <td class="nbHits">&nbsp;</td>
699  <td class="src"><pre class="src">&nbsp;                <span Class="comment">// and the administrator's workload.</span></pre></td>
700  </tr>
701  <tr>
702  <td class="numLineCover">&nbsp;116</td>
703  <td class="nbHits">&nbsp;</td>
704  <td class="src"><pre class="src">&nbsp;                t.printStackTrace(ps);</pre></td>
705  </tr>
706  <tr>
707  <td class="numLineCover">&nbsp;117</td>
708  <td class="nbHits">&nbsp;</td>
709  <td class="src"><pre class="src">&nbsp;                String stackTrace = baos.toString(); </pre></td>
710  </tr>
711  <tr>
712  <td class="numLineCover">&nbsp;118</td>
713  <td class="nbHits">&nbsp;</td>
714  <td class="src"><pre class="src">&nbsp;                pw.println(stackTrace);</pre></td>
715  </tr>
716  <tr>
717  <td class="numLine">&nbsp;119</td>
718  <td class="nbHits">&nbsp;</td>
719  <td class="src"><pre class="src">&nbsp;                                </pre></td>
720  </tr>
721  <tr>
722  <td class="numLineCover">&nbsp;120</td>
723  <td class="nbHits">&nbsp;</td>
724  <td class="src"><pre class="src">&nbsp;                pw.println(<span Class="string">"&#60;/PRE&#62;&#60;/P&#62;&#60;/BODY&#62;"</span>);</pre></td>
725  </tr>
726  <tr>
727  <td class="numLineCover">&nbsp;121</td>
728  <td class="nbHits">&nbsp;</td>
729  <td class="src"><pre class="src">&nbsp;                pw.println(<span Class="string">"&#60;/HTML&#62;"</span>);</pre></td>
730  </tr>
731  <tr>
732  <td class="numLineCover">&nbsp;122</td>
733  <td class="nbHits">&nbsp;</td>
734  <td class="src"><pre class="src">&nbsp;        }</pre></td>
735  </tr>
736  <tr>
737  <td class="numLine">&nbsp;123</td>
738  <td class="nbHits">&nbsp;</td>
739  <td class="src"><pre class="src">&nbsp;        </pre></td>
740  </tr>
741  <tr>
742  <td class="numLine">&nbsp;124</td>
743  <td class="nbHits">&nbsp;</td>
744  <td class="src"><pre class="src">&nbsp;</pre></td>
745  </tr>
746  <tr>
747  <td class="numLine">&nbsp;125</td>
748  <td class="nbHits">&nbsp;</td>
749  <td class="src"><pre class="src">&nbsp;}</pre></td>
750  </tr>
751  </table>
752 <p>
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>
754 </body>
755 </html>