<!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>ConpositeSubscriberTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../../../apidocs/org/apache/axis2/savan/ConpositeSubscriberTest.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 2004,2005 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>  
<a name="17" href="#17">17</a>  <strong>package</strong> org.apache.axis2.savan;
<a name="18" href="#18">18</a>  
<a name="19" href="#19">19</a>  <strong>import</strong> org.apache.savan.SavanException;
<a name="20" href="#20">20</a>  <strong>import</strong> org.apache.savan.SavanMessageContext;
<a name="21" href="#21">21</a>  <strong>import</strong> org.apache.savan.subscribers.CompositeSubscriber;
<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.savan.subscribers.LeafSubscriber;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong>import</strong> junit.framework.TestCase;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../org/apache/axis2/savan/ConpositeSubscriberTest.html">ConpositeSubscriberTest</a> <strong>extends</strong> TestCase {
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  	<strong>public</strong> <strong>void</strong> testSubscribers () throws SavanException {
<a name="29" href="#29">29</a>  		LeafSubscriberImpl leafSubscriber1 = <strong>new</strong> LeafSubscriberImpl ();
<a name="30" href="#30">30</a>  		LeafSubscriberImpl leafSubscriber2 = <strong>new</strong> LeafSubscriberImpl ();
<a name="31" href="#31">31</a>  		CompositeSubscriber compositeSubscriber = <strong>new</strong> CompositeSubscriber ();
<a name="32" href="#32">32</a>  		
<a name="33" href="#33">33</a>  		compositeSubscriber.addSubscriber(leafSubscriber1);
<a name="34" href="#34">34</a>  		compositeSubscriber.addSubscriber(leafSubscriber2);
<a name="35" href="#35">35</a>  		
<a name="36" href="#36">36</a>  		compositeSubscriber.sendPublication(<strong>null</strong>,<strong>null</strong>);
<a name="37" href="#37">37</a>  		assertTrue(leafSubscriber1.isNotified());
<a name="38" href="#38">38</a>  		assertTrue(leafSubscriber2.isNotified());
<a name="39" href="#39">39</a>  	}
<a name="40" href="#40">40</a>  	
<a name="41" href="#41">41</a>  	<strong>class</strong> LeafSubscriberImpl <strong>extends</strong> LeafSubscriber {
<a name="42" href="#42">42</a>  		
<a name="43" href="#43">43</a>  		<strong>boolean</strong> notified = false;
<a name="44" href="#44">44</a>  		
<a name="45" href="#45">45</a>  		<strong>public</strong> <strong>void</strong> doProtocolSpecificPublication(SavanMessageContext notificationMessage) {
<a name="46" href="#46">46</a>  			notified = <strong>true</strong>;
<a name="47" href="#47">47</a>  		}
<a name="48" href="#48">48</a>  		
<a name="49" href="#49">49</a>  		<strong>public</strong> <strong>boolean</strong> isNotified () {
<a name="50" href="#50">50</a>  			<strong>return</strong> notified;
<a name="51" href="#51">51</a>  		}
<a name="52" href="#52">52</a>  	}
<a name="53" href="#53">53</a>  	
<a name="54" href="#54">54</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

