<!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=ISO-8859-1" /><title>SavanInOutMessageReceiver xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../../../apidocs/org/apache/savan/messagereceiver/SavanInOutMessageReceiver.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> * Copyright  1999-2004 The Apache Software Foundation.</em>
<a name="3" href="#3">3</a>   <em class="comment"> *</em>
<a name="4" href="#4">4</a>   <em class="comment"> *  Licensed under the Apache License, Version 2.0 (the "License");</em>
<a name="5" href="#5">5</a>   <em class="comment"> *  you may not use this file except in compliance with the License.</em>
<a name="6" href="#6">6</a>   <em class="comment"> *  You may obtain a copy of the License at</em>
<a name="7" href="#7">7</a>   <em class="comment"> *</em>
<a name="8" href="#8">8</a>   <em class="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="9" href="#9">9</a>   <em class="comment"> *</em>
<a name="10" href="#10">10</a>  <em class="comment"> *  Unless required by applicable law or agreed to in writing, software</em>
<a name="11" href="#11">11</a>  <em class="comment"> *  distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="12" href="#12">12</a>  <em class="comment"> *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="13" href="#13">13</a>  <em class="comment"> *  See the License for the specific language governing permissions and</em>
<a name="14" href="#14">14</a>  <em class="comment"> *  limitations under the License.</em>
<a name="15" href="#15">15</a>  <em class="comment"> *</em>
<a name="16" href="#16">16</a>  <em class="comment"> */</em>
<a name="17" href="#17">17</a>  
<a name="18" href="#18">18</a>  <strong>package</strong> org.apache.savan.messagereceiver;
<a name="19" href="#19">19</a>  
<a name="20" href="#20">20</a>  <strong>import</strong> org.apache.axis2.AxisFault;
<a name="21" href="#21">21</a>  <strong>import</strong> org.apache.axis2.context.MessageContext;
<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
<a name="23" href="#23">23</a>  <strong>import</strong> org.apache.savan.SavanConstants;
<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.savan.SavanException;
<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.savan.SavanMessageContext;
<a name="26" href="#26">26</a>  <strong>import</strong> org.apache.savan.configuration.Protocol;
<a name="27" href="#27">27</a>  <strong>import</strong> org.apache.savan.util.UtilFactory;
<a name="28" href="#28">28</a>  
<a name="29" href="#29">29</a>  <em>/**<em>*</em></em>
<a name="30" href="#30">30</a>  <em> * InOut message deceiver for Savan. </em>
<a name="31" href="#31">31</a>  <em> * May get called for control messages depending on the protocol.</em>
<a name="32" href="#32">32</a>  <em> */</em>
<a name="33" href="#33">33</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../org/apache/savan/messagereceiver/SavanInOutMessageReceiver.html">SavanInOutMessageReceiver</a> <strong>extends</strong> AbstractInOutSyncMessageReceiver {
<a name="34" href="#34">34</a>  
<a name="35" href="#35">35</a>  	<strong>public</strong> <strong>void</strong> invokeBusinessLogic(MessageContext inMessage, MessageContext outMessage) throws AxisFault {
<a name="36" href="#36">36</a>  
<a name="37" href="#37">37</a>  		SavanMessageContext savanInMessage = <strong>new</strong> <a href="../../../../org/apache/savan/SavanMessageContext.html">SavanMessageContext</a> (inMessage);
<a name="38" href="#38">38</a>  		
<a name="39" href="#39">39</a>  <em class="comment">//		Integer protocolVersion = (Integer) inMessage.getProperty(SavanConstants.PROTOCOL_VERSION);</em>
<a name="40" href="#40">40</a>  <em class="comment">//		UtilFactory utilFactory = AbstractSavanUtilFactory.getUtilFactory(protocolVersion.intValue());</em>
<a name="41" href="#41">41</a>  		
<a name="42" href="#42">42</a>  		Protocol protocol = savanInMessage.getProtocol();
<a name="43" href="#43">43</a>  		<strong>if</strong> (protocol==<strong>null</strong>) {
<a name="44" href="#44">44</a>  			<strong>throw</strong> <strong>new</strong> <a href="../../../../org/apache/savan/SavanException.html">SavanException</a> (<span class="string">"Protocol not found"</span>);
<a name="45" href="#45">45</a>  		}
<a name="46" href="#46">46</a>  		
<a name="47" href="#47">47</a>  		UtilFactory utilFactory = protocol.getUtilFactory();
<a name="48" href="#48">48</a>  		MessageReceiverDeligater deligator = utilFactory.createMessageReceiverDeligater();
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>  		<strong>int</strong> messageType = savanInMessage.getMessageType();
<a name="51" href="#51">51</a>  		<strong>if</strong> (messageType==SavanConstants.MessageTypes.SUBSCRIPTION_MESSAGE) {
<a name="52" href="#52">52</a>  			deligator.handleSubscriptionRequest(savanInMessage,outMessage);
<a name="53" href="#53">53</a>  		} <strong>else</strong> <strong>if</strong> (messageType==SavanConstants.MessageTypes.RENEW_MESSAGE) {
<a name="54" href="#54">54</a>  			deligator.handleRenewRequest (savanInMessage,outMessage);
<a name="55" href="#55">55</a>  		} <strong>else</strong> <strong>if</strong> (messageType==SavanConstants.MessageTypes.UNSUBSCRIPTION_MESSAGE) {
<a name="56" href="#56">56</a>  			deligator.handleEndSubscriptionRequest (savanInMessage,outMessage);
<a name="57" href="#57">57</a>  		} <strong>else</strong> <strong>if</strong> (messageType==SavanConstants.MessageTypes.GET_STATUS_MESSAGE) {
<a name="58" href="#58">58</a>  			deligator.handleGetStatusRequest (savanInMessage,outMessage);
<a name="59" href="#59">59</a>  		}
<a name="60" href="#60">60</a>  		
<a name="61" href="#61">61</a>  	}
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

