<!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"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">003</span><a id="line.3"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">004</span><a id="line.4"> * distributed with this work for additional information</a>
<span class="sourceLineNo">005</span><a id="line.5"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">006</span><a id="line.6"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">007</span><a id="line.7"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">008</span><a id="line.8"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">009</span><a id="line.9"> *</a>
<span class="sourceLineNo">010</span><a id="line.10"> *     http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">011</span><a id="line.11"> *</a>
<span class="sourceLineNo">012</span><a id="line.12"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">013</span><a id="line.13"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">014</span><a id="line.14"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">015</span><a id="line.15"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">016</span><a id="line.16"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">017</span><a id="line.17"> * under the License.</a>
<span class="sourceLineNo">018</span><a id="line.18"> */</a>
<span class="sourceLineNo">019</span><a id="line.19">package org.apache.shiro.session.mgt.eis;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.cache.Cache;</a>
<span class="sourceLineNo">022</span><a id="line.22">import org.apache.shiro.cache.CacheManager;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.apache.shiro.cache.CacheManagerAware;</a>
<span class="sourceLineNo">024</span><a id="line.24">import org.apache.shiro.session.Session;</a>
<span class="sourceLineNo">025</span><a id="line.25">import org.apache.shiro.session.UnknownSessionException;</a>
<span class="sourceLineNo">026</span><a id="line.26">import org.apache.shiro.session.mgt.ValidatingSession;</a>
<span class="sourceLineNo">027</span><a id="line.27"></a>
<span class="sourceLineNo">028</span><a id="line.28">import java.io.Serializable;</a>
<span class="sourceLineNo">029</span><a id="line.29">import java.util.Collection;</a>
<span class="sourceLineNo">030</span><a id="line.30">import java.util.Collections;</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"> * An CachingSessionDAO is a SessionDAO that provides a transparent caching layer between the components that</a>
<span class="sourceLineNo">034</span><a id="line.34"> * use it and the underlying EIS (Enterprise Information System) session backing store (for example, filesystem,</a>
<span class="sourceLineNo">035</span><a id="line.35"> * database, enterprise grid/cloud, etc).</a>
<span class="sourceLineNo">036</span><a id="line.36"> * &lt;p/&gt;</a>
<span class="sourceLineNo">037</span><a id="line.37"> * This implementation caches all active sessions in a configured</a>
<span class="sourceLineNo">038</span><a id="line.38"> * {@link #getActiveSessionsCache() activeSessionsCache}.  This property is {@code null} by default and if one is</a>
<span class="sourceLineNo">039</span><a id="line.39"> * not explicitly set, a {@link #setCacheManager cacheManager} is expected to be configured which will in turn be used</a>
<span class="sourceLineNo">040</span><a id="line.40"> * to acquire the {@code Cache} instance to use for the {@code activeSessionsCache}.</a>
<span class="sourceLineNo">041</span><a id="line.41"> * &lt;p/&gt;</a>
<span class="sourceLineNo">042</span><a id="line.42"> * All {@code SessionDAO} methods are implemented by this class to employ</a>
<span class="sourceLineNo">043</span><a id="line.43"> * caching behavior and delegates the actual EIS operations to respective do* methods to be implemented by</a>
<span class="sourceLineNo">044</span><a id="line.44"> * subclasses (doCreate, doRead, etc).</a>
<span class="sourceLineNo">045</span><a id="line.45"> *</a>
<span class="sourceLineNo">046</span><a id="line.46"> * @since 0.2</a>
<span class="sourceLineNo">047</span><a id="line.47"> */</a>
<span class="sourceLineNo">048</span><a id="line.48">public abstract class CachingSessionDAO extends AbstractSessionDAO implements CacheManagerAware {</a>
<span class="sourceLineNo">049</span><a id="line.49"></a>
<span class="sourceLineNo">050</span><a id="line.50">    /**</a>
<span class="sourceLineNo">051</span><a id="line.51">     * The default active sessions cache name, equal to {@code shiro-activeSessionCache}.</a>
<span class="sourceLineNo">052</span><a id="line.52">     */</a>
<span class="sourceLineNo">053</span><a id="line.53">    public static final String ACTIVE_SESSION_CACHE_NAME = "shiro-activeSessionCache";</a>
<span class="sourceLineNo">054</span><a id="line.54"></a>
<span class="sourceLineNo">055</span><a id="line.55">    /**</a>
<span class="sourceLineNo">056</span><a id="line.56">     * The CacheManager to use to acquire the Session cache.</a>
<span class="sourceLineNo">057</span><a id="line.57">     */</a>
<span class="sourceLineNo">058</span><a id="line.58">    private CacheManager cacheManager;</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">     * The Cache instance responsible for caching Sessions.</a>
<span class="sourceLineNo">062</span><a id="line.62">     */</a>
<span class="sourceLineNo">063</span><a id="line.63">    private Cache&lt;Serializable, Session&gt; activeSessions;</a>
<span class="sourceLineNo">064</span><a id="line.64"></a>
<span class="sourceLineNo">065</span><a id="line.65">    /**</a>
<span class="sourceLineNo">066</span><a id="line.66">     * The name of the session cache, defaults to {@link #ACTIVE_SESSION_CACHE_NAME}.</a>
<span class="sourceLineNo">067</span><a id="line.67">     */</a>
<span class="sourceLineNo">068</span><a id="line.68">    private String activeSessionsCacheName = ACTIVE_SESSION_CACHE_NAME;</a>
<span class="sourceLineNo">069</span><a id="line.69"></a>
<span class="sourceLineNo">070</span><a id="line.70">    /**</a>
<span class="sourceLineNo">071</span><a id="line.71">     * Default no-arg constructor.</a>
<span class="sourceLineNo">072</span><a id="line.72">     */</a>
<span class="sourceLineNo">073</span><a id="line.73">    public CachingSessionDAO() {</a>
<span class="sourceLineNo">074</span><a id="line.74">    }</a>
<span class="sourceLineNo">075</span><a id="line.75"></a>
<span class="sourceLineNo">076</span><a id="line.76">    /**</a>
<span class="sourceLineNo">077</span><a id="line.77">     * Sets the cacheManager to use for acquiring the {@link #getActiveSessionsCache() activeSessionsCache} if</a>
<span class="sourceLineNo">078</span><a id="line.78">     * one is not configured.</a>
<span class="sourceLineNo">079</span><a id="line.79">     *</a>
<span class="sourceLineNo">080</span><a id="line.80">     * @param cacheManager the manager to use for constructing the session cache.</a>
<span class="sourceLineNo">081</span><a id="line.81">     */</a>
<span class="sourceLineNo">082</span><a id="line.82">    public void setCacheManager(CacheManager cacheManager) {</a>
<span class="sourceLineNo">083</span><a id="line.83">        this.cacheManager = cacheManager;</a>
<span class="sourceLineNo">084</span><a id="line.84">    }</a>
<span class="sourceLineNo">085</span><a id="line.85"></a>
<span class="sourceLineNo">086</span><a id="line.86">    /**</a>
<span class="sourceLineNo">087</span><a id="line.87">     * Returns the CacheManager to use for acquiring the {@link #getActiveSessionsCache() activeSessionsCache} if</a>
<span class="sourceLineNo">088</span><a id="line.88">     * one is not configured.  That is, the {@code CacheManager} will only be used if the</a>
<span class="sourceLineNo">089</span><a id="line.89">     * {@link #getActiveSessionsCache() activeSessionsCache} property is {@code null}.</a>
<span class="sourceLineNo">090</span><a id="line.90">     *</a>
<span class="sourceLineNo">091</span><a id="line.91">     * @return the CacheManager used by the implementation that creates the activeSessions Cache.</a>
<span class="sourceLineNo">092</span><a id="line.92">     */</a>
<span class="sourceLineNo">093</span><a id="line.93">    public CacheManager getCacheManager() {</a>
<span class="sourceLineNo">094</span><a id="line.94">        return cacheManager;</a>
<span class="sourceLineNo">095</span><a id="line.95">    }</a>
<span class="sourceLineNo">096</span><a id="line.96"></a>
<span class="sourceLineNo">097</span><a id="line.97">    /**</a>
<span class="sourceLineNo">098</span><a id="line.98">     * Returns the name of the actives sessions cache to be returned by the {@code CacheManager}.  Unless</a>
<span class="sourceLineNo">099</span><a id="line.99">     * overridden by {@link #setActiveSessionsCacheName(String)}, defaults to {@link #ACTIVE_SESSION_CACHE_NAME}.</a>
<span class="sourceLineNo">100</span><a id="line.100">     *</a>
<span class="sourceLineNo">101</span><a id="line.101">     * @return the name of the active sessions cache.</a>
<span class="sourceLineNo">102</span><a id="line.102">     */</a>
<span class="sourceLineNo">103</span><a id="line.103">    public String getActiveSessionsCacheName() {</a>
<span class="sourceLineNo">104</span><a id="line.104">        return activeSessionsCacheName;</a>
<span class="sourceLineNo">105</span><a id="line.105">    }</a>
<span class="sourceLineNo">106</span><a id="line.106"></a>
<span class="sourceLineNo">107</span><a id="line.107">    /**</a>
<span class="sourceLineNo">108</span><a id="line.108">     * Sets the name of the active sessions cache to be returned by the {@code CacheManager}.  Defaults to</a>
<span class="sourceLineNo">109</span><a id="line.109">     * {@link #ACTIVE_SESSION_CACHE_NAME}.</a>
<span class="sourceLineNo">110</span><a id="line.110">     *</a>
<span class="sourceLineNo">111</span><a id="line.111">     * @param activeSessionsCacheName the name of the active sessions cache to be returned by the {@code CacheManager}.</a>
<span class="sourceLineNo">112</span><a id="line.112">     */</a>
<span class="sourceLineNo">113</span><a id="line.113">    public void setActiveSessionsCacheName(String activeSessionsCacheName) {</a>
<span class="sourceLineNo">114</span><a id="line.114">        this.activeSessionsCacheName = activeSessionsCacheName;</a>
<span class="sourceLineNo">115</span><a id="line.115">    }</a>
<span class="sourceLineNo">116</span><a id="line.116"></a>
<span class="sourceLineNo">117</span><a id="line.117">    /**</a>
<span class="sourceLineNo">118</span><a id="line.118">     * Returns the cache instance to use for storing active sessions.  If one is not available (it is {@code null}),</a>
<span class="sourceLineNo">119</span><a id="line.119">     * it will be {@link CacheManager#getCache(String) acquired} from the {@link #setCacheManager configured}</a>
<span class="sourceLineNo">120</span><a id="line.120">     * {@code CacheManager} using the {@link #getActiveSessionsCacheName() activeSessionsCacheName}.</a>
<span class="sourceLineNo">121</span><a id="line.121">     *</a>
<span class="sourceLineNo">122</span><a id="line.122">     * @return the cache instance to use for storing active sessions or {@code null} if the {@code Cache} instance</a>
<span class="sourceLineNo">123</span><a id="line.123">     *         should be retrieved from the</a>
<span class="sourceLineNo">124</span><a id="line.124">     */</a>
<span class="sourceLineNo">125</span><a id="line.125">    public Cache&lt;Serializable, Session&gt; getActiveSessionsCache() {</a>
<span class="sourceLineNo">126</span><a id="line.126">        return this.activeSessions;</a>
<span class="sourceLineNo">127</span><a id="line.127">    }</a>
<span class="sourceLineNo">128</span><a id="line.128"></a>
<span class="sourceLineNo">129</span><a id="line.129">    /**</a>
<span class="sourceLineNo">130</span><a id="line.130">     * Sets the cache instance to use for storing active sessions.  If one is not set (it remains {@code null}),</a>
<span class="sourceLineNo">131</span><a id="line.131">     * it will be {@link CacheManager#getCache(String) acquired} from the {@link #setCacheManager configured}</a>
<span class="sourceLineNo">132</span><a id="line.132">     * {@code CacheManager} using the {@link #getActiveSessionsCacheName() activeSessionsCacheName}.</a>
<span class="sourceLineNo">133</span><a id="line.133">     *</a>
<span class="sourceLineNo">134</span><a id="line.134">     * @param cache the cache instance to use for storing active sessions or {@code null} if the cache is to be</a>
<span class="sourceLineNo">135</span><a id="line.135">     *              acquired from the {@link #setCacheManager configured} {@code CacheManager}.</a>
<span class="sourceLineNo">136</span><a id="line.136">     */</a>
<span class="sourceLineNo">137</span><a id="line.137">    public void setActiveSessionsCache(Cache&lt;Serializable, Session&gt; cache) {</a>
<span class="sourceLineNo">138</span><a id="line.138">        this.activeSessions = cache;</a>
<span class="sourceLineNo">139</span><a id="line.139">    }</a>
<span class="sourceLineNo">140</span><a id="line.140"></a>
<span class="sourceLineNo">141</span><a id="line.141">    /**</a>
<span class="sourceLineNo">142</span><a id="line.142">     * Returns the active sessions cache, but if that cache instance is null, first lazily creates the cache instance</a>
<span class="sourceLineNo">143</span><a id="line.143">     * via the {@link #createActiveSessionsCache()} method and then returns the instance.</a>
<span class="sourceLineNo">144</span><a id="line.144">     * &lt;p/&gt;</a>
<span class="sourceLineNo">145</span><a id="line.145">     * Note that this method will only return a non-null value code if the {@code CacheManager} has been set.  If</a>
<span class="sourceLineNo">146</span><a id="line.146">     * not set, there will be no cache.</a>
<span class="sourceLineNo">147</span><a id="line.147">     *</a>
<span class="sourceLineNo">148</span><a id="line.148">     * @return the active sessions cache instance.</a>
<span class="sourceLineNo">149</span><a id="line.149">     */</a>
<span class="sourceLineNo">150</span><a id="line.150">    private Cache&lt;Serializable, Session&gt; getActiveSessionsCacheLazy() {</a>
<span class="sourceLineNo">151</span><a id="line.151">        if (this.activeSessions == null) {</a>
<span class="sourceLineNo">152</span><a id="line.152">            this.activeSessions = createActiveSessionsCache();</a>
<span class="sourceLineNo">153</span><a id="line.153">        }</a>
<span class="sourceLineNo">154</span><a id="line.154">        return activeSessions;</a>
<span class="sourceLineNo">155</span><a id="line.155">    }</a>
<span class="sourceLineNo">156</span><a id="line.156"></a>
<span class="sourceLineNo">157</span><a id="line.157">    /**</a>
<span class="sourceLineNo">158</span><a id="line.158">     * Creates a cache instance used to store active sessions.  Creation is done by first</a>
<span class="sourceLineNo">159</span><a id="line.159">     * {@link #getCacheManager() acquiring} the {@code CacheManager}.  If the cache manager is not null, the</a>
<span class="sourceLineNo">160</span><a id="line.160">     * cache returned is that resulting from the following call:</a>
<span class="sourceLineNo">161</span><a id="line.161">     * &lt;pre&gt;       String name = {@link #getActiveSessionsCacheName() getActiveSessionsCacheName()};</a>
<span class="sourceLineNo">162</span><a id="line.162">     * cacheManager.getCache(name);&lt;/pre&gt;</a>
<span class="sourceLineNo">163</span><a id="line.163">     *</a>
<span class="sourceLineNo">164</span><a id="line.164">     * @return a cache instance used to store active sessions, or {@code null} if the {@code CacheManager} has</a>
<span class="sourceLineNo">165</span><a id="line.165">     *         not been set.</a>
<span class="sourceLineNo">166</span><a id="line.166">     */</a>
<span class="sourceLineNo">167</span><a id="line.167">    protected Cache&lt;Serializable, Session&gt; createActiveSessionsCache() {</a>
<span class="sourceLineNo">168</span><a id="line.168">        Cache&lt;Serializable, Session&gt; cache = null;</a>
<span class="sourceLineNo">169</span><a id="line.169">        CacheManager mgr = getCacheManager();</a>
<span class="sourceLineNo">170</span><a id="line.170">        if (mgr != null) {</a>
<span class="sourceLineNo">171</span><a id="line.171">            String name = getActiveSessionsCacheName();</a>
<span class="sourceLineNo">172</span><a id="line.172">            cache = mgr.getCache(name);</a>
<span class="sourceLineNo">173</span><a id="line.173">        }</a>
<span class="sourceLineNo">174</span><a id="line.174">        return cache;</a>
<span class="sourceLineNo">175</span><a id="line.175">    }</a>
<span class="sourceLineNo">176</span><a id="line.176"></a>
<span class="sourceLineNo">177</span><a id="line.177">    /**</a>
<span class="sourceLineNo">178</span><a id="line.178">     * Calls {@code super.create(session)}, then caches the session keyed by the returned {@code sessionId}, and then</a>
<span class="sourceLineNo">179</span><a id="line.179">     * returns this {@code sessionId}.</a>
<span class="sourceLineNo">180</span><a id="line.180">     *</a>
<span class="sourceLineNo">181</span><a id="line.181">     * @param session Session object to create in the EIS and then cache.</a>
<span class="sourceLineNo">182</span><a id="line.182">     */</a>
<span class="sourceLineNo">183</span><a id="line.183">    public Serializable create(Session session) {</a>
<span class="sourceLineNo">184</span><a id="line.184">        Serializable sessionId = super.create(session);</a>
<span class="sourceLineNo">185</span><a id="line.185">        cache(session, sessionId);</a>
<span class="sourceLineNo">186</span><a id="line.186">        return sessionId;</a>
<span class="sourceLineNo">187</span><a id="line.187">    }</a>
<span class="sourceLineNo">188</span><a id="line.188"></a>
<span class="sourceLineNo">189</span><a id="line.189">    /**</a>
<span class="sourceLineNo">190</span><a id="line.190">     * Returns the cached session with the corresponding {@code sessionId} or {@code null} if there is</a>
<span class="sourceLineNo">191</span><a id="line.191">     * no session cached under that id (or if there is no Cache).</a>
<span class="sourceLineNo">192</span><a id="line.192">     *</a>
<span class="sourceLineNo">193</span><a id="line.193">     * @param sessionId the id of the cached session to acquire.</a>
<span class="sourceLineNo">194</span><a id="line.194">     * @return the cached session with the corresponding {@code sessionId}, or {@code null} if the session</a>
<span class="sourceLineNo">195</span><a id="line.195">     *         does not exist or is not cached.</a>
<span class="sourceLineNo">196</span><a id="line.196">     */</a>
<span class="sourceLineNo">197</span><a id="line.197">    protected Session getCachedSession(Serializable sessionId) {</a>
<span class="sourceLineNo">198</span><a id="line.198">        Session cached = null;</a>
<span class="sourceLineNo">199</span><a id="line.199">        if (sessionId != null) {</a>
<span class="sourceLineNo">200</span><a id="line.200">            Cache&lt;Serializable, Session&gt; cache = getActiveSessionsCacheLazy();</a>
<span class="sourceLineNo">201</span><a id="line.201">            if (cache != null) {</a>
<span class="sourceLineNo">202</span><a id="line.202">                cached = getCachedSession(sessionId, cache);</a>
<span class="sourceLineNo">203</span><a id="line.203">            }</a>
<span class="sourceLineNo">204</span><a id="line.204">        }</a>
<span class="sourceLineNo">205</span><a id="line.205">        return cached;</a>
<span class="sourceLineNo">206</span><a id="line.206">    }</a>
<span class="sourceLineNo">207</span><a id="line.207"></a>
<span class="sourceLineNo">208</span><a id="line.208">    /**</a>
<span class="sourceLineNo">209</span><a id="line.209">     * Returns the Session with the specified id from the specified cache.  This method simply calls</a>
<span class="sourceLineNo">210</span><a id="line.210">     * {@code cache.get(sessionId)} and can be overridden by subclasses for custom acquisition behavior.</a>
<span class="sourceLineNo">211</span><a id="line.211">     *</a>
<span class="sourceLineNo">212</span><a id="line.212">     * @param sessionId the id of the session to acquire.</a>
<span class="sourceLineNo">213</span><a id="line.213">     * @param cache     the cache to acquire the session from</a>
<span class="sourceLineNo">214</span><a id="line.214">     * @return the cached session, or {@code null} if the session wasn't in the cache.</a>
<span class="sourceLineNo">215</span><a id="line.215">     */</a>
<span class="sourceLineNo">216</span><a id="line.216">    protected Session getCachedSession(Serializable sessionId, Cache&lt;Serializable, Session&gt; cache) {</a>
<span class="sourceLineNo">217</span><a id="line.217">        return cache.get(sessionId);</a>
<span class="sourceLineNo">218</span><a id="line.218">    }</a>
<span class="sourceLineNo">219</span><a id="line.219"></a>
<span class="sourceLineNo">220</span><a id="line.220">    /**</a>
<span class="sourceLineNo">221</span><a id="line.221">     * Caches the specified session under the cache entry key of {@code sessionId}.</a>
<span class="sourceLineNo">222</span><a id="line.222">     *</a>
<span class="sourceLineNo">223</span><a id="line.223">     * @param session   the session to cache</a>
<span class="sourceLineNo">224</span><a id="line.224">     * @param sessionId the session id, to be used as the cache entry key.</a>
<span class="sourceLineNo">225</span><a id="line.225">     * @since 1.0</a>
<span class="sourceLineNo">226</span><a id="line.226">     */</a>
<span class="sourceLineNo">227</span><a id="line.227">    protected void cache(Session session, Serializable sessionId) {</a>
<span class="sourceLineNo">228</span><a id="line.228">        if (session == null || sessionId == null) {</a>
<span class="sourceLineNo">229</span><a id="line.229">            return;</a>
<span class="sourceLineNo">230</span><a id="line.230">        }</a>
<span class="sourceLineNo">231</span><a id="line.231">        Cache&lt;Serializable, Session&gt; cache = getActiveSessionsCacheLazy();</a>
<span class="sourceLineNo">232</span><a id="line.232">        if (cache == null) {</a>
<span class="sourceLineNo">233</span><a id="line.233">            return;</a>
<span class="sourceLineNo">234</span><a id="line.234">        }</a>
<span class="sourceLineNo">235</span><a id="line.235">        cache(session, sessionId, cache);</a>
<span class="sourceLineNo">236</span><a id="line.236">    }</a>
<span class="sourceLineNo">237</span><a id="line.237"></a>
<span class="sourceLineNo">238</span><a id="line.238">    /**</a>
<span class="sourceLineNo">239</span><a id="line.239">     * Caches the specified session in the given cache under the key of {@code sessionId}.  This implementation</a>
<span class="sourceLineNo">240</span><a id="line.240">     * simply calls {@code cache.put(sessionId,session)} and can be overridden for custom behavior.</a>
<span class="sourceLineNo">241</span><a id="line.241">     *</a>
<span class="sourceLineNo">242</span><a id="line.242">     * @param session   the session to cache</a>
<span class="sourceLineNo">243</span><a id="line.243">     * @param sessionId the id of the session, expected to be the cache key.</a>
<span class="sourceLineNo">244</span><a id="line.244">     * @param cache     the cache to store the session</a>
<span class="sourceLineNo">245</span><a id="line.245">     */</a>
<span class="sourceLineNo">246</span><a id="line.246">    protected void cache(Session session, Serializable sessionId, Cache&lt;Serializable, Session&gt; cache) {</a>
<span class="sourceLineNo">247</span><a id="line.247">        cache.put(sessionId, session);</a>
<span class="sourceLineNo">248</span><a id="line.248">    }</a>
<span class="sourceLineNo">249</span><a id="line.249"></a>
<span class="sourceLineNo">250</span><a id="line.250">    /**</a>
<span class="sourceLineNo">251</span><a id="line.251">     * Attempts to acquire the Session from the cache first using the session ID as the cache key.  If no session</a>
<span class="sourceLineNo">252</span><a id="line.252">     * is found, {@code super.readSession(sessionId)} is called to perform the actual retrieval.</a>
<span class="sourceLineNo">253</span><a id="line.253">     *</a>
<span class="sourceLineNo">254</span><a id="line.254">     * @param sessionId the id of the session to retrieve from the EIS.</a>
<span class="sourceLineNo">255</span><a id="line.255">     * @return the session identified by {@code sessionId} in the EIS.</a>
<span class="sourceLineNo">256</span><a id="line.256">     * @throws UnknownSessionException if the id specified does not correspond to any session in the cache or EIS.</a>
<span class="sourceLineNo">257</span><a id="line.257">     */</a>
<span class="sourceLineNo">258</span><a id="line.258">    public Session readSession(Serializable sessionId) throws UnknownSessionException {</a>
<span class="sourceLineNo">259</span><a id="line.259">        Session s = getCachedSession(sessionId);</a>
<span class="sourceLineNo">260</span><a id="line.260">        if (s == null) {</a>
<span class="sourceLineNo">261</span><a id="line.261">            s = super.readSession(sessionId);</a>
<span class="sourceLineNo">262</span><a id="line.262">        }</a>
<span class="sourceLineNo">263</span><a id="line.263">        return s;</a>
<span class="sourceLineNo">264</span><a id="line.264">    }</a>
<span class="sourceLineNo">265</span><a id="line.265"></a>
<span class="sourceLineNo">266</span><a id="line.266">    /**</a>
<span class="sourceLineNo">267</span><a id="line.267">     * Updates the state of the given session to the EIS by first delegating to</a>
<span class="sourceLineNo">268</span><a id="line.268">     * {@link #doUpdate(org.apache.shiro.session.Session)}.  If the session is a {@link ValidatingSession}, it will</a>
<span class="sourceLineNo">269</span><a id="line.269">     * be added to the cache only if it is {@link ValidatingSession#isValid()} and if invalid, will be removed from the</a>
<span class="sourceLineNo">270</span><a id="line.270">     * cache.  If it is not a {@code ValidatingSession} instance, it will be added to the cache in any event.</a>
<span class="sourceLineNo">271</span><a id="line.271">     *</a>
<span class="sourceLineNo">272</span><a id="line.272">     * @param session the session object to update in the EIS.</a>
<span class="sourceLineNo">273</span><a id="line.273">     * @throws UnknownSessionException if no existing EIS session record exists with the</a>
<span class="sourceLineNo">274</span><a id="line.274">     *                                 identifier of {@link Session#getId() session.getId()}</a>
<span class="sourceLineNo">275</span><a id="line.275">     */</a>
<span class="sourceLineNo">276</span><a id="line.276">    public void update(Session session) throws UnknownSessionException {</a>
<span class="sourceLineNo">277</span><a id="line.277">        doUpdate(session);</a>
<span class="sourceLineNo">278</span><a id="line.278">        if (session instanceof ValidatingSession) {</a>
<span class="sourceLineNo">279</span><a id="line.279">            if (((ValidatingSession) session).isValid()) {</a>
<span class="sourceLineNo">280</span><a id="line.280">                cache(session, session.getId());</a>
<span class="sourceLineNo">281</span><a id="line.281">            } else {</a>
<span class="sourceLineNo">282</span><a id="line.282">                uncache(session);</a>
<span class="sourceLineNo">283</span><a id="line.283">            }</a>
<span class="sourceLineNo">284</span><a id="line.284">        } else {</a>
<span class="sourceLineNo">285</span><a id="line.285">            cache(session, session.getId());</a>
<span class="sourceLineNo">286</span><a id="line.286">        }</a>
<span class="sourceLineNo">287</span><a id="line.287">    }</a>
<span class="sourceLineNo">288</span><a id="line.288"></a>
<span class="sourceLineNo">289</span><a id="line.289">    /**</a>
<span class="sourceLineNo">290</span><a id="line.290">     * Subclass implementation hook to actually persist the {@code Session}'s state to the underlying EIS.</a>
<span class="sourceLineNo">291</span><a id="line.291">     *</a>
<span class="sourceLineNo">292</span><a id="line.292">     * @param session the session object whose state will be propagated to the EIS.</a>
<span class="sourceLineNo">293</span><a id="line.293">     */</a>
<span class="sourceLineNo">294</span><a id="line.294">    protected abstract void doUpdate(Session session);</a>
<span class="sourceLineNo">295</span><a id="line.295"></a>
<span class="sourceLineNo">296</span><a id="line.296">    /**</a>
<span class="sourceLineNo">297</span><a id="line.297">     * Removes the specified session from any cache and then permanently deletes the session from the EIS by</a>
<span class="sourceLineNo">298</span><a id="line.298">     * delegating to {@link #doDelete}.</a>
<span class="sourceLineNo">299</span><a id="line.299">     *</a>
<span class="sourceLineNo">300</span><a id="line.300">     * @param session the session to remove from caches and permanently delete from the EIS.</a>
<span class="sourceLineNo">301</span><a id="line.301">     */</a>
<span class="sourceLineNo">302</span><a id="line.302">    public void delete(Session session) {</a>
<span class="sourceLineNo">303</span><a id="line.303">        uncache(session);</a>
<span class="sourceLineNo">304</span><a id="line.304">        doDelete(session);</a>
<span class="sourceLineNo">305</span><a id="line.305">    }</a>
<span class="sourceLineNo">306</span><a id="line.306"></a>
<span class="sourceLineNo">307</span><a id="line.307">    /**</a>
<span class="sourceLineNo">308</span><a id="line.308">     * Subclass implementation hook to permanently delete the given Session from the underlying EIS.</a>
<span class="sourceLineNo">309</span><a id="line.309">     *</a>
<span class="sourceLineNo">310</span><a id="line.310">     * @param session the session instance to permanently delete from the EIS.</a>
<span class="sourceLineNo">311</span><a id="line.311">     */</a>
<span class="sourceLineNo">312</span><a id="line.312">    protected abstract void doDelete(Session session);</a>
<span class="sourceLineNo">313</span><a id="line.313"></a>
<span class="sourceLineNo">314</span><a id="line.314">    /**</a>
<span class="sourceLineNo">315</span><a id="line.315">     * Removes the specified Session from the cache.</a>
<span class="sourceLineNo">316</span><a id="line.316">     *</a>
<span class="sourceLineNo">317</span><a id="line.317">     * @param session the session to remove from the cache.</a>
<span class="sourceLineNo">318</span><a id="line.318">     */</a>
<span class="sourceLineNo">319</span><a id="line.319">    protected void uncache(Session session) {</a>
<span class="sourceLineNo">320</span><a id="line.320">        if (session == null) {</a>
<span class="sourceLineNo">321</span><a id="line.321">            return;</a>
<span class="sourceLineNo">322</span><a id="line.322">        }</a>
<span class="sourceLineNo">323</span><a id="line.323">        Serializable id = session.getId();</a>
<span class="sourceLineNo">324</span><a id="line.324">        if (id == null) {</a>
<span class="sourceLineNo">325</span><a id="line.325">            return;</a>
<span class="sourceLineNo">326</span><a id="line.326">        }</a>
<span class="sourceLineNo">327</span><a id="line.327">        Cache&lt;Serializable, Session&gt; cache = getActiveSessionsCacheLazy();</a>
<span class="sourceLineNo">328</span><a id="line.328">        if (cache != null) {</a>
<span class="sourceLineNo">329</span><a id="line.329">            cache.remove(id);</a>
<span class="sourceLineNo">330</span><a id="line.330">        }</a>
<span class="sourceLineNo">331</span><a id="line.331">    }</a>
<span class="sourceLineNo">332</span><a id="line.332"></a>
<span class="sourceLineNo">333</span><a id="line.333">    /**</a>
<span class="sourceLineNo">334</span><a id="line.334">     * Returns all active sessions in the system.</a>
<span class="sourceLineNo">335</span><a id="line.335">     * &lt;p/&gt;</a>
<span class="sourceLineNo">336</span><a id="line.336">     * &lt;p&gt;This implementation merely returns the sessions found in the activeSessions cache.  Subclass implementations</a>
<span class="sourceLineNo">337</span><a id="line.337">     * may wish to override this method to retrieve them in a different way, perhaps by an RDBMS query or by other</a>
<span class="sourceLineNo">338</span><a id="line.338">     * means.</a>
<span class="sourceLineNo">339</span><a id="line.339">     *</a>
<span class="sourceLineNo">340</span><a id="line.340">     * @return the sessions found in the activeSessions cache.</a>
<span class="sourceLineNo">341</span><a id="line.341">     */</a>
<span class="sourceLineNo">342</span><a id="line.342">    public Collection&lt;Session&gt; getActiveSessions() {</a>
<span class="sourceLineNo">343</span><a id="line.343">        Cache&lt;Serializable, Session&gt; cache = getActiveSessionsCacheLazy();</a>
<span class="sourceLineNo">344</span><a id="line.344">        if (cache != null) {</a>
<span class="sourceLineNo">345</span><a id="line.345">            return cache.values();</a>
<span class="sourceLineNo">346</span><a id="line.346">        } else {</a>
<span class="sourceLineNo">347</span><a id="line.347">            return Collections.emptySet();</a>
<span class="sourceLineNo">348</span><a id="line.348">        }</a>
<span class="sourceLineNo">349</span><a id="line.349">    }</a>
<span class="sourceLineNo">350</span><a id="line.350">}</a>




























































</pre>
</div>
</main>
</body>
</html>
