blob: 57f44f64925a3867ac727254ed77f2a586cdb27c [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">/*</a>
<span class="sourceLineNo">002</span><a id="line.2"> * Copyright 2008 Les Hazlewood</a>
<span class="sourceLineNo">003</span><a id="line.3"> *</a>
<span class="sourceLineNo">004</span><a id="line.4"> * Licensed under the Apache License, Version 2.0 (the "License");</a>
<span class="sourceLineNo">005</span><a id="line.5"> * you may not use this file except in compliance with the License.</a>
<span class="sourceLineNo">006</span><a id="line.6"> * You may obtain a copy of the License at</a>
<span class="sourceLineNo">007</span><a id="line.7"> *</a>
<span class="sourceLineNo">008</span><a id="line.8"> * http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">009</span><a id="line.9"> *</a>
<span class="sourceLineNo">010</span><a id="line.10"> * Unless required by applicable law or agreed to in writing, software</a>
<span class="sourceLineNo">011</span><a id="line.11"> * distributed under the License is distributed on an "AS IS" BASIS,</a>
<span class="sourceLineNo">012</span><a id="line.12"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</a>
<span class="sourceLineNo">013</span><a id="line.13"> * See the License for the specific language governing permissions and</a>
<span class="sourceLineNo">014</span><a id="line.14"> * limitations under the License.</a>
<span class="sourceLineNo">015</span><a id="line.15"> */</a>
<span class="sourceLineNo">016</span><a id="line.16">package org.apache.shiro.session.mgt;</a>
<span class="sourceLineNo">017</span><a id="line.17"></a>
<span class="sourceLineNo">018</span><a id="line.18">import org.apache.shiro.session.InvalidSessionException;</a>
<span class="sourceLineNo">019</span><a id="line.19"></a>
<span class="sourceLineNo">020</span><a id="line.20">import java.util.Collection;</a>
<span class="sourceLineNo">021</span><a id="line.21">import java.util.Date;</a>
<span class="sourceLineNo">022</span><a id="line.22"></a>
<span class="sourceLineNo">023</span><a id="line.23">/**</a>
<span class="sourceLineNo">024</span><a id="line.24"> * A {@code Native} session manager is one that manages sessions natively - that is, it is directly responsible</a>
<span class="sourceLineNo">025</span><a id="line.25"> * for the creation, persistence and removal of {@link org.apache.shiro.session.Session Session} instances and their</a>
<span class="sourceLineNo">026</span><a id="line.26"> * lifecycles.</a>
<span class="sourceLineNo">027</span><a id="line.27"> *</a>
<span class="sourceLineNo">028</span><a id="line.28"> * @since 1.0</a>
<span class="sourceLineNo">029</span><a id="line.29"> */</a>
<span class="sourceLineNo">030</span><a id="line.30">public interface NativeSessionManager extends SessionManager {</a>
<span class="sourceLineNo">031</span><a id="line.31"></a>
<span class="sourceLineNo">032</span><a id="line.32"> /**</a>
<span class="sourceLineNo">033</span><a id="line.33"> * Returns the time the associated {@code Session} started (was created).</a>
<span class="sourceLineNo">034</span><a id="line.34"> *</a>
<span class="sourceLineNo">035</span><a id="line.35"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">036</span><a id="line.36"> * @return the time the specified {@code Session} started (was created).</a>
<span class="sourceLineNo">037</span><a id="line.37"> * @see org.apache.shiro.session.Session#getStartTimestamp()</a>
<span class="sourceLineNo">038</span><a id="line.38"> */</a>
<span class="sourceLineNo">039</span><a id="line.39"> Date getStartTimestamp(SessionKey key);</a>
<span class="sourceLineNo">040</span><a id="line.40"></a>
<span class="sourceLineNo">041</span><a id="line.41"> /**</a>
<span class="sourceLineNo">042</span><a id="line.42"> * Returns the time the associated {@code Session} last interacted with the system.</a>
<span class="sourceLineNo">043</span><a id="line.43"> *</a>
<span class="sourceLineNo">044</span><a id="line.44"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">045</span><a id="line.45"> * @return time the session last accessed the system</a>
<span class="sourceLineNo">046</span><a id="line.46"> * @see org.apache.shiro.session.Session#getLastAccessTime()</a>
<span class="sourceLineNo">047</span><a id="line.47"> * @see org.apache.shiro.session.Session#touch()</a>
<span class="sourceLineNo">048</span><a id="line.48"> */</a>
<span class="sourceLineNo">049</span><a id="line.49"> Date getLastAccessTime(SessionKey key);</a>
<span class="sourceLineNo">050</span><a id="line.50"></a>
<span class="sourceLineNo">051</span><a id="line.51"> /**</a>
<span class="sourceLineNo">052</span><a id="line.52"> * Returns {@code true} if the associated session is valid (it exists and is not stopped nor expired),</a>
<span class="sourceLineNo">053</span><a id="line.53"> * {@code false} otherwise.</a>
<span class="sourceLineNo">054</span><a id="line.54"> *</a>
<span class="sourceLineNo">055</span><a id="line.55"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">056</span><a id="line.56"> * @return {@code true} if the session is valid (exists and is not stopped or expired), {@code false} otherwise.</a>
<span class="sourceLineNo">057</span><a id="line.57"> */</a>
<span class="sourceLineNo">058</span><a id="line.58"> boolean isValid(SessionKey key);</a>
<span class="sourceLineNo">059</span><a id="line.59"></a>
<span class="sourceLineNo">060</span><a id="line.60"> /**</a>
<span class="sourceLineNo">061</span><a id="line.61"> * Returns quietly if the associated session is valid (it exists and is not stopped or expired) or throws</a>
<span class="sourceLineNo">062</span><a id="line.62"> * an {@link org.apache.shiro.session.InvalidSessionException} indicating that the session id is invalid. This</a>
<span class="sourceLineNo">063</span><a id="line.63"> * might be preferred to be used instead of {@link #isValid} since any exception thrown will definitively explain</a>
<span class="sourceLineNo">064</span><a id="line.64"> * the reason for invalidation.</a>
<span class="sourceLineNo">065</span><a id="line.65"> *</a>
<span class="sourceLineNo">066</span><a id="line.66"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">067</span><a id="line.67"> * @throws org.apache.shiro.session.InvalidSessionException</a>
<span class="sourceLineNo">068</span><a id="line.68"> * if the session id is invalid (it does not exist or it is stopped or expired).</a>
<span class="sourceLineNo">069</span><a id="line.69"> */</a>
<span class="sourceLineNo">070</span><a id="line.70"> void checkValid(SessionKey key) throws InvalidSessionException;</a>
<span class="sourceLineNo">071</span><a id="line.71"></a>
<span class="sourceLineNo">072</span><a id="line.72"> /**</a>
<span class="sourceLineNo">073</span><a id="line.73"> * Returns the time in milliseconds that the associated session may remain idle before expiring.</a>
<span class="sourceLineNo">074</span><a id="line.74"> * &lt;ul&gt;</a>
<span class="sourceLineNo">075</span><a id="line.75"> * &lt;li&gt;A negative return value means the session will never expire.&lt;/li&gt;</a>
<span class="sourceLineNo">076</span><a id="line.76"> * &lt;li&gt;A non-negative return value (0 or greater) means the session expiration will occur if idle for that</a>
<span class="sourceLineNo">077</span><a id="line.77"> * length of time.&lt;/li&gt;</a>
<span class="sourceLineNo">078</span><a id="line.78"> * &lt;/ul&gt;</a>
<span class="sourceLineNo">079</span><a id="line.79"> *</a>
<span class="sourceLineNo">080</span><a id="line.80"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">081</span><a id="line.81"> * @return the time in milliseconds that the associated session may remain idle before expiring.</a>
<span class="sourceLineNo">082</span><a id="line.82"> * @throws org.apache.shiro.session.InvalidSessionException</a>
<span class="sourceLineNo">083</span><a id="line.83"> * if the session has been stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">084</span><a id="line.84"> */</a>
<span class="sourceLineNo">085</span><a id="line.85"> long getTimeout(SessionKey key) throws InvalidSessionException;</a>
<span class="sourceLineNo">086</span><a id="line.86"></a>
<span class="sourceLineNo">087</span><a id="line.87"> /**</a>
<span class="sourceLineNo">088</span><a id="line.88"> * Sets the time in milliseconds that the associated session may remain idle before expiring.</a>
<span class="sourceLineNo">089</span><a id="line.89"> * &lt;ul&gt;</a>
<span class="sourceLineNo">090</span><a id="line.90"> * &lt;li&gt;A negative return value means the session will never expire.&lt;/li&gt;</a>
<span class="sourceLineNo">091</span><a id="line.91"> * &lt;li&gt;A non-negative return value (0 or greater) means the session expiration will occur if idle for that</a>
<span class="sourceLineNo">092</span><a id="line.92"> * length of time.&lt;/li&gt;</a>
<span class="sourceLineNo">093</span><a id="line.93"> * &lt;/ul&gt;</a>
<span class="sourceLineNo">094</span><a id="line.94"> *</a>
<span class="sourceLineNo">095</span><a id="line.95"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">096</span><a id="line.96"> * @param maxIdleTimeInMillis the time in milliseconds that the associated session may remain idle before expiring.</a>
<span class="sourceLineNo">097</span><a id="line.97"> * @throws org.apache.shiro.session.InvalidSessionException</a>
<span class="sourceLineNo">098</span><a id="line.98"> * if the session has been stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">099</span><a id="line.99"> */</a>
<span class="sourceLineNo">100</span><a id="line.100"> void setTimeout(SessionKey key, long maxIdleTimeInMillis) throws InvalidSessionException;</a>
<span class="sourceLineNo">101</span><a id="line.101"></a>
<span class="sourceLineNo">102</span><a id="line.102"> /**</a>
<span class="sourceLineNo">103</span><a id="line.103"> * Updates the last accessed time of the session identified by &lt;code&gt;sessionId&lt;/code&gt;. This</a>
<span class="sourceLineNo">104</span><a id="line.104"> * can be used to explicitly ensure that a session does not time out.</a>
<span class="sourceLineNo">105</span><a id="line.105"> *</a>
<span class="sourceLineNo">106</span><a id="line.106"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">107</span><a id="line.107"> * @throws org.apache.shiro.session.InvalidSessionException</a>
<span class="sourceLineNo">108</span><a id="line.108"> * if the session has been stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">109</span><a id="line.109"> * @see org.apache.shiro.session.Session#touch</a>
<span class="sourceLineNo">110</span><a id="line.110"> */</a>
<span class="sourceLineNo">111</span><a id="line.111"> void touch(SessionKey key) throws InvalidSessionException;</a>
<span class="sourceLineNo">112</span><a id="line.112"></a>
<span class="sourceLineNo">113</span><a id="line.113"> /**</a>
<span class="sourceLineNo">114</span><a id="line.114"> * Returns the host name or IP string of the host where the session was started, if known. If</a>
<span class="sourceLineNo">115</span><a id="line.115"> * no host name or IP was specified when starting the session, this method returns {@code null}</a>
<span class="sourceLineNo">116</span><a id="line.116"> *</a>
<span class="sourceLineNo">117</span><a id="line.117"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">118</span><a id="line.118"> * @return the host name or ip address of the host where the session originated, if known. If unknown,</a>
<span class="sourceLineNo">119</span><a id="line.119"> * this method returns {@code null}.</a>
<span class="sourceLineNo">120</span><a id="line.120"> */</a>
<span class="sourceLineNo">121</span><a id="line.121"> String getHost(SessionKey key);</a>
<span class="sourceLineNo">122</span><a id="line.122"></a>
<span class="sourceLineNo">123</span><a id="line.123"> /**</a>
<span class="sourceLineNo">124</span><a id="line.124"> * Explicitly stops the associated session, thereby releasing all of its resources.</a>
<span class="sourceLineNo">125</span><a id="line.125"> *</a>
<span class="sourceLineNo">126</span><a id="line.126"> * @param key the session key to use to look up the target session.</a>
<span class="sourceLineNo">127</span><a id="line.127"> * @throws InvalidSessionException if the session has stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">128</span><a id="line.128"> * @see org.apache.shiro.session.Session#stop</a>
<span class="sourceLineNo">129</span><a id="line.129"> */</a>
<span class="sourceLineNo">130</span><a id="line.130"> void stop(SessionKey key) throws InvalidSessionException;</a>
<span class="sourceLineNo">131</span><a id="line.131"></a>
<span class="sourceLineNo">132</span><a id="line.132"> /**</a>
<span class="sourceLineNo">133</span><a id="line.133"> * Returns all attribute keys maintained by the target session or an empty collection if there are no attributes.</a>
<span class="sourceLineNo">134</span><a id="line.134"> *</a>
<span class="sourceLineNo">135</span><a id="line.135"> * @param sessionKey the session key to use to look up the target session.</a>
<span class="sourceLineNo">136</span><a id="line.136"> * @return all attribute keys maintained by the target session or an empty collection if there are no attributes.</a>
<span class="sourceLineNo">137</span><a id="line.137"> * @throws InvalidSessionException if the associated session has stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">138</span><a id="line.138"> * @see org.apache.shiro.session.Session#getAttributeKeys()</a>
<span class="sourceLineNo">139</span><a id="line.139"> */</a>
<span class="sourceLineNo">140</span><a id="line.140"> Collection&lt;Object&gt; getAttributeKeys(SessionKey sessionKey);</a>
<span class="sourceLineNo">141</span><a id="line.141"></a>
<span class="sourceLineNo">142</span><a id="line.142"> /**</a>
<span class="sourceLineNo">143</span><a id="line.143"> * Returns the object bound to the associated session identified by the specified attribute key. If there</a>
<span class="sourceLineNo">144</span><a id="line.144"> * is no object bound under the attribute key for the given session, {@code null} is returned.</a>
<span class="sourceLineNo">145</span><a id="line.145"> *</a>
<span class="sourceLineNo">146</span><a id="line.146"> * @param sessionKey session key to use to look up the target session.</a>
<span class="sourceLineNo">147</span><a id="line.147"> * @param attributeKey the unique name of the object bound to the associated session</a>
<span class="sourceLineNo">148</span><a id="line.148"> * @return the object bound under the {@code attributeKey} or {@code null} if there is no object bound.</a>
<span class="sourceLineNo">149</span><a id="line.149"> * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">150</span><a id="line.150"> * @see org.apache.shiro.session.Session#getAttribute(Object key)</a>
<span class="sourceLineNo">151</span><a id="line.151"> */</a>
<span class="sourceLineNo">152</span><a id="line.152"> Object getAttribute(SessionKey sessionKey, Object attributeKey) throws InvalidSessionException;</a>
<span class="sourceLineNo">153</span><a id="line.153"></a>
<span class="sourceLineNo">154</span><a id="line.154"> /**</a>
<span class="sourceLineNo">155</span><a id="line.155"> * Binds the specified {@code value} to the associated session uniquely identified by the {@code attributeKey}.</a>
<span class="sourceLineNo">156</span><a id="line.156"> * If there is already a session attribute bound under the {@code attributeKey}, that existing object will be</a>
<span class="sourceLineNo">157</span><a id="line.157"> * replaced by the new {@code value}.</a>
<span class="sourceLineNo">158</span><a id="line.158"> * &lt;p/&gt;</a>
<span class="sourceLineNo">159</span><a id="line.159"> * If the {@code value} parameter is null, it has the same effect as if the</a>
<span class="sourceLineNo">160</span><a id="line.160"> * {@link #removeAttribute(SessionKey sessionKey, Object attributeKey)} method was called.</a>
<span class="sourceLineNo">161</span><a id="line.161"> *</a>
<span class="sourceLineNo">162</span><a id="line.162"> * @param sessionKey the session key to use to look up the target session.</a>
<span class="sourceLineNo">163</span><a id="line.163"> * @param attributeKey the key under which the {@code value} object will be bound in this session</a>
<span class="sourceLineNo">164</span><a id="line.164"> * @param value the object to bind in this session.</a>
<span class="sourceLineNo">165</span><a id="line.165"> * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">166</span><a id="line.166"> * @see org.apache.shiro.session.Session#setAttribute(Object key, Object value)</a>
<span class="sourceLineNo">167</span><a id="line.167"> */</a>
<span class="sourceLineNo">168</span><a id="line.168"> void setAttribute(SessionKey sessionKey, Object attributeKey, Object value) throws InvalidSessionException;</a>
<span class="sourceLineNo">169</span><a id="line.169"></a>
<span class="sourceLineNo">170</span><a id="line.170"> /**</a>
<span class="sourceLineNo">171</span><a id="line.171"> * Removes (unbinds) the object bound to associated {@code Session} under the given {@code attributeKey}.</a>
<span class="sourceLineNo">172</span><a id="line.172"> *</a>
<span class="sourceLineNo">173</span><a id="line.173"> * @param sessionKey session key to use to look up the target session.</a>
<span class="sourceLineNo">174</span><a id="line.174"> * @param attributeKey the key uniquely identifying the object to remove</a>
<span class="sourceLineNo">175</span><a id="line.175"> * @return the object removed or {@code null} if there was no object bound under the specified {@code attributeKey}.</a>
<span class="sourceLineNo">176</span><a id="line.176"> * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method.</a>
<span class="sourceLineNo">177</span><a id="line.177"> * @see org.apache.shiro.session.Session#removeAttribute(Object key)</a>
<span class="sourceLineNo">178</span><a id="line.178"> */</a>
<span class="sourceLineNo">179</span><a id="line.179"> Object removeAttribute(SessionKey sessionKey, Object attributeKey) throws InvalidSessionException;</a>
<span class="sourceLineNo">180</span><a id="line.180"></a>
<span class="sourceLineNo">181</span><a id="line.181">}</a>
</pre>
</div>
</main>
</body>
</html>