<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>RequestResponseFilterTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> *  Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> *  or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> *  distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> *  regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> *  to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> *  "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> *  with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> *    <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *  Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *  software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> *  KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> *  specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> *  under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> *</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> */</em>
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">package</strong> org.apache.mina.filter.reqres;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.NoSuchElementException;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ScheduledExecutorService;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.common.DefaultWriteRequest;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.common.DummySession;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.common.IoFilterChain;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.common.IoSession;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.common.WriteRequest;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.common.IoFilter.NextFilter;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.easymock.AbstractMatcher;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.easymock.MockControl;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.junit.After;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.junit.Assert;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a name="40" href="#40">40</a>  
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment">/**</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * Tests {@link RequestResponseFilter}.</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> *</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * @version $Rev: 588178 $, $Date: 2007-10-25 03:28:40 -0600 (Thu, 25 Oct 2007) $</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> */</em>
<a name="47" href="#47">47</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">RequestResponseFilterTest</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="48" href="#48">48</a>  
<a name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> ScheduledExecutorService scheduler;
<a name="50" href="#50">50</a>  
<a name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> RequestResponseFilter filter;
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> IoSession session;
<a name="54" href="#54">54</a>  
<a name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> IoFilterChain chain;
<a name="56" href="#56">56</a>  
<a name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> NextFilter nextFilter;
<a name="58" href="#58">58</a>  
<a name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> MockControl nextFilterControl;
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">WriteRequestMatcher</a> matcher = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">WriteRequestMatcher</a>();
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>      @Override
<a name="64" href="#64">64</a>      @Before
<a name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
<a name="66" href="#66">66</a>          scheduler = Executors.newScheduledThreadPool(1);
<a name="67" href="#67">67</a>          filter = <strong class="jxr_keyword">new</strong> RequestResponseFilter(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">MessageInspector</a>(), scheduler);
<a name="68" href="#68">68</a>  
<a name="69" href="#69">69</a>          <em class="jxr_comment">// Set up mock objects.</em>
<a name="70" href="#70">70</a>          session = <strong class="jxr_keyword">new</strong> DummySession();
<a name="71" href="#71">71</a>          chain = session.getFilterChain();
<a name="72" href="#72">72</a>          nextFilterControl = MockControl.createControl(NextFilter.<strong class="jxr_keyword">class</strong>);
<a name="73" href="#73">73</a>          nextFilter = (NextFilter) nextFilterControl.getMock();
<a name="74" href="#74">74</a>  
<a name="75" href="#75">75</a>          <em class="jxr_comment">// Initialize the filter.</em>
<a name="76" href="#76">76</a>          filter.onPreAdd(chain, <span class="jxr_string">"reqres"</span>, nextFilter);
<a name="77" href="#77">77</a>          filter.onPostAdd(chain, <span class="jxr_string">"reqres"</span>, nextFilter);
<a name="78" href="#78">78</a>          Assert.assertFalse(session.getAttributeKeys().isEmpty());
<a name="79" href="#79">79</a>      }
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>      @Override
<a name="82" href="#82">82</a>      @After
<a name="83" href="#83">83</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() <strong class="jxr_keyword">throws</strong> Exception {
<a name="84" href="#84">84</a>          <em class="jxr_comment">// Destroy the filter.</em>
<a name="85" href="#85">85</a>          filter.onPreRemove(chain, <span class="jxr_string">"reqres"</span>, nextFilter);
<a name="86" href="#86">86</a>          filter.onPostRemove(chain, <span class="jxr_string">"reqres"</span>, nextFilter);
<a name="87" href="#87">87</a>          filter.destroy();
<a name="88" href="#88">88</a>          filter = <strong class="jxr_keyword">null</strong>;
<a name="89" href="#89">89</a>          scheduler.shutdown();
<a name="90" href="#90">90</a>      }
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>      @Test
<a name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWholeResponse() <strong class="jxr_keyword">throws</strong> Exception {
<a name="94" href="#94">94</a>          Request req = <strong class="jxr_keyword">new</strong> Request(1, <strong class="jxr_keyword">new</strong> Object(), Long.MAX_VALUE);
<a name="95" href="#95">95</a>          Response res = <strong class="jxr_keyword">new</strong> Response(req, <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a>(1, ResponseType.WHOLE),
<a name="96" href="#96">96</a>                  ResponseType.WHOLE);
<a name="97" href="#97">97</a>          WriteRequest rwr = <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req);
<a name="98" href="#98">98</a>  
<a name="99" href="#99">99</a>          <em class="jxr_comment">// Record</em>
<a name="100" href="#100">100</a>         nextFilter.filterWrite(session, <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req
<a name="101" href="#101">101</a>                 .getMessage()));
<a name="102" href="#102">102</a>         nextFilterControl.setMatcher(matcher);
<a name="103" href="#103">103</a>         nextFilter.messageSent(session, rwr);
<a name="104" href="#104">104</a>         nextFilter.messageReceived(session, res);
<a name="105" href="#105">105</a> 
<a name="106" href="#106">106</a>         <em class="jxr_comment">// Replay</em>
<a name="107" href="#107">107</a>         nextFilterControl.replay();
<a name="108" href="#108">108</a>         filter.filterWrite(nextFilter, session, rwr);
<a name="109" href="#109">109</a>         filter.messageSent(nextFilter, session, matcher.getLastWriteRequest());
<a name="110" href="#110">110</a>         filter.messageReceived(nextFilter, session, res.getMessage());
<a name="111" href="#111">111</a>         filter.messageReceived(nextFilter, session, res.getMessage()); <em class="jxr_comment">// Ignored</em>
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>         <em class="jxr_comment">// Verify</em>
<a name="114" href="#114">114</a>         nextFilterControl.verify();
<a name="115" href="#115">115</a>         Assert.assertEquals(res, req.awaitResponse());
<a name="116" href="#116">116</a>         assertNoSuchElementException(req);
<a name="117" href="#117">117</a>     }
<a name="118" href="#118">118</a> 
<a name="119" href="#119">119</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> assertNoSuchElementException(Request req)
<a name="120" href="#120">120</a>             <strong class="jxr_keyword">throws</strong> InterruptedException {
<a name="121" href="#121">121</a>         <em class="jxr_comment">// Make sure if an exception is thrown if a user waits one more time.</em>
<a name="122" href="#122">122</a>         <strong class="jxr_keyword">try</strong> {
<a name="123" href="#123">123</a>             req.awaitResponse();
<a name="124" href="#124">124</a>             Assert.fail();
<a name="125" href="#125">125</a>         } <strong class="jxr_keyword">catch</strong> (NoSuchElementException e) {
<a name="126" href="#126">126</a>             <em class="jxr_comment">// OK</em>
<a name="127" href="#127">127</a>         }
<a name="128" href="#128">128</a>     }
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>     @Test
<a name="131" href="#131">131</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPartialResponse() <strong class="jxr_keyword">throws</strong> Exception {
<a name="132" href="#132">132</a>         Request req = <strong class="jxr_keyword">new</strong> Request(1, <strong class="jxr_keyword">new</strong> Object(), Long.MAX_VALUE);
<a name="133" href="#133">133</a>         Response res1 = <strong class="jxr_keyword">new</strong> Response(req, <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a>(1, ResponseType.PARTIAL),
<a name="134" href="#134">134</a>                 ResponseType.PARTIAL);
<a name="135" href="#135">135</a>         Response res2 = <strong class="jxr_keyword">new</strong> Response(req, <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a>(1,
<a name="136" href="#136">136</a>                 ResponseType.PARTIAL_LAST), ResponseType.PARTIAL_LAST);
<a name="137" href="#137">137</a>         WriteRequest rwr = <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req);
<a name="138" href="#138">138</a> 
<a name="139" href="#139">139</a>         <em class="jxr_comment">// Record</em>
<a name="140" href="#140">140</a>         nextFilter.filterWrite(session, <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req
<a name="141" href="#141">141</a>                 .getMessage()));
<a name="142" href="#142">142</a>         nextFilterControl.setMatcher(matcher);
<a name="143" href="#143">143</a>         nextFilter.messageSent(session, rwr);
<a name="144" href="#144">144</a>         nextFilter.messageReceived(session, res1);
<a name="145" href="#145">145</a>         nextFilter.messageReceived(session, res2);
<a name="146" href="#146">146</a> 
<a name="147" href="#147">147</a>         <em class="jxr_comment">// Replay</em>
<a name="148" href="#148">148</a>         nextFilterControl.replay();
<a name="149" href="#149">149</a>         filter.filterWrite(nextFilter, session, rwr);
<a name="150" href="#150">150</a>         filter.messageSent(nextFilter, session, matcher.getLastWriteRequest());
<a name="151" href="#151">151</a>         filter.messageReceived(nextFilter, session, res1.getMessage());
<a name="152" href="#152">152</a>         filter.messageReceived(nextFilter, session, res2.getMessage());
<a name="153" href="#153">153</a>         filter.messageReceived(nextFilter, session, res1.getMessage()); <em class="jxr_comment">// Ignored</em>
<a name="154" href="#154">154</a>         filter.messageReceived(nextFilter, session, res2.getMessage()); <em class="jxr_comment">// Ignored</em>
<a name="155" href="#155">155</a> 
<a name="156" href="#156">156</a>         <em class="jxr_comment">// Verify</em>
<a name="157" href="#157">157</a>         nextFilterControl.verify();
<a name="158" href="#158">158</a>         Assert.assertEquals(res1, req.awaitResponse());
<a name="159" href="#159">159</a>         Assert.assertEquals(res2, req.awaitResponse());
<a name="160" href="#160">160</a>         assertNoSuchElementException(req);
<a name="161" href="#161">161</a>     }
<a name="162" href="#162">162</a> 
<a name="163" href="#163">163</a>     @Test
<a name="164" href="#164">164</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWholeResponseTimeout() <strong class="jxr_keyword">throws</strong> Exception {
<a name="165" href="#165">165</a>         Request req = <strong class="jxr_keyword">new</strong> Request(1, <strong class="jxr_keyword">new</strong> Object(), 10); <em class="jxr_comment">// 10ms timeout</em>
<a name="166" href="#166">166</a>         Response res = <strong class="jxr_keyword">new</strong> Response(req, <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a>(1, ResponseType.WHOLE),
<a name="167" href="#167">167</a>                 ResponseType.WHOLE);
<a name="168" href="#168">168</a>         WriteRequest rwr = <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req);
<a name="169" href="#169">169</a> 
<a name="170" href="#170">170</a>         <em class="jxr_comment">// Record</em>
<a name="171" href="#171">171</a>         nextFilter.filterWrite(session, <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req
<a name="172" href="#172">172</a>                 .getMessage()));
<a name="173" href="#173">173</a>         nextFilterControl.setMatcher(matcher);
<a name="174" href="#174">174</a>         nextFilter.messageSent(session, rwr);
<a name="175" href="#175">175</a>         nextFilter.exceptionCaught(session, <strong class="jxr_keyword">new</strong> RequestTimeoutException(req));
<a name="176" href="#176">176</a>         nextFilterControl.setMatcher(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">ExceptionMatcher</a>());
<a name="177" href="#177">177</a> 
<a name="178" href="#178">178</a>         <em class="jxr_comment">// Replay</em>
<a name="179" href="#179">179</a>         nextFilterControl.replay();
<a name="180" href="#180">180</a>         filter.filterWrite(nextFilter, session, rwr);
<a name="181" href="#181">181</a>         filter.messageSent(nextFilter, session, matcher.getLastWriteRequest());
<a name="182" href="#182">182</a>         Thread.sleep(300); <em class="jxr_comment">// Wait until the request times out.</em>
<a name="183" href="#183">183</a>         filter.messageReceived(nextFilter, session, res.getMessage()); <em class="jxr_comment">// Ignored</em>
<a name="184" href="#184">184</a> 
<a name="185" href="#185">185</a>         <em class="jxr_comment">// Verify</em>
<a name="186" href="#186">186</a>         nextFilterControl.verify();
<a name="187" href="#187">187</a>         assertRequestTimeoutException(req);
<a name="188" href="#188">188</a>         assertNoSuchElementException(req);
<a name="189" href="#189">189</a>     }
<a name="190" href="#190">190</a> 
<a name="191" href="#191">191</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> assertRequestTimeoutException(Request req)
<a name="192" href="#192">192</a>             <strong class="jxr_keyword">throws</strong> InterruptedException {
<a name="193" href="#193">193</a>         <strong class="jxr_keyword">try</strong> {
<a name="194" href="#194">194</a>             req.awaitResponse();
<a name="195" href="#195">195</a>             Assert.fail();
<a name="196" href="#196">196</a>         } <strong class="jxr_keyword">catch</strong> (RequestTimeoutException e) {
<a name="197" href="#197">197</a>             <em class="jxr_comment">// OK</em>
<a name="198" href="#198">198</a>         }
<a name="199" href="#199">199</a>     }
<a name="200" href="#200">200</a> 
<a name="201" href="#201">201</a>     @Test
<a name="202" href="#202">202</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPartialResponseTimeout() <strong class="jxr_keyword">throws</strong> Exception {
<a name="203" href="#203">203</a>         Request req = <strong class="jxr_keyword">new</strong> Request(1, <strong class="jxr_keyword">new</strong> Object(), 10); <em class="jxr_comment">// 10ms timeout</em>
<a name="204" href="#204">204</a>         Response res1 = <strong class="jxr_keyword">new</strong> Response(req, <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a>(1, ResponseType.PARTIAL),
<a name="205" href="#205">205</a>                 ResponseType.PARTIAL);
<a name="206" href="#206">206</a>         Response res2 = <strong class="jxr_keyword">new</strong> Response(req, <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a>(1,
<a name="207" href="#207">207</a>                 ResponseType.PARTIAL_LAST), ResponseType.PARTIAL_LAST);
<a name="208" href="#208">208</a>         WriteRequest rwr = <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req);
<a name="209" href="#209">209</a> 
<a name="210" href="#210">210</a>         <em class="jxr_comment">// Record</em>
<a name="211" href="#211">211</a>         nextFilter.filterWrite(session, <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req
<a name="212" href="#212">212</a>                 .getMessage()));
<a name="213" href="#213">213</a>         nextFilterControl.setMatcher(matcher);
<a name="214" href="#214">214</a>         nextFilter.messageSent(session, rwr);
<a name="215" href="#215">215</a>         nextFilter.messageReceived(session, res1);
<a name="216" href="#216">216</a>         nextFilter.exceptionCaught(session, <strong class="jxr_keyword">new</strong> RequestTimeoutException(req));
<a name="217" href="#217">217</a>         nextFilterControl.setMatcher(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">ExceptionMatcher</a>());
<a name="218" href="#218">218</a> 
<a name="219" href="#219">219</a>         <em class="jxr_comment">// Replay</em>
<a name="220" href="#220">220</a>         nextFilterControl.replay();
<a name="221" href="#221">221</a>         filter.filterWrite(nextFilter, session, rwr);
<a name="222" href="#222">222</a>         filter.messageSent(nextFilter, session, matcher.getLastWriteRequest());
<a name="223" href="#223">223</a>         filter.messageReceived(nextFilter, session, res1.getMessage());
<a name="224" href="#224">224</a>         Thread.sleep(300); <em class="jxr_comment">// Wait until the request times out.</em>
<a name="225" href="#225">225</a>         filter.messageReceived(nextFilter, session, res2.getMessage()); <em class="jxr_comment">// Ignored</em>
<a name="226" href="#226">226</a>         filter.messageReceived(nextFilter, session, res1.getMessage()); <em class="jxr_comment">// Ignored</em>
<a name="227" href="#227">227</a> 
<a name="228" href="#228">228</a>         <em class="jxr_comment">// Verify</em>
<a name="229" href="#229">229</a>         nextFilterControl.verify();
<a name="230" href="#230">230</a>         Assert.assertEquals(res1, req.awaitResponse());
<a name="231" href="#231">231</a>         assertRequestTimeoutException(req);
<a name="232" href="#232">232</a>         assertNoSuchElementException(req);
<a name="233" href="#233">233</a>     }
<a name="234" href="#234">234</a> 
<a name="235" href="#235">235</a>     @Test
<a name="236" href="#236">236</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimeoutByDisconnection() <strong class="jxr_keyword">throws</strong> Exception {
<a name="237" href="#237">237</a>         <em class="jxr_comment">// We run a test case that doesn't raise a timeout to make sure</em>
<a name="238" href="#238">238</a>         <em class="jxr_comment">// the timeout is not raised again by disconnection.</em>
<a name="239" href="#239">239</a>         testWholeResponse();
<a name="240" href="#240">240</a>         nextFilterControl.reset();
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>         Request req1 = <strong class="jxr_keyword">new</strong> Request(1, <strong class="jxr_keyword">new</strong> Object(), Long.MAX_VALUE);
<a name="243" href="#243">243</a>         Request req2 = <strong class="jxr_keyword">new</strong> Request(2, <strong class="jxr_keyword">new</strong> Object(), Long.MAX_VALUE);
<a name="244" href="#244">244</a>         WriteRequest rwr1 = <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req1);
<a name="245" href="#245">245</a>         WriteRequest rwr2 = <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req2);
<a name="246" href="#246">246</a> 
<a name="247" href="#247">247</a>         <em class="jxr_comment">// Record</em>
<a name="248" href="#248">248</a>         nextFilter.filterWrite(session, <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req1
<a name="249" href="#249">249</a>                 .getMessage()));
<a name="250" href="#250">250</a>         nextFilterControl.setMatcher(matcher);
<a name="251" href="#251">251</a>         nextFilter.messageSent(session, rwr1);
<a name="252" href="#252">252</a>         nextFilter.filterWrite(session, <strong class="jxr_keyword">new</strong> DefaultWriteRequest(req2
<a name="253" href="#253">253</a>                 .getMessage()));
<a name="254" href="#254">254</a>         nextFilter.messageSent(session, rwr2);
<a name="255" href="#255">255</a>         nextFilter.exceptionCaught(session, <strong class="jxr_keyword">new</strong> RequestTimeoutException(req1));
<a name="256" href="#256">256</a>         nextFilterControl.setMatcher(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">ExceptionMatcher</a>());
<a name="257" href="#257">257</a>         nextFilter.exceptionCaught(session, <strong class="jxr_keyword">new</strong> RequestTimeoutException(req2));
<a name="258" href="#258">258</a>         nextFilter.sessionClosed(session);
<a name="259" href="#259">259</a> 
<a name="260" href="#260">260</a>         <em class="jxr_comment">// Replay</em>
<a name="261" href="#261">261</a>         nextFilterControl.replay();
<a name="262" href="#262">262</a>         filter.filterWrite(nextFilter, session, rwr1);
<a name="263" href="#263">263</a>         filter.messageSent(nextFilter, session, matcher.getLastWriteRequest());
<a name="264" href="#264">264</a>         filter.filterWrite(nextFilter, session, rwr2);
<a name="265" href="#265">265</a>         filter.messageSent(nextFilter, session, matcher.getLastWriteRequest());
<a name="266" href="#266">266</a>         filter.sessionClosed(nextFilter, session);
<a name="267" href="#267">267</a> 
<a name="268" href="#268">268</a>         <em class="jxr_comment">// Verify</em>
<a name="269" href="#269">269</a>         nextFilterControl.verify();
<a name="270" href="#270">270</a>         assertRequestTimeoutException(req1);
<a name="271" href="#271">271</a>         assertRequestTimeoutException(req2);
<a name="272" href="#272">272</a>     }
<a name="273" href="#273">273</a> 
<a name="274" href="#274">274</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a> {
<a name="275" href="#275">275</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> id;
<a name="276" href="#276">276</a> 
<a name="277" href="#277">277</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> ResponseType type;
<a name="278" href="#278">278</a> 
<a name="279" href="#279">279</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">Message</a>(<strong class="jxr_keyword">int</strong> id, ResponseType type) {
<a name="280" href="#280">280</a>             <strong class="jxr_keyword">this</strong>.id = id;
<a name="281" href="#281">281</a>             <strong class="jxr_keyword">this</strong>.type = type;
<a name="282" href="#282">282</a>         }
<a name="283" href="#283">283</a> 
<a name="284" href="#284">284</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getId() {
<a name="285" href="#285">285</a>             <strong class="jxr_keyword">return</strong> id;
<a name="286" href="#286">286</a>         }
<a name="287" href="#287">287</a> 
<a name="288" href="#288">288</a>         <strong class="jxr_keyword">public</strong> ResponseType getType() {
<a name="289" href="#289">289</a>             <strong class="jxr_keyword">return</strong> type;
<a name="290" href="#290">290</a>         }
<a name="291" href="#291">291</a>     }
<a name="292" href="#292">292</a> 
<a name="293" href="#293">293</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">MessageInspector</a> implements ResponseInspector {
<a name="294" href="#294">294</a> 
<a name="295" href="#295">295</a>         <strong class="jxr_keyword">public</strong> Object getRequestId(Object message) {
<a name="296" href="#296">296</a>             <strong class="jxr_keyword">if</strong> (!(message instanceof Message)) {
<a name="297" href="#297">297</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="298" href="#298">298</a>             }
<a name="299" href="#299">299</a> 
<a name="300" href="#300">300</a>             <strong class="jxr_keyword">return</strong> ((Message) message).getId();
<a name="301" href="#301">301</a>         }
<a name="302" href="#302">302</a> 
<a name="303" href="#303">303</a>         <strong class="jxr_keyword">public</strong> ResponseType getResponseType(Object message) {
<a name="304" href="#304">304</a>             <strong class="jxr_keyword">if</strong> (!(message instanceof Message)) {
<a name="305" href="#305">305</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="306" href="#306">306</a>             }
<a name="307" href="#307">307</a> 
<a name="308" href="#308">308</a>             <strong class="jxr_keyword">return</strong> ((Message) message).getType();
<a name="309" href="#309">309</a>         }
<a name="310" href="#310">310</a>     }
<a name="311" href="#311">311</a> 
<a name="312" href="#312">312</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">WriteRequestMatcher</a> <strong class="jxr_keyword">extends</strong> AbstractMatcher {
<a name="313" href="#313">313</a>         <strong class="jxr_keyword">private</strong> WriteRequest lastWriteRequest;
<a name="314" href="#314">314</a> 
<a name="315" href="#315">315</a>         <strong class="jxr_keyword">public</strong> WriteRequest getLastWriteRequest() {
<a name="316" href="#316">316</a>             <strong class="jxr_keyword">return</strong> lastWriteRequest;
<a name="317" href="#317">317</a>         }
<a name="318" href="#318">318</a> 
<a name="319" href="#319">319</a>         @Override
<a name="320" href="#320">320</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> argumentMatches(Object expected, Object actual) {
<a name="321" href="#321">321</a>             <strong class="jxr_keyword">if</strong> (actual instanceof WriteRequest
<a name="322" href="#322">322</a>                     &amp;&amp; expected instanceof WriteRequest) {
<a name="323" href="#323">323</a>                 <strong class="jxr_keyword">boolean</strong> answer = ((WriteRequest) expected).getMessage().equals(
<a name="324" href="#324">324</a>                         ((WriteRequest) actual).getMessage());
<a name="325" href="#325">325</a>                 lastWriteRequest = (WriteRequest) actual;
<a name="326" href="#326">326</a>                 <strong class="jxr_keyword">return</strong> answer;
<a name="327" href="#327">327</a>             }
<a name="328" href="#328">328</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.argumentMatches(expected, actual);
<a name="329" href="#329">329</a>         }
<a name="330" href="#330">330</a>     }
<a name="331" href="#331">331</a> 
<a name="332" href="#332">332</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/reqres/RequestResponseFilterTest.html">ExceptionMatcher</a> <strong class="jxr_keyword">extends</strong> AbstractMatcher {
<a name="333" href="#333">333</a>         @Override
<a name="334" href="#334">334</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> argumentMatches(Object expected, Object actual) {
<a name="335" href="#335">335</a>             <strong class="jxr_keyword">if</strong> (actual instanceof RequestTimeoutException
<a name="336" href="#336">336</a>                     &amp;&amp; expected instanceof RequestTimeoutException) {
<a name="337" href="#337">337</a>                 <strong class="jxr_keyword">return</strong> ((RequestTimeoutException) expected)
<a name="338" href="#338">338</a>                         .getRequest()
<a name="339" href="#339">339</a>                         .equals(((RequestTimeoutException) actual).getRequest());
<a name="340" href="#340">340</a>             }
<a name="341" href="#341">341</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.argumentMatches(expected, actual);
<a name="342" href="#342">342</a>         }
<a name="343" href="#343">343</a>     }
<a name="344" href="#344">344</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

