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 [22/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/7.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/mpt/main/emma/_files/7.html?rev=775214&r1=775213&r2=775214&view=diff
==============================================================================
--- james/site/trunk/www/mpt/main/emma/_files/7.html (original)
+++ james/site/trunk/www/mpt/main/emma/_files/7.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">ProtocolSessionBuilder.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>ProtocolSessionBuilder.java</TD><TD>100%??(1/1)</TD><TD CLASS="h">56%????(5/9)</TD><TD CLASS="h">45%????(156/347)</TD><TD CLASS="h">50%????(44.6/89)</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">ProtocolSessionBuilder</A></TD><TD>100%??(1/1)</TD><TD CLASS="h">56%????(5/9)</TD><TD CLASS="h">45%????(156/347)</TD><TD CLASS="h">50%????(44.6/89)</TD></TR><TR><TD CLASS="f"><A HREF="#1">addProtocolLines??(String,??InputStream,??ProtocolInteractor):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/14)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2">addTestFile??(String,??ProtocolInteractor):??void</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/27)</TD><TD CLASS="h">0%??????(0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#3">buildProtocolSession??(String):??ProtocolInteractor</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)<
/TD><TD CLASS="h">0%??????(0/10)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4">buildProtocolSession??(String,??Reader):??ProtocolInteractor</A></TD><TD>??</TD><TD CLASS="h">0%??????(0/1)</TD><TD CLASS="h">0%??????(0/11)</TD><TD CLASS="h">0%??????(0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#5">doAddProtocolLines??(ProtocolInteractor,??String,??BufferedReader):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD CLASS="h">30%????(54/178)</TD><TD CLASS="h">37%????(16.6/45)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#6">addProtocolLines??(String,??Reader,??ProtocolInteractor):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>78%????(14/18)</TD><TD>80%????(4/5)</TD></TR><TR><TD CLASS="f"><A HREF="#7">substituteVariables??(String):??String</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>99%????(73/74)</TD><TD>95%????(19/20)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#0">ProtocolSessionBuilder??():??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100
%??(8/8)</TD><TD>100%??(3/3)</TD></TR><TR><TD CLASS="f"><A HREF="#9">setVariable??(String,??String):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(7/7)</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>??*??"Licen
se");??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>??*??"AS??IS"??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.BufferedReader;</TD></TR><TR><TD CLASS="l">23</TD><TD>import??java.io.InputStream;</TD></TR><TR><TD CLASS="l">24</TD><TD>import??java.io.InputStreamReader;</TD></TR><TR><TD CLASS="l">25</TD><TD>import??java.io.Reader;</TD></TR><TR><TD CLASS="l">26</TD><TD>import??j
ava.util.ArrayList;</TD></TR><TR><TD CLASS="l">27</TD><TD>import??java.util.List;</TD></TR><TR><TD CLASS="l">28</TD><TD>import??java.util.Properties;</TD></TR><TR><TD CLASS="l">29</TD><TD>??</TD></TR><TR><TD CLASS="l">30</TD><TD>??</TD></TR><TR><TD CLASS="l">31</TD><TD>/**</TD></TR><TR><TD CLASS="l">32</TD><TD>??*??A??builder??which??generates??scripts??from??textual??input.</TD></TR><TR><TD CLASS="l">33</TD><TD>??*??</TD></TR><TR><TD CLASS="l">34</TD><TD>??*??@author??Darrell??DeBoer??<darrell@apache.org></TD></TR><TR><TD CLASS="l">35</TD><TD>??*??</TD></TR><TR><TD CLASS="l">36</TD><TD>??*??@version??$Revision:??722585??$</TD></TR><TR><TD CLASS="l">37</TD><TD>??*/</TD></TR><TR><TD CLASS="l">38</TD><TD>public??class??ProtocolSessionBuilder??{</TD></TR><TR><TD CLASS="l">39</TD><TD>????????</TD></TR><TR><TD CLASS="l">40</TD><TD>????????public??static??final??String??SERVER_CONTINUATION_TAG??=??"S:??\\+";</TD></TR><TR><TD CLASS="l">41</TD><TD>??</TD></TR><TR><TD C
LASS="l">42</TD><TD>????????public??static??final??String??CLIENT_TAG??=??"C:";</TD></TR><TR><TD CLASS="l">43</TD><TD>??</TD></TR><TR><TD CLASS="l">44</TD><TD>????????public??static??final??String??SERVER_TAG??=??"S:";</TD></TR><TR><TD CLASS="l">45</TD><TD>??</TD></TR><TR><TD CLASS="l">46</TD><TD>????????public??static??final??String??OPEN_UNORDERED_BLOCK_TAG??=??"SUB??{";</TD></TR><TR><TD CLASS="l">47</TD><TD>??</TD></TR><TR><TD CLASS="l">48</TD><TD>????????public??static??final??String??CLOSE_UNORDERED_BLOCK_TAG??=??"}";</TD></TR><TR><TD CLASS="l">49</TD><TD>??</TD></TR><TR><TD CLASS="l">50</TD><TD>????????public??static??final??String??COMMENT_TAG??=??"#";</TD></TR><TR><TD CLASS="l">51</TD><TD>??</TD></TR><TR><TD CLASS="l"><A NAME="0">52</A></TD><TD>????????public??static??final??String??SESSION_TAG??=??"SESSION:";</TD></TR><TR><TD CLASS="l">53</TD><TD>??</TD></TR><TR><TD CLASS="l">54</TD><TD>????????private??final??Properti
es??variables;</TD></TR><TR><TD CLASS="l">55</TD><TD>????????</TD></TR><TR CLASS="c"><TD CLASS="l">56</TD><TD>????????public??ProtocolSessionBuilder()??{</TD></TR><TR CLASS="c"><TD CLASS="l">57</TD><TD>????????????????variables??=??new??Properties();</TD></TR><TR CLASS="c"><TD CLASS="l">58</TD><TD>????????}</TD></TR><TR><TD CLASS="l">59</TD><TD>????????</TD></TR><TR><TD CLASS="l">60</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">61</TD><TD>??????????*??Sets??a??substitution??varaible.</TD></TR><TR><TD CLASS="l">62</TD><TD>??????????*??The??value??of??a??variable??will??be??substituted??whereever</TD></TR><TR><TD CLASS="l">63</TD><TD>??????????*??${<code>NAME</code>}??is??found??in??the??input</TD></TR><TR><TD CLASS="l">64</TD><TD>??????????*??where??<code>NAME</code>??is??the??name??of??the??variable.</TD></TR><TR><TD CLASS="l"><A NAME="9">65</A></TD><TD>??????????*??@param??name??not??null</TD></TR><TR><TD CLASS="l">66</TD><TD>??????????*??@param??va
lue??not??null</TD></TR><TR><TD CLASS="l">67</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">68</TD><TD>????????public??void??setVariable(final??String??name,??final??String??value)??{</TD></TR><TR CLASS="c"><TD CLASS="l">69</TD><TD>????????????????variables.put(name,??value);</TD></TR><TR CLASS="c"><TD CLASS="l">70</TD><TD>????????}</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>??????????*??Builds??a??ProtocolSession??by??reading??lines??from??the??test??file??with??the</TD></TR><TR><TD CLASS="l">74</TD><TD>??????????*??supplied??name.</TD></TR><TR><TD CLASS="l">75</TD><TD>??????????*??</TD></TR><TR><TD CLASS="l">76</TD><TD>??????????*??@param??fileName</TD></TR><TR><TD CLASS="l">77</TD><TD>??????????*????????????????????????The??name??of??the??protocol??session??file.</TD></TR><TR><TD CLASS="l"><A NAME="3">78</A></TD><TD>??????????*??@return??The??ProtocolSession</TD></TR><TR><TD CLASS
="l">79</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">80</TD><TD>????????public??ProtocolInteractor??buildProtocolSession(String??fileName)</TD></TR><TR><TD CLASS="l">81</TD><TD>????????????????????????throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">82</TD><TD>????????????????ProtocolInteractor??session??=??new??ProtocolSession();</TD></TR><TR CLASS="z"><TD CLASS="l">83</TD><TD>????????????????addTestFile(fileName,??session);</TD></TR><TR CLASS="z"><TD CLASS="l">84</TD><TD>????????????????return??session;</TD></TR><TR><TD CLASS="l">85</TD><TD>????????}</TD></TR><TR><TD CLASS="l">86</TD><TD>????????</TD></TR><TR><TD CLASS="l">87</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">88</TD><TD>??????????*??Builds??a??ProtocolSession??by??reading??lines??from??the??reader.</TD></TR><TR><TD CLASS="l">89</TD><TD>??????????*??</TD></TR><TR><TD CLASS="l">90</TD><TD>??????????*??@param??fileName</TD></TR><TR><TD CLASS="l">91</TD><TD>??????????*????????????????????????The??name?
?of??the??protocol??session??file.</TD></TR><TR><TD CLASS="l"><A NAME="4">92</A></TD><TD>??????????*??@return??The??ProtocolSession</TD></TR><TR><TD CLASS="l">93</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">94</TD><TD>????????public??ProtocolInteractor??buildProtocolSession(final??String??scriptName,??final??Reader??reader)</TD></TR><TR><TD CLASS="l">95</TD><TD>????????????????????????throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">96</TD><TD>????????????????ProtocolInteractor??session??=??new??ProtocolSession();</TD></TR><TR CLASS="z"><TD CLASS="l">97</TD><TD>????????????????addProtocolLines(scriptName,??reader,??session);</TD></TR><TR CLASS="z"><TD CLASS="l">98</TD><TD>????????????????return??session;</TD></TR><TR><TD CLASS="l">99</TD><TD>????????}</TD></TR><TR><TD CLASS="l">100</TD><TD>??</TD></TR><TR><TD CLASS="l">101</TD><TD>??</TD></TR><TR><TD CLASS="l">102</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">103</TD><TD>??????????*??Adds??all??protocol??element
s??from??a??test??file??to??the??ProtocolSession</TD></TR><TR><TD CLASS="l">104</TD><TD>??????????*??supplied.</TD></TR><TR><TD CLASS="l">105</TD><TD>??????????*??</TD></TR><TR><TD CLASS="l">106</TD><TD>??????????*??@param??fileName</TD></TR><TR><TD CLASS="l">107</TD><TD>??????????*????????????????????????The??name??of??the??protocol??session??file.</TD></TR><TR><TD CLASS="l">108</TD><TD>??????????*??@param??session</TD></TR><TR><TD CLASS="l">109</TD><TD>??????????*????????????????????????The??ProtocolSession??to??add??the??elements??to.</TD></TR><TR><TD CLASS="l"><A NAME="2">110</A></TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">111</TD><TD>????????public??void??addTestFile(String??fileName,??ProtocolInteractor??session)</TD></TR><TR><TD CLASS="l">112</TD><TD>????????????????????????throws??Exception??{</TD></TR><TR><TD CLASS="l">113</TD><TD>????????????????//??Need??to??find??local??resource.</TD></TR><TR CLASS="z"><TD CLASS="l">114</TD><TD>????????????????InputStream??is
??=??this.getClass().getResourceAsStream(fileName);</TD></TR><TR CLASS="z"><TD CLASS="l">115</TD><TD>????????????????if??(is??==??null)??{</TD></TR><TR CLASS="z"><TD CLASS="l">116</TD><TD>????????????????????????throw??new??Exception("Test??Resource??'"??+??fileName??+??"'??not??found.");</TD></TR><TR><TD CLASS="l">117</TD><TD>????????????????}</TD></TR><TR><TD CLASS="l">118</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">119</TD><TD>????????????????addProtocolLines(fileName,??is,??session);</TD></TR><TR CLASS="z"><TD CLASS="l">120</TD><TD>????????}</TD></TR><TR><TD CLASS="l">121</TD><TD>??</TD></TR><TR><TD CLASS="l">122</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">123</TD><TD>??????????*??Reads??ProtocolElements??from??the??supplied??InputStream??and??adds??them??to??the</TD></TR><TR><TD CLASS="l">124</TD><TD>??????????*??ProtocolSession.</TD></TR><TR><TD CLASS="l">125</TD><TD>??????????*??@param??scriptName</TD></TR><TR><TD CLASS="l">126</TD><TD>?????????
?*????????????????????????The??name??of??the??source??file,??for??error??messages.</TD></TR><TR><TD CLASS="l">127</TD><TD>??????????*??@param??is</TD></TR><TR><TD CLASS="l">128</TD><TD>??????????*????????????????????????The??input??stream??containing??the??protocol??definition.</TD></TR><TR><TD CLASS="l"><A NAME="1">129</A></TD><TD>??????????*??@param??session</TD></TR><TR><TD CLASS="l">130</TD><TD>??????????*????????????????????????The??ProtocolSession??to??add??elements??to.</TD></TR><TR><TD CLASS="l">131</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">132</TD><TD>????????public??void??addProtocolLines(String??scriptName,??InputStream??is,??ProtocolInteractor??session)??throws??Exception??{</TD></TR><TR CLASS="z"><TD CLASS="l">133</TD><TD>????????????????BufferedReader??reader??=??new??BufferedReader(new??InputStreamReader(is));</TD></TR><TR><TD CLASS="l">134</TD><TD>????????????????</TD></TR><TR CLASS="z"><TD CLASS="l">135</TD><TD>????????????????doAddProtocolLines(sessio
n,??scriptName,??reader);</TD></TR><TR CLASS="z"><TD CLASS="l">136</TD><TD>????????}</TD></TR><TR><TD CLASS="l">137</TD><TD>??</TD></TR><TR><TD CLASS="l">138</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">139</TD><TD>??????????*??Reads??ProtocolElements??from??the??supplied??Reader??and??adds??them??to??the</TD></TR><TR><TD CLASS="l">140</TD><TD>??????????*??ProtocolSession.</TD></TR><TR><TD CLASS="l">141</TD><TD>??????????*??@param??scriptName</TD></TR><TR><TD CLASS="l">142</TD><TD>??????????*????????????????????????The??name??of??the??source??file,??for??error??messages.</TD></TR><TR><TD CLASS="l">143</TD><TD>??????????*??@param??reader</TD></TR><TR><TD CLASS="l">144</TD><TD>??????????*????????????????????????the??reader??containing??the??protocol??definition.</TD></TR><TR><TD CLASS="l">145</TD><TD>??????????*??@param??session</TD></TR><TR><TD CLASS="l"><A NAME="6">146</A></TD><TD>??????????*????????????????????????The??ProtocolSession??to??add??elements??to.</TD></TR><TR>
<TD CLASS="l">147</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">148</TD><TD>????????public??void??addProtocolLines(String??scriptName,??Reader??reader,??ProtocolInteractor??session)??throws??Exception??{</TD></TR><TR><TD CLASS="l">149</TD><TD>????????????????final??BufferedReader??bufferedReader;</TD></TR><TR CLASS="c"><TD CLASS="l">150</TD><TD>????????????????if??(reader??instanceof??BufferedReader)??{</TD></TR><TR CLASS="z"><TD CLASS="l">151</TD><TD>????????????????????????bufferedReader??=??(BufferedReader)??reader;</TD></TR><TR><TD CLASS="l">152</TD><TD>????????????????}??else??{</TD></TR><TR CLASS="c"><TD CLASS="l">153</TD><TD>????????????????????????bufferedReader??=??new??BufferedReader(reader);</TD></TR><TR><TD CLASS="l">154</TD><TD>????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">155</TD><TD>????????????????doAddProtocolLines(session,??scriptName,??bufferedReader);</TD></TR><TR CLASS="c"><TD CLASS="l">156</TD><TD>????????}</TD></TR><TR><TD CLASS="l">157</TD>
<TD>????????</TD></TR><TR><TD CLASS="l">158</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">159</TD><TD>??????????*??Reads??ProtocolElements??from??the??supplied??Reader??and??adds??them??to??the</TD></TR><TR><TD CLASS="l">160</TD><TD>??????????*??ProtocolSession.</TD></TR><TR><TD CLASS="l">161</TD><TD>??????????*??</TD></TR><TR><TD CLASS="l">162</TD><TD>??????????*??@param??reader</TD></TR><TR><TD CLASS="l">163</TD><TD>??????????*????????????????????????the??reader??containing??the??protocol??definition.</TD></TR><TR><TD CLASS="l">164</TD><TD>??????????*??@param??session</TD></TR><TR><TD CLASS="l">165</TD><TD>??????????*????????????????????????The??ProtocolSession??to??add??elements??to.</TD></TR><TR><TD CLASS="l">166</TD><TD>??????????*??@param??scriptName</TD></TR><TR><TD CLASS="l"><A NAME="5">167</A></TD><TD>??????????*????????????????????????The??name??of??the??source??file,??for??error??messages.</TD></TR><TR><TD CLASS="l">168</TD><TD>??????????*/</TD></TR><TR><TD CLASS
="l">169</TD><TD>????????private??void??doAddProtocolLines(ProtocolInteractor??session,??String??scriptName,??BufferedReader??reader)??throws??Exception??{</TD></TR><TR><TD CLASS="l">170</TD><TD>????????????????String??line;</TD></TR><TR CLASS="c"><TD CLASS="l">171</TD><TD>????????????????int??sessionNumber??=??-1;</TD></TR><TR CLASS="c"><TD CLASS="l">172</TD><TD>????????????????int??lineNumber??=??-1;</TD></TR><TR CLASS="c"><TD CLASS="l">173</TD><TD>????????????????String??lastClientMsg??=??"";</TD></TR><TR CLASS="c"><TD CLASS="l">174</TD><TD>????????????????while??((line??=??reader.readLine())??!=??null)??{</TD></TR><TR CLASS="c"><TD CLASS="l">175</TD><TD>????????????????????????line??=??substituteVariables(line);</TD></TR><TR CLASS="c"><TD CLASS="l">176</TD><TD>????????????????????????String??location??=??scriptName??+??":"??+??lineNumber;</TD></TR><TR CLASS="c"><TD CLASS="l">177</TD><TD>????????????????????????if??(SERVER_CONTINUATION_TAG.equals(line))??{
</TD></TR><TR CLASS="z"><TD CLASS="l">178</TD><TD>????????????????????????????????session.CONT(sessionNumber);</TD></TR><TR CLASS="c"><TD CLASS="l">179</TD><TD>????????????????????????}??else??if??(line.startsWith(CLIENT_TAG))??{</TD></TR><TR CLASS="c"><TD CLASS="l">180</TD><TD>????????????????????????????????String??clientMsg??=??"";</TD></TR><TR CLASS="c"><TD CLASS="l">181</TD><TD>????????????????????????????????if??(line.length()??>??3)??{</TD></TR><TR CLASS="c"><TD CLASS="l">182</TD><TD>????????????????????????????????????????clientMsg??=??line.substring(3);</TD></TR><TR><TD CLASS="l">183</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">184</TD><TD>????????????????????????????????session.CL(sessionNumber,??clientMsg);</TD></TR><TR CLASS="c"><TD CLASS="l">185</TD><TD>????????????????????????????????lastClientMsg??=??clientMsg;</TD></TR><TR CLASS="p"><TD TITLE="64% line coverage (7 out of 11 instructions)" CLASS="l">186</TD><TD TITL
E="64% line coverage (7 out of 11 instructions)">????????????????????????}??else??if??(line.startsWith(SERVER_TAG))??{</TD></TR><TR CLASS="z"><TD CLASS="l">187</TD><TD>????????????????????????????????String??serverMsg??=??"";</TD></TR><TR CLASS="z"><TD CLASS="l">188</TD><TD>????????????????????????????????if??(line.length()??>??3)??{</TD></TR><TR CLASS="z"><TD CLASS="l">189</TD><TD>????????????????????????????????????????serverMsg??=??line.substring(3);</TD></TR><TR><TD CLASS="l">190</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">191</TD><TD>????????????????????????????????session.SL(sessionNumber,??serverMsg,??location,??lastClientMsg);</TD></TR><TR CLASS="z"><TD CLASS="l">192</TD><TD>????????????????????????}??else??if??(line.startsWith(OPEN_UNORDERED_BLOCK_TAG))??{</TD></TR><TR CLASS="z"><TD CLASS="l">193</TD><TD>????????????????????????????????List<String>??unorderedLines??=??new??ArrayList<String>(5);</TD></TR><TR C
LASS="z"><TD CLASS="l">194</TD><TD>????????????????????????????????line??=??reader.readLine();</TD></TR><TR><TD CLASS="l">195</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">196</TD><TD>????????????????????????????????while??(!line.startsWith(CLOSE_UNORDERED_BLOCK_TAG))??{</TD></TR><TR CLASS="z"><TD CLASS="l">197</TD><TD>????????????????????????????????????????if??(!line.startsWith(SERVER_TAG))??{</TD></TR><TR CLASS="z"><TD CLASS="l">198</TD><TD>????????????????????????????????????????????????throw??new??Exception(</TD></TR><TR><TD CLASS="l">199</TD><TD>????????????????????????????????????????????????????????????????"Only??'S:??'??lines??are??permitted??inside??a??'SUB??{'??block.");</TD></TR><TR><TD CLASS="l">200</TD><TD>????????????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">201</TD><TD>????????????????????????????????????????String??serverMsg??=??line.substring(3);</TD></TR><TR CLASS="z"><TD CLASS="l">202</TD><TD>????????????????????????????
????????????unorderedLines.add(serverMsg);</TD></TR><TR CLASS="z"><TD CLASS="l">203</TD><TD>????????????????????????????????????????line??=??reader.readLine();</TD></TR><TR CLASS="z"><TD CLASS="l">204</TD><TD>????????????????????????????????????????lineNumber++;</TD></TR><TR CLASS="z"><TD CLASS="l">205</TD><TD>????????????????????????????????}</TD></TR><TR><TD CLASS="l">206</TD><TD>??</TD></TR><TR CLASS="z"><TD CLASS="l">207</TD><TD>????????????????????????????????session.SUB(sessionNumber,??unorderedLines,??location,</TD></TR><TR><TD CLASS="l">208</TD><TD>????????????????????????????????????????????????lastClientMsg);</TD></TR><TR CLASS="z"><TD CLASS="l">209</TD><TD>????????????????????????}??else??if??(line.startsWith(COMMENT_TAG)</TD></TR><TR><TD CLASS="l">210</TD><TD>????????????????????????????????????????||??line.trim().length()??==??0)??{</TD></TR><TR><TD CLASS="l">211</TD><TD>????????????????????????????????//??ignore??these??lines.</TD></TR><TR CLASS="z"><TD CLASS="
l">212</TD><TD>????????????????????????}??else??if??(line.startsWith(SESSION_TAG))??{</TD></TR><TR CLASS="z"><TD CLASS="l">213</TD><TD>????????????????????????????????String??number??=??line.substring(SESSION_TAG.length()).trim();</TD></TR><TR CLASS="z"><TD CLASS="l">214</TD><TD>????????????????????????????????if??(number.length()??==??0)??{</TD></TR><TR CLASS="z"><TD CLASS="l">215</TD><TD>????????????????????????????????????????throw??new??Exception("No??session??number??specified");</TD></TR><TR><TD CLASS="l">216</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">217</TD><TD>????????????????????????????????sessionNumber??=??Integer.parseInt(number);</TD></TR><TR CLASS="z"><TD CLASS="l">218</TD><TD>????????????????????????}??else??{</TD></TR><TR CLASS="z"><TD CLASS="l">219</TD><TD>????????????????????????????????String??prefix??=??line;</TD></TR><TR CLASS="z"><TD CLASS="l">220</TD><TD>????????????????????????????????if??(line.length()??&g
t;??3)??{</TD></TR><TR CLASS="z"><TD CLASS="l">221</TD><TD>????????????????????????????????????????prefix??=??line.substring(0,??3);</TD></TR><TR><TD CLASS="l">222</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="z"><TD CLASS="l">223</TD><TD>????????????????????????????????throw??new??Exception("Invalid??line??prefix:??"??+??prefix);</TD></TR><TR><TD CLASS="l">224</TD><TD>????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">225</TD><TD>????????????????????????lineNumber++;</TD></TR><TR CLASS="c"><TD CLASS="l">226</TD><TD>????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">227</TD><TD>????????}</TD></TR><TR><TD CLASS="l">228</TD><TD>??</TD></TR><TR><TD CLASS="l">229</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">230</TD><TD>??????????*??Replaces??${<code>NAME</code>}??with??variable??value.</TD></TR><TR><TD CLASS="l"><A NAME="7">231</A></TD><TD>??????????*??@param??line??not??null</TD></TR><TR><TD CLASS="l">232</TD><TD>??????????*
??@return??not??null</TD></TR><TR><TD CLASS="l">233</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">234</TD><TD>????????private??String??substituteVariables(String??line)??{</TD></TR><TR CLASS="c"><TD CLASS="l">235</TD><TD>????????????????if??(variables.size()??>??0)??{</TD></TR><TR CLASS="c"><TD CLASS="l">236</TD><TD>????????????????????????final??StringBuffer??buffer??=??new??StringBuffer(line);</TD></TR><TR CLASS="c"><TD CLASS="l">237</TD><TD>????????????????????????int??start??=??0;</TD></TR><TR CLASS="c"><TD CLASS="l">238</TD><TD>????????????????????????int??end??=??0;</TD></TR><TR CLASS="c"><TD CLASS="l">239</TD><TD>????????????????????????while??(start??>=??0??&&??end??>=??0)??{??</TD></TR><TR CLASS="c"><TD CLASS="l">240</TD><TD>????????????????????????????????start??=??buffer.indexOf("${",??end);</TD></TR><TR CLASS="c"><TD CLASS="l">241</TD><TD>????????????????????????????????if??(start??<??0)??{</TD></TR><TR CLASS="c"><TD CLASS="l">242</T
D><TD>????????????????????????????????????????break;</TD></TR><TR><TD CLASS="l">243</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">244</TD><TD>????????????????????????????????end??=??buffer.indexOf("}",??start);</TD></TR><TR CLASS="c"><TD CLASS="l">245</TD><TD>????????????????????????????????if??(end??<??0)??{</TD></TR><TR CLASS="z"><TD CLASS="l">246</TD><TD>????????????????????????????????????????break;</TD></TR><TR><TD CLASS="l">247</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">248</TD><TD>????????????????????????????????final??String??name??=??buffer.substring(start+2,??end);</TD></TR><TR CLASS="c"><TD CLASS="l">249</TD><TD>????????????????????????????????final??String??value??=??variables.getProperty(name);</TD></TR><TR CLASS="c"><TD CLASS="l">250</TD><TD>????????????????????????????????if??(value??!=??null)??{</TD></TR><TR CLASS="c"><TD CLASS="l">251</TD><TD>?????????????????????????????????????
???buffer.replace(start,??end??+??1,??value);</TD></TR><TR CLASS="c"><TD CLASS="l">252</TD><TD>????????????????????????????????????????final??int??variableLength??=??(end??-??start??+??2);</TD></TR><TR CLASS="c"><TD CLASS="l">253</TD><TD>????????????????????????????????????????end??=??end??+??(value.length()??-??variableLength);</TD></TR><TR><TD CLASS="l">254</TD><TD>????????????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">255</TD><TD>????????????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">256</TD><TD>????????????????????????line??=??buffer.toString();</TD></TR><TR><TD CLASS="l">257</TD><TD>????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">258</TD><TD>????????????????return??line;</TD></TR><TR><TD CLASS="l">259</TD><TD>????????}</TD></TR><TR><TD CLASS="l">260</TD><TD>??</TD></TR><TR><TD CLASS="l">261</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 HRE
F="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>
+<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 Fri May 15 16:21:14 BST 2009)</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">ProtocolSessionBuilder.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>ProtocolSessionBuilder.java</TD><TD>100% (1/1)</TD><TD CLASS="h">56%  (5/9)</TD><TD CLASS="h">45%  (156/347)</TD><TD CLASS="h">50%  (44.6/89)</TD></TR></TABLE><H3>COVERAGE BREAKDOWN BY CLASS AN
D 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">ProtocolSessionBuilder</A></TD><TD>100% (1/1)</TD><TD CLASS="h">56%  (5/9)</TD><TD CLASS="h">45%  (156/347)</TD><TD CLASS="h">50%  (44.6/89)</TD></TR><TR><TD CLASS="f"><A HREF="#1">addProtocolLines (String, InputStream, ProtocolInteractor): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/14)</TD><TD CLASS="h">0%   (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2">addTestFile (String, ProtocolInteractor): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/27)</TD><TD CLASS="h">0% �
� (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#3">buildProtocolSession (String): ProtocolInteractor</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/10)</TD><TD CLASS="h">0%   (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4">buildProtocolSession (String, Reader): ProtocolInteractor</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/11)</TD><TD CLASS="h">0%   (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#5">doAddProtocolLines (ProtocolInteractor, String, BufferedReader): void</A></TD><TD> </TD><TD>100% (1/1)</TD><TD CLASS="h">30%  (54/178)</TD><TD CLASS="h">37%  (16.6/45)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#6">addProtocolLines (String, Reader, ProtocolInteractor): void</A></TD><TD> </TD><TD>100% (1/1)</TD><TD>78%  (14/18)</TD><TD>80%  (4/5)</TD></TR><TR><TD CLASS="f"><A HREF="#7">substitute
Variables (String): String</A></TD><TD> </TD><TD>100% (1/1)</TD><TD>99%  (73/74)</TD><TD>95%  (19/20)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#0">ProtocolSessionBuilder (): void</A></TD><TD> </TD><TD>100% (1/1)</TD><TD>100% (8/8)</TD><TD>100% (3/3)</TD></TR><TR><TD CLASS="f"><A HREF="#9">setVariable (String, String): void</A></TD><TD> </TD><TD>100% (1/1)</TD><TD>100% (7/7)</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 wor
k 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> * "License"); 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> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *</TD></TR><TR><TD CLASS="l">15</TD><TD> * KIND, either express or impli
ed.  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.BufferedReader;</TD></TR><TR><TD CLASS="l">23</TD><TD>import java.io.InputStream;</TD></TR><TR><TD CLASS="l">24</TD><TD>import java.io.InputStreamReader;</TD></TR><TR><TD CLASS="l">25</TD><TD>import java.io.
Reader;</TD></TR><TR><TD CLASS="l">26</TD><TD>import java.util.ArrayList;</TD></TR><TR><TD CLASS="l">27</TD><TD>import java.util.List;</TD></TR><TR><TD CLASS="l">28</TD><TD>import java.util.Properties;</TD></TR><TR><TD CLASS="l">29</TD><TD> </TD></TR><TR><TD CLASS="l">30</TD><TD> </TD></TR><TR><TD CLASS="l">31</TD><TD>/**</TD></TR><TR><TD CLASS="l">32</TD><TD> * A builder which generates scripts from textual input.</TD></TR><TR><TD CLASS="l">33</TD><TD> * </TD></TR><TR><TD CLASS="l">34</TD><TD> * @author Darrell DeBoer <darrell@apache.org></TD></TR><TR><TD CLASS="l">35</TD><TD> * </TD></TR><TR><TD CLASS="l">36</TD><TD> * @version $Revision: 722585 $</TD></TR><TR><TD CLASS="l">37</TD><TD> */</TD></TR><TR><TD CLASS="l">38</TD><TD>public class ProtocolSessionBuilder {</TD></TR><TR><TD CLASS="l">39</TD><TD>    </TD></TR><TR><TD CLASS="l">40</TD><TD>    pu
blic static final String SERVER_CONTINUATION_TAG = "S: \\+";</TD></TR><TR><TD CLASS="l">41</TD><TD> </TD></TR><TR><TD CLASS="l">42</TD><TD>    public static final String CLIENT_TAG = "C:";</TD></TR><TR><TD CLASS="l">43</TD><TD> </TD></TR><TR><TD CLASS="l">44</TD><TD>    public static final String SERVER_TAG = "S:";</TD></TR><TR><TD CLASS="l">45</TD><TD> </TD></TR><TR><TD CLASS="l">46</TD><TD>    public static final String OPEN_UNORDERED_BLOCK_TAG = "SUB {";</TD></TR><TR><TD CLASS="l">47</TD><TD> </TD></TR><TR><TD CLASS="l">48</TD><TD>    public static final String CLOSE_UNORDERED_BLOCK_TAG = "}";</TD></TR><TR><TD CLASS="l">49</TD><TD> </TD></TR><TR><TD CLASS="l">50</TD><TD>    public static final String COMMENT_TAG = "#";</TD></TR><TR><TD CLA
SS="l">51</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="0">52</A></TD><TD>    public static final String SESSION_TAG = "SESSION:";</TD></TR><TR><TD CLASS="l">53</TD><TD> </TD></TR><TR><TD CLASS="l">54</TD><TD>    private final Properties variables;</TD></TR><TR><TD CLASS="l">55</TD><TD>    </TD></TR><TR CLASS="c"><TD CLASS="l">56</TD><TD>    public ProtocolSessionBuilder() {</TD></TR><TR CLASS="c"><TD CLASS="l">57</TD><TD>        variables = new Properties();</TD></TR><TR CLASS="c"><TD CLASS="l">58</TD><TD>    }</TD></TR><TR><TD CLASS="l">59</TD><TD>    </TD></TR><TR><TD CLASS="l">60</TD><TD>    /**</TD></TR><TR><TD CLASS="l">61</TD><TD>     * Sets a substitution varaible.</TD></TR><TR><TD CLASS="l">62</TD><TD>     * The value of a variable will beÂ
substituted whereever</TD></TR><TR><TD CLASS="l">63</TD><TD>     * ${<code>NAME</code>} is found in the input</TD></TR><TR><TD CLASS="l">64</TD><TD>     * where <code>NAME</code> is the name of the variable.</TD></TR><TR><TD CLASS="l"><A NAME="9">65</A></TD><TD>     * @param name not null</TD></TR><TR><TD CLASS="l">66</TD><TD>     * @param value not null</TD></TR><TR><TD CLASS="l">67</TD><TD>     */</TD></TR><TR><TD CLASS="l">68</TD><TD>    public void setVariable(final String name, final String value) {</TD></TR><TR CLASS="c"><TD CLASS="l">69</TD><TD>        variables.put(name, value);</TD></TR><TR CLASS="c"><TD CLASS="l">70</TD><TD>    }</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>     * Builds a ProtocolSession by reading lines from the test file with the</TD></TR><TR><TD CLASS="l">74</TD><TD>     * supplied name.</TD></TR><TR><TD CLASS="l">75</TD><TD>     * </TD></TR><TR><TD CLASS="l">76</TD><TD>     * @param fileName</TD></TR><TR><TD CLASS="l">77</TD><TD>     *            The name of the protocol session file.</TD></TR><TR><TD CLASS="l"><A NAME="3">78</A></TD><TD>     * @return The ProtocolSession</TD></TR><TR><TD CLASS="l">79</TD><TD>     */</TD></TR><TR><TD CLASS="l">80</TD><TD>    public ProtocolInteractor buildProtocolSession(String fileName)</TD></TR><TR><TD CLASS="l">81</TD><TD>            throws Exception {</TD><
/TR><TR CLASS="z"><TD CLASS="l">82</TD><TD>        ProtocolInteractor session = new ProtocolSession();</TD></TR><TR CLASS="z"><TD CLASS="l">83</TD><TD>        addTestFile(fileName, session);</TD></TR><TR CLASS="z"><TD CLASS="l">84</TD><TD>        return session;</TD></TR><TR><TD CLASS="l">85</TD><TD>    }</TD></TR><TR><TD CLASS="l">86</TD><TD>    </TD></TR><TR><TD CLASS="l">87</TD><TD>    /**</TD></TR><TR><TD CLASS="l">88</TD><TD>     * Builds a ProtocolSession by reading lines from the reader.</TD></TR><TR><TD CLASS="l">89</TD><TD>     * </TD></TR><TR><TD CLASS="l">90</TD><TD>     * @param fileName</TD></TR><TR><TD CLASS="l">91</TD><TD>     *            The name of the protocol session file.</TD></TR><T
R><TD CLASS="l"><A NAME="4">92</A></TD><TD>     * @return The ProtocolSession</TD></TR><TR><TD CLASS="l">93</TD><TD>     */</TD></TR><TR><TD CLASS="l">94</TD><TD>    public ProtocolInteractor buildProtocolSession(final String scriptName, final Reader reader)</TD></TR><TR><TD CLASS="l">95</TD><TD>            throws Exception {</TD></TR><TR CLASS="z"><TD CLASS="l">96</TD><TD>        ProtocolInteractor session = new ProtocolSession();</TD></TR><TR CLASS="z"><TD CLASS="l">97</TD><TD>        addProtocolLines(scriptName, reader, session);</TD></TR><TR CLASS="z"><TD CLASS="l">98</TD><TD>        return session;</TD></TR><TR><TD CLASS="l">99</TD><TD>    }</TD></TR><TR><TD CLASS="l">100</TD><TD> </TD></TR><TR><TD CLASS="l">101</TD><TD> </TD></TR><TR><TD CLASS="l">
102</TD><TD>    /**</TD></TR><TR><TD CLASS="l">103</TD><TD>     * Adds all protocol elements from a test file to the ProtocolSession</TD></TR><TR><TD CLASS="l">104</TD><TD>     * supplied.</TD></TR><TR><TD CLASS="l">105</TD><TD>     * </TD></TR><TR><TD CLASS="l">106</TD><TD>     * @param fileName</TD></TR><TR><TD CLASS="l">107</TD><TD>     *            The name of the protocol session file.</TD></TR><TR><TD CLASS="l">108</TD><TD>     * @param session</TD></TR><TR><TD CLASS="l">109</TD><TD>     *            The ProtocolSession to add the elements to.</TD></TR><TR><TD CLASS="l"><A NAME="2">110</A></TD><TD>     */</TD></TR><TR><TD CLASS="l">111</TD><TD>    public void addTes
tFile(String fileName, ProtocolInteractor session)</TD></TR><TR><TD CLASS="l">112</TD><TD>            throws Exception {</TD></TR><TR><TD CLASS="l">113</TD><TD>        // Need to find local resource.</TD></TR><TR CLASS="z"><TD CLASS="l">114</TD><TD>        InputStream is = this.getClass().getResourceAsStream(fileName);</TD></TR><TR CLASS="z"><TD CLASS="l">115</TD><TD>        if (is == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">116</TD><TD>            throw new Exception("Test Resource '" + fileName + "' not found.");</TD></TR><TR><TD CLASS="l">117</TD><TD>        }</TD></TR><TR><TD CLASS="l">118</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">119</TD><TD>        addProtocolLines(fileName
, is, session);</TD></TR><TR CLASS="z"><TD CLASS="l">120</TD><TD>    }</TD></TR><TR><TD CLASS="l">121</TD><TD> </TD></TR><TR><TD CLASS="l">122</TD><TD>    /**</TD></TR><TR><TD CLASS="l">123</TD><TD>     * Reads ProtocolElements from the supplied InputStream and adds them to the</TD></TR><TR><TD CLASS="l">124</TD><TD>     * ProtocolSession.</TD></TR><TR><TD CLASS="l">125</TD><TD>     * @param scriptName</TD></TR><TR><TD CLASS="l">126</TD><TD>     *            The name of the source file, for error messages.</TD></TR><TR><TD CLASS="l">127</TD><TD>     * @param is</TD></TR><TR><TD CLASS="l">128</TD><TD>     *            The input stream containing the protocol definition.</TD></TR><TR><TD CLASS="l"
><A NAME="1">129</A></TD><TD>     * @param session</TD></TR><TR><TD CLASS="l">130</TD><TD>     *            The ProtocolSession to add elements to.</TD></TR><TR><TD CLASS="l">131</TD><TD>     */</TD></TR><TR><TD CLASS="l">132</TD><TD>    public void addProtocolLines(String scriptName, InputStream is, ProtocolInteractor session) throws Exception {</TD></TR><TR CLASS="z"><TD CLASS="l">133</TD><TD>        BufferedReader reader = new BufferedReader(new InputStreamReader(is));</TD></TR><TR><TD CLASS="l">134</TD><TD>        </TD></TR><TR CLASS="z"><TD CLASS="l">135</TD><TD>        doAddProtocolLines(session, scriptName, reader);</TD></TR><TR CLASS="z"><TD CLASS="l">136</TD><TD>    }</TD></TR><TR><TD CLASS="l">137</TD><TD> </TD></TR><
TR><TD CLASS="l">138</TD><TD>    /**</TD></TR><TR><TD CLASS="l">139</TD><TD>     * Reads ProtocolElements from the supplied Reader and adds them to the</TD></TR><TR><TD CLASS="l">140</TD><TD>     * ProtocolSession.</TD></TR><TR><TD CLASS="l">141</TD><TD>     * @param scriptName</TD></TR><TR><TD CLASS="l">142</TD><TD>     *            The name of the source file, for error messages.</TD></TR><TR><TD CLASS="l">143</TD><TD>     * @param reader</TD></TR><TR><TD CLASS="l">144</TD><TD>     *            the reader containing the protocol definition.</TD></TR><TR><TD CLASS="l">145</TD><TD>     * @param session</TD></TR><TR><TD CLASS="l"><A NAME="6">146</A></TD><TD>     *     �
�       The ProtocolSession to add elements to.</TD></TR><TR><TD CLASS="l">147</TD><TD>     */</TD></TR><TR><TD CLASS="l">148</TD><TD>    public void addProtocolLines(String scriptName, Reader reader, ProtocolInteractor session) throws Exception {</TD></TR><TR><TD CLASS="l">149</TD><TD>        final BufferedReader bufferedReader;</TD></TR><TR CLASS="c"><TD CLASS="l">150</TD><TD>        if (reader instanceof BufferedReader) {</TD></TR><TR CLASS="z"><TD CLASS="l">151</TD><TD>            bufferedReader = (BufferedReader) reader;</TD></TR><TR><TD CLASS="l">152</TD><TD>        } else {</TD></TR><TR CLASS="c"><TD CLASS="l">153</TD><TD>            bufferedReader = new BufferedReader(reader);</TD></TR><TR><TD C
LASS="l">154</TD><TD>        }</TD></TR><TR CLASS="c"><TD CLASS="l">155</TD><TD>        doAddProtocolLines(session, scriptName, bufferedReader);</TD></TR><TR CLASS="c"><TD CLASS="l">156</TD><TD>    }</TD></TR><TR><TD CLASS="l">157</TD><TD>    </TD></TR><TR><TD CLASS="l">158</TD><TD>    /**</TD></TR><TR><TD CLASS="l">159</TD><TD>     * Reads ProtocolElements from the supplied Reader and adds them to the</TD></TR><TR><TD CLASS="l">160</TD><TD>     * ProtocolSession.</TD></TR><TR><TD CLASS="l">161</TD><TD>     * </TD></TR><TR><TD CLASS="l">162</TD><TD>     * @param reader</TD></TR><TR><TD CLASS="l">163</TD><TD>     *            the reader containing the protocol definition.</TD></TR><TR><TD CLASS="l">164</TD><TD>  �
�   * @param session</TD></TR><TR><TD CLASS="l">165</TD><TD>     *            The ProtocolSession to add elements to.</TD></TR><TR><TD CLASS="l">166</TD><TD>     * @param scriptName</TD></TR><TR><TD CLASS="l"><A NAME="5">167</A></TD><TD>     *            The name of the source file, for error messages.</TD></TR><TR><TD CLASS="l">168</TD><TD>     */</TD></TR><TR><TD CLASS="l">169</TD><TD>    private void doAddProtocolLines(ProtocolInteractor session, String scriptName, BufferedReader reader) throws Exception {</TD></TR><TR><TD CLASS="l">170</TD><TD>        String line;</TD></TR><TR CLASS="c"><TD CLASS="l">171</TD><TD>        int sessionNumber = -1;</TD></TR><TR CLASS="c"><TD CLASS="l">172<
/TD><TD>        int lineNumber = -1;</TD></TR><TR CLASS="c"><TD CLASS="l">173</TD><TD>        String lastClientMsg = "";</TD></TR><TR CLASS="c"><TD CLASS="l">174</TD><TD>        while ((line = reader.readLine()) != null) {</TD></TR><TR CLASS="c"><TD CLASS="l">175</TD><TD>            line = substituteVariables(line);</TD></TR><TR CLASS="c"><TD CLASS="l">176</TD><TD>            String location = scriptName + ":" + lineNumber;</TD></TR><TR CLASS="c"><TD CLASS="l">177</TD><TD>            if (SERVER_CONTINUATION_TAG.equals(line)) {</TD></TR><TR CLASS="z"><TD CLASS="l">178</TD><TD>                session.CONT(sessionNumber);</TD></TR><TR CLASS="c"><TD CLASS="l">179</TD><TD>
            } else if (line.startsWith(CLIENT_TAG)) {</TD></TR><TR CLASS="c"><TD CLASS="l">180</TD><TD>                String clientMsg = "";</TD></TR><TR CLASS="c"><TD CLASS="l">181</TD><TD>                if (line.length() > 3) {</TD></TR><TR CLASS="c"><TD CLASS="l">182</TD><TD>                    clientMsg = line.substring(3);</TD></TR><TR><TD CLASS="l">183</TD><TD>                }</TD></TR><TR CLASS="c"><TD CLASS="l">184</TD><TD>                session.CL(sessionNumber, clientMsg);</TD></TR><TR CLASS="c"><TD CLASS="l">185</TD><TD>                lastClientMsg = clientMsg;</TD></TR><
TR CLASS="p"><TD TITLE="64% line coverage (7 out of 11 instructions)" CLASS="l">186</TD><TD TITLE="64% line coverage (7 out of 11 instructions)">            } else if (line.startsWith(SERVER_TAG)) {</TD></TR><TR CLASS="z"><TD CLASS="l">187</TD><TD>                String serverMsg = "";</TD></TR><TR CLASS="z"><TD CLASS="l">188</TD><TD>                if (line.length() > 3) {</TD></TR><TR CLASS="z"><TD CLASS="l">189</TD><TD>                    serverMsg = line.substring(3);</TD></TR><TR><TD CLASS="l">190</TD><TD>                }</TD></TR><TR CLASS="z"><TD CLASS="l">191</TD><TD>                session.SL(sessionNumber, serverMsg, location,
 lastClientMsg);</TD></TR><TR CLASS="z"><TD CLASS="l">192</TD><TD>            } else if (line.startsWith(OPEN_UNORDERED_BLOCK_TAG)) {</TD></TR><TR CLASS="z"><TD CLASS="l">193</TD><TD>                List<String> unorderedLines = new ArrayList<String>(5);</TD></TR><TR CLASS="z"><TD CLASS="l">194</TD><TD>                line = reader.readLine();</TD></TR><TR><TD CLASS="l">195</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">196</TD><TD>                while (!line.startsWith(CLOSE_UNORDERED_BLOCK_TAG)) {</TD></TR><TR CLASS="z"><TD CLASS="l">197</TD><TD>                    if (!line.startsWith(SERVER_TAG)) {</TD></TR><TR CLASS="z"><TD CLASS="l">198</TD><TD>       �
�                 throw new Exception(</TD></TR><TR><TD CLASS="l">199</TD><TD>                                "Only 'S: ' lines are permitted inside a 'SUB {' block.");</TD></TR><TR><TD CLASS="l">200</TD><TD>                    }</TD></TR><TR CLASS="z"><TD CLASS="l">201</TD><TD>                    String serverMsg = line.substring(3);</TD></TR><TR CLASS="z"><TD CLASS="l">202</TD><TD>                    unorderedLines.add(serverMsg);</TD></TR><TR CLASS="z"><TD CLASS="l">203</TD><TD>                    line = reader.readLine();</TD></TR><TR
CLASS="z"><TD CLASS="l">204</TD><TD>                    lineNumber++;</TD></TR><TR CLASS="z"><TD CLASS="l">205</TD><TD>                }</TD></TR><TR><TD CLASS="l">206</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">207</TD><TD>                session.SUB(sessionNumber, unorderedLines, location,</TD></TR><TR><TD CLASS="l">208</TD><TD>                        lastClientMsg);</TD></TR><TR CLASS="z"><TD CLASS="l">209</TD><TD>            } else if (line.startsWith(COMMENT_TAG)</TD></TR><TR><TD CLASS="l">210</TD><TD>                    || line.trim().length() == 0) {</TD></TR><TR><TD CLASS="l">211</TD><TD>       �
�         // ignore these lines.</TD></TR><TR CLASS="z"><TD CLASS="l">212</TD><TD>            } else if (line.startsWith(SESSION_TAG)) {</TD></TR><TR CLASS="z"><TD CLASS="l">213</TD><TD>                String number = line.substring(SESSION_TAG.length()).trim();</TD></TR><TR CLASS="z"><TD CLASS="l">214</TD><TD>                if (number.length() == 0) {</TD></TR><TR CLASS="z"><TD CLASS="l">215</TD><TD>                    throw new Exception("No session number specified");</TD></TR><TR><TD CLASS="l">216</TD><TD>                }</TD></TR><TR CLASS="z"><TD CLASS="l">217</TD><TD>                sessionNumbe
r = Integer.parseInt(number);</TD></TR><TR CLASS="z"><TD CLASS="l">218</TD><TD>            } else {</TD></TR><TR CLASS="z"><TD CLASS="l">219</TD><TD>                String prefix = line;</TD></TR><TR CLASS="z"><TD CLASS="l">220</TD><TD>                if (line.length() > 3) {</TD></TR><TR CLASS="z"><TD CLASS="l">221</TD><TD>                    prefix = line.substring(0, 3);</TD></TR><TR><TD CLASS="l">222</TD><TD>                }</TD></TR><TR CLASS="z"><TD CLASS="l">223</TD><TD>                throw new Exception("Invalid line prefix: " + prefix);</TD></TR><TR><TD CLASS="l">224</TD><TD>        Â
   }</TD></TR><TR CLASS="c"><TD CLASS="l">225</TD><TD>            lineNumber++;</TD></TR><TR CLASS="c"><TD CLASS="l">226</TD><TD>        }</TD></TR><TR CLASS="c"><TD CLASS="l">227</TD><TD>    }</TD></TR><TR><TD CLASS="l">228</TD><TD> </TD></TR><TR><TD CLASS="l">229</TD><TD>    /**</TD></TR><TR><TD CLASS="l">230</TD><TD>     * Replaces ${<code>NAME</code>} with variable value.</TD></TR><TR><TD CLASS="l"><A NAME="7">231</A></TD><TD>     * @param line not null</TD></TR><TR><TD CLASS="l">232</TD><TD>     * @return not null</TD></TR><TR><TD CLASS="l">233</TD><TD>     */</TD></TR><TR><TD CLASS="l">234</TD><TD>    private String substituteVariables(String line) {</TD></TR><TR CLASS="c"><TD CLASS="l">235</TD><TD>        if (variab
les.size() > 0) {</TD></TR><TR CLASS="c"><TD CLASS="l">236</TD><TD>            final StringBuffer buffer = new StringBuffer(line);</TD></TR><TR CLASS="c"><TD CLASS="l">237</TD><TD>            int start = 0;</TD></TR><TR CLASS="c"><TD CLASS="l">238</TD><TD>            int end = 0;</TD></TR><TR CLASS="c"><TD CLASS="l">239</TD><TD>            while (start >= 0 && end >= 0) { </TD></TR><TR CLASS="c"><TD CLASS="l">240</TD><TD>                start = buffer.indexOf("${", end);</TD></TR><TR CLASS="c"><TD CLASS="l">241</TD><TD>                if (start < 0) {</TD></TR><TR CLASS="c"><TD CLASS="l">242</TD><TD>     Â
              break;</TD></TR><TR><TD CLASS="l">243</TD><TD>                }</TD></TR><TR CLASS="c"><TD CLASS="l">244</TD><TD>                end = buffer.indexOf("}", start);</TD></TR><TR CLASS="c"><TD CLASS="l">245</TD><TD>                if (end < 0) {</TD></TR><TR CLASS="z"><TD CLASS="l">246</TD><TD>                    break;</TD></TR><TR><TD CLASS="l">247</TD><TD>                }</TD></TR><TR CLASS="c"><TD CLASS="l">248</TD><TD>                final String name = buffer.substring(start+2, end);</TD></TR><TR CLASS="c"><TD CLASS="l">249</TD><TD>          Â
     final String value = variables.getProperty(name);</TD></TR><TR CLASS="c"><TD CLASS="l">250</TD><TD>                if (value != null) {</TD></TR><TR CLASS="c"><TD CLASS="l">251</TD><TD>                    buffer.replace(start, end + 1, value);</TD></TR><TR CLASS="c"><TD CLASS="l">252</TD><TD>                    final int variableLength = (end - start + 2);</TD></TR><TR CLASS="c"><TD CLASS="l">253</TD><TD>                    end = end + (value.length() - variableLength);</TD></TR><TR><TD CLASS="l">254</TD><TD>                }</TD></TR><TR CLASS="c"><TD CLASS="l">255</TD><TD>        Â
   }</TD></TR><TR CLASS="c"><TD CLASS="l">256</TD><TD>            line = buffer.toString();</TD></TR><TR><TD CLASS="l">257</TD><TD>        }</TD></TR><TR CLASS="c"><TD CLASS="l">258</TD><TD>        return line;</TD></TR><TR><TD CLASS="l">259</TD><TD>    }</TD></TR><TR><TD CLASS="l">260</TD><TD> </TD></TR><TR><TD CLASS="l">261</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>
\ No newline at end of file
Modified: james/site/trunk/www/mpt/main/emma/_files/8.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/mpt/main/emma/_files/8.html?rev=775214&r1=775213&r2=775214&view=diff
==============================================================================
--- james/site/trunk/www/mpt/main/emma/_files/8.html (original)
+++ james/site/trunk/www/mpt/main/emma/_files/8.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">ExternalHostSystem.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>ExternalHostSystem.java</TD><TD>100%??(1/1)</TD><TD>100%??(2/2)</TD><TD CLASS="h">51%????(19/37)</TD><TD>86%????(6/7)</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>cla
ss,??%</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">ExternalHostSystem</A></TD><TD>100%??(1/1)</TD><TD>100%??(2/2)</TD><TD CLASS="h">51%????(19/37)</TD><TD>86%????(6/7)</TD></TR><TR><TD CLASS="f"><A HREF="#1">addUser??(String,??String):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD CLASS="h">33%????(9/27)</TD><TD CLASS="h">75%????(3/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#0">ExternalHostSystem??(String,??int,??Monitor,??String,??UserAdder):??void</A></TD><TD>??</TD><TD>100%??(1/1)</TD><TD>100%??(10/10)</TD><TD>100%??(3/3)</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)??unde
r??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>??*??"License");??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>??*??"AS??IS"??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>??</TD></TR><TR><TD CLASS="l">23</TD><TD>/**</TD></TR><TR><TD CLASS="l">24</TD><TD>??*??<p>Connects??to??a??host??system??serving??on??an??open??port.</p></TD></TR><TR><TD CLASS="l">25</TD><TD>??*??<p></TD></TR><TR><TD CLASS="l">26</TD><TD>??*??This??is??typically??used??for??functional??integration??testing??of??a??complete</TD></TR><TR><TD CLASS="l">27</TD><TD>??*??server??system??(including??sockets).??Apache??James??MPT??AntLib??provides??an</TD></TR><TR><TD CLASS="l">28</TD><TD>??*??<a??href='http://ant.apache.org'??rel='tag'>Ant</a>??task??suitable??for??this</TD></TR><TR><TD CLASS="l">29</TD><TD>??*??use??case.</TD></TR><TR><TD CLASS="l">30</TD><TD>??*??</p></TD></TR><TR><TD CL
ASS="l">31</TD><TD>??*/</TD></TR><TR><TD CLASS="l">32</TD><TD>public??class??ExternalHostSystem??extends??ExternalSessionFactory??implements??HostSystem??{</TD></TR><TR><TD CLASS="l">33</TD><TD>????????</TD></TR><TR><TD CLASS="l">34</TD><TD>????????private??final??UserAdder??userAdder;</TD></TR><TR><TD CLASS="l">35</TD><TD>??</TD></TR><TR><TD CLASS="l">36</TD><TD>????????/**</TD></TR><TR><TD CLASS="l">37</TD><TD>??????????*??Constructs??a??host??system??suitable??for??connection??to??an??open??port.</TD></TR><TR><TD CLASS="l">38</TD><TD>??????????*??@param??host??host??name??that??will??be??connected??to,??not??null</TD></TR><TR><TD CLASS="l">39</TD><TD>??????????*??@param??port??port??on??host??that??will??be??connected??to,??not??null</TD></TR><TR><TD CLASS="l">40</TD><TD>??????????*??@param??monitor??monitors??the??conduct??of??the??connection</TD></TR><TR><TD CLASS="l">41</TD><TD>??????????*??@param??shabang??protocol??shabang??will??be??sent??to??the??script??test??in??
the??place??of??the</TD></TR><TR><TD CLASS="l">42</TD><TD>??????????*??first??line??received??from??the??server.??Many??protocols??pass??server??specific??information</TD></TR><TR><TD CLASS="l">43</TD><TD>??????????*??in??the??first??line.??When??not??null,??this??line??will??be??replaced.</TD></TR><TR><TD CLASS="l">44</TD><TD>??????????*??Or??null??when??the??first??line??should??be??passed??without??replacement</TD></TR><TR><TD CLASS="l"><A NAME="0">45</A></TD><TD>??????????*??@param??userAdder??null??when??test??system??has??appropriate??users??already??set</TD></TR><TR><TD CLASS="l">46</TD><TD>??????????*/</TD></TR><TR><TD CLASS="l">47</TD><TD>????????public??ExternalHostSystem(final??String??host,??final??int??port,</TD></TR><TR><TD CLASS="l">48</TD><TD>????????????????????????final??Monitor??monitor,??final??String??shabang,??final??UserAdder??userAdder)??{</TD></TR><TR CLASS="c"><TD CLASS="l">49</TD><TD>????????????????super(host,??port,??monitor,??shabang);</TD></TR>
<TR CLASS="c"><TD CLASS="l"><A NAME="1">50</A></TD><TD>????????????????this.userAdder??=??userAdder;</TD></TR><TR CLASS="c"><TD CLASS="l">51</TD><TD>????????}</TD></TR><TR><TD CLASS="l">52</TD><TD>??</TD></TR><TR><TD CLASS="l">53</TD><TD>????????public??void??addUser(String??user,??String??password)??throws??Exception??{</TD></TR><TR CLASS="c"><TD CLASS="l">54</TD><TD>????????????????if??(userAdder??==??null)??{</TD></TR><TR CLASS="z"><TD CLASS="l">55</TD><TD>????????????????????????monitor.note("Please??ensure??user??'"??+??user??+??"'??with??password??'"</TD></TR><TR><TD CLASS="l">56</TD><TD>????????????????????????????????+??password??+??"'??exists.");</TD></TR><TR><TD CLASS="l">57</TD><TD>????????????????}??else??{</TD></TR><TR CLASS="c"><TD CLASS="l">58</TD><TD>????????????????????????userAdder.addUser(user,??password);</TD></TR><TR><TD CLASS="l">59</TD><TD>????????????????}</TD></TR><TR CLASS="c"><TD CLASS="l">60</TD><TD>????????}</TD></TR><TR><
TD CLASS="l">61</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>
+<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 Fri May 15 16:21:14 BST 2009)</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">ExternalHostSystem.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>ExternalHostSystem.java</TD><TD>100% (1/1)</TD><TD>100% (2/2)</TD><TD CLASS="h">51%  (19/37)</TD><TD>86%  (6/7)</TD></TR></TABLE><H3>COVERAGE BREAKDOWN BY CLASS AND METHOD</H3><TABLE CLASS="cn" WID
TH="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">ExternalHostSystem</A></TD><TD>100% (1/1)</TD><TD>100% (2/2)</TD><TD CLASS="h">51%  (19/37)</TD><TD>86%  (6/7)</TD></TR><TR><TD CLASS="f"><A HREF="#1">addUser (String, String): void</A></TD><TD> </TD><TD>100% (1/1)</TD><TD CLASS="h">33%  (9/27)</TD><TD CLASS="h">75%  (3/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#0">ExternalHostSystem (String, int, Monitor, String, UserAdder): void</A></TD><TD> </TD><TD>100% (1/1)</TD><TD>100% (10/10)</TD><TD>100% (3/3)</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> * "License"); you may not use this file except in compliance   *</TD></TR><TR><TD CLASS="l">8</TD><TD> * with the Lice
nse.  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,   *</T
D></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> * "AS IS" 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> </TD></TR><TR><TD CLASS="l">23</TD><TD>/**</TD></TR><TR><TD CLASS="l">24</TD><TD> * <p>Connects to a host system serving on an open port.</p></TD></TR><TR><TD CLASS="l">25</TD><TD> * <p></TD></TR><TR><TD CLASS="l">26</TD><TD> * This is typically used for functional integration testing of a complete</TD></TR><TR><TD CLASS="l">27</TD><TD> * server system (including sockets). Apache James MPT AntLib provides an</TD></TR><TR><TD CLASS="l">28</TD><TD> * <a href='http://ant.apache.org' rel='tag'>Ant</a> task suitable for this</TD></TR><TR><TD CLASS="l">29</TD><TD> * use case.</TD></TR><TR><TD CLASS="l">30</TD><TD> * </p></TD></TR><TR><TD CLASS="
l">31</TD><TD> */</TD></TR><TR><TD CLASS="l">32</TD><TD>public class ExternalHostSystem extends ExternalSessionFactory implements HostSystem {</TD></TR><TR><TD CLASS="l">33</TD><TD>    </TD></TR><TR><TD CLASS="l">34</TD><TD>    private final UserAdder userAdder;</TD></TR><TR><TD CLASS="l">35</TD><TD> </TD></TR><TR><TD CLASS="l">36</TD><TD>    /**</TD></TR><TR><TD CLASS="l">37</TD><TD>     * Constructs a host system suitable for connection to an open port.</TD></TR><TR><TD CLASS="l">38</TD><TD>     * @param host host name that will be connected to, not null</TD></TR><TR><TD CLASS="l">39</TD><TD>     * @param port port on host that will be connected to, not null</TD></TR><TR><TD CLASS="l">40</TD><TD>     * @param monitor monitors theÂ
conduct of the connection</TD></TR><TR><TD CLASS="l">41</TD><TD>     * @param shabang protocol shabang will be sent to the script test in the place of the</TD></TR><TR><TD CLASS="l">42</TD><TD>     * first line received from the server. Many protocols pass server specific information</TD></TR><TR><TD CLASS="l">43</TD><TD>     * in the first line. When not null, this line will be replaced.</TD></TR><TR><TD CLASS="l">44</TD><TD>     * Or null when the first line should be passed without replacement</TD></TR><TR><TD CLASS="l"><A NAME="0">45</A></TD><TD>     * @param userAdder null when test system has appropriate users already set</TD></TR><TR><TD CLASS="l">46</TD><TD>     */</TD></TR><TR><TD CLA
SS="l">47</TD><TD>    public ExternalHostSystem(final String host, final int port,</TD></TR><TR><TD CLASS="l">48</TD><TD>            final Monitor monitor, final String shabang, final UserAdder userAdder) {</TD></TR><TR CLASS="c"><TD CLASS="l">49</TD><TD>        super(host, port, monitor, shabang);</TD></TR><TR CLASS="c"><TD CLASS="l"><A NAME="1">50</A></TD><TD>        this.userAdder = userAdder;</TD></TR><TR CLASS="c"><TD CLASS="l">51</TD><TD>    }</TD></TR><TR><TD CLASS="l">52</TD><TD> </TD></TR><TR><TD CLASS="l">53</TD><TD>    public void addUser(String user, String password) throws Exception {</TD></TR><TR CLASS="c"><TD CLASS="l">54</TD><TD>        if (userAdder == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">55</TD><TD>  Â
         monitor.note("Please ensure user '" + user + "' with password '"</TD></TR><TR><TD CLASS="l">56</TD><TD>                + password + "' exists.");</TD></TR><TR><TD CLASS="l">57</TD><TD>        } else {</TD></TR><TR CLASS="c"><TD CLASS="l">58</TD><TD>            userAdder.addUser(user, password);</TD></TR><TR><TD CLASS="l">59</TD><TD>        }</TD></TR><TR CLASS="c"><TD CLASS="l">60</TD><TD>    }</TD></TR><TR><TD CLASS="l">61</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>
\ No newline at end of file