<!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_US" lang="en_US">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>ImageServerIoHandler xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../apidocs/org/apache/mina/example/imagine/step1/server/ImageServerIoHandler.html">View Javadoc</a></div><pre>

<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> *   Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> *   or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> *   distributed with this work for additional information</em>
<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> *   regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> *   to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> *   "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> *   with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" 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 class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> *   Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> *   software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> *   KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> *   specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> *   under the License.</em>
<a class="jxr_linenumber" name="18" href="#18">18</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="19" href="#19">19</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">package</strong> org.apache.mina.example.imagine.step1.server;
<a class="jxr_linenumber" name="21" href="#21">21</a>  
<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.service.IoHandlerAdapter;
<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSession;
<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.example.imagine.step1.ImageRequest;
<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.example.imagine.step1.ImageResponse;
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
<a class="jxr_linenumber" name="28" href="#28">28</a>  
<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.awt.Color;
<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.awt.Font;
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.awt.Graphics;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.awt.image.BufferedImage;
<a class="jxr_linenumber" name="33" href="#33">33</a>  
<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * server-side {@link org.apache.mina.core.service.IoHandler}</em>
<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="http://mina.apache.org" target="alexandria_uri">http://mina.apache.org</a>"&gt;Apache MINA Project&lt;/a&gt;</em>
<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="39" href="#39">39</a>  
<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../../org/apache/mina/example/imagine/step1/server/ImageServerIoHandler.html">ImageServerIoHandler</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../../org/apache/mina/core/service/IoHandlerAdapter.html">IoHandlerAdapter</a> {
<a class="jxr_linenumber" name="41" href="#41">41</a>  
<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> String characters = <span class="jxr_string">"mina rocks abcdefghijklmnopqrstuvwxyz0123456789"</span>;
<a class="jxr_linenumber" name="43" href="#43">43</a>  
<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String INDEX_KEY = ImageServerIoHandler.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">".INDEX"</span>;
<a class="jxr_linenumber" name="45" href="#45">45</a>  
<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Logger LOGGER = LoggerFactory.getLogger(ImageServerIoHandler.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="47" href="#47">47</a>  
<a class="jxr_linenumber" name="48" href="#48">48</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     * Called when the session is opened, which will come after the session created.</em>
<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     * @see org.apache.mina.core.service.IoHandlerAdapter#sessionOpened(org.apache.mina.core.session.IoSession)</em>
<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sessionOpened(<a href="../../../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session) <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="54" href="#54">54</a>          session.setAttribute(INDEX_KEY, 0);
<a class="jxr_linenumber" name="55" href="#55">55</a>      }
<a class="jxr_linenumber" name="56" href="#56">56</a>  
<a class="jxr_linenumber" name="57" href="#57">57</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     * This method will be called whenever an exception occurs.  For this handler,</em>
<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">     * the logger will generate a warning message.</em>
<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment">     * @see org.apache.mina.core.service.IoHandlerAdapter#exceptionCaught(org.apache.mina.core.session.IoSession, java.lang.Throwable)</em>
<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> exceptionCaught(<a href="../../../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session, Throwable cause) <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="64" href="#64">64</a>          LOGGER.warn(cause.getMessage(), cause);
<a class="jxr_linenumber" name="65" href="#65">65</a>      }
<a class="jxr_linenumber" name="66" href="#66">66</a>  
<a class="jxr_linenumber" name="67" href="#67">67</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     * Handle incoming messages.</em>
<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * @see org.apache.mina.core.service.IoHandlerAdapter#messageReceived(org.apache.mina.core.session.IoSession, java.lang.Object)</em>
<a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> messageReceived(<a href="../../../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session, Object message) <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="73" href="#73">73</a>          <a href="../../../../../../../org/apache/mina/example/imagine/step1/ImageRequest.html">ImageRequest</a> request = (ImageRequest) message;
<a class="jxr_linenumber" name="74" href="#74">74</a>          String text1 = generateString(session, request.getNumberOfCharacters());
<a class="jxr_linenumber" name="75" href="#75">75</a>          String text2 = generateString(session, request.getNumberOfCharacters());
<a class="jxr_linenumber" name="76" href="#76">76</a>          BufferedImage image1 = createImage(request, text1);
<a class="jxr_linenumber" name="77" href="#77">77</a>          BufferedImage image2 = createImage(request, text2);
<a class="jxr_linenumber" name="78" href="#78">78</a>          <a href="../../../../../../../org/apache/mina/example/imagine/step1/ImageResponse.html">ImageResponse</a> response = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/mina/example/imagine/step1/ImageResponse.html">ImageResponse</a>(image1, image2);
<a class="jxr_linenumber" name="79" href="#79">79</a>          session.write(response);
<a class="jxr_linenumber" name="80" href="#80">80</a>      }
<a class="jxr_linenumber" name="81" href="#81">81</a>  
<a class="jxr_linenumber" name="82" href="#82">82</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * Create an image using the specified request and the text.  </em>
<a class="jxr_linenumber" name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="85" href="#85">85</a>  <em class="jxr_javadoccomment">     * @param request</em>
<a class="jxr_linenumber" name="86" href="#86">86</a>  <em class="jxr_javadoccomment">     *  Determines the height and width of the image</em>
<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">     * @param text</em>
<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     *  The text that is placed in the image</em>
<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * @return</em>
<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     *  a BufferedImage representing the text.</em>
<a class="jxr_linenumber" name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">private</strong> BufferedImage createImage(<a href="../../../../../../../org/apache/mina/example/imagine/step1/ImageRequest.html">ImageRequest</a> request, String text) {
<a class="jxr_linenumber" name="93" href="#93">93</a>          BufferedImage image = <strong class="jxr_keyword">new</strong> BufferedImage(request.getWidth(), request.getHeight(), BufferedImage.TYPE_BYTE_INDEXED);
<a class="jxr_linenumber" name="94" href="#94">94</a>          Graphics graphics = image.createGraphics();
<a class="jxr_linenumber" name="95" href="#95">95</a>          graphics.setColor(Color.YELLOW);
<a class="jxr_linenumber" name="96" href="#96">96</a>          graphics.fillRect(0, 0, image.getWidth(), image.getHeight());
<a class="jxr_linenumber" name="97" href="#97">97</a>          Font serif = <strong class="jxr_keyword">new</strong> Font(<span class="jxr_string">"serif"</span>, Font.PLAIN, 30);
<a class="jxr_linenumber" name="98" href="#98">98</a>          graphics.setFont(serif);
<a class="jxr_linenumber" name="99" href="#99">99</a>          graphics.setColor(Color.BLUE);
<a class="jxr_linenumber" name="100" href="#100">100</a>         graphics.drawString(text, 10, 50);
<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">return</strong> image;
<a class="jxr_linenumber" name="102" href="#102">102</a>     }
<a class="jxr_linenumber" name="103" href="#103">103</a> 
<a class="jxr_linenumber" name="104" href="#104">104</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * Generate a string based on the 'characters' field in this class.  The</em>
<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment">     * characters that make up the string are based on the session </em>
<a class="jxr_linenumber" name="107" href="#107">107</a> <em class="jxr_javadoccomment">     * attribute "INDEX_KEY"</em>
<a class="jxr_linenumber" name="108" href="#108">108</a> <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="109" href="#109">109</a> <em class="jxr_javadoccomment">     * @param session</em>
<a class="jxr_linenumber" name="110" href="#110">110</a> <em class="jxr_javadoccomment">     *  The {@link IoSession} object that will provide the INDEX_KEY attribute</em>
<a class="jxr_linenumber" name="111" href="#111">111</a> <em class="jxr_javadoccomment">     * @param length</em>
<a class="jxr_linenumber" name="112" href="#112">112</a> <em class="jxr_javadoccomment">     *  The length that the String will be</em>
<a class="jxr_linenumber" name="113" href="#113">113</a> <em class="jxr_javadoccomment">     * @return</em>
<a class="jxr_linenumber" name="114" href="#114">114</a> <em class="jxr_javadoccomment">     *  The generated String</em>
<a class="jxr_linenumber" name="115" href="#115">115</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">private</strong> String generateString(<a href="../../../../../../../org/apache/mina/core/session/IoSession.html">IoSession</a> session, <strong class="jxr_keyword">int</strong> length) {
<a class="jxr_linenumber" name="117" href="#117">117</a>         Integer index = (Integer) session.getAttribute(INDEX_KEY);
<a class="jxr_linenumber" name="118" href="#118">118</a>         StringBuffer buffer = <strong class="jxr_keyword">new</strong> StringBuffer(length);
<a class="jxr_linenumber" name="119" href="#119">119</a>         <strong class="jxr_keyword">while</strong> (buffer.length() &lt; length) {
<a class="jxr_linenumber" name="120" href="#120">120</a>             buffer.append(characters.charAt(index));
<a class="jxr_linenumber" name="121" href="#121">121</a>             index++;
<a class="jxr_linenumber" name="122" href="#122">122</a>             <strong class="jxr_keyword">if</strong> (index &gt;= characters.length()) {
<a class="jxr_linenumber" name="123" href="#123">123</a>                 index = 0;
<a class="jxr_linenumber" name="124" href="#124">124</a>             }
<a class="jxr_linenumber" name="125" href="#125">125</a>         }
<a class="jxr_linenumber" name="126" href="#126">126</a>         session.setAttribute(INDEX_KEY, index);
<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">return</strong> buffer.toString();
<a class="jxr_linenumber" name="128" href="#128">128</a>     }
<a class="jxr_linenumber" name="129" href="#129">129</a> 
<a class="jxr_linenumber" name="130" href="#130">130</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

