7dcf324286bfc9ab7eb8569baec4ad7506044c82
[frank.git] / report / net / jaekl / qd / http / RequestBroker.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/qd/http/RequestBroker.html" target="_top">Frames</a>
57 <a href="RequestBroker.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.qd.http.RequestBroker</span></td>
72  <td class="reportValue"><table class="percentGraph" cellpadding="0" cellspacing="0" align="right"><tr><td><span class="text"><b>83</b>%(5/6)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width="  83"></td><td class="percentUnCovered" width="17.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>50</b>%(14/28)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width="  50"></td><td class="percentUnCovered" width="50.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>40</b>%(4/10)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width="  40"></td><td class="percentUnCovered" width="60.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>53</b>%(31/58)</span></td><td><table class="percentGraph" cellpadding="0" cellspacing="0"><tr><td class="percentCovered" width="  53"></td><td class="percentUnCovered" width="47.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">1</span></td>
89  <td class="reportText"><span class="text"><a href="#src_31">&lt;clinit&gt;</a></span></td>
90  <td class="reportText"><span class="text">[static]</span></td>
91  <td class="reportText"><span class="text">void &lt;clinit&gt;()</span></td>
92  </tr>
93  <tr class="report">
94  <td class="reportValue_covered"><span class="text">9</span></td>
95  <td class="reportText"><span class="text"><a href="#src_40">&lt;init&gt;</a></span></td>
96  <td class="reportText"><span class="text">[public]</span></td>
97  <td class="reportText"><span class="text">void &lt;init&gt;(java.lang.String,java.util.ArrayList)</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_49">doSubmit</a></span></td>
102  <td class="reportText"><span class="text">[]</span></td>
103  <td class="reportText"><span class="text">java.io.InputStream doSubmit(java.lang.String,java.util.ArrayList)</span></td>
104  </tr>
105  <tr class="report">
106  <td class="reportValue_covered"><span class="text">1</span></td>
107  <td class="reportText"><span class="text"><a href="#src_84">submit</a></span></td>
108  <td class="reportText"><span class="text">[public]</span></td>
109  <td class="reportText"><span class="text">java.lang.String submit(java.lang.String,java.util.ArrayList)</span></td>
110  </tr>
111  <tr class="report">
112  <td class="reportValue_covered"><span class="text">5</span></td>
113  <td class="reportText"><span class="text"><a href="#src_111">submitAndParse</a></span></td>
114  <td class="reportText"><span class="text">[public]</span></td>
115  <td class="reportText"><span class="text">net.jaekl.qd.xml.ParseResult submitAndParse(java.lang.String,java.util.ArrayList,java.lang.Class)</span></td>
116  </tr>
117  <tr class="report">
118  <td class="reportValue_covered"><span class="text">4</span></td>
119  <td class="reportText"><span class="text"><a href="#src_120">submitAndParse</a></span></td>
120  <td class="reportText"><span class="text">[public]</span></td>
121  <td class="reportText"><span class="text">net.jaekl.qd.xml.ParseResult submitAndParse(java.lang.String,java.util.ArrayList,java.lang.Class,java.lang.String)</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="comment">// Copyright (C) 2004, 2014 Christian Jaekl</span></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">package</span> net.jaekl.qd.http;</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;</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.BufferedReader;</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.IOException;</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.InputStream;</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.io.InputStreamReader;</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;<span Class="keyword">import</span> java.io.UnsupportedEncodingException;</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> java.lang.reflect.InvocationTargetException;</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> java.util.ArrayList;</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;</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> net.jaekl.qd.QDException;</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;<span Class="keyword">import</span> net.jaekl.qd.util.ExceptionUtils;</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.qd.xml.ParseHandler;</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.qd.xml.ParseResult;</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;</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;<span Class="keyword">import</span> org.apache.http.HttpEntity;</pre></td>
215  </tr>
216  <tr>
217  <td class="numLine">&nbsp;19</td>
218  <td class="nbHits">&nbsp;</td>
219  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> org.apache.http.HttpResponse;</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">import</span> org.apache.http.NameValuePair;</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;<span Class="keyword">import</span> org.apache.http.client.HttpClient;</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">import</span> org.apache.http.client.config.RequestConfig;</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">import</span> org.apache.http.client.entity.UrlEncodedFormEntity;</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">import</span> org.apache.http.client.methods.HttpPost;</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">import</span> org.apache.http.impl.client.HttpClientBuilder;</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;<span Class="keyword">import</span> org.xml.sax.InputSource;</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">import</span> org.xml.sax.SAXException;</pre></td>
260  </tr>
261  <tr>
262  <td class="numLine">&nbsp;28</td>
263  <td class="nbHits">&nbsp;</td>
264  <td class="src"><pre class="src">&nbsp;<span Class="keyword">import</span> org.xml.sax.XMLReader;</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">import</span> org.xml.sax.helpers.XMLReaderFactory;</pre></td>
270  </tr>
271  <tr>
272  <td class="numLine">&nbsp;30</td>
273  <td class="nbHits">&nbsp;</td>
274  <td class="src"><pre class="src">&nbsp;</pre></td>
275  </tr>
276  <tr>
277  <td class="numLineCover">&nbsp;31<a name="src_31"></a></td>
278  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
279  <td class="src"><pre class="src">&nbsp;<span Class="keyword">public</span> <span Class="keyword">class</span> RequestBroker</span></pre></td>
280  </tr>
281  <tr>
282  <td class="numLine">&nbsp;32</td>
283  <td class="nbHits">&nbsp;</td>
284  <td class="src"><pre class="src">&nbsp;{</pre></td>
285  </tr>
286  <tr>
287  <td class="numLineCover">&nbsp;33</td>
288  <td class="nbHits">&nbsp;</td>
289  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">final</span> String UTF_8 = <span Class="string">"UTF-8"</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">final</span> <span Class="keyword">int</span> TIMEOUT_MSEC = 5000;        <span Class="comment">// Allow at most 5 seconds before we declare the server to be unresponsive</span></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;        String m_gatewayUrl;</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;        ArrayList&#60;NameValuePair&#62; m_baseParams;</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;</pre></td>
315  </tr>
316  <tr>
317  <td class="numLine">&nbsp;39</td>
318  <td class="nbHits">&nbsp;</td>
319  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">public</span> RequestBroker(String gatewayUrl, ArrayList&#60;NameValuePair&#62; baseParams)</pre></td>
320  </tr>
321  <tr>
322  <td class="numLineCover">&nbsp;40<a name="src_40"></a></td>
323  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
324  <td class="src"><pre class="src">&nbsp;        {</span></pre></td>
325  </tr>
326  <tr>
327  <td class="numLineCover">&nbsp;41</td>
328  <td class="nbHits">&nbsp;</td>
329  <td class="src"><pre class="src">&nbsp;                m_gatewayUrl = gatewayUrl;</pre></td>
330  </tr>
331  <tr>
332  <td class="numLineCover">&nbsp;42</td>
333  <td class="nbHits">&nbsp;</td>
334  <td class="src"><pre class="src">&nbsp;                m_baseParams = <span Class="keyword">new</span> ArrayList&#60;NameValuePair&#62;(baseParams);</pre></td>
335  </tr>
336  <tr>
337  <td class="numLineCover">&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="numLine">&nbsp;44</td>
343  <td class="nbHits">&nbsp;</td>
344  <td class="src"><pre class="src">&nbsp;        </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;        <span Class="comment">// NB:  Caller is responsible for close()ing the returned InputStream</span></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;        <span Class="comment">//</span></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;        InputStream doSubmit(String method, ArrayList&#60;NameValuePair&#62; passedParams) <span Class="keyword">throws</span> QDException</pre></td>
360  </tr>
361  <tr>
362  <td class="numLine">&nbsp;48</td>
363  <td class="nbHits">&nbsp;</td>
364  <td class="src"><pre class="src">&nbsp;        {</pre></td>
365  </tr>
366  <tr>
367  <td class="numLineUnCover">&nbsp;49<a name="src_49"></a></td>
368  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
369  <td class="src"><pre class="src">&nbsp;                ArrayList&#60;NameValuePair&#62; params = <span Class="keyword">new</span> ArrayList&#60;NameValuePair&#62;(m_baseParams);</span></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;                params.addAll(passedParams);</pre></td>
375  </tr>
376  <tr>
377  <td class="numLine">&nbsp;51</td>
378  <td class="nbHits">&nbsp;</td>
379  <td class="src"><pre class="src">&nbsp;                </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;                <span Class="keyword">try</span> {</pre></td>
385  </tr>
386  <tr>
387  <td class="numLineUnCover">&nbsp;53</td>
388  <td class="nbHits">&nbsp;</td>
389  <td class="src"><pre class="src">&nbsp;                        RequestConfig.Builder requestBuilder = RequestConfig.custom();</pre></td>
390  </tr>
391  <tr>
392  <td class="numLineUnCover">&nbsp;54</td>
393  <td class="nbHits">&nbsp;</td>
394  <td class="src"><pre class="src">&nbsp;                        requestBuilder = requestBuilder.setConnectTimeout(TIMEOUT_MSEC);</pre></td>
395  </tr>
396  <tr>
397  <td class="numLineUnCover">&nbsp;55</td>
398  <td class="nbHits">&nbsp;</td>
399  <td class="src"><pre class="src">&nbsp;                        requestBuilder = requestBuilder.setSocketTimeout(TIMEOUT_MSEC);</pre></td>
400  </tr>
401  <tr>
402  <td class="numLineUnCover">&nbsp;56</td>
403  <td class="nbHits">&nbsp;</td>
404  <td class="src"><pre class="src">&nbsp;                        HttpClientBuilder builder = HttpClientBuilder.create();</pre></td>
405  </tr>
406  <tr>
407  <td class="numLineUnCover">&nbsp;57</td>
408  <td class="nbHits">&nbsp;</td>
409  <td class="src"><pre class="src">&nbsp;                        builder.setDefaultRequestConfig(requestBuilder.build());</pre></td>
410  </tr>
411  <tr>
412  <td class="numLineUnCover">&nbsp;58</td>
413  <td class="nbHits">&nbsp;</td>
414  <td class="src"><pre class="src">&nbsp;                        HttpClient httpClient = builder.build(); </pre></td>
415  </tr>
416  <tr>
417  <td class="numLineUnCover">&nbsp;59</td>
418  <td class="nbHits">&nbsp;</td>
419  <td class="src"><pre class="src">&nbsp;                        HttpPost httpPost = <span Class="keyword">new</span> HttpPost(m_gatewayUrl + <span Class="string">"/"</span> + method + <span Class="string">"/"</span>);</pre></td>
420  </tr>
421  <tr>
422  <td class="numLineUnCover">&nbsp;60</td>
423  <td class="nbHits">&nbsp;</td>
424  <td class="src"><pre class="src">&nbsp;                        httpPost.setEntity(<span Class="keyword">new</span> UrlEncodedFormEntity(params, UTF_8));</pre></td>
425  </tr>
426  <tr>
427  <td class="numLineUnCover">&nbsp;61</td>
428  <td class="nbHits">&nbsp;</td>
429  <td class="src"><pre class="src">&nbsp;                        HttpResponse response = httpClient.execute(httpPost);</pre></td>
430  </tr>
431  <tr>
432  <td class="numLineUnCover">&nbsp;62</td>
433  <td class="nbHits">&nbsp;</td>
434  <td class="src"><pre class="src">&nbsp;                        HttpEntity entity = response.getEntity();</pre></td>
435  </tr>
436  <tr>
437  <td class="numLine">&nbsp;63</td>
438  <td class="nbHits">&nbsp;</td>
439  <td class="src"><pre class="src">&nbsp;</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;                        <span Class="keyword">if</span> (<span Class="keyword">null</span> != entity) {</pre></td>
445  </tr>
446  <tr>
447  <td class="numLineUnCover">&nbsp;65</td>
448  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
449  <td class="src"><pre class="src">&nbsp;                                InputStream is = entity.getContent();</span></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;                                <span Class="keyword">return</span> is;</pre></td>
455  </tr>
456  <tr>
457  <td class="numLine">&nbsp;67</td>
458  <td class="nbHits">&nbsp;</td>
459  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
460  </tr>
461  <tr>
462  <td class="numLine">&nbsp;68</td>
463  <td class="nbHits">&nbsp;</td>
464  <td class="src"><pre class="src">&nbsp;                }</pre></td>
465  </tr>
466  <tr>
467  <td class="numLineUnCover">&nbsp;69</td>
468  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
469  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">catch</span> (UnsupportedEncodingException uee) {</span></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="comment">// We should actually be guaranteed that this never happens, </span></pre></td>
475  </tr>
476  <tr>
477  <td class="numLine">&nbsp;71</td>
478  <td class="nbHits">&nbsp;</td>
479  <td class="src"><pre class="src">&nbsp;                        <span Class="comment">// because all JVMs are required to support UTF-8</span></pre></td>
480  </tr>
481  <tr>
482  <td class="numLineUnCover">&nbsp;72</td>
483  <td class="nbHits">&nbsp;</td>
484  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">assert</span>(<span Class="keyword">false</span>);</pre></td>
485  </tr>
486  <tr>
487  <td class="numLineUnCover">&nbsp;73</td>
488  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
489  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">throw</span> <span Class="keyword">new</span> Error(uee);</span></pre></td>
490  </tr>
491  <tr>
492  <td class="numLine">&nbsp;74</td>
493  <td class="nbHits">&nbsp;</td>
494  <td class="src"><pre class="src">&nbsp;                }</pre></td>
495  </tr>
496  <tr>
497  <td class="numLineUnCover">&nbsp;75</td>
498  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
499  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">catch</span> (IOException ioe) {</span></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">throw</span> <span Class="keyword">new</span> QDException(ioe);</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;                }</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="numLineUnCover">&nbsp;79</td>
518  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
519  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">return</span> <span Class="keyword">null</span>;</span></pre></td>
520  </tr>
521  <tr>
522  <td class="numLine">&nbsp;80</td>
523  <td class="nbHits">&nbsp;</td>
524  <td class="src"><pre class="src">&nbsp;        }</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="numLine">&nbsp;82</td>
533  <td class="nbHits">&nbsp;</td>
534  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">public</span> String submit(String method, ArrayList&#60;NameValuePair&#62; passedParams) <span Class="keyword">throws</span> QDException</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="numLineCover">&nbsp;84<a name="src_84"></a></td>
543  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
544  <td class="src"><pre class="src">&nbsp;                StringBuilder sb = <span Class="keyword">new</span> StringBuilder();</span></pre></td>
545  </tr>
546  <tr>
547  <td class="numLineCover">&nbsp;85</td>
548  <td class="nbHits">&nbsp;</td>
549  <td class="src"><pre class="src">&nbsp;                InputStream is = <span Class="keyword">null</span>;</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;</pre></td>
555  </tr>
556  <tr>
557  <td class="numLine">&nbsp;87</td>
558  <td class="nbHits">&nbsp;</td>
559  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">try</span> {</pre></td>
560  </tr>
561  <tr>
562  <td class="numLineCover">&nbsp;88</td>
563  <td class="nbHits">&nbsp;</td>
564  <td class="src"><pre class="src">&nbsp;                        is = doSubmit(method, passedParams);</pre></td>
565  </tr>
566  <tr>
567  <td class="numLineCover">&nbsp;89</td>
568  <td class="nbHits">&nbsp;</td>
569  <td class="src"><pre class="src">&nbsp;                        BufferedReader br = <span Class="keyword">new</span> BufferedReader(<span Class="keyword">new</span> InputStreamReader(is));</pre></td>
570  </tr>
571  <tr>
572  <td class="numLineCover">&nbsp;90</td>
573  <td class="nbHits">&nbsp;</td>
574  <td class="src"><pre class="src">&nbsp;                        String line = br.readLine();</pre></td>
575  </tr>
576  <tr>
577  <td class="numLineCover">&nbsp;91</td>
578  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
579  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">while</span> (<span Class="keyword">null</span> != line) {</span></pre></td>
580  </tr>
581  <tr>
582  <td class="numLineCover">&nbsp;92</td>
583  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;Branch:&nbsp;1/1&nbsp;</td>
584  <td class="src"><pre class="src">&nbsp;                                sb.append(line).append(<span Class="string">"\n"</span>);</span></pre></td>
585  </tr>
586  <tr>
587  <td class="numLineCover">&nbsp;93</td>
588  <td class="nbHits">&nbsp;</td>
589  <td class="src"><pre class="src">&nbsp;                                line = br.readLine();</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;                }</pre></td>
600  </tr>
601  <tr>
602  <td class="numLineUnCover">&nbsp;96</td>
603  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
604  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">catch</span> (IOException ioe) {</span></pre></td>
605  </tr>
606  <tr>
607  <td class="numLineUnCover">&nbsp;97</td>
608  <td class="nbHits">&nbsp;</td>
609  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">throw</span> <span Class="keyword">new</span> QDException(ioe);</pre></td>
610  </tr>
611  <tr>
612  <td class="numLine">&nbsp;98</td>
613  <td class="nbHits">&nbsp;</td>
614  <td class="src"><pre class="src">&nbsp;                }</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;                <span Class="keyword">finally</span> {</pre></td>
620  </tr>
621  <tr>
622  <td class="numLineCover">&nbsp;100</td>
623  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;1/2&nbsp;Branch:&nbsp;1/1&nbsp;</td>
624  <td class="src"><pre class="src">&nbsp;                        ExceptionUtils.tryClose(is);</span></pre></td>
625  </tr>
626  <tr>
627  <td class="numLineCover">&nbsp;101</td>
628  <td class="nbHits">&nbsp;</td>
629  <td class="src"><pre class="src">&nbsp;                }</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;</pre></td>
635  </tr>
636  <tr>
637  <td class="numLineCover">&nbsp;103</td>
638  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
639  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">return</span> sb.toString();</span></pre></td>
640  </tr>
641  <tr>
642  <td class="numLine">&nbsp;104</td>
643  <td class="nbHits">&nbsp;</td>
644  <td class="src"><pre class="src">&nbsp;        }</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;        </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;        <span Class="keyword">public</span> ParseResult submitAndParse(String method, </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;                          ArrayList&#60;NameValuePair&#62; passedParams, </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;                          Class&#60;? <span Class="keyword">extends</span> ParseResult&#62; rootParserClass)</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="keyword">throws</span> QDException</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;        {</pre></td>
675  </tr>
676  <tr>
677  <td class="numLineCover">&nbsp;111<a name="src_111"></a></td>
678  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
679  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">return</span> submitAndParse(method, passedParams, rootParserClass, <span Class="keyword">null</span>);</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;        }</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;        </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="keyword">public</span> ParseResult submitAndParse(String method, </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;                                                                          ArrayList&#60;NameValuePair&#62; passedParams, </pre></td>
700  </tr>
701  <tr>
702  <td class="numLine">&nbsp;116</td>
703  <td class="nbHits">&nbsp;</td>
704  <td class="src"><pre class="src">&nbsp;                                                                          Class&#60;? <span Class="keyword">extends</span> ParseResult&#62; rootParserClass,</pre></td>
705  </tr>
706  <tr>
707  <td class="numLine">&nbsp;117</td>
708  <td class="nbHits">&nbsp;</td>
709  <td class="src"><pre class="src">&nbsp;                                                                          String rootTagName)</pre></td>
710  </tr>
711  <tr>
712  <td class="numLine">&nbsp;118</td>
713  <td class="nbHits">&nbsp;</td>
714  <td class="src"><pre class="src">&nbsp;        <span Class="keyword">throws</span> QDException</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<a name="src_120"></a></td>
723  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
724  <td class="src"><pre class="src">&nbsp;                ParseResult result = <span Class="keyword">null</span>;</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;                InputStream is = <span Class="keyword">null</span>;</pre></td>
730  </tr>
731  <tr>
732  <td class="numLine">&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;                <span Class="keyword">try</span> {</pre></td>
740  </tr>
741  <tr>
742  <td class="numLineCover">&nbsp;124</td>
743  <td class="nbHits">&nbsp;</td>
744  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">if</span> (<span Class="keyword">null</span> == rootTagName) {</pre></td>
745  </tr>
746  <tr>
747  <td class="numLineCover">&nbsp;125</td>
748  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;Branch:&nbsp;1/1&nbsp;</td>
749  <td class="src"><pre class="src">&nbsp;                                result = (ParseResult) rootParserClass.newInstance();</span></pre></td>
750  </tr>
751  <tr>
752  <td class="numLine">&nbsp;126</td>
753  <td class="nbHits">&nbsp;</td>
754  <td class="src"><pre class="src">&nbsp;                        } </pre></td>
755  </tr>
756  <tr>
757  <td class="numLine">&nbsp;127</td>
758  <td class="nbHits">&nbsp;</td>
759  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">else</span> {</pre></td>
760  </tr>
761  <tr>
762  <td class="numLineUnCover">&nbsp;128</td>
763  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;Branch:&nbsp;0/1&nbsp;</td>
764  <td class="src"><pre class="src">&nbsp;                                result = (ParseResult) rootParserClass.getDeclaredConstructor(String.<span Class="keyword">class</span>).newInstance(rootTagName);</span></pre></td>
765  </tr>
766  <tr>
767  <td class="numLine">&nbsp;129</td>
768  <td class="nbHits">&nbsp;</td>
769  <td class="src"><pre class="src">&nbsp;                        }</pre></td>
770  </tr>
771  <tr>
772  <td class="numLineCover">&nbsp;130</td>
773  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
774  <td class="src"><pre class="src">&nbsp;                        is = doSubmit(method, passedParams);</span></pre></td>
775  </tr>
776  <tr>
777  <td class="numLineCover">&nbsp;131</td>
778  <td class="nbHits">&nbsp;</td>
779  <td class="src"><pre class="src">&nbsp;                        XMLReader reader = XMLReaderFactory.createXMLReader();</pre></td>
780  </tr>
781  <tr>
782  <td class="numLineCover">&nbsp;132</td>
783  <td class="nbHits">&nbsp;</td>
784  <td class="src"><pre class="src">&nbsp;                        ParseHandler ph = <span Class="keyword">new</span> ParseHandler(result);</pre></td>
785  </tr>
786  <tr>
787  <td class="numLineCover">&nbsp;133</td>
788  <td class="nbHits">&nbsp;</td>
789  <td class="src"><pre class="src">&nbsp;                        reader.setContentHandler(ph);</pre></td>
790  </tr>
791  <tr>
792  <td class="numLineCover">&nbsp;134</td>
793  <td class="nbHits">&nbsp;</td>
794  <td class="src"><pre class="src">&nbsp;                        reader.parse(<span Class="keyword">new</span> InputSource(is));</pre></td>
795  </tr>
796  <tr>
797  <td class="numLine">&nbsp;135</td>
798  <td class="nbHits">&nbsp;</td>
799  <td class="src"><pre class="src">&nbsp;                } </pre></td>
800  </tr>
801  <tr>
802  <td class="numLineUnCover">&nbsp;136</td>
803  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
804  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">catch</span> ( InstantiationException</span></pre></td>
805  </tr>
806  <tr>
807  <td class="numLine">&nbsp;137</td>
808  <td class="nbHits">&nbsp;</td>
809  <td class="src"><pre class="src">&nbsp;                                | InvocationTargetException</pre></td>
810  </tr>
811  <tr>
812  <td class="numLine">&nbsp;138</td>
813  <td class="nbHits">&nbsp;</td>
814  <td class="src"><pre class="src">&nbsp;                                | IllegalAccessException</pre></td>
815  </tr>
816  <tr>
817  <td class="numLine">&nbsp;139</td>
818  <td class="nbHits">&nbsp;</td>
819  <td class="src"><pre class="src">&nbsp;                                | IOException </pre></td>
820  </tr>
821  <tr>
822  <td class="numLine">&nbsp;140</td>
823  <td class="nbHits">&nbsp;</td>
824  <td class="src"><pre class="src">&nbsp;                                | NoSuchMethodException</pre></td>
825  </tr>
826  <tr>
827  <td class="numLine">&nbsp;141</td>
828  <td class="nbHits">&nbsp;</td>
829  <td class="src"><pre class="src">&nbsp;                                | SAXException </pre></td>
830  </tr>
831  <tr>
832  <td class="numLine">&nbsp;142</td>
833  <td class="nbHits">&nbsp;</td>
834  <td class="src"><pre class="src">&nbsp;                                e )</pre></td>
835  </tr>
836  <tr>
837  <td class="numLine">&nbsp;143</td>
838  <td class="nbHits">&nbsp;</td>
839  <td class="src"><pre class="src">&nbsp;                {</pre></td>
840  </tr>
841  <tr>
842  <td class="numLineUnCover">&nbsp;144</td>
843  <td class="nbHits">&nbsp;</td>
844  <td class="src"><pre class="src">&nbsp;                        <span Class="keyword">throw</span> <span Class="keyword">new</span> QDException(e);</pre></td>
845  </tr>
846  <tr>
847  <td class="numLine">&nbsp;145</td>
848  <td class="nbHits">&nbsp;</td>
849  <td class="src"><pre class="src">&nbsp;                } </pre></td>
850  </tr>
851  <tr>
852  <td class="numLine">&nbsp;146</td>
853  <td class="nbHits">&nbsp;</td>
854  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">finally</span> {</pre></td>
855  </tr>
856  <tr>
857  <td class="numLineCover">&nbsp;147</td>
858  <td class="nbHitsUncovered">&nbsp;Block:&nbsp;0/1&nbsp;</td>
859  <td class="src"><pre class="src">&nbsp;                        ExceptionUtils.tryClose(is);</span></pre></td>
860  </tr>
861  <tr>
862  <td class="numLineCover">&nbsp;148</td>
863  <td class="nbHits">&nbsp;</td>
864  <td class="src"><pre class="src">&nbsp;                }</pre></td>
865  </tr>
866  <tr>
867  <td class="numLine">&nbsp;149</td>
868  <td class="nbHits">&nbsp;</td>
869  <td class="src"><pre class="src">&nbsp;                </pre></td>
870  </tr>
871  <tr>
872  <td class="numLineCover">&nbsp;150</td>
873  <td class="nbHitsCovered">&nbsp;Block:&nbsp;1/1&nbsp;</td>
874  <td class="src"><pre class="src">&nbsp;                <span Class="keyword">return</span> result;</span></pre></td>
875  </tr>
876  <tr>
877  <td class="numLine">&nbsp;151</td>
878  <td class="nbHits">&nbsp;</td>
879  <td class="src"><pre class="src">&nbsp;        }</pre></td>
880  </tr>
881  <tr>
882  <td class="numLine">&nbsp;152</td>
883  <td class="nbHits">&nbsp;</td>
884  <td class="src"><pre class="src">&nbsp;}</pre></td>
885  </tr>
886  </table>
887 <p>
888 <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>
889 </body>
890 </html>