<!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>InetSocketAddressEditor xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/integration/beans/InetSocketAddressEditor.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.integration.beans;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.beans.PropertyEditor;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.net.InetSocketAddress;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <em class="jxr_javadoccomment">/**</em>
<a name="26" href="#26">26</a>  <em class="jxr_javadoccomment"> * A {@link PropertyEditor} which converts a {@link String} into an</em>
<a name="27" href="#27">27</a>  <em class="jxr_javadoccomment"> * {@link InetSocketAddress}. Valid values include a hostname or IP</em>
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment"> * address and a port number separated by a ':'. If the hostname or IP address</em>
<a name="29" href="#29">29</a>  <em class="jxr_javadoccomment"> * is omitted the wildcard address will be used. E.g.:</em>
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * &lt;code&gt;google.com:80&lt;/code&gt;, &lt;code&gt;:22&lt;/code&gt;, &lt;code&gt;192.168.0.1:110&lt;/code&gt;.</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> *</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> *</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * @see java.net.InetSocketAddress</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> */</em>
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/integration/beans/InetSocketAddressEditor.html">InetSocketAddressEditor</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/mina/integration/beans/AbstractPropertyEditor.html">AbstractPropertyEditor</a> {
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>      @Override
<a name="39" href="#39">39</a>      <strong class="jxr_keyword">protected</strong> String toText(Object value) {
<a name="40" href="#40">40</a>          InetSocketAddress addr = ((InetSocketAddress) value);
<a name="41" href="#41">41</a>          String hostname;
<a name="42" href="#42">42</a>          <strong class="jxr_keyword">if</strong> (addr.getAddress() != <strong class="jxr_keyword">null</strong>) {
<a name="43" href="#43">43</a>              hostname = addr.getAddress().getHostAddress();
<a name="44" href="#44">44</a>          } <strong class="jxr_keyword">else</strong> {
<a name="45" href="#45">45</a>              hostname = addr.getHostName();
<a name="46" href="#46">46</a>          }
<a name="47" href="#47">47</a>          
<a name="48" href="#48">48</a>          <strong class="jxr_keyword">if</strong> (hostname.equals(<span class="jxr_string">"0:0:0:0:0:0:0:0"</span>) || hostname.equals(<span class="jxr_string">"0.0.0.0"</span>) ||
<a name="49" href="#49">49</a>              hostname.equals(<span class="jxr_string">"00:00:00:00:00:00:00:00"</span>)) {
<a name="50" href="#50">50</a>              hostname = <span class="jxr_string">"*"</span>;
<a name="51" href="#51">51</a>          }
<a name="52" href="#52">52</a>          
<a name="53" href="#53">53</a>          <strong class="jxr_keyword">return</strong> hostname + ':' + addr.getPort();
<a name="54" href="#54">54</a>      }
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>      @Override
<a name="57" href="#57">57</a>      <strong class="jxr_keyword">protected</strong> Object toValue(String text) <strong class="jxr_keyword">throws</strong> IllegalArgumentException {
<a name="58" href="#58">58</a>          <strong class="jxr_keyword">if</strong> (text.length() == 0) {
<a name="59" href="#59">59</a>              <strong class="jxr_keyword">return</strong> defaultValue();
<a name="60" href="#60">60</a>          }
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>          <strong class="jxr_keyword">int</strong> colonIndex = text.lastIndexOf(<span class="jxr_string">":"</span>);
<a name="63" href="#63">63</a>          <strong class="jxr_keyword">if</strong> (colonIndex &gt; 0) {
<a name="64" href="#64">64</a>              String host = text.substring(0, colonIndex);
<a name="65" href="#65">65</a>              <strong class="jxr_keyword">if</strong> (!<span class="jxr_string">"*"</span>.equals(host)) {
<a name="66" href="#66">66</a>                  <strong class="jxr_keyword">int</strong> port = parsePort(text.substring(colonIndex + 1));
<a name="67" href="#67">67</a>                  <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> InetSocketAddress(host, port);
<a name="68" href="#68">68</a>              }
<a name="69" href="#69">69</a>          }
<a name="70" href="#70">70</a>  
<a name="71" href="#71">71</a>          <strong class="jxr_keyword">int</strong> port = parsePort(text.substring(colonIndex + 1));
<a name="72" href="#72">72</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> InetSocketAddress(port);
<a name="73" href="#73">73</a>      }
<a name="74" href="#74">74</a>  
<a name="75" href="#75">75</a>      @Override
<a name="76" href="#76">76</a>      <strong class="jxr_keyword">protected</strong> String defaultText() {
<a name="77" href="#77">77</a>          <strong class="jxr_keyword">return</strong> <span class="jxr_string">"*:0"</span>;
<a name="78" href="#78">78</a>      }
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>      @Override
<a name="81" href="#81">81</a>      <strong class="jxr_keyword">protected</strong> Object defaultValue() {
<a name="82" href="#82">82</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> InetSocketAddress(0);
<a name="83" href="#83">83</a>      }
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> parsePort(String s) {
<a name="86" href="#86">86</a>          <strong class="jxr_keyword">try</strong> {
<a name="87" href="#87">87</a>              <strong class="jxr_keyword">return</strong> Integer.parseInt(s);
<a name="88" href="#88">88</a>          } <strong class="jxr_keyword">catch</strong> (NumberFormatException nfe) {
<a name="89" href="#89">89</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Illegal port number: "</span> + s);
<a name="90" href="#90">90</a>          }
<a name="91" href="#91">91</a>      }
<a name="92" href="#92">92</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

