You are viewing a plain text version of this content. The canonical link for it is here.
Posted to site-dev@james.apache.org by rd...@apache.org on 2009/05/15 18:16:04 UTC

svn commit: r775214 [20/35] - in /james/site/trunk/www/mpt: ./ antlib/ antlib/emma/ antlib/emma/_files/ antlib/xref-test/ antlib/xref-test/org/apache/james/mpt/ant/ antlib/xref/ antlib/xref/org/apache/james/mpt/ant/ apidocs/ apidocs/org/apache/james/mp...

Modified: james/site/trunk/www/mpt/main/emma/_files/5.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/mpt/main/emma/_files/5.html?rev=775214&r1=775213&r2=775214&view=diff
==============================================================================
--- james/site/trunk/www/mpt/main/emma/_files/5.html (original)
+++ james/site/trunk/www/mpt/main/emma/_files/5.html Fri May 15 16:15:57 2009
@@ -1 +1 @@
-<HTML><HEAD><META CONTENT="text/html; charset=UTF-8" HTTP-EQUIV="Content-Type"/><TITLE>EMMA Coverage Report</TITLE><STYLE TYPE="text/css"> TABLE,TD,TH {border-style:solid; border-color:black;} TD,TH {background:white;margin:0;line-height:100%;padding-left:0.5em;padding-right:0.5em;} TD {border-width:0 1px 0 0;} TH {border-width:1px 1px 1px 0;} TR TD.h {color:red;} TABLE {border-spacing:0; border-collapse:collapse;border-width:0 0 1px 1px;} P,H1,H2,H3,TH {font-family:verdana,arial,sans-serif;font-size:10pt;} TD {font-family:courier,monospace;font-size:10pt;} TABLE.hdft {border-spacing:0;border-collapse:collapse;border-style:none;} TABLE.hdft TH,TABLE.hdft TD {border-style:none;line-height:normal;} TABLE.hdft TH.tl,TABLE.hdft TD.tl {background:#6699CC;color:white;} TABLE.hdft TD.nv {background:#6633DD;color:white;} .nv A:link {color:white;} .nv A:visited {color:white;} .nv A:active {color:yellow;} TABLE.hdft A:link {color:white;} TABLE.hdft A:visited {color:white;} TABLE.hdft 
 A:active {color:yellow;} .in {color:#356085;} TABLE.s TD {padding-left:0.25em;padding-right:0.25em;} TABLE.s TD.l {padding-left:0.25em;padding-right:0.25em;text-align:right;background:#F0F0F0;} TABLE.s TR.z TD {background:#FF9999;} TABLE.s TR.p TD {background:#FFFF88;} TABLE.s TR.c TD {background:#CCFFCC;} A:link {color:#0000EE;text-decoration:none;} A:visited {color:#0000EE;text-decoration:none;} A:hover {color:#0000EE;text-decoration:underline;} TABLE.cn {border-width:0 0 1px 0;} TABLE.s {border-width:1px 0 1px 1px;} TD.h {color:red;border-width:0 1px 0 0;} TD.f {border-width:0 1px 0 1px;} TD.hf {color:red;border-width:0 1px 0 1px;} TH.f {border-width:1px 1px 1px 1px;} TR.cis TD {background:#F0F0F0;} TR.cis TD {border-width:1px 1px 1px 0;} TR.cis TD.h {color:red;border-width:1px 1px 1px 0;} TR.cis TD.f {border-width:1px 1px 1px 1px;} TR.cis TD.hf {color:red;border-width:1px 1px 1px 1px;} TD.b {border-style:none;background:transparent;line-height:50%;}  TD.bt {border-width:
 1px 0 0 0;background:transparent;line-height:50%;} TR.o TD {background:#F0F0F0;}TABLE.it {border-style:none;}TABLE.it TD,TABLE.it TH {border-style:none;}</STYLE></HEAD><BODY><TABLE CLASS="hdft" WIDTH="100%" CELLSPACING="0"><TR><TH CLASS="tl"><A HREF="http://emma.sourceforge.net/">EMMA</A>??Coverage??Report??(generated??Sat??Dec??13??13:01:03??GMT??2008)</TH></TR><TR><TD CLASS="nv">[<A HREF="../index.html">all??classes</A>][<A HREF="0.html">org.apache.james.mpt</A>]</TD></TR></TABLE><H2>COVERAGE??SUMMARY??FOR??SOURCE??FILE??[<SPAN CLASS="in">ProtocolSession.java</SPAN>]</H2><TABLE WIDTH="100%" CELLSPACING="0"><TR><TH>name</TH><TH>class,??%</TH><TH>method,??%</TH><TH>block,??%</TH><TH>line,??%</TH></TR><TR><TD>ProtocolSession.java</TD><TD CLASS="h">40%????(2/5)</TD><TD CLASS="h">18%????(7/40)</TD><TD CLASS="h">13%????(105/783)</TD><TD CLASS="h">18%????(29.5/161)</TD></TR></TABLE><H3>COVERAGE??BREAKDOWN??BY??CLASS??AND??METHOD</H3><TABLE CLASS="cn" WIDTH="100%" CELLSPACING="0">
 <TR><TH CLASS="f">name</TH><TH>class,??%</TH><TH>method,??%</TH><TH>block,??%</TH><TH>line,??%</TH></TR><TR><TD CLASS="b">??</TD><TD CLASS="b">??</TD><TD CLASS="b">??</TD><TD CLASS="b">??</TD><TD CLASS="b">??</TD></TR><TR CLASS="cis"><TD CLASS="f">class??<A HREF="#0">ProtocolSession$ContinuationElement</A></TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/4)</TD><TD CLASS="h">0%??????(0/93)</TD><TD CLASS="h">0%??????(0/21)</TD></TR><TR><TD CLASS="f"><A HREF="#0">ProtocolSession$ContinuationElement??(ProtocolSession,??int):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/13)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2">isClient??():??boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/2)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#3">testProtocol??(Session??[],??boolean):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="
 h">0%??????(0/60)</TD><TD CLASS="h">0%??????(0/14)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4">toString??():??String</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/18)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD></TR><TR CLASS="cis"><TD CLASS="f">class??<A HREF="#5">ProtocolSession$ServerResponse</A></TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/8)</TD><TD CLASS="h">0%??????(0/177)</TD><TD CLASS="h">0%??????(0/32)</TD></TR><TR><TD CLASS="f"><A HREF="#5">ProtocolSession$ServerResponse??(ProtocolSession,??String,??String):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/8)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#7">ProtocolSession$ServerResponse??(ProtocolSession,??int,??String,??String,??String)...</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</
 TD><TD CLASS="h">0%??????(0/18)</TD><TD CLASS="h">0%??????(0/6)</TD></TR><TR><TD CLASS="f"><A HREF="#8">checkResponse??(Session,??boolean):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/48)</TD><TD CLASS="h">0%??????(0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#9">isClient??():??boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/2)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#a">match??(String,??String):??boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/6)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#b">readLine??(Session):??String</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/26)</TD><TD CLASS="h">0%??????(0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#c">testProtocol??(Session??[],??boolean):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/30)</TD><
 TD CLASS="h">0%??????(0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#d">toString??():??String</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/39)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD></TR><TR CLASS="cis"><TD CLASS="f">class??<A HREF="#e">ProtocolSession$ServerUnorderedBlockResponse</A></TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/4)</TD><TD CLASS="h">0%??????(0/136)</TD><TD CLASS="h">0%??????(0/32)</TD></TR><TR><TD CLASS="f"><A HREF="#e">ProtocolSession$ServerUnorderedBlockResponse??(ProtocolSession,??List,??String):...</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/8)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#10">ProtocolSession$ServerUnorderedBlockResponse??(ProtocolSession,??int,??List,??Str...</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</T
 D><TD CLASS="h">0%??????(0/19)</TD><TD CLASS="h">0%??????(0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#11">checkResponse??(Session,??boolean):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/91)</TD><TD CLASS="h">0%??????(0/22)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#12">toString??():??String</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/18)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD></TR><TR CLASS="cis"><TD CLASS="f">class??<A HREF="#13">ProtocolSession</A></TD><TD>100%??(1/1)</TD><TD CLASS="h">22%????(4/18)</TD><TD CLASS="h">23%????(68/299)</TD><TD CLASS="h">32%????(18.5/57)</TD></TR><TR><TD CLASS="f"><A HREF="#14">CL??(String):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/10)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#15">C
 ONT??(int):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/16)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#16">SL??(String,??String):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/11)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#17">SL??(int,??String,??String,??String):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/19)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#18">SUB??(List,??String):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/11)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#19">SUB??(int,??List,??String,??String):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/19)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#13">access$002??(ProtocolSession,??boolean):??
 boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/5)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#13">access$100??(ProtocolSession):??boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/3)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#13">access$102??(ProtocolSession,??boolean):??boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/5)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#13">access$200??(ProtocolSession):??ProtocolSession$ProtocolElement</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/3)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#1e">doContinue??():??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/55)</TD><TD CLASS="h">0%??????(0/17)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#1f">isContinueAft
 erFailure??():??boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/3)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#20">setContinueAfterFailure??(boolean):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/4)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#21">toString??():??String</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/67)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#22">CL??(int,??String):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(17/17)</TD><TD>100%??(3/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#13">ProtocolSession??():??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(17/17)</TD><TD>100%??(6/6)</TD></TR><TR><TD CLASS="f"><A HREF="#24">getSessionCount??():??int</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(5/5)</TD><TD>100%??(1/1)</TD></TR><TR CLASS="o"><TD CLASS="
 f"><A HREF="#25">runSessions??(Session??[]):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(29/29)</TD><TD>100%??(9/9)</TD></TR><TR><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD><TD CLASS="bt">??</TD></TR><TR CLASS="cis"><TD CLASS="f">class??<A HREF="#26">ProtocolSession$ClientRequest</A></TD><TD>100%??(1/1)</TD><TD CLASS="h">50%????(3/6)</TD><TD CLASS="h">47%????(37/78)</TD><TD CLASS="h">58%????(11/19)</TD></TR><TR><TD CLASS="f"><A HREF="#26">ProtocolSession$ClientRequest??(ProtocolSession,??String):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/6)</TD><TD CLASS="h">0%??????(0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#28">isClient??():??boolean</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/2)</TD><TD CLASS="h">0%??????(0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#29">toString??():??String</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0
 %??????(0/25)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2a">testProtocol??(Session??[],??boolean):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>71%????(20/28)</TD><TD CLASS="h">71%????(5/7)</TD></TR><TR><TD CLASS="f"><A HREF="#2b">ProtocolSession$ClientRequest??(ProtocolSession,??int,??String):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(12/12)</TD><TD>100%??(4/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2c">writeMessage??(Session):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(5/5)</TD><TD>100%??(2/2)</TD></TR></TABLE><P></P><TABLE CLASS="s" WIDTH="100%" CELLSPACING="0"><TR><TD CLASS="l">1</TD><TD>/****************************************************************</TD></TR><TR><TD CLASS="l">2</TD><TD>??*??Licensed??to??the??Apache??Software??Foundation??(ASF)??under??one??????*</TD></TR><TR><TD CLASS="l">3</TD><TD>??*??or??more??contributor??license??agreements.????See??the??NOTICE??file??*</TD></TR><TR><TD 
 CLASS="l">4</TD><TD>??*??distributed??with??this??work??for??additional??information????????????????*</TD></TR><TR><TD CLASS="l">5</TD><TD>??*??regarding??copyright??ownership.????The??ASF??licenses??this??file??????*</TD></TR><TR><TD CLASS="l">6</TD><TD>??*??to??you??under??the??Apache??License,??Version??2.0??(the????????????????????????*</TD></TR><TR><TD CLASS="l">7</TD><TD>??*??&#34;License&#34;);??you??may??not??use??this??file??except??in??compliance??????*</TD></TR><TR><TD CLASS="l">8</TD><TD>??*??with??the??License.????You??may??obtain??a??copy??of??the??License??at??????*</TD></TR><TR><TD CLASS="l">9</TD><TD>??*????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????*</TD></TR><TR><TD CLASS="l">10</TD><TD>??*??????http://www.apache.org/licenses/LICENSE-2.0??????????????????????????????????*</TD></TR><TR><TD CLASS="l">11</TD><TD>??*?????????????????????????????????????????????????????????????????????
 ???????????????????????????????????????????????????????*</TD></TR><TR><TD CLASS="l">12</TD><TD>??*??Unless??required??by??applicable??law??or??agreed??to??in??writing,??????*</TD></TR><TR><TD CLASS="l">13</TD><TD>??*??software??distributed??under??the??License??is??distributed??on??an????*</TD></TR><TR><TD CLASS="l">14</TD><TD>??*??&#34;AS??IS&#34;??BASIS,??WITHOUT??WARRANTIES??OR??CONDITIONS??OF??ANY??????????????*</TD></TR><TR><TD CLASS="l">15</TD><TD>??*??KIND,??either??express??or??implied.????See??the??License??for??the????????*</TD></TR><TR><TD CLASS="l">16</TD><TD>??*??specific??language??governing??permissions??and??limitations????????????*</TD></TR><TR><TD CLASS="l">17</TD><TD>??*??under??the??License.??????????????????????????????????????????????????????????????????????????????????????*</TD></TR><TR><TD CLASS="l">18</TD><TD>??****************************************************************/</TD></TR><TR><TD CLASS="l">19</TD><TD>??</TD></TR><TR><TD CLASS="l">20</TD>
 <TD>package??org.apache.james.mpt;</TD></TR><TR><TD CLASS="l">21</TD><TD>??</TD></TR><TR><TD CLASS="l">22</TD><TD>import??java.io.IOException;</TD></TR><TR><TD CLASS="l">23</TD><TD>import??java.util.ArrayList;</TD></TR><TR><TD CLASS="l">24</TD><TD>import??java.util.Iterator;</TD></TR><TR><TD CLASS="l">25</TD><TD>import??java.util.List;</TD></TR><TR><TD CLASS="l">26</TD><TD>import??java.util.regex.Pattern;</TD></TR><TR><TD CLASS="l">27</TD><TD>??</TD></TR><TR><TD CLASS="l">28</TD><TD>??</TD></TR><TR><TD CLASS="l">29</TD><TD>/**</TD></TR><TR><TD CLASS="l">30</TD><TD>??*??A??protocol??session??which??can??be??run??against??a??reader??and??writer,??which??checks</TD></TR><TR><TD CLASS="l">31</TD><TD>??*??the??server??response??against??the??expected??values.??TODO??make??ProtocolSession</TD></TR><TR><TD CLASS="l">32</TD><TD>??*??itself??be??a??permissible??ProtocolElement,??so??that??we??can??nest??and??reuse</TD></TR><TR><TD CLASS="l">33</TD><TD>??*??sessions.</TD></TR><TR><TD 
 CLASS="l">34</TD><TD>??*??</TD></TR><TR><TD CLASS="l"><A NAME="13">35</A></TD><TD>??*??@author??Darrell??DeBoer??&lt;darrell@apache.org&gt;</TD></TR><TR><TD CLASS="l">36</TD><TD>??*??</TD></TR><TR><TD CLASS="l">37</TD><TD>??*??@version??$Revision:??722585??$</TD></TR><TR><TD CLASS="l">38</TD><TD>??*/</TD></TR><TR CLASS="p"><TD TITLE="52% line coverage (17 out of 33 instructions)" CLASS="l">39</TD><TD TITLE="52% line coverage (17 out of 33 instructions)">public??class??ProtocolSession??implements??ProtocolInteractor??{</TD></TR><TR CLASS="c"><TD CLASS="l">40</TD><TD>????????private??boolean??continued??=??false;</TD></TR><TR><TD CLASS="l">41</TD><TD>??</TD></TR><TR CLASS="c"><TD CLASS="l">42</TD><TD>????????private??boolean??continuationExpected??=??false;</TD></TR><TR><TD CLASS="l">43</TD><TD>??</TD></TR><TR><TD CLASS="l">44</TD><TD>????????private??int??maxSessionNumber;</TD></TR><TR><TD CLASS="l">45</TD><TD>??</TD></TR><TR CLASS="c"><TD CLASS="l">46</TD><TD>????????protect
 ed??List&lt;ProtocolElement&gt;??testElements??=??new??ArrayList&lt;ProtocolElement&gt;();</TD></TR><TR><TD CLASS="l">47</TD><TD>??</TD></TR><TR><TD CLASS="l">48</TD><TD>????????private??Iterator??elementsIterator;</TD></TR><TR><TD CLASS="l">49</TD><TD>??</TD></TR><TR><TD CLASS="l">50</TD><TD>????????private??Session[]??sessions;</TD></TR><TR><TD CLASS="l">51</TD><TD>??</TD></TR><TR><TD CLASS="l">52</TD><TD>????????private??ProtocolElement??nextTest;</TD></TR><TR><TD CLASS="l"><A NAME="1f">53</A></TD><TD>??</TD></TR><TR CLASS="c"><TD CLASS="l">54</TD><TD>????????private??boolean??continueAfterFailure??=??false;</TD></TR><TR><TD CLASS="l">55</TD><TD>??</TD></TR><TR><TD CLASS="l">56</TD><TD>????????public??final??boolean??isContinueAfterFailure()??{</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="20">57</A></TD><TD>????????????????return??continueAfterFailure;</TD></TR><TR><TD CLASS="l">58</TD><TD>????????}</TD></TR><TR><TD CLASS="l">59</TD><TD>??</TD></TR><TR><TD CLASS="l">60</
 TD><TD>????????public??final??void??setContinueAfterFailure(boolean??continueAfterFailure)??{</TD></TR><TR CLASS="z"><TD CLASS="l">61</TD><TD>????????????????this.continueAfterFailure??=??continueAfterFailure;</TD></TR><TR CLASS="z"><TD CLASS="l">62</TD><TD>????????}</TD></TR><TR><TD CLASS="l">63</TD><TD>??</TD></TR><TR><TD CLASS="l">64</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">65</TD><TD>??????????*??Returns??the??number??of??sessions??required??to??run??this??ProtocolSession.??If</TD></TR><TR><TD CLASS="l"><A NAME="24">66</A></TD><TD>??????????*??the??number??of??readers??and??writers??provided??is??less??than??this??number,??an</TD></TR><TR><TD CLASS="l">67</TD><TD>??????????*??exception??will??occur??when??running??the??tests.</TD></TR><TR><TD CLASS="l">68</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">69</TD><TD>????????public??int??getSessionCount()??{</TD></TR><TR CLASS="c"><TD CLASS="l">70</TD><TD>????????????????return??maxSessionNumber??+??1;</TD></TR><TR><TD
  CLASS="l">71</TD><TD>????????}</TD></TR><TR><TD CLASS="l">72</TD><TD>??</TD></TR><TR><TD CLASS="l">73</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">74</TD><TD>??????????*??Executes??the??ProtocolSession??in??real??time??against??the??readers??and??writers</TD></TR><TR><TD CLASS="l">75</TD><TD>??????????*??supplied,??writing??client??requests??and??reading??server??responses??in??the</TD></TR><TR><TD CLASS="l">76</TD><TD>??????????*??order??that??they??appear??in??the??test??elements.??The??index??of??a??reader/writer</TD></TR><TR><TD CLASS="l">77</TD><TD>??????????*??in??the??array??corresponds??to??the??number??of??the??session.??If??an??exception</TD></TR><TR><TD CLASS="l">78</TD><TD>??????????*??occurs,??no??more??test??elements??are??executed.</TD></TR><TR><TD CLASS="l">79</TD><TD>??????????*??</TD></TR><TR><TD CLASS="l">80</TD><TD>??????????*??@param??out</TD></TR><TR><TD CLASS="l">81</TD><TD>??????????*????????????????????????The??client??requests??are??written??to??
 here.</TD></TR><TR><TD CLASS="l"><A NAME="25">82</A></TD><TD>??????????*??@param??in</TD></TR><TR><TD CLASS="l">83</TD><TD>??????????*????????????????????????The??server??responses??are??read??from??here.</TD></TR><TR><TD CLASS="l">84</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">85</TD><TD>????????public??void??runSessions(Session[]??sessions)??throws??Exception??{</TD></TR><TR CLASS="c"><TD CLASS="l">86</TD><TD>????????????????this.sessions??=??sessions;</TD></TR><TR CLASS="c"><TD CLASS="l">87</TD><TD>????????????????elementsIterator??=??testElements.iterator();</TD></TR><TR CLASS="c"><TD CLASS="l">88</TD><TD>????????????????while??(elementsIterator.hasNext())??{</TD></TR><TR CLASS="c"><TD CLASS="l">89</TD><TD>????????????????????????Object??obj??=??elementsIterator.next();</TD></TR><TR CLASS="c"><TD CLASS="l">90</TD><TD>????????????????????????if??(obj??instanceof??ProtocolElement)??{</TD></TR><TR CLASS="c"><TD CLASS="l">91</TD><TD>????????????????????????????????Protoc
 olElement??test??=??(ProtocolElement)??obj;</TD></TR><TR CLASS="c"><TD CLASS="l">92</TD><TD>????????????????????????????????test.testProtocol(sessions,??continueAfterFailure);</TD></TR><TR><TD CLASS="l">93</TD><TD>????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">94</TD><TD>????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l"><A NAME="1e">95</A></TD><TD>????????}</TD></TR><TR><TD CLASS="l">96</TD><TD>??</TD></TR><TR><TD CLASS="l">97</TD><TD>????????public??void??doContinue()??{</TD></TR><TR><TD CLASS="l">98</TD><TD>????????????????try??{</TD></TR><TR CLASS="z"><TD CLASS="l">99</TD><TD>????????????????????????if??(continuationExpected)??{</TD></TR><TR CLASS="z"><TD CLASS="l">100</TD><TD>????????????????????????????????continued??=??true;</TD></TR><TR CLASS="z"><TD CLASS="l">101</TD><TD>????????????????????????????????while??(elementsIterator.hasNext())??{</TD></TR><TR CLASS="z"><TD CLASS="l">102</TD><TD>????????????????????????????????????????Object??obj??=??el
 ementsIterator.next();</TD></TR><TR CLASS="z"><TD CLASS="l">103</TD><TD>????????????????????????????????????????if??(obj??instanceof??ProtocolElement)??{</TD></TR><TR CLASS="z"><TD CLASS="l">104</TD><TD>????????????????????????????????????????????????nextTest??=??(ProtocolElement)??obj;</TD></TR><TR><TD CLASS="l">105</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">106</TD><TD>????????????????????????????????????????????????if??(!nextTest.isClient())??{</TD></TR><TR CLASS="z"><TD CLASS="l">107</TD><TD>????????????????????????????????????????????????????????break;</TD></TR><TR><TD CLASS="l">108</TD><TD>????????????????????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">109</TD><TD>????????????????????????????????????????????????nextTest.testProtocol(sessions,??continueAfterFailure);</TD></TR><TR><TD CLASS="l">110</TD><TD>????????????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">111</TD><TD>????????????????????????????????}</TD></TR><TR C
 LASS="z"><TD CLASS="l">112</TD><TD>????????????????????????????????if??(!elementsIterator.hasNext())??{</TD></TR><TR CLASS="z"><TD CLASS="l">113</TD><TD>????????????????????????????????????????nextTest??=??null;</TD></TR><TR><TD CLASS="l">114</TD><TD>????????????????????????????????}</TD></TR><TR><TD CLASS="l">115</TD><TD>????????????????????????}??else??{</TD></TR><TR CLASS="z"><TD CLASS="l">116</TD><TD>????????????????????????????????throw??new??RuntimeException(&#34;Unexpected??continuation&#34;);</TD></TR><TR><TD CLASS="l">117</TD><TD>????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">118</TD><TD>????????????????}??catch??(Exception??e)??{</TD></TR><TR CLASS="z"><TD CLASS="l">119</TD><TD>????????????????????????throw??new??RuntimeException(e);</TD></TR><TR CLASS="z"><TD CLASS="l">120</TD><TD>????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">121</TD><TD>????????}</TD></TR><TR><TD CLASS="l">122</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="14">123</A></TD
 ><TD>????????/*??(non-Javadoc)</TD></TR><TR><TD CLASS="l">124</TD><TD>??????????*??@see??org.apache.james.mpt.ProtocolScript#CL(java.lang.String)</TD></TR><TR><TD CLASS="l">125</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">126</TD><TD>????????public??void??CL(String??clientLine)??{</TD></TR><TR CLASS="z"><TD CLASS="l">127</TD><TD>????????????????testElements.add(new??ClientRequest(clientLine));</TD></TR><TR CLASS="z"><TD CLASS="l">128</TD><TD>????????}</TD></TR><TR><TD CLASS="l">129</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="16">130</A></TD><TD>????????/**</TD></TR><TR><TD CLASS="l">131</TD><TD>??????????*??@see??org.apache.james.mpt.ProtocolScript#SL(java.lang.String,??java.lang.String)</TD></TR><TR><TD CLASS="l">132</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">133</TD><TD>????????public??void??SL(String??serverLine,??String??location)??{</TD></TR><TR CLASS="z"><TD CLASS="l">134</TD><TD>????????????????testElements.add(new??ServerResponse(serverLine,??location));</
 TD></TR><TR CLASS="z"><TD CLASS="l">135</TD><TD>????????}</TD></TR><TR><TD CLASS="l">136</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="18">137</A></TD><TD>????????/**</TD></TR><TR><TD CLASS="l">138</TD><TD>??????????*??@see??org.apache.james.mpt.ProtocolScript#SUB(java.util.List,??java.lang.String)</TD></TR><TR><TD CLASS="l">139</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">140</TD><TD>????????public??void??SUB(List&lt;String&gt;??serverLines,??String??location)??{</TD></TR><TR CLASS="z"><TD CLASS="l">141</TD><TD>????????????????testElements</TD></TR><TR><TD CLASS="l">142</TD><TD>????????????????????????????????.add(new??ServerUnorderedBlockResponse(serverLines,??location));</TD></TR><TR CLASS="z"><TD CLASS="l">143</TD><TD>????????}</TD></TR><TR><TD CLASS="l">144</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="22">145</A></TD><TD>????????/**</TD></TR><TR><TD CLASS="l">146</TD><TD>??????????*??@see??org.apache.james.mpt.ProtocolScript#CL(int,??java.lang.String)</TD></TR><TR
 ><TD CLASS="l">147</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">148</TD><TD>????????public??void??CL(int??sessionNumber,??String??clientLine)??{</TD></TR><TR CLASS="c"><TD CLASS="l">149</TD><TD>????????????????this.maxSessionNumber??=??Math.max(this.maxSessionNumber,??sessionNumber);</TD></TR><TR CLASS="c"><TD CLASS="l">150</TD><TD>????????????????testElements.add(new??ClientRequest(sessionNumber,??clientLine));</TD></TR><TR CLASS="c"><TD CLASS="l">151</TD><TD>????????}</TD></TR><TR><TD CLASS="l">152</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="15">153</A></TD><TD>????????/**</TD></TR><TR><TD CLASS="l">154</TD><TD>??????????*??@see??org.apache.james.mpt.ProtocolScript#CONT(int)</TD></TR><TR><TD CLASS="l">155</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">156</TD><TD>????????public??void??CONT(int??sessionNumber)??throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">157</TD><TD>????????????????this.maxSessionNumber??=??Math.max(this.maxSessionNumber,??sessionNumber
 );</TD></TR><TR CLASS="z"><TD CLASS="l">158</TD><TD>????????????????testElements.add(new??ContinuationElement(sessionNumber));</TD></TR><TR CLASS="z"><TD CLASS="l">159</TD><TD>????????}</TD></TR><TR><TD CLASS="l">160</TD><TD>??</TD></TR><TR><TD CLASS="l">161</TD><TD>????????/**</TD></TR><TR><TD CLASS="l"><A NAME="17">162</A></TD><TD>??????????*??@see??org.apache.james.mpt.ProtocolScript#SL(int,??java.lang.String,??java.lang.String,??java.lang.String)</TD></TR><TR><TD CLASS="l">163</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">164</TD><TD>????????public??void??SL(int??sessionNumber,??String??serverLine,??String??location,</TD></TR><TR><TD CLASS="l">165</TD><TD>????????????????????????String??lastClientMessage)??{</TD></TR><TR CLASS="z"><TD CLASS="l">166</TD><TD>????????????????this.maxSessionNumber??=??Math.max(this.maxSessionNumber,??sessionNumber);</TD></TR><TR CLASS="z"><TD CLASS="l">167</TD><TD>????????????????testElements.add(new??ServerResponse(sessionNumber,??serverL
 ine,</TD></TR><TR><TD CLASS="l">168</TD><TD>????????????????????????????????location,??lastClientMessage));</TD></TR><TR CLASS="z"><TD CLASS="l">169</TD><TD>????????}</TD></TR><TR><TD CLASS="l">170</TD><TD>??</TD></TR><TR><TD CLASS="l">171</TD><TD>????????/**</TD></TR><TR><TD CLASS="l"><A NAME="19">172</A></TD><TD>??????????*??@see??org.apache.james.mpt.ProtocolScript#SUB(int,??java.util.List,??java.lang.String,??java.lang.String)</TD></TR><TR><TD CLASS="l">173</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">174</TD><TD>????????public??void??SUB(int??sessionNumber,??List&lt;String&gt;??serverLines,??String??location,</TD></TR><TR><TD CLASS="l">175</TD><TD>????????????????????????String??lastClientMessage)??{</TD></TR><TR CLASS="z"><TD CLASS="l">176</TD><TD>????????????????this.maxSessionNumber??=??Math.max(this.maxSessionNumber,??sessionNumber);</TD></TR><TR CLASS="z"><TD CLASS="l">177</TD><TD>????????????????testElements.add(new??ServerUnorderedBlockResponse(sessionNumber,<
 /TD></TR><TR><TD CLASS="l">178</TD><TD>????????????????????????????????serverLines,??location,??lastClientMessage));</TD></TR><TR CLASS="z"><TD CLASS="l">179</TD><TD>????????}</TD></TR><TR><TD CLASS="l">180</TD><TD>??</TD></TR><TR><TD CLASS="l">181</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">182</TD><TD>??????????*??A??client??request,??which??write??the??specified??message??to??a??Writer.</TD></TR><TR><TD CLASS="l">183</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">184</TD><TD>????????private??class??ClientRequest??implements??ProtocolElement??{</TD></TR><TR><TD CLASS="l">185</TD><TD>????????????????private??int??sessionNumber;</TD></TR><TR><TD CLASS="l">186</TD><TD>??</TD></TR><TR><TD CLASS="l">187</TD><TD>????????????????private??String??message;</TD></TR><TR><TD CLASS="l">188</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="26">189</A></TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">190</TD><TD>??????????????????*??Initialises??the??ClientRequest??with??the??sup
 plied??message.</TD></TR><TR><TD CLASS="l">191</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">192</TD><TD>????????????????public??ClientRequest(String??message)??{</TD></TR><TR CLASS="z"><TD CLASS="l">193</TD><TD>????????????????????????this(-1,??message);</TD></TR><TR CLASS="z"><TD CLASS="l">194</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">195</TD><TD>??</TD></TR><TR><TD CLASS="l">196</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">197</TD><TD>??????????????????*??Initialises??the??ClientRequest,??with??a??message??and??session??number.</TD></TR><TR><TD CLASS="l"><A NAME="2b">198</A></TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">199</TD><TD>??????????????????*??@param??sessionNumber</TD></TR><TR><TD CLASS="l">200</TD><TD>??????????????????*??@param??message</TD></TR><TR><TD CLASS="l">201</TD><TD>??????????????????*/</TD></TR><TR CLASS="c"><TD CLASS="l">202</TD><TD>????????????????public??ClientRequest(int??sessionNumber,??String??message)?
 ?{</TD></TR><TR CLASS="c"><TD CLASS="l">203</TD><TD>????????????????????????this.sessionNumber??=??sessionNumber;</TD></TR><TR CLASS="c"><TD CLASS="l">204</TD><TD>????????????????????????this.message??=??message;</TD></TR><TR CLASS="c"><TD CLASS="l">205</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">206</TD><TD>??</TD></TR><TR><TD CLASS="l">207</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">208</TD><TD>??????????????????*??Writes??the??request??message??to??the??PrintWriters.??If??the??sessionNumber??==</TD></TR><TR><TD CLASS="l">209</TD><TD>??????????????????*??-1,??the??request??is??written??to??*all*??supplied??writers,??otherwise,??only</TD></TR><TR><TD CLASS="l">210</TD><TD>??????????????????*??the??writer??for??this??session??is??writted??to.</TD></TR><TR><TD CLASS="l">211</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l"><A NAME="2a">212</A></TD><TD>??????????????????*??@throws??Exception</TD></TR><TR><TD CLASS="l">213</TD><TD>??????????????????*/
 </TD></TR><TR><TD CLASS="l">214</TD><TD>????????????????public??void??testProtocol(Session[]??sessions,</TD></TR><TR><TD CLASS="l">215</TD><TD>????????????????????????????????boolean??continueAfterFailure)??throws??Exception??{</TD></TR><TR CLASS="c"><TD CLASS="l">216</TD><TD>????????????????????????if??(sessionNumber??&lt;??0)??{</TD></TR><TR CLASS="c"><TD CLASS="l">217</TD><TD>????????????????????????????????for??(int??i??=??0;??i??&lt;??sessions.length;??i++)??{</TD></TR><TR CLASS="c"><TD CLASS="l">218</TD><TD>????????????????????????????????????????Session??session??=??sessions[i];</TD></TR><TR CLASS="c"><TD CLASS="l">219</TD><TD>????????????????????????????????????????writeMessage(session);</TD></TR><TR><TD CLASS="l">220</TD><TD>????????????????????????????????}</TD></TR><TR><TD CLASS="l">221</TD><TD>????????????????????????}??else??{</TD></TR><TR CLASS="z"><TD CLASS="l">222</TD><TD>????????????????????????????????Session??session??=??sessions[sessionNumber];</TD></TR><
 TR CLASS="z"><TD CLASS="l">223</TD><TD>????????????????????????????????writeMessage(session);</TD></TR><TR><TD CLASS="l"><A NAME="2c">224</A></TD><TD>????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">225</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">226</TD><TD>??</TD></TR><TR><TD CLASS="l">227</TD><TD>????????????????private??void??writeMessage(Session??session)??throws??Exception??{</TD></TR><TR CLASS="c"><TD CLASS="l"><A NAME="28">228</A></TD><TD>????????????????????????session.writeLine(message);</TD></TR><TR CLASS="c"><TD CLASS="l">229</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">230</TD><TD>??</TD></TR><TR><TD CLASS="l">231</TD><TD>????????????????public??boolean??isClient()??{</TD></TR><TR CLASS="z"><TD CLASS="l">232</TD><TD>????????????????????????return??true;</TD></TR><TR><TD CLASS="l">233</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">234</TD><TD>??</TD></TR><TR><TD CLASS="l">235</TD><TD>????????????????/**</TD></TR><TR><TD CLASS=
 "l">236</TD><TD>??????????????????*??Constructs??a??&lt;code&gt;String&lt;/code&gt;??with??all??attributes</TD></TR><TR><TD CLASS="l">237</TD><TD>??????????????????*??in??name??=??value??format.</TD></TR><TR><TD CLASS="l">238</TD><TD>??????????????????*</TD></TR><TR><TD CLASS="l">239</TD><TD>??????????????????*??@return??a??&lt;code&gt;String&lt;/code&gt;??representation??</TD></TR><TR><TD CLASS="l"><A NAME="29">240</A></TD><TD>??????????????????*??of??this??object.</TD></TR><TR><TD CLASS="l">241</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">242</TD><TD>????????????????public??String??toString()</TD></TR><TR><TD CLASS="l">243</TD><TD>????????????????{</TD></TR><TR CLASS="z"><TD CLASS="l">244</TD><TD>????????????????????????final??String??TAB??=??&#34;??&#34;;</TD></TR><TR><TD CLASS="l">245</TD><TD>????????????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">246</TD><TD>????????????????????????String??retValue??=??&#34;ClientRequest??(??&#34;</TD></TR><TR><TD CLASS
 ="l">247</TD><TD>????????????????????????????????+??&#34;sessionNumber??=??&#34;??+??this.sessionNumber??+??TAB</TD></TR><TR><TD CLASS="l">248</TD><TD>????????????????????????????????+??&#34;message??=??&#34;??+??this.message??+??TAB</TD></TR><TR><TD CLASS="l">249</TD><TD>????????????????????????????????+??&#34;??)&#34;;</TD></TR><TR><TD CLASS="l">250</TD><TD>????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">251</TD><TD>????????????????????????return??retValue;</TD></TR><TR><TD CLASS="l">252</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">253</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">254</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">255</TD><TD>????????}</TD></TR><TR><TD CLASS="l">256</TD><TD>??</TD></TR><TR><TD CLASS="l">257</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">258</TD><TD>??????????*??Represents??a??single-line??server??response,??which??reads??a??line??from??a</TD></TR><TR><TD CLASS="l">259</TD><TD>??????????*??reader,??and??compares??it
 ??with??the??defined??regular??expression??definition??of</TD></TR><TR><TD CLASS="l">260</TD><TD>??????????*??this??line.</TD></TR><TR><TD CLASS="l">261</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">262</TD><TD>????????private??class??ServerResponse??implements??ProtocolElement??{</TD></TR><TR><TD CLASS="l">263</TD><TD>????????????????private??String??lastClientMessage;</TD></TR><TR><TD CLASS="l">264</TD><TD>??</TD></TR><TR><TD CLASS="l">265</TD><TD>????????????????private??int??sessionNumber;</TD></TR><TR><TD CLASS="l">266</TD><TD>??</TD></TR><TR><TD CLASS="l">267</TD><TD>????????????????private??String??expectedLine;</TD></TR><TR><TD CLASS="l">268</TD><TD>??</TD></TR><TR><TD CLASS="l">269</TD><TD>????????????????protected??String??location;</TD></TR><TR><TD CLASS="l">270</TD><TD>??</TD></TR><TR><TD CLASS="l">271</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">272</TD><TD>??????????????????*??Sets??up??a??server??response.</TD></TR><TR><TD CLASS="l">273</TD><TD>???
 ???????????????*??</TD></TR><TR><TD CLASS="l">274</TD><TD>??????????????????*??@param??expectedPattern</TD></TR><TR><TD CLASS="l">275</TD><TD>??????????????????*????????????????????????A??Perl??regular??expression??pattern??used??to??test??the??line</TD></TR><TR><TD CLASS="l">276</TD><TD>??????????????????*????????????????????????recieved.</TD></TR><TR><TD CLASS="l"><A NAME="5">277</A></TD><TD>??????????????????*??@param??location</TD></TR><TR><TD CLASS="l">278</TD><TD>??????????????????*????????????????????????A??descriptive??value??to??use??in??error??messages.</TD></TR><TR><TD CLASS="l">279</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">280</TD><TD>????????????????public??ServerResponse(String??expectedPattern,??String??location)??{</TD></TR><TR CLASS="z"><TD CLASS="l">281</TD><TD>????????????????????????this(-1,??expectedPattern,??location,??null);</TD></TR><TR CLASS="z"><TD CLASS="l">282</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">283</TD><TD>??</TD></
 TR><TR><TD CLASS="l">284</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">285</TD><TD>??????????????????*??Sets??up??a??server??response.</TD></TR><TR><TD CLASS="l">286</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">287</TD><TD>??????????????????*??@param??sessionNumber</TD></TR><TR><TD CLASS="l">288</TD><TD>??????????????????*????????????????????????The??number??of??session??for??a??multi-session??test</TD></TR><TR><TD CLASS="l">289</TD><TD>??????????????????*??@param??expectedPattern</TD></TR><TR><TD CLASS="l">290</TD><TD>??????????????????*????????????????????????A??Perl??regular??expression??pattern??used??to??test??the??line</TD></TR><TR><TD CLASS="l">291</TD><TD>??????????????????*????????????????????????recieved.</TD></TR><TR><TD CLASS="l"><A NAME="7">292</A></TD><TD>??????????????????*??@param??location</TD></TR><TR><TD CLASS="l">293</TD><TD>??????????????????*????????????????????????A??descriptive??value??to??use??in??error??messages.</TD></TR><TR><T
 D CLASS="l">294</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">295</TD><TD>????????????????public??ServerResponse(int??sessionNumber,??String??expectedPattern,</TD></TR><TR CLASS="z"><TD CLASS="l">296</TD><TD>????????????????????????????????String??location,??String??lastClientMessage)??{</TD></TR><TR CLASS="z"><TD CLASS="l">297</TD><TD>????????????????????????this.sessionNumber??=??sessionNumber;</TD></TR><TR CLASS="z"><TD CLASS="l">298</TD><TD>????????????????????????this.expectedLine??=??expectedPattern;</TD></TR><TR CLASS="z"><TD CLASS="l">299</TD><TD>????????????????????????this.location??=??location;</TD></TR><TR CLASS="z"><TD CLASS="l">300</TD><TD>????????????????????????this.lastClientMessage??=??lastClientMessage;</TD></TR><TR CLASS="z"><TD CLASS="l">301</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">302</TD><TD>??</TD></TR><TR><TD CLASS="l">303</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">304</TD><TD>??????????????????*??Reads??a??line??fro
 m??the??supplied??reader,??and??tests??that??it??matches??the</TD></TR><TR><TD CLASS="l">305</TD><TD>??????????????????*??expected??regular??expression.??If??the??sessionNumber??==??-1,??then??all</TD></TR><TR><TD CLASS="l">306</TD><TD>??????????????????*??readers??are??tested,??otherwise,??only??the??reader??for??this??session??is</TD></TR><TR><TD CLASS="l">307</TD><TD>??????????????????*??tested.</TD></TR><TR><TD CLASS="l">308</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">309</TD><TD>??????????????????*??@param??out</TD></TR><TR><TD CLASS="l">310</TD><TD>??????????????????*????????????????????????Is??ignored.</TD></TR><TR><TD CLASS="l">311</TD><TD>??????????????????*??@param??in</TD></TR><TR><TD CLASS="l">312</TD><TD>??????????????????*????????????????????????The??server??response??is??read??from??here.</TD></TR><TR><TD CLASS="l">313</TD><TD>??????????????????*??@throws??InvalidServerResponseException</TD></TR><TR><TD CLASS="l">314</TD><TD>??????????????????*???
 ???????????????????????If??the??actual??server??response??didn't??match??the??regular</TD></TR><TR><TD CLASS="l"><A NAME="c">315</A></TD><TD>??????????????????*??????????????????????????expression??expected.</TD></TR><TR><TD CLASS="l">316</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">317</TD><TD>????????????????public??void??testProtocol(Session[]??sessions,</TD></TR><TR><TD CLASS="l">318</TD><TD>????????????????????????????????boolean??continueAfterFailure)??throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">319</TD><TD>????????????????????????if??(sessionNumber??&lt;??0)??{</TD></TR><TR CLASS="z"><TD CLASS="l">320</TD><TD>????????????????????????????????for??(int??i??=??0;??i??&lt;??sessions.length;??i++)??{</TD></TR><TR CLASS="z"><TD CLASS="l">321</TD><TD>????????????????????????????????????????Session??session??=??sessions[i];</TD></TR><TR CLASS="z"><TD CLASS="l">322</TD><TD>????????????????????????????????????????checkResponse(session,??continueAfterFai
 lure);</TD></TR><TR><TD CLASS="l">323</TD><TD>????????????????????????????????}</TD></TR><TR><TD CLASS="l">324</TD><TD>????????????????????????}??else??{</TD></TR><TR CLASS="z"><TD CLASS="l">325</TD><TD>????????????????????????????????Session??session??=??sessions[sessionNumber];</TD></TR><TR CLASS="z"><TD CLASS="l">326</TD><TD>????????????????????????????????checkResponse(session,??continueAfterFailure);</TD></TR><TR><TD CLASS="l">327</TD><TD>????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="8">328</A></TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">329</TD><TD>??</TD></TR><TR><TD CLASS="l">330</TD><TD>????????????????protected??void??checkResponse(Session??session,</TD></TR><TR><TD CLASS="l">331</TD><TD>????????????????????????????????boolean??continueAfterFailure)??throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">332</TD><TD>????????????????????????String??testLine??=??readLine(session);</TD></TR><TR CLASS="z"><TD CLASS="l">333</TD><TD>
 ????????????????????????if??(!match(expectedLine,??testLine))??{</TD></TR><TR CLASS="z"><TD CLASS="l">334</TD><TD>????????????????????????????????String??errMsg??=??&#34;\nLocation:??&#34;??+??location??+??&#34;\nLastClientMsg:??&#34;</TD></TR><TR><TD CLASS="l">335</TD><TD>????????????????????????????????????????????????+??lastClientMessage??+??&#34;\nExpected:??'&#34;??+??expectedLine</TD></TR><TR><TD CLASS="l">336</TD><TD>????????????????????????????????????????????????+??&#34;'\nActual??????:??'&#34;??+??testLine??+??&#34;'&#34;;</TD></TR><TR CLASS="z"><TD CLASS="l">337</TD><TD>????????????????????????????????if??(continueAfterFailure)??{</TD></TR><TR CLASS="z"><TD CLASS="l">338</TD><TD>????????????????????????????????????????System.out.println(errMsg);</TD></TR><TR><TD CLASS="l">339</TD><TD>????????????????????????????????}??else??{</TD></TR><TR CLASS="z"><TD CLASS="l">340</TD><TD>????????????????????????????????????????throw??new??InvalidServerResponseException(errMsg);
 </TD></TR><TR><TD CLASS="l">341</TD><TD>????????????????????????????????}</TD></TR><TR><TD CLASS="l">342</TD><TD>????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">343</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">344</TD><TD>??</TD></TR><TR><TD CLASS="l">345</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">346</TD><TD>??????????????????*??A??convenience??method??which??returns??true??if??the??actual??string??matches</TD></TR><TR><TD CLASS="l">347</TD><TD>??????????????????*??the??expected??regular??expression.</TD></TR><TR><TD CLASS="l">348</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">349</TD><TD>??????????????????*??@param??expected</TD></TR><TR><TD CLASS="l">350</TD><TD>??????????????????*????????????????????????The??regular??expression??used??for??matching.</TD></TR><TR><TD CLASS="l">351</TD><TD>??????????????????*??@param??actual</TD></TR><TR><TD CLASS="l"><A NAME="a">352</A></TD><TD>??????????????????*????????????????????????The??ac
 tual??message??to??match.</TD></TR><TR><TD CLASS="l">353</TD><TD>??????????????????*??@return??&lt;code&gt;true&lt;/code&gt;??if??the??actual??matches??the??expected.</TD></TR><TR><TD CLASS="l">354</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">355</TD><TD>????????????????protected??boolean??match(String??expected,??String??actual)??{</TD></TR><TR CLASS="z"><TD CLASS="l">356</TD><TD>????????????????????????final??boolean??result??=??Pattern.matches(expected,??actual);</TD></TR><TR CLASS="z"><TD CLASS="l">357</TD><TD>????????????????????????return??result;</TD></TR><TR><TD CLASS="l">358</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">359</TD><TD>??</TD></TR><TR><TD CLASS="l">360</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">361</TD><TD>??????????????????*??Grabs??a??line??from??the??server??and??throws??an??error??message??if??it</TD></TR><TR><TD CLASS="l">362</TD><TD>??????????????????*??doesn't??work??out</TD></TR><TR><TD CLASS="l">363</TD><TD>???????
 ???????????*??</TD></TR><TR><TD CLASS="l"><A NAME="b">364</A></TD><TD>??????????????????*??@return??String??of??the??line??from??the??server</TD></TR><TR><TD CLASS="l">365</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">366</TD><TD>????????????????protected??String??readLine(Session??session)??throws??Exception??{</TD></TR><TR><TD CLASS="l">367</TD><TD>????????????????????????try??{</TD></TR><TR CLASS="z"><TD CLASS="l">368</TD><TD>????????????????????????????????return??session.readLine();</TD></TR><TR CLASS="z"><TD CLASS="l">369</TD><TD>????????????????????????}??catch??(IOException??e)??{</TD></TR><TR CLASS="z"><TD CLASS="l">370</TD><TD>????????????????????????????????String??errMsg??=??&#34;\nLocation:??&#34;??+??location??+??&#34;\nExpected:??&#34;</TD></TR><TR><TD CLASS="l">371</TD><TD>????????????????????????????????????????????????+??expectedLine??+??&#34;\nReason:??Server??Timeout.&#34;;</TD></TR><TR CLASS="z"><TD CLASS="l">372</TD><TD>???????????????????????
 ?????????throw??new??InvalidServerResponseException(errMsg);</TD></TR><TR><TD CLASS="l"><A NAME="9">373</A></TD><TD>????????????????????????}</TD></TR><TR><TD CLASS="l">374</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">375</TD><TD>??</TD></TR><TR><TD CLASS="l">376</TD><TD>????????????????public??boolean??isClient()??{</TD></TR><TR CLASS="z"><TD CLASS="l">377</TD><TD>????????????????????????return??false;</TD></TR><TR><TD CLASS="l">378</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">379</TD><TD>??</TD></TR><TR><TD CLASS="l">380</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">381</TD><TD>??????????????????*??Constructs??a??&lt;code&gt;String&lt;/code&gt;??with??all??attributes</TD></TR><TR><TD CLASS="l">382</TD><TD>??????????????????*??in??name??=??value??format.</TD></TR><TR><TD CLASS="l">383</TD><TD>??????????????????*</TD></TR><TR><TD CLASS="l">384</TD><TD>??????????????????*??@return??a??&lt;code&gt;String&lt;/code&gt;??representation??</TD></TR><TR><TD 
 CLASS="l"><A NAME="d">385</A></TD><TD>??????????????????*??of??this??object.</TD></TR><TR><TD CLASS="l">386</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">387</TD><TD>????????????????public??String??toString()</TD></TR><TR><TD CLASS="l">388</TD><TD>????????????????{</TD></TR><TR CLASS="z"><TD CLASS="l">389</TD><TD>????????????????????????final??String??TAB??=??&#34;??&#34;;</TD></TR><TR><TD CLASS="l">390</TD><TD>????????????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">391</TD><TD>????????????????????????String??result??=??&#34;ServerResponse??(??&#34;</TD></TR><TR><TD CLASS="l">392</TD><TD>????????????????????????????????+??&#34;lastClientMessage??=??&#34;??+??this.lastClientMessage??+??TAB</TD></TR><TR><TD CLASS="l">393</TD><TD>????????????????????????????????+??&#34;sessionNumber??=??&#34;??+??this.sessionNumber??+??TAB</TD></TR><TR><TD CLASS="l">394</TD><TD>????????????????????????????????+??&#34;expectedLine??=??&#34;??+??this.expectedLine??+??TAB</TD></TR>
 <TR><TD CLASS="l">395</TD><TD>????????????????????????????????+??&#34;location??=??&#34;??+??this.location??+??TAB</TD></TR><TR><TD CLASS="l">396</TD><TD>????????????????????????????????+??&#34;??)&#34;;</TD></TR><TR><TD CLASS="l">397</TD><TD>????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">398</TD><TD>????????????????????????return??result;</TD></TR><TR><TD CLASS="l">399</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">400</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">401</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">402</TD><TD>????????}</TD></TR><TR><TD CLASS="l">403</TD><TD>??</TD></TR><TR><TD CLASS="l">404</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">405</TD><TD>??????????*??Represents??a??set??of??lines??which??must??be??recieved??from??the??server,??in??a</TD></TR><TR><TD CLASS="l">406</TD><TD>??????????*??non-specified??order.</TD></TR><TR><TD CLASS="l">407</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">408</TD><TD>????????private??class??Serv
 erUnorderedBlockResponse??extends??ServerResponse??{</TD></TR><TR CLASS="z"><TD CLASS="l">409</TD><TD>????????????????private??List&lt;String&gt;??expectedLines??=??new??ArrayList&lt;String&gt;();</TD></TR><TR><TD CLASS="l">410</TD><TD>??</TD></TR><TR><TD CLASS="l">411</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">412</TD><TD>??????????????????*??Sets??up??a??ServerUnorderedBlockResponse??with??the??list??of??expected</TD></TR><TR><TD CLASS="l">413</TD><TD>??????????????????*??lines.</TD></TR><TR><TD CLASS="l">414</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">415</TD><TD>??????????????????*??@param??expectedLines</TD></TR><TR><TD CLASS="l">416</TD><TD>??????????????????*????????????????????????A??list??containing??a??reqular??expression??for??each??expected</TD></TR><TR><TD CLASS="l">417</TD><TD>??????????????????*????????????????????????line.</TD></TR><TR><TD CLASS="l"><A NAME="e">418</A></TD><TD>??????????????????*??@param??location</TD></TR><TR><TD CLA
 SS="l">419</TD><TD>??????????????????*????????????????????????A??descriptive??location??string??for??error??messages.</TD></TR><TR><TD CLASS="l">420</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">421</TD><TD>????????????????public??ServerUnorderedBlockResponse(List&lt;String&gt;??expectedLines,??String??location)??{</TD></TR><TR CLASS="z"><TD CLASS="l">422</TD><TD>????????????????????????this(-1,??expectedLines,??location,??null);</TD></TR><TR CLASS="z"><TD CLASS="l">423</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">424</TD><TD>??</TD></TR><TR><TD CLASS="l">425</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">426</TD><TD>??????????????????*??Sets??up??a??ServerUnorderedBlockResponse??with??the??list??of??expected</TD></TR><TR><TD CLASS="l">427</TD><TD>??????????????????*??lines.</TD></TR><TR><TD CLASS="l">428</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">429</TD><TD>??????????????????*??@param??sessionNumber</TD></TR><TR><TD CLASS="l">430</TD
 ><TD>??????????????????*????????????????????????The??number??of??the??session??to??expect??this??block,??for??a</TD></TR><TR><TD CLASS="l">431</TD><TD>??????????????????*????????????????????????multi-session??test.</TD></TR><TR><TD CLASS="l">432</TD><TD>??????????????????*??@param??expectedLines</TD></TR><TR><TD CLASS="l">433</TD><TD>??????????????????*????????????????????????A??list??containing??a??reqular??expression??for??each??expected</TD></TR><TR><TD CLASS="l">434</TD><TD>??????????????????*????????????????????????line.</TD></TR><TR><TD CLASS="l"><A NAME="10">435</A></TD><TD>??????????????????*??@param??location</TD></TR><TR><TD CLASS="l">436</TD><TD>??????????????????*????????????????????????A??descriptive??location??string??for??error??messages.</TD></TR><TR><TD CLASS="l">437</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">438</TD><TD>????????????????public??ServerUnorderedBlockResponse(int??sessionNumber,</TD></TR><TR CLASS="z"><TD CLASS="l">439</TD><TD>????
 ????????????????????????????List&lt;String&gt;??expectedLines,??String??location,??String??lastClientMessage)??{</TD></TR><TR CLASS="z"><TD CLASS="l">440</TD><TD>????????????????????????super(sessionNumber,??&#34;&lt;Unordered??Block&gt;&#34;,??location,</TD></TR><TR><TD CLASS="l">441</TD><TD>????????????????????????????????????????lastClientMessage);</TD></TR><TR CLASS="z"><TD CLASS="l">442</TD><TD>????????????????????????this.expectedLines??=??expectedLines;</TD></TR><TR CLASS="z"><TD CLASS="l">443</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">444</TD><TD>??</TD></TR><TR><TD CLASS="l">445</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">446</TD><TD>??????????????????*??Reads??lines??from??the??server??response??and??matches??them??against??the</TD></TR><TR><TD CLASS="l">447</TD><TD>??????????????????*??list??of??expected??regular??expressions.??Each??regular??expression??in??the</TD></TR><TR><TD CLASS="l">448</TD><TD>??????????????????*??expected??list??must??
 be??matched??by??only??one??server??response??line.</TD></TR><TR><TD CLASS="l">449</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">450</TD><TD>??????????????????*??@param??reader</TD></TR><TR><TD CLASS="l">451</TD><TD>??????????????????*????????????????????????Server??responses??are??read??from??here.</TD></TR><TR><TD CLASS="l">452</TD><TD>??????????????????*??@throws??InvalidServerResponseException</TD></TR><TR><TD CLASS="l">453</TD><TD>??????????????????*??????????????????????????If??a??line??is??encountered??which??doesn't??match??one??of??the</TD></TR><TR><TD CLASS="l"><A NAME="11">454</A></TD><TD>??????????????????*??????????????????????????expected??lines.</TD></TR><TR><TD CLASS="l">455</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">456</TD><TD>????????????????protected??void??checkResponse(Session??session,</TD></TR><TR><TD CLASS="l">457</TD><TD>????????????????????????????????boolean??continueAfterFailure)??throws??Exception??{</TD></TR><TR CLASS="z
 "><TD CLASS="l">458</TD><TD>????????????????????????List&lt;String&gt;??testLines??=??new??ArrayList&lt;String&gt;(expectedLines);</TD></TR><TR CLASS="z"><TD CLASS="l">459</TD><TD>????????????????????????while??(testLines.size()??&gt;??0)??{</TD></TR><TR CLASS="z"><TD CLASS="l">460</TD><TD>????????????????????????????????String??actualLine??=??readLine(session);</TD></TR><TR><TD CLASS="l">461</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">462</TD><TD>????????????????????????????????boolean??foundMatch??=??false;</TD></TR><TR CLASS="z"><TD CLASS="l">463</TD><TD>????????????????????????????????for??(int??i??=??0;??i??&lt;??testLines.size();??i++)??{</TD></TR><TR CLASS="z"><TD CLASS="l">464</TD><TD>????????????????????????????????????????String??expected??=??(String)??testLines.get(i);</TD></TR><TR CLASS="z"><TD CLASS="l">465</TD><TD>????????????????????????????????????????if??(match(expected,??actualLine))??{</TD></TR><TR CLASS="z"><TD CLASS="l">466</TD><TD>??????????????????
 ??????????????????????????????foundMatch??=??true;</TD></TR><TR CLASS="z"><TD CLASS="l">467</TD><TD>????????????????????????????????????????????????testLines.remove(expected);</TD></TR><TR CLASS="z"><TD CLASS="l">468</TD><TD>????????????????????????????????????????????????break;</TD></TR><TR><TD CLASS="l">469</TD><TD>????????????????????????????????????????}</TD></TR><TR><TD CLASS="l">470</TD><TD>????????????????????????????????}</TD></TR><TR><TD CLASS="l">471</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">472</TD><TD>????????????????????????????????if??(!foundMatch)??{</TD></TR><TR CLASS="z"><TD CLASS="l">473</TD><TD>????????????????????????????????????????StringBuffer??errMsg??=??new??StringBuffer().append(</TD></TR><TR><TD CLASS="l">474</TD><TD>????????????????????????????????????????????????????????&#34;\nLocation:??&#34;).append(location).append(</TD></TR><TR><TD CLASS="l">475</TD><TD>????????????????????????????????????????????????????????&#34;\nExpected??one??of:??&#
 34;);</TD></TR><TR CLASS="z"><TD CLASS="l">476</TD><TD>????????????????????????????????????????Iterator??iter??=??expectedLines.iterator();</TD></TR><TR CLASS="z"><TD CLASS="l">477</TD><TD>????????????????????????????????????????while??(iter.hasNext())??{</TD></TR><TR CLASS="z"><TD CLASS="l">478</TD><TD>????????????????????????????????????????????????errMsg.append(&#34;\n????????&#34;);</TD></TR><TR CLASS="z"><TD CLASS="l">479</TD><TD>????????????????????????????????????????????????errMsg.append(iter.next());</TD></TR><TR><TD CLASS="l">480</TD><TD>????????????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">481</TD><TD>????????????????????????????????????????errMsg.append(&#34;\nActual:??&#34;).append(actualLine);</TD></TR><TR CLASS="z"><TD CLASS="l">482</TD><TD>????????????????????????????????????????if??(continueAfterFailure)??{</TD></TR><TR CLASS="z"><TD CLASS="l">483</TD><TD>????????????????????????????????????????????????System.out.println(errMsg.toStr
 ing());</TD></TR><TR><TD CLASS="l">484</TD><TD>????????????????????????????????????????}??else??{</TD></TR><TR CLASS="z"><TD CLASS="l">485</TD><TD>????????????????????????????????????????????????throw??new??InvalidServerResponseException(errMsg</TD></TR><TR><TD CLASS="l">486</TD><TD>????????????????????????????????????????????????????????????????.toString());</TD></TR><TR><TD CLASS="l">487</TD><TD>????????????????????????????????????????}</TD></TR><TR><TD CLASS="l">488</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">489</TD><TD>????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">490</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">491</TD><TD>??</TD></TR><TR><TD CLASS="l">492</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">493</TD><TD>??????????????????*??Constructs??a??&lt;code&gt;String&lt;/code&gt;??with??all??attributes</TD></TR><TR><TD CLASS="l">494</TD><TD>??????????????????*??in??name??=??value??format.</TD></TR><TR
 ><TD CLASS="l">495</TD><TD>??????????????????*</TD></TR><TR><TD CLASS="l">496</TD><TD>??????????????????*??@return??a??&lt;code&gt;String&lt;/code&gt;??representation??</TD></TR><TR><TD CLASS="l"><A NAME="12">497</A></TD><TD>??????????????????*??of??this??object.</TD></TR><TR><TD CLASS="l">498</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">499</TD><TD>????????????????public??String??toString()</TD></TR><TR><TD CLASS="l">500</TD><TD>????????????????{</TD></TR><TR CLASS="z"><TD CLASS="l">501</TD><TD>????????????????????????final??String??TAB??=??&#34;??&#34;;</TD></TR><TR><TD CLASS="l">502</TD><TD>????????????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">503</TD><TD>????????????????????????String??result??=??&#34;ServerUnorderedBlockResponse??(??&#34;</TD></TR><TR><TD CLASS="l">504</TD><TD>????????????????????????????????+??&#34;expectedLines??=??&#34;??+??this.expectedLines??+??TAB</TD></TR><TR><TD CLASS="l">505</TD><TD>????????????????????????????????+??&#34;??)
 &#34;;</TD></TR><TR><TD CLASS="l">506</TD><TD>????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">507</TD><TD>????????????????????????return??result;</TD></TR><TR><TD CLASS="l">508</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">509</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">510</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">511</TD><TD>????????}</TD></TR><TR><TD CLASS="l">512</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="0">513</A></TD><TD>????????private??class??ContinuationElement??implements??ProtocolElement??{</TD></TR><TR><TD CLASS="l">514</TD><TD>??</TD></TR><TR><TD CLASS="l">515</TD><TD>????????????????private??final??int??sessionNumber;</TD></TR><TR><TD CLASS="l">516</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">517</TD><TD>????????????????public??ContinuationElement(final??int??sessionNumber)??throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">518</TD><TD>????????????????????????this.sessionNumber??=??sessionNumber??&lt;??0?????0??:??
 sessionNumber;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="3">519</A></TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">520</TD><TD>??</TD></TR><TR><TD CLASS="l">521</TD><TD>????????????????public??void??testProtocol(Session[]??sessions,</TD></TR><TR><TD CLASS="l">522</TD><TD>????????????????????????????????boolean??continueAfterFailure)??throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">523</TD><TD>????????????????????????Session??session??=??sessions[sessionNumber];</TD></TR><TR CLASS="z"><TD CLASS="l">524</TD><TD>????????????????????????continuationExpected??=??true;</TD></TR><TR CLASS="z"><TD CLASS="l">525</TD><TD>????????????????????????continued??=??false;</TD></TR><TR CLASS="z"><TD CLASS="l">526</TD><TD>????????????????????????String??testLine??=??session.readLine();</TD></TR><TR CLASS="z"><TD CLASS="l">527</TD><TD>????????????????????????if??(!&#34;+&#34;.equals(testLine)??||??!continued)??{</TD></TR><TR CLASS="z"><TD CLASS="l">528</TD><TD>??????????????
 ??????????????????final??String??message??=??&#34;Expected??continuation&#34;;</TD></TR><TR CLASS="z"><TD CLASS="l">529</TD><TD>????????????????????????????????if??(continueAfterFailure)??{</TD></TR><TR CLASS="z"><TD CLASS="l">530</TD><TD>????????????????????????????????????????System.out.print(message);</TD></TR><TR><TD CLASS="l">531</TD><TD>????????????????????????????????}??else??{</TD></TR><TR CLASS="z"><TD CLASS="l">532</TD><TD>????????????????????????????????????????throw??new??InvalidServerResponseException(message);</TD></TR><TR><TD CLASS="l">533</TD><TD>????????????????????????????????}</TD></TR><TR><TD CLASS="l">534</TD><TD>????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">535</TD><TD>????????????????????????continuationExpected??=??false;</TD></TR><TR CLASS="z"><TD CLASS="l">536</TD><TD>????????????????????????continued??=??false;</TD></TR><TR><TD CLASS="l">537</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">538</TD><TD>????????????????????????if??(ne
 xtTest??!=??null)??{</TD></TR><TR CLASS="z"><TD CLASS="l">539</TD><TD>????????????????????????????????nextTest.testProtocol(sessions,??continueAfterFailure);</TD></TR><TR><TD CLASS="l"><A NAME="2">540</A></TD><TD>????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">541</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">542</TD><TD>??</TD></TR><TR><TD CLASS="l">543</TD><TD>????????????????public??boolean??isClient()??{</TD></TR><TR CLASS="z"><TD CLASS="l">544</TD><TD>????????????????????????return??false;</TD></TR><TR><TD CLASS="l">545</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">546</TD><TD>??</TD></TR><TR><TD CLASS="l">547</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">548</TD><TD>??????????????????*??Constructs??a??&lt;code&gt;String&lt;/code&gt;??with??all??attributes</TD></TR><TR><TD CLASS="l">549</TD><TD>??????????????????*??in??name??=??value??format.</TD></TR><TR><TD CLASS="l">550</TD><TD>??????????????????*</TD></TR><TR><TD CLASS="l">551</
 TD><TD>??????????????????*??@return??a??&lt;code&gt;String&lt;/code&gt;??representation??</TD></TR><TR><TD CLASS="l"><A NAME="4">552</A></TD><TD>??????????????????*??of??this??object.</TD></TR><TR><TD CLASS="l">553</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">554</TD><TD>????????????????public??String??toString()</TD></TR><TR><TD CLASS="l">555</TD><TD>????????????????{</TD></TR><TR CLASS="z"><TD CLASS="l">556</TD><TD>????????????????????????final??String??TAB??=??&#34;??&#34;;</TD></TR><TR><TD CLASS="l">557</TD><TD>????????????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">558</TD><TD>????????????????????????String??result??=??&#34;ContinuationElement??(??&#34;</TD></TR><TR><TD CLASS="l">559</TD><TD>????????????????????????????????+??&#34;sessionNumber??=??&#34;??+??this.sessionNumber??+??TAB</TD></TR><TR><TD CLASS="l">560</TD><TD>????????????????????????????????+??&#34;??)&#34;;</TD></TR><TR><TD CLASS="l">561</TD><TD>????????????????</TD></TR><TR CLASS="z"><TD
  CLASS="l">562</TD><TD>????????????????????????return??result;</TD></TR><TR><TD CLASS="l">563</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">564</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">565</TD><TD>????????????????</TD></TR><TR><TD CLASS="l">566</TD><TD>????????}</TD></TR><TR><TD CLASS="l">567</TD><TD>??</TD></TR><TR><TD CLASS="l">568</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">569</TD><TD>??????????*??Represents??a??generic??protocol??element,??which??may??write??requests??to??the</TD></TR><TR><TD CLASS="l">570</TD><TD>??????????*??server,??read??responses??from??the??server,??or??both.??Implementations??should</TD></TR><TR><TD CLASS="l">571</TD><TD>??????????*??test??the??server??response??against??an??expected??response,??and??throw??an</TD></TR><TR><TD CLASS="l">572</TD><TD>??????????*??exception??on??mismatch.</TD></TR><TR><TD CLASS="l">573</TD><TD>??????????*/</TD></TR><TR CLASS="c"><TD CLASS="l">574</TD><TD>????????private??interface??ProtocolEleme
 nt??{</TD></TR><TR><TD CLASS="l">575</TD><TD>????????????????/**</TD></TR><TR><TD CLASS="l">576</TD><TD>??????????????????*??Executes??the??ProtocolElement??against??the??supplied??session.</TD></TR><TR><TD CLASS="l">577</TD><TD>??????????????????*??</TD></TR><TR><TD CLASS="l">578</TD><TD>??????????????????*??@param??continueAfterFailure</TD></TR><TR><TD CLASS="l">579</TD><TD>??????????????????*????????????????????????TODO</TD></TR><TR><TD CLASS="l">580</TD><TD>??????????????????*??@throws??Exception</TD></TR><TR><TD CLASS="l">581</TD><TD>??????????????????*/</TD></TR><TR><TD CLASS="l">582</TD><TD>????????????????void??testProtocol(Session[]??sessions,</TD></TR><TR><TD CLASS="l">583</TD><TD>????????????????????????????????boolean??continueAfterFailure)??throws??Exception;</TD></TR><TR><TD CLASS="l">584</TD><TD>??</TD></TR><TR><TD CLASS="l">585</TD><TD>????????????????boolean??isClient();</TD></TR><TR><TD CLASS="l">586</TD><TD>????????}</TD></TR><TR><TD CLASS="l">587</TD><TD>
 ??</TD></TR><TR><TD CLASS="l">588</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">589</TD><TD>??????????*??Constructs??a??&lt;code&gt;String&lt;/code&gt;??with??all??attributes</TD></TR><TR><TD CLASS="l">590</TD><TD>??????????*??in??name??=??value??format.</TD></TR><TR><TD CLASS="l">591</TD><TD>??????????*</TD></TR><TR><TD CLASS="l">592</TD><TD>??????????*??@return??a??&lt;code&gt;String&lt;/code&gt;??representation??</TD></TR><TR><TD CLASS="l"><A NAME="21">593</A></TD><TD>??????????*??of??this??object.</TD></TR><TR><TD CLASS="l">594</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">595</TD><TD>????????public??String??toString()</TD></TR><TR><TD CLASS="l">596</TD><TD>????????{</TD></TR><TR CLASS="z"><TD CLASS="l">597</TD><TD>????????????????final??String??TAB??=??&#34;??&#34;;</TD></TR><TR><TD CLASS="l">598</TD><TD>????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">599</TD><TD>????????????????String??result????=??&#34;ProtocolSession??(??&#34;</TD></TR><TR><TD CLASS="l">600<
 /TD><TD>????????????????????????+??&#34;continued??=??&#34;??+??this.continued??+??TAB</TD></TR><TR><TD CLASS="l">601</TD><TD>????????????????????????+??&#34;continuationExpected??=??&#34;??+??this.continuationExpected??+??TAB</TD></TR><TR><TD CLASS="l">602</TD><TD>????????????????????????+??&#34;maxSessionNumber??=??&#34;??+??this.maxSessionNumber??+??TAB</TD></TR><TR><TD CLASS="l">603</TD><TD>????????????????????????+??&#34;testElements??=??&#34;??+??this.testElements??+??TAB</TD></TR><TR><TD CLASS="l">604</TD><TD>????????????????????????+??&#34;elementsIterator??=??&#34;??+??this.elementsIterator??+??TAB</TD></TR><TR><TD CLASS="l">605</TD><TD>????????????????????????+??&#34;sessions??=??&#34;??+??this.sessions??+??TAB</TD></TR><TR><TD CLASS="l">606</TD><TD>????????????????????????+??&#34;nextTest??=??&#34;??+??this.nextTest??+??TAB</TD></TR><TR><TD CLASS="l">607</TD><TD>????????????????????????+??&#34;continueAfterFailure??=??&#34;??+??this.continueAfterFailure??+??TAB</T
 D></TR><TR><TD CLASS="l">608</TD><TD>????????????????????????+??&#34;??)&#34;;</TD></TR><TR><TD CLASS="l">609</TD><TD>????????</TD></TR><TR CLASS="z"><TD CLASS="l">610</TD><TD>????????????????return??result;</TD></TR><TR><TD CLASS="l">611</TD><TD>????????}</TD></TR><TR><TD CLASS="l">612</TD><TD>????????</TD></TR><TR><TD CLASS="l">613</TD><TD>????????</TD></TR><TR><TD CLASS="l">614</TD><TD>}</TD></TR></TABLE><P></P><TABLE CLASS="hdft" WIDTH="100%" CELLSPACING="0"><TR><TD CLASS="nv">[<A HREF="../index.html">all??classes</A>][<A HREF="0.html">org.apache.james.mpt</A>]</TD></TR><TR><TD CLASS="tl"><A HREF="http://sourceforge.net/projects/emma">EMMA??2.0.5312</A>??(C)??Vladimir??Roubtsov</TD></TR></TABLE></BODY></HTML>

[... 3 lines stripped ...]