<!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>IoServiceListenerSupportTest 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.core;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.net.InetSocketAddress;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.net.SocketAddress;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoAcceptor;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoConnector;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoHandler;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoService;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoServiceListener;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoServiceListenerSupport;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.DummySession;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.easymock.EasyMock;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a name="34" href="#34">34</a>  
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNull;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertEquals;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertSame;
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment">/**</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * Tests {@link IoServiceListenerSupport}.</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> *</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * @version $Rev: 751473 $, $Date: 2009-03-08 18:22:14 +0100 (Sun, 08 Mar 2009) $</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> */</em>
<a name="46" href="#46">46</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/mina/core/IoServiceListenerSupportTest.html">IoServiceListenerSupportTest</a> {
<a name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> SocketAddress ADDRESS = <strong class="jxr_keyword">new</strong> InetSocketAddress(8080);
<a name="48" href="#48">48</a>  
<a name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> IoService mockService = EasyMock.createMock(IoService.<strong class="jxr_keyword">class</strong>);
<a name="50" href="#50">50</a>  
<a name="51" href="#51">51</a>      @Test
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testServiceLifecycle() <strong class="jxr_keyword">throws</strong> Exception {
<a name="53" href="#53">53</a>          IoServiceListenerSupport support = <strong class="jxr_keyword">new</strong> IoServiceListenerSupport(
<a name="54" href="#54">54</a>                  mockService);
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>          IoServiceListener listener = EasyMock.createStrictMock(IoServiceListener.<strong class="jxr_keyword">class</strong>);
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>          <em class="jxr_comment">// Test activation</em>
<a name="59" href="#59">59</a>          listener.serviceActivated(mockService);
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>          EasyMock.replay(listener);
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>          support.add(listener);
<a name="64" href="#64">64</a>          support.fireServiceActivated();
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>          EasyMock.verify(listener);
<a name="67" href="#67">67</a>  
<a name="68" href="#68">68</a>          <em class="jxr_comment">// Test deactivation &amp; other side effects</em>
<a name="69" href="#69">69</a>          EasyMock.reset(listener);
<a name="70" href="#70">70</a>          listener.serviceDeactivated(mockService);
<a name="71" href="#71">71</a>  
<a name="72" href="#72">72</a>          EasyMock.replay(listener);
<a name="73" href="#73">73</a>          <em class="jxr_comment">//// Activate more than once</em>
<a name="74" href="#74">74</a>          support.fireServiceActivated();
<a name="75" href="#75">75</a>          <em class="jxr_comment">//// Deactivate</em>
<a name="76" href="#76">76</a>          support.fireServiceDeactivated();
<a name="77" href="#77">77</a>          <em class="jxr_comment">//// Deactivate more than once</em>
<a name="78" href="#78">78</a>          support.fireServiceDeactivated();
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>          EasyMock.verify(listener);
<a name="81" href="#81">81</a>      }
<a name="82" href="#82">82</a>  
<a name="83" href="#83">83</a>      @Test
<a name="84" href="#84">84</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSessionLifecycle() <strong class="jxr_keyword">throws</strong> Exception {
<a name="85" href="#85">85</a>          IoServiceListenerSupport support = <strong class="jxr_keyword">new</strong> IoServiceListenerSupport(
<a name="86" href="#86">86</a>                  mockService);
<a name="87" href="#87">87</a>  
<a name="88" href="#88">88</a>          DummySession session = <strong class="jxr_keyword">new</strong> DummySession();
<a name="89" href="#89">89</a>          session.setService(mockService);
<a name="90" href="#90">90</a>          session.setLocalAddress(ADDRESS);
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>          IoHandler handler = EasyMock.createStrictMock( IoHandler.<strong class="jxr_keyword">class</strong> );
<a name="93" href="#93">93</a>          session.setHandler(handler);
<a name="94" href="#94">94</a>  
<a name="95" href="#95">95</a>          IoServiceListener listener = EasyMock.createStrictMock(IoServiceListener.<strong class="jxr_keyword">class</strong>);
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>          <em class="jxr_comment">// Test creation</em>
<a name="98" href="#98">98</a>          listener.sessionCreated(session);
<a name="99" href="#99">99</a>          handler.sessionCreated(session);
<a name="100" href="#100">100</a>         handler.sessionOpened(session);
<a name="101" href="#101">101</a> 
<a name="102" href="#102">102</a>         EasyMock.replay(listener);
<a name="103" href="#103">103</a>         EasyMock.replay(handler);
<a name="104" href="#104">104</a> 
<a name="105" href="#105">105</a>         support.add(listener);
<a name="106" href="#106">106</a>         support.fireSessionCreated(session);
<a name="107" href="#107">107</a> 
<a name="108" href="#108">108</a>         EasyMock.verify(listener);
<a name="109" href="#109">109</a>         EasyMock.verify(handler);
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>         assertEquals(1, support.getManagedSessions().size());
<a name="112" href="#112">112</a>         assertSame(session, support.getManagedSessions().get(session.getId()));
<a name="113" href="#113">113</a> 
<a name="114" href="#114">114</a>         <em class="jxr_comment">// Test destruction &amp; other side effects</em>
<a name="115" href="#115">115</a>         EasyMock.reset(listener);
<a name="116" href="#116">116</a>         EasyMock.reset(handler);
<a name="117" href="#117">117</a>         handler.sessionClosed(session);
<a name="118" href="#118">118</a>         listener.sessionDestroyed(session);
<a name="119" href="#119">119</a> 
<a name="120" href="#120">120</a>         EasyMock.replay(listener);
<a name="121" href="#121">121</a>         <em class="jxr_comment">//// Activate more than once</em>
<a name="122" href="#122">122</a>         support.fireSessionCreated(session);
<a name="123" href="#123">123</a>         <em class="jxr_comment">//// Deactivate</em>
<a name="124" href="#124">124</a>         support.fireSessionDestroyed(session);
<a name="125" href="#125">125</a>         <em class="jxr_comment">//// Deactivate more than once</em>
<a name="126" href="#126">126</a>         support.fireSessionDestroyed(session);
<a name="127" href="#127">127</a> 
<a name="128" href="#128">128</a>         EasyMock.verify(listener);
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>         assertTrue(session.isClosing());
<a name="131" href="#131">131</a>         assertEquals(0, support.getManagedSessions().size());
<a name="132" href="#132">132</a>         assertNull(support.getManagedSessions().get(session.getId()));
<a name="133" href="#133">133</a>     }
<a name="134" href="#134">134</a> 
<a name="135" href="#135">135</a>     @Test
<a name="136" href="#136">136</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDisconnectOnUnbind() <strong class="jxr_keyword">throws</strong> Exception {
<a name="137" href="#137">137</a>         IoAcceptor acceptor = EasyMock.createStrictMock(IoAcceptor.<strong class="jxr_keyword">class</strong>);
<a name="138" href="#138">138</a> 
<a name="139" href="#139">139</a>         <strong class="jxr_keyword">final</strong> IoServiceListenerSupport support = <strong class="jxr_keyword">new</strong> IoServiceListenerSupport(
<a name="140" href="#140">140</a>                 acceptor);
<a name="141" href="#141">141</a> 
<a name="142" href="#142">142</a>         <strong class="jxr_keyword">final</strong> DummySession session = <strong class="jxr_keyword">new</strong> DummySession();
<a name="143" href="#143">143</a>         session.setService(acceptor);
<a name="144" href="#144">144</a>         session.setLocalAddress(ADDRESS);
<a name="145" href="#145">145</a> 
<a name="146" href="#146">146</a>         IoHandler handler = EasyMock.createStrictMock(IoHandler.<strong class="jxr_keyword">class</strong>);
<a name="147" href="#147">147</a>         session.setHandler(handler);
<a name="148" href="#148">148</a> 
<a name="149" href="#149">149</a>         <strong class="jxr_keyword">final</strong> IoServiceListener listener = EasyMock.createStrictMock(IoServiceListener.<strong class="jxr_keyword">class</strong>);
<a name="150" href="#150">150</a> 
<a name="151" href="#151">151</a>         <em class="jxr_comment">// Activate a service and create a session.</em>
<a name="152" href="#152">152</a>         listener.serviceActivated(acceptor);
<a name="153" href="#153">153</a>         listener.sessionCreated(session);
<a name="154" href="#154">154</a>         handler.sessionCreated(session);
<a name="155" href="#155">155</a>         handler.sessionOpened(session);
<a name="156" href="#156">156</a> 
<a name="157" href="#157">157</a>         EasyMock.replay(listener);
<a name="158" href="#158">158</a>         EasyMock.replay(handler);
<a name="159" href="#159">159</a> 
<a name="160" href="#160">160</a>         support.add(listener);
<a name="161" href="#161">161</a>         support.fireServiceActivated();
<a name="162" href="#162">162</a>         support.fireSessionCreated(session);
<a name="163" href="#163">163</a> 
<a name="164" href="#164">164</a>         EasyMock.verify(listener);
<a name="165" href="#165">165</a>         EasyMock.verify(handler);
<a name="166" href="#166">166</a> 
<a name="167" href="#167">167</a>         <em class="jxr_comment">// Deactivate a service and make sure the session is closed &amp; destroyed.</em>
<a name="168" href="#168">168</a>         EasyMock.reset(listener);
<a name="169" href="#169">169</a>         EasyMock.reset(handler);
<a name="170" href="#170">170</a> 
<a name="171" href="#171">171</a>         listener.serviceDeactivated(acceptor);
<a name="172" href="#172">172</a>         EasyMock.expect(acceptor.isCloseOnDeactivation()).andReturn(<strong class="jxr_keyword">true</strong>);
<a name="173" href="#173">173</a>         listener.sessionDestroyed(session);
<a name="174" href="#174">174</a>         handler.sessionClosed(session);
<a name="175" href="#175">175</a> 
<a name="176" href="#176">176</a>         EasyMock.replay(listener);
<a name="177" href="#177">177</a>         EasyMock.replay(acceptor);
<a name="178" href="#178">178</a>         EasyMock.replay(handler);
<a name="179" href="#179">179</a> 
<a name="180" href="#180">180</a>         <strong class="jxr_keyword">new</strong> Thread() {
<a name="181" href="#181">181</a>             <em class="jxr_comment">// Emulate I/O service</em>
<a name="182" href="#182">182</a>             @Override
<a name="183" href="#183">183</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
<a name="184" href="#184">184</a>                 <strong class="jxr_keyword">try</strong> {
<a name="185" href="#185">185</a>                     Thread.sleep(500);
<a name="186" href="#186">186</a>                 } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
<a name="187" href="#187">187</a>                     <em class="jxr_comment">//e.printStackTrace();</em>
<a name="188" href="#188">188</a>                 }
<a name="189" href="#189">189</a>                 <em class="jxr_comment">// This synchronization block is a workaround for</em>
<a name="190" href="#190">190</a>                 <em class="jxr_comment">// the visibility problem of simultaneous EasyMock</em>
<a name="191" href="#191">191</a>                 <em class="jxr_comment">// state update. (not sure if it fixes the failing test yet.)</em>
<a name="192" href="#192">192</a>                 <strong class="jxr_keyword">synchronized</strong> (listener) {
<a name="193" href="#193">193</a>                     support.fireSessionDestroyed(session);
<a name="194" href="#194">194</a>                 }
<a name="195" href="#195">195</a>             }
<a name="196" href="#196">196</a>         }.start();
<a name="197" href="#197">197</a>         support.fireServiceDeactivated();
<a name="198" href="#198">198</a> 
<a name="199" href="#199">199</a>         <strong class="jxr_keyword">synchronized</strong> (listener) {
<a name="200" href="#200">200</a>             EasyMock.verify(listener);
<a name="201" href="#201">201</a>         }
<a name="202" href="#202">202</a>         EasyMock.verify(acceptor);
<a name="203" href="#203">203</a>         EasyMock.verify(handler);
<a name="204" href="#204">204</a> 
<a name="205" href="#205">205</a>         assertTrue(session.isClosing());
<a name="206" href="#206">206</a>         assertEquals(0, support.getManagedSessions().size());
<a name="207" href="#207">207</a>         assertNull(support.getManagedSessions().get(session.getId()));
<a name="208" href="#208">208</a>     }
<a name="209" href="#209">209</a> 
<a name="210" href="#210">210</a>     @Test
<a name="211" href="#211">211</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testConnectorActivation() <strong class="jxr_keyword">throws</strong> Exception {
<a name="212" href="#212">212</a>         IoConnector connector = EasyMock.createStrictMock(IoConnector.<strong class="jxr_keyword">class</strong>);
<a name="213" href="#213">213</a> 
<a name="214" href="#214">214</a>         IoServiceListenerSupport support = <strong class="jxr_keyword">new</strong> IoServiceListenerSupport(
<a name="215" href="#215">215</a>                 connector);
<a name="216" href="#216">216</a> 
<a name="217" href="#217">217</a>         <strong class="jxr_keyword">final</strong> DummySession session = <strong class="jxr_keyword">new</strong> DummySession();
<a name="218" href="#218">218</a>         session.setService(connector);
<a name="219" href="#219">219</a>         session.setRemoteAddress(ADDRESS);
<a name="220" href="#220">220</a> 
<a name="221" href="#221">221</a>         IoHandler handler = EasyMock.createStrictMock(IoHandler.<strong class="jxr_keyword">class</strong>);
<a name="222" href="#222">222</a>         session.setHandler(handler);
<a name="223" href="#223">223</a> 
<a name="224" href="#224">224</a>         IoServiceListener listener = EasyMock.createStrictMock(IoServiceListener.<strong class="jxr_keyword">class</strong>);
<a name="225" href="#225">225</a> 
<a name="226" href="#226">226</a>         <em class="jxr_comment">// Creating a session should activate a service automatically.</em>
<a name="227" href="#227">227</a>         listener.serviceActivated(connector);
<a name="228" href="#228">228</a>         listener.sessionCreated(session);
<a name="229" href="#229">229</a>         handler.sessionCreated(session);
<a name="230" href="#230">230</a>         handler.sessionOpened(session);
<a name="231" href="#231">231</a> 
<a name="232" href="#232">232</a>         EasyMock.replay(listener);
<a name="233" href="#233">233</a>         EasyMock.replay(handler);
<a name="234" href="#234">234</a> 
<a name="235" href="#235">235</a>         support.add(listener);
<a name="236" href="#236">236</a>         support.fireSessionCreated(session);
<a name="237" href="#237">237</a> 
<a name="238" href="#238">238</a>         EasyMock.verify(listener);
<a name="239" href="#239">239</a>         EasyMock.verify(handler);
<a name="240" href="#240">240</a> 
<a name="241" href="#241">241</a>         <em class="jxr_comment">// Destroying a session should deactivate a service automatically.</em>
<a name="242" href="#242">242</a>         EasyMock.reset(listener);
<a name="243" href="#243">243</a>         EasyMock.reset(handler);
<a name="244" href="#244">244</a>         listener.sessionDestroyed(session);
<a name="245" href="#245">245</a>         handler.sessionClosed(session);
<a name="246" href="#246">246</a>         listener.serviceDeactivated(connector);
<a name="247" href="#247">247</a> 
<a name="248" href="#248">248</a>         EasyMock.replay(listener);
<a name="249" href="#249">249</a>         EasyMock.replay(handler);
<a name="250" href="#250">250</a> 
<a name="251" href="#251">251</a>         support.fireSessionDestroyed(session);
<a name="252" href="#252">252</a> 
<a name="253" href="#253">253</a>         EasyMock.verify(listener);
<a name="254" href="#254">254</a>         EasyMock.verify(handler);
<a name="255" href="#255">255</a> 
<a name="256" href="#256">256</a>         assertEquals(0, support.getManagedSessions().size());
<a name="257" href="#257">257</a>         assertNull(support.getManagedSessions().get(session.getId()));
<a name="258" href="#258">258</a>     }
<a name="259" href="#259">259</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

