<!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>AbstractStateContext xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/statemachine/context/AbstractStateContext.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.statemachine.context;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.builder.ToStringBuilder;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.statemachine.State;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment">/**</em>
<a name="29" href="#29">29</a>  <em class="jxr_javadoccomment"> * Abstract {@link StateContext} which uses a {@link Map} to store the</em>
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * attributes.</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 &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 name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> */</em>
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/statemachine/context/AbstractStateContext.html">AbstractStateContext</a> implements <a href="../../../../../org/apache/mina/statemachine/context/StateContext.html">StateContext</a> {
<a name="35" href="#35">35</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/mina/statemachine/State.html">State</a> currentState = <strong class="jxr_keyword">null</strong>;
<a name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> Map&lt;Object, Object&gt; attributes = <strong class="jxr_keyword">null</strong>;
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>      <strong class="jxr_keyword">public</strong> Object getAttribute(Object key) {
<a name="39" href="#39">39</a>          <strong class="jxr_keyword">return</strong> getAttributes().get(key);
<a name="40" href="#40">40</a>      }
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/mina/statemachine/State.html">State</a> getCurrentState() {
<a name="43" href="#43">43</a>          <strong class="jxr_keyword">return</strong> currentState;
<a name="44" href="#44">44</a>      }
<a name="45" href="#45">45</a>  
<a name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setAttribute(Object key, Object value) {
<a name="47" href="#47">47</a>          getAttributes().put(key, value);
<a name="48" href="#48">48</a>      }
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCurrentState(<a href="../../../../../org/apache/mina/statemachine/State.html">State</a> state) {
<a name="51" href="#51">51</a>          currentState = state;
<a name="52" href="#52">52</a>      }
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>      <strong class="jxr_keyword">protected</strong> Map&lt;Object, Object&gt; getAttributes() {
<a name="55" href="#55">55</a>          <strong class="jxr_keyword">if</strong> (attributes == <strong class="jxr_keyword">null</strong>) {
<a name="56" href="#56">56</a>              attributes = <strong class="jxr_keyword">new</strong> HashMap&lt;Object, Object&gt;();
<a name="57" href="#57">57</a>          }
<a name="58" href="#58">58</a>          <strong class="jxr_keyword">return</strong> attributes;
<a name="59" href="#59">59</a>      }
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>      <strong class="jxr_keyword">public</strong> String toString() {
<a name="62" href="#62">62</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> ToStringBuilder(<strong class="jxr_keyword">this</strong>)
<a name="63" href="#63">63</a>              .append(<span class="jxr_string">"currentState"</span>, currentState)
<a name="64" href="#64">64</a>              .append(<span class="jxr_string">"attributes"</span>, attributes)
<a name="65" href="#65">65</a>              .toString();
<a name="66" href="#66">66</a>      }    
<a name="67" href="#67">67</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

