<!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>ProxyConnector xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/org/apache/mina/proxy/ProxyConnector.html">View Javadoc</a></div><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.proxy;
<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>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executor;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.buffer.IoBuffer;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.file.FileRegion;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.filterchain.IoFilter;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.future.ConnectFuture;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.future.DefaultConnectFuture;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.future.IoFuture;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.AbstractIoConnector;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.DefaultTransportMetadata;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoHandler;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.TransportMetadata;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSession;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSessionConfig;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSessionInitializer;
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.proxy.filter.ProxyFilter;
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.proxy.handlers.socks.SocksProxyRequest;
<a name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.proxy.session.ProxyIoSession;
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.proxy.session.ProxyIoSessionInitializer;
<a name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.transport.socket.DefaultSocketSessionConfig;
<a name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.transport.socket.SocketConnector;
<a name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.transport.socket.SocketSessionConfig;
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment">/**</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * ProxyConnector.java - Decorator for {@link SocketConnector} to provide proxy support, as suggested by MINA list discussions.</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * Operates by intercepting connect requests and replacing the endpoint address with the proxy address,</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * then adding a {@link ProxyFilter} as the first {@link IoFilter} which performs any necessary</em>
<a name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * handshaking with the proxy before allowing data to flow normally. During the handshake, any outgoing</em>
<a name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * write requests are buffered.</em>
<a name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * </em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * @see		<a href="http://www.nabble.com/Meta-Transport%3A-an-idea-on-implementing-reconnection-and-proxy-td12969001.html" target="alexandria_uri">http://www.nabble.com/Meta-Transport%3A-an-idea-on-implementing-reconnection-and-proxy-td12969001.html</a></em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * @see		<a href="http://issues.apache.org/jira/browse/DIRMINA-415" target="alexandria_uri">http://issues.apache.org/jira/browse/DIRMINA-415</a></em>
<a name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * </em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * @version $Rev: 685703 $, $Date: 2008-08-14 00:14:47 +0200 (Thu, 14 Aug 2008) $</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * @since MINA 2.0.0-M3</em>
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> */</em>
<a name="62" href="#62">62</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/mina/proxy/ProxyConnector.html">ProxyConnector</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/mina/core/service/AbstractIoConnector.html">AbstractIoConnector</a> {
<a name="63" href="#63">63</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/mina/core/service/TransportMetadata.html">TransportMetadata</a> METADATA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/mina/core/service/DefaultTransportMetadata.html">DefaultTransportMetadata</a>(
<a name="64" href="#64">64</a>              <span class="jxr_string">"proxy"</span>, <span class="jxr_string">"proxyconnector"</span>, false, <strong class="jxr_keyword">true</strong>, InetSocketAddress.<strong class="jxr_keyword">class</strong>,
<a name="65" href="#65">65</a>              SocketSessionConfig.<strong class="jxr_keyword">class</strong>, IoBuffer.<strong class="jxr_keyword">class</strong>, FileRegion.<strong class="jxr_keyword">class</strong>);
<a name="66" href="#66">66</a>  
<a name="67" href="#67">67</a>      <em class="jxr_javadoccomment">/**</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     * Wrapped connector to use for outgoing TCP connections.</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     */</em>
<a name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/mina/transport/socket/SocketConnector.html">SocketConnector</a> connector = <strong class="jxr_keyword">null</strong>;
<a name="71" href="#71">71</a>  
<a name="72" href="#72">72</a>      <em class="jxr_javadoccomment">/**</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     * Proxy filter instance.</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     */</em>
<a name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/mina/proxy/filter/ProxyFilter.html">ProxyFilter</a> proxyFilter = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/mina/proxy/filter/ProxyFilter.html">ProxyFilter</a>();
<a name="76" href="#76">76</a>  
<a name="77" href="#77">77</a>      <em class="jxr_javadoccomment">/**</em>
<a name="78" href="#78">78</a>  <em class="jxr_javadoccomment">     * The {@link ProxyIoSession} in use.</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     */</em>
<a name="80" href="#80">80</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/mina/proxy/session/ProxyIoSession.html">ProxyIoSession</a> proxyIoSession;
<a name="81" href="#81">81</a>  
<a name="82" href="#82">82</a>      <em class="jxr_javadoccomment">/**</em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * This future will notify it's listeners when really connected to the target</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     */</em>
<a name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/mina/core/future/DefaultConnectFuture.html">DefaultConnectFuture</a> future;
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>      <em class="jxr_javadoccomment">/**</em>
<a name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     * Creates a new proxy connector.</em>
<a name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     */</em>
<a name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/proxy/ProxyConnector.html">ProxyConnector</a>() {
<a name="91" href="#91">91</a>          <strong class="jxr_keyword">super</strong>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/mina/transport/socket/DefaultSocketSessionConfig.html">DefaultSocketSessionConfig</a>(), <strong class="jxr_keyword">null</strong>);
<a name="92" href="#92">92</a>      }
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>      <em class="jxr_javadoccomment">/**</em>
<a name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     * Creates a new proxy connector.</em>
<a name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     * </em>
<a name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     * @param connector         Connector used to establish proxy connections.</em>
<a name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     */</em>
<a name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/proxy/ProxyConnector.html">ProxyConnector</a>(<strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/mina/transport/socket/SocketConnector.html">SocketConnector</a> connector) {        
<a name="100" href="#100">100</a>         <strong class="jxr_keyword">this</strong>(connector, <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/mina/transport/socket/DefaultSocketSessionConfig.html">DefaultSocketSessionConfig</a>(), <strong class="jxr_keyword">null</strong>);
<a name="101" href="#101">101</a>     }
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     <em class="jxr_javadoccomment">/**</em>
<a name="104" href="#104">104</a> <em class="jxr_javadoccomment">     * Creates a new proxy connector. </em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * @see AbstractIoConnector(IoSessionConfig, Executor).</em>
<a name="106" href="#106">106</a> <em class="jxr_javadoccomment">     */</em>
<a name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/proxy/ProxyConnector.html">ProxyConnector</a>(<strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/mina/transport/socket/SocketConnector.html">SocketConnector</a> connector, <a href="../../../../org/apache/mina/core/session/IoSessionConfig.html">IoSessionConfig</a> config, Executor executor) {
<a name="108" href="#108">108</a>         <strong class="jxr_keyword">super</strong>(config, executor);
<a name="109" href="#109">109</a>         setConnector(connector);
<a name="110" href="#110">110</a>     }    
<a name="111" href="#111">111</a>         
<a name="112" href="#112">112</a>     @Override
<a name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/core/session/IoSessionConfig.html">IoSessionConfig</a> getSessionConfig() {
<a name="114" href="#114">114</a>         <strong class="jxr_keyword">return</strong> connector.getSessionConfig();
<a name="115" href="#115">115</a>     }
<a name="116" href="#116">116</a> 
<a name="117" href="#117">117</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/proxy/session/ProxyIoSession.html">ProxyIoSession</a> getProxyIoSession() {
<a name="118" href="#118">118</a>         <strong class="jxr_keyword">return</strong> proxyIoSession;
<a name="119" href="#119">119</a>     }
<a name="120" href="#120">120</a> 
<a name="121" href="#121">121</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setProxyIoSession(<a href="../../../../org/apache/mina/proxy/session/ProxyIoSession.html">ProxyIoSession</a> proxyIoSession) {
<a name="122" href="#122">122</a>         <strong class="jxr_keyword">if</strong> (proxyIoSession == <strong class="jxr_keyword">null</strong>) {
<a name="123" href="#123">123</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> NullPointerException(<span class="jxr_string">"proxySession cannot be null"</span>);
<a name="124" href="#124">124</a>         }
<a name="125" href="#125">125</a> 
<a name="126" href="#126">126</a>         <strong class="jxr_keyword">if</strong> (proxyIoSession.getProxyAddress() == <strong class="jxr_keyword">null</strong>) {
<a name="127" href="#127">127</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> NullPointerException(
<a name="128" href="#128">128</a>                     <span class="jxr_string">"proxySession.proxyAddress cannot be null"</span>);
<a name="129" href="#129">129</a>         }
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>         proxyIoSession.setConnector(<strong class="jxr_keyword">this</strong>);
<a name="132" href="#132">132</a>         setDefaultRemoteAddress(proxyIoSession.getProxyAddress());
<a name="133" href="#133">133</a>         <strong class="jxr_keyword">this</strong>.proxyIoSession = proxyIoSession;
<a name="134" href="#134">134</a>     }
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a>     <em class="jxr_javadoccomment">/**</em>
<a name="137" href="#137">137</a> <em class="jxr_javadoccomment">     * Connects to the specified &lt;code&gt;address&lt;/code&gt;.  If communication starts</em>
<a name="138" href="#138">138</a> <em class="jxr_javadoccomment">     * successfully, events are fired to the specified</em>
<a name="139" href="#139">139</a> <em class="jxr_javadoccomment">     * &lt;code&gt;handler&lt;/code&gt;.</em>
<a name="140" href="#140">140</a> <em class="jxr_javadoccomment">     * </em>
<a name="141" href="#141">141</a> <em class="jxr_javadoccomment">     * @return {@link ConnectFuture} that will tell the result of the connection attempt</em>
<a name="142" href="#142">142</a> <em class="jxr_javadoccomment">     */</em>
<a name="143" href="#143">143</a>     @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
<a name="144" href="#144">144</a>     @Override
<a name="145" href="#145">145</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../org/apache/mina/core/future/ConnectFuture.html">ConnectFuture</a> connect0(
<a name="146" href="#146">146</a>             <strong class="jxr_keyword">final</strong> SocketAddress remoteAddress,
<a name="147" href="#147">147</a>             <strong class="jxr_keyword">final</strong> SocketAddress localAddress,
<a name="148" href="#148">148</a>             <strong class="jxr_keyword">final</strong> IoSessionInitializer&lt;? <strong class="jxr_keyword">extends</strong> ConnectFuture&gt; sessionInitializer) {
<a name="149" href="#149">149</a>         <strong class="jxr_keyword">if</strong> (!proxyIoSession.isReconnectionNeeded()) {
<a name="150" href="#150">150</a>             <em class="jxr_comment">// First connection</em>
<a name="151" href="#151">151</a>             <a href="../../../../org/apache/mina/core/service/IoHandler.html">IoHandler</a> handler = getHandler();
<a name="152" href="#152">152</a>             <strong class="jxr_keyword">if</strong> (!(handler instanceof AbstractProxyIoHandler)) {
<a name="153" href="#153">153</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
<a name="154" href="#154">154</a>                         <span class="jxr_string">"IoHandler must be an instance of AbstractProxyIoHandler"</span>);
<a name="155" href="#155">155</a>             }
<a name="156" href="#156">156</a> 
<a name="157" href="#157">157</a>             connector.setHandler(handler);
<a name="158" href="#158">158</a>             future = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/mina/core/future/DefaultConnectFuture.html">DefaultConnectFuture</a>();
<a name="159" href="#159">159</a>         }
<a name="160" href="#160">160</a> 
<a name="161" href="#161">161</a>         <a href="../../../../org/apache/mina/core/future/ConnectFuture.html">ConnectFuture</a> conFuture = connector.connect(proxyIoSession
<a name="162" href="#162">162</a>                 .getProxyAddress(), <strong class="jxr_keyword">new</strong> ProxyIoSessionInitializer(
<a name="163" href="#163">163</a>                 sessionInitializer, proxyIoSession));
<a name="164" href="#164">164</a> 
<a name="165" href="#165">165</a>         <strong class="jxr_keyword">if</strong> (proxyIoSession.getRequest() instanceof SocksProxyRequest
<a name="166" href="#166">166</a>                 || proxyIoSession.isReconnectionNeeded()) {
<a name="167" href="#167">167</a>             <strong class="jxr_keyword">return</strong> conFuture;
<a name="168" href="#168">168</a>         } <strong class="jxr_keyword">else</strong> {
<a name="169" href="#169">169</a>             <strong class="jxr_keyword">return</strong> future;
<a name="170" href="#170">170</a>         }
<a name="171" href="#171">171</a>     }
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cancelConnectFuture() {
<a name="174" href="#174">174</a>         future.cancel();
<a name="175" href="#175">175</a>     }
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../org/apache/mina/core/future/ConnectFuture.html">ConnectFuture</a> fireConnected(<strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session) {
<a name="178" href="#178">178</a>         future.setSession(session);
<a name="179" href="#179">179</a>         <strong class="jxr_keyword">return</strong> future;
<a name="180" href="#180">180</a>     }
<a name="181" href="#181">181</a> 
<a name="182" href="#182">182</a>     <em class="jxr_javadoccomment">/**</em>
<a name="183" href="#183">183</a> <em class="jxr_javadoccomment">     * Get the {@link SocketConnector} to be used for connections</em>
<a name="184" href="#184">184</a> <em class="jxr_javadoccomment">     * to the proxy server.</em>
<a name="185" href="#185">185</a> <em class="jxr_javadoccomment">     */</em>
<a name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/mina/transport/socket/SocketConnector.html">SocketConnector</a> getConnector() {
<a name="187" href="#187">187</a>         <strong class="jxr_keyword">return</strong> connector;
<a name="188" href="#188">188</a>     }
<a name="189" href="#189">189</a> 
<a name="190" href="#190">190</a>     <em class="jxr_javadoccomment">/**</em>
<a name="191" href="#191">191</a> <em class="jxr_javadoccomment">     * Set the {@link SocketConnector} to be used for connections</em>
<a name="192" href="#192">192</a> <em class="jxr_javadoccomment">     * to the proxy server.</em>
<a name="193" href="#193">193</a> <em class="jxr_javadoccomment">     */</em>
<a name="194" href="#194">194</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> setConnector(<strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/mina/transport/socket/SocketConnector.html">SocketConnector</a> newConnector) {
<a name="195" href="#195">195</a>         <strong class="jxr_keyword">if</strong> (newConnector == <strong class="jxr_keyword">null</strong>) {
<a name="196" href="#196">196</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> NullPointerException(<span class="jxr_string">"connector cannot be null"</span>);
<a name="197" href="#197">197</a>         }
<a name="198" href="#198">198</a> 
<a name="199" href="#199">199</a>         <a href="../../../../org/apache/mina/transport/socket/SocketConnector.html">SocketConnector</a> oldConnector = <strong class="jxr_keyword">this</strong>.connector;
<a name="200" href="#200">200</a> 
<a name="201" href="#201">201</a>         <em class="jxr_comment">// Remove the ProxyFilter from the old filter chain builder</em>
<a name="202" href="#202">202</a>         <strong class="jxr_keyword">if</strong> (oldConnector != <strong class="jxr_keyword">null</strong>) {
<a name="203" href="#203">203</a>             oldConnector.getFilterChain().remove(ProxyFilter.<strong class="jxr_keyword">class</strong>.getName());
<a name="204" href="#204">204</a>         }
<a name="205" href="#205">205</a> 
<a name="206" href="#206">206</a>         <strong class="jxr_keyword">this</strong>.connector = newConnector;
<a name="207" href="#207">207</a> 
<a name="208" href="#208">208</a>         <em class="jxr_comment">// Insert the ProxyFilter as the first filter in the filter chain builder</em>
<a name="209" href="#209">209</a>         <strong class="jxr_keyword">if</strong> (newConnector.getFilterChain().contains(ProxyFilter.<strong class="jxr_keyword">class</strong>.getName())) {
<a name="210" href="#210">210</a>             newConnector.getFilterChain().remove(ProxyFilter.<strong class="jxr_keyword">class</strong>.getName());
<a name="211" href="#211">211</a>         }
<a name="212" href="#212">212</a> 
<a name="213" href="#213">213</a>         newConnector.getFilterChain().addFirst(ProxyFilter.<strong class="jxr_keyword">class</strong>.getName(),
<a name="214" href="#214">214</a>                 proxyFilter);
<a name="215" href="#215">215</a>     }
<a name="216" href="#216">216</a> 
<a name="217" href="#217">217</a>     <em class="jxr_comment">/*<em class="jxr_comment"> (non-Javadoc)</em></em>
<a name="218" href="#218">218</a> <em class="jxr_comment">     * @see org.apache.mina.common.AbstractIoService#dispose0()</em>
<a name="219" href="#219">219</a> <em class="jxr_comment">     */</em>
<a name="220" href="#220">220</a>     @Override
<a name="221" href="#221">221</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../org/apache/mina/core/future/IoFuture.html">IoFuture</a> dispose0() <strong class="jxr_keyword">throws</strong> Exception {
<a name="222" href="#222">222</a>         <strong class="jxr_keyword">if</strong> (connector != <strong class="jxr_keyword">null</strong>) {
<a name="223" href="#223">223</a>             connector.dispose();
<a name="224" href="#224">224</a>         }
<a name="225" href="#225">225</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="226" href="#226">226</a>     }
<a name="227" href="#227">227</a> 
<a name="228" href="#228">228</a>     <em class="jxr_comment">/*<em class="jxr_comment"> (non-Javadoc)</em></em>
<a name="229" href="#229">229</a> <em class="jxr_comment">     * @see org.apache.mina.common.IoService#getTransportMetadata()</em>
<a name="230" href="#230">230</a> <em class="jxr_comment">     */</em>
<a name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/mina/core/service/TransportMetadata.html">TransportMetadata</a> getTransportMetadata() {
<a name="232" href="#232">232</a>         <strong class="jxr_keyword">return</strong> METADATA;
<a name="233" href="#233">233</a>     }
<a name="234" href="#234">234</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

