Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
NativeSessionManager |
|
| 1.0;1 |
1 | /* | |
2 | * Copyright 2008 Les Hazlewood | |
3 | * | |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | * you may not use this file except in compliance with the License. | |
6 | * You may obtain a copy of the License at | |
7 | * | |
8 | * http://www.apache.org/licenses/LICENSE-2.0 | |
9 | * | |
10 | * Unless required by applicable law or agreed to in writing, software | |
11 | * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | * See the License for the specific language governing permissions and | |
14 | * limitations under the License. | |
15 | */ | |
16 | package org.apache.shiro.session.mgt; | |
17 | ||
18 | import org.apache.shiro.session.InvalidSessionException; | |
19 | ||
20 | import java.util.Collection; | |
21 | import java.util.Date; | |
22 | ||
23 | /** | |
24 | * A {@code Native} session manager is one that manages sessions natively - that is, it is directly responsible | |
25 | * for the creation, persistence and removal of {@link org.apache.shiro.session.Session Session} instances and their | |
26 | * lifecycles. | |
27 | * | |
28 | * @since 1.0 | |
29 | */ | |
30 | public interface NativeSessionManager extends SessionManager { | |
31 | ||
32 | /** | |
33 | * Returns the time the associated {@code Session} started (was created). | |
34 | * | |
35 | * @param key the session key to use to look up the target session. | |
36 | * @return the time the specified {@code Session} started (was created). | |
37 | * @see org.apache.shiro.session.Session#getStartTimestamp() | |
38 | */ | |
39 | Date getStartTimestamp(SessionKey key); | |
40 | ||
41 | /** | |
42 | * Returns the time the associated {@code Session} last interacted with the system. | |
43 | * | |
44 | * @param key the session key to use to look up the target session. | |
45 | * @return time the session last accessed the system | |
46 | * @see org.apache.shiro.session.Session#getLastAccessTime() | |
47 | * @see org.apache.shiro.session.Session#touch() | |
48 | */ | |
49 | Date getLastAccessTime(SessionKey key); | |
50 | ||
51 | /** | |
52 | * Returns {@code true} if the associated session is valid (it exists and is not stopped nor expired), | |
53 | * {@code false} otherwise. | |
54 | * | |
55 | * @param key the session key to use to look up the target session. | |
56 | * @return {@code true} if the session is valid (exists and is not stopped or expired), {@code false} otherwise. | |
57 | */ | |
58 | boolean isValid(SessionKey key); | |
59 | ||
60 | /** | |
61 | * Returns quietly if the associated session is valid (it exists and is not stopped or expired) or throws | |
62 | * an {@link org.apache.shiro.session.InvalidSessionException} indicating that the session id is invalid. This | |
63 | * might be preferred to be used instead of {@link #isValid} since any exception thrown will definitively explain | |
64 | * the reason for invalidation. | |
65 | * | |
66 | * @param key the session key to use to look up the target session. | |
67 | * @throws org.apache.shiro.session.InvalidSessionException | |
68 | * if the session id is invalid (it does not exist or it is stopped or expired). | |
69 | */ | |
70 | void checkValid(SessionKey key) throws InvalidSessionException; | |
71 | ||
72 | /** | |
73 | * Returns the time in milliseconds that the associated session may remain idle before expiring. | |
74 | * <ul> | |
75 | * <li>A negative return value means the session will never expire.</li> | |
76 | * <li>A non-negative return value (0 or greater) means the session expiration will occur if idle for that | |
77 | * length of time.</li> | |
78 | * </ul> | |
79 | * | |
80 | * @param key the session key to use to look up the target session. | |
81 | * @return the time in milliseconds that the associated session may remain idle before expiring. | |
82 | * @throws org.apache.shiro.session.InvalidSessionException | |
83 | * if the session has been stopped or expired prior to calling this method. | |
84 | */ | |
85 | long getTimeout(SessionKey key) throws InvalidSessionException; | |
86 | ||
87 | /** | |
88 | * Sets the time in milliseconds that the associated session may remain idle before expiring. | |
89 | * <ul> | |
90 | * <li>A negative return value means the session will never expire.</li> | |
91 | * <li>A non-negative return value (0 or greater) means the session expiration will occur if idle for that | |
92 | * length of time.</li> | |
93 | * </ul> | |
94 | * | |
95 | * @param key the session key to use to look up the target session. | |
96 | * @param maxIdleTimeInMillis the time in milliseconds that the associated session may remain idle before expiring. | |
97 | * @throws org.apache.shiro.session.InvalidSessionException | |
98 | * if the session has been stopped or expired prior to calling this method. | |
99 | */ | |
100 | void setTimeout(SessionKey key, long maxIdleTimeInMillis) throws InvalidSessionException; | |
101 | ||
102 | /** | |
103 | * Updates the last accessed time of the session identified by <code>sessionId</code>. This | |
104 | * can be used to explicitly ensure that a session does not time out. | |
105 | * | |
106 | * @param key the session key to use to look up the target session. | |
107 | * @throws org.apache.shiro.session.InvalidSessionException | |
108 | * if the session has been stopped or expired prior to calling this method. | |
109 | * @see org.apache.shiro.session.Session#touch | |
110 | */ | |
111 | void touch(SessionKey key) throws InvalidSessionException; | |
112 | ||
113 | /** | |
114 | * Returns the host name or IP string of the host where the session was started, if known. If | |
115 | * no host name or IP was specified when starting the session, this method returns {@code null} | |
116 | * | |
117 | * @param key the session key to use to look up the target session. | |
118 | * @return the host name or ip address of the host where the session originated, if known. If unknown, | |
119 | * this method returns {@code null}. | |
120 | */ | |
121 | String getHost(SessionKey key); | |
122 | ||
123 | /** | |
124 | * Explicitly stops the associated session, thereby releasing all of its resources. | |
125 | * | |
126 | * @param key the session key to use to look up the target session. | |
127 | * @throws InvalidSessionException if the session has stopped or expired prior to calling this method. | |
128 | * @see org.apache.shiro.session.Session#stop | |
129 | */ | |
130 | void stop(SessionKey key) throws InvalidSessionException; | |
131 | ||
132 | /** | |
133 | * Returns all attribute keys maintained by the target session or an empty collection if there are no attributes. | |
134 | * | |
135 | * @param sessionKey the session key to use to look up the target session. | |
136 | * @return all attribute keys maintained by the target session or an empty collection if there are no attributes. | |
137 | * @throws InvalidSessionException if the associated session has stopped or expired prior to calling this method. | |
138 | * @see org.apache.shiro.session.Session#getAttributeKeys() | |
139 | */ | |
140 | Collection<Object> getAttributeKeys(SessionKey sessionKey); | |
141 | ||
142 | /** | |
143 | * Returns the object bound to the associated session identified by the specified attribute key. If there | |
144 | * is no object bound under the attribute key for the given session, {@code null} is returned. | |
145 | * | |
146 | * @param sessionKey session key to use to look up the target session. | |
147 | * @param attributeKey the unique name of the object bound to the associated session | |
148 | * @return the object bound under the {@code attributeKey} or {@code null} if there is no object bound. | |
149 | * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method. | |
150 | * @see org.apache.shiro.session.Session#getAttribute(Object key) | |
151 | */ | |
152 | Object getAttribute(SessionKey sessionKey, Object attributeKey) throws InvalidSessionException; | |
153 | ||
154 | /** | |
155 | * Binds the specified {@code value} to the associated session uniquely identified by the {@code attributeKey}. | |
156 | * If there is already a session attribute bound under the {@code attributeKey}, that existing object will be | |
157 | * replaced by the new {@code value}. | |
158 | * <p/> | |
159 | * If the {@code value} parameter is null, it has the same effect as if the | |
160 | * {@link #removeAttribute(SessionKey sessionKey, Object attributeKey)} method was called. | |
161 | * | |
162 | * @param sessionKey the session key to use to look up the target session. | |
163 | * @param attributeKey the key under which the {@code value} object will be bound in this session | |
164 | * @param value the object to bind in this session. | |
165 | * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method. | |
166 | * @see org.apache.shiro.session.Session#setAttribute(Object key, Object value) | |
167 | */ | |
168 | void setAttribute(SessionKey sessionKey, Object attributeKey, Object value) throws InvalidSessionException; | |
169 | ||
170 | /** | |
171 | * Removes (unbinds) the object bound to associated {@code Session} under the given {@code attributeKey}. | |
172 | * | |
173 | * @param sessionKey session key to use to look up the target session. | |
174 | * @param attributeKey the key uniquely identifying the object to remove | |
175 | * @return the object removed or {@code null} if there was no object bound under the specified {@code attributeKey}. | |
176 | * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method. | |
177 | * @see org.apache.shiro.session.Session#removeAttribute(Object key) | |
178 | */ | |
179 | Object removeAttribute(SessionKey sessionKey, Object attributeKey) throws InvalidSessionException; | |
180 | ||
181 | } |