KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > axis > session > SimpleSession


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
6  * reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Axis" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation. For more
52  * information on the Apache Software Foundation, please see
53  * <http://www.apache.org/>.
54  */

55
56 package org.jboss.axis.session;
57
58 import java.util.Enumeration JavaDoc;
59 import java.util.Hashtable JavaDoc;
60
61 /**
62  * A trivial session implementation.
63  *
64  * @author Glen Daniels (gdaniels@macromedia.com)
65  */

66 public class SimpleSession implements Session
67 {
68    private Hashtable JavaDoc rep = null;
69
70    /**
71     * Inactivity timeout (in seconds).
72     * Not used yet.
73     */

74    private int timeout = -1;
75    private long lastTouched;
76
77    /**
78     * Default constructor - set lastTouched to now
79     */

80    public SimpleSession()
81    {
82       lastTouched = System.currentTimeMillis();
83    }
84
85    /**
86     * Get a property from the session
87     *
88     * @param key the name of the property desired.
89     */

90    public Object JavaDoc get(String JavaDoc key)
91    {
92       if (rep == null)
93          return null;
94       lastTouched = System.currentTimeMillis();
95       return rep.get(key);
96    }
97
98    /**
99     * Set a property in the session
100     *
101     * @param key the name of the property to set.
102     * @param value the value of the property.
103     */

104    public void set(String JavaDoc key, Object JavaDoc value)
105    {
106       synchronized (this)
107       {
108          if (rep == null)
109             rep = new Hashtable JavaDoc();
110       }
111       lastTouched = System.currentTimeMillis();
112       rep.put(key, value);
113    }
114
115    /**
116     * Remove a property from the session
117     *
118     * @param key the name of the property desired.
119     */

120    public void remove(String JavaDoc key)
121    {
122       if (rep != null)
123          rep.remove(key);
124       lastTouched = System.currentTimeMillis();
125    }
126
127    /**
128     * Get an enumeration of the keys in this session
129     */

130    public Enumeration JavaDoc getKeys()
131    {
132       if (rep != null)
133          return rep.keys();
134       return null;
135    }
136
137    /**
138     * Set the session's time-to-live.
139     * <p/>
140     * This is implementation-specific, but basically should be the #
141     * of seconds of inactivity which will cause the session to time
142     * out and invalidate. "inactivity" is implementation-specific.
143     */

144    public void setTimeout(int timeout)
145    {
146       this.timeout = timeout;
147    }
148
149    public int getTimeout()
150    {
151       return timeout;
152    }
153
154    /**
155     * "Touch" the session (mark it recently used)
156     */

157    public void touch()
158    {
159       lastTouched = System.currentTimeMillis();
160    }
161
162    public long getLastAccessTime()
163    {
164       return lastTouched;
165    }
166
167    /**
168     * Get an Object suitable for synchronizing the session. This method
169     * exists because different session implementations might provide
170     * different ways of getting at shared data. For a simple hashtable-
171     * based session, this would just be the hashtable, but for sessions
172     * which use database connections, etc. it might be an object wrapping
173     * a table ID or somesuch.
174     */

175    public synchronized Object JavaDoc getLockObject()
176    {
177       if (rep == null)
178       {
179          rep = new Hashtable JavaDoc();
180       }
181       return rep;
182    }
183 }
184
Popular Tags