<!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>ExpirationBean xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../../../apidocs/org/apache/savan/subscription/ExpirationBean.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.subscription;
<a name="19" href="#19">19</a>  
<a name="20" href="#20">20</a>  <strong>import</strong> java.util.Date;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.axis2.databinding.types.Duration;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <em>/**<em>*</em></em>
<a name="25" href="#25">25</a>  <em> * Defines a expiration. Could be based on a specific time in the future or a duration.</em>
<a name="26" href="#26">26</a>  <em> */</em>
<a name="27" href="#27">27</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../org/apache/savan/subscription/ExpirationBean.html">ExpirationBean</a> {
<a name="28" href="#28">28</a>  
<a name="29" href="#29">29</a>  	Date dateValue;
<a name="30" href="#30">30</a>  	Duration durationValue;
<a name="31" href="#31">31</a>  	String subscriberID;
<a name="32" href="#32">32</a>  	<strong>boolean</strong> duration;
<a name="33" href="#33">33</a>  	
<a name="34" href="#34">34</a>  	<strong>public</strong> String getSubscriberID() {
<a name="35" href="#35">35</a>  		<strong>return</strong> subscriberID;
<a name="36" href="#36">36</a>  	}
<a name="37" href="#37">37</a>  	
<a name="38" href="#38">38</a>  	<strong>public</strong> <strong>void</strong> setSubscriberID(String subscriberID) {
<a name="39" href="#39">39</a>  		<strong>this</strong>.subscriberID = subscriberID;
<a name="40" href="#40">40</a>  	}
<a name="41" href="#41">41</a>  	
<a name="42" href="#42">42</a>  	<strong>public</strong> <strong>boolean</strong> isDuration() {
<a name="43" href="#43">43</a>  		<strong>return</strong> duration;
<a name="44" href="#44">44</a>  	}
<a name="45" href="#45">45</a>  	
<a name="46" href="#46">46</a>  	<strong>public</strong> <strong>void</strong> setDuration(<strong>boolean</strong> duration) {
<a name="47" href="#47">47</a>  		<strong>this</strong>.duration = duration;
<a name="48" href="#48">48</a>  	}
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>  	<strong>public</strong> Date getDateValue() {
<a name="51" href="#51">51</a>  		<strong>return</strong> dateValue;
<a name="52" href="#52">52</a>  	}
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>  	<strong>public</strong> Duration getDurationValue() {
<a name="55" href="#55">55</a>  		<strong>return</strong> durationValue;
<a name="56" href="#56">56</a>  	}
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>  	<strong>public</strong> <strong>void</strong> setDateValue(Date dateValue) {
<a name="59" href="#59">59</a>  		<strong>this</strong>.dateValue = dateValue;
<a name="60" href="#60">60</a>  	}
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>  	<strong>public</strong> <strong>void</strong> setDurationValue(Duration durationValue) {
<a name="63" href="#63">63</a>  		<strong>this</strong>.durationValue = durationValue;
<a name="64" href="#64">64</a>  	}
<a name="65" href="#65">65</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

