<!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.mgt;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.authz.AuthorizationException;</a>
<span class="sourceLineNo">022</span><a id="line.22">import org.apache.shiro.cache.CacheManagerAware;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.apache.shiro.event.EventBus;</a>
<span class="sourceLineNo">024</span><a id="line.24">import org.apache.shiro.event.EventBusAware;</a>
<span class="sourceLineNo">025</span><a id="line.25">import org.apache.shiro.session.Session;</a>
<span class="sourceLineNo">026</span><a id="line.26">import org.apache.shiro.session.SessionException;</a>
<span class="sourceLineNo">027</span><a id="line.27">import org.apache.shiro.session.mgt.DefaultSessionManager;</a>
<span class="sourceLineNo">028</span><a id="line.28">import org.apache.shiro.session.mgt.SessionContext;</a>
<span class="sourceLineNo">029</span><a id="line.29">import org.apache.shiro.session.mgt.SessionKey;</a>
<span class="sourceLineNo">030</span><a id="line.30">import org.apache.shiro.session.mgt.SessionManager;</a>
<span class="sourceLineNo">031</span><a id="line.31">import org.apache.shiro.util.LifecycleUtils;</a>
<span class="sourceLineNo">032</span><a id="line.32"></a>
<span class="sourceLineNo">033</span><a id="line.33"></a>
<span class="sourceLineNo">034</span><a id="line.34">/**</a>
<span class="sourceLineNo">035</span><a id="line.35"> * Shiro support of a {@link SecurityManager} class hierarchy that delegates all</a>
<span class="sourceLineNo">036</span><a id="line.36"> * {@link org.apache.shiro.session.Session session} operations to a wrapped</a>
<span class="sourceLineNo">037</span><a id="line.37"> * {@link org.apache.shiro.session.mgt.SessionManager SessionManager} instance.  That is, this class implements the</a>
<span class="sourceLineNo">038</span><a id="line.38"> * methods in the {@link SessionManager SessionManager} interface, but in reality, those methods are merely</a>
<span class="sourceLineNo">039</span><a id="line.39"> * passthrough calls to the underlying 'real' {@code SessionManager} instance.</a>
<span class="sourceLineNo">040</span><a id="line.40"> * &lt;p/&gt;</a>
<span class="sourceLineNo">041</span><a id="line.41"> * The remaining {@code SecurityManager} methods not implemented by this class or its parents are left to be</a>
<span class="sourceLineNo">042</span><a id="line.42"> * implemented by subclasses.</a>
<span class="sourceLineNo">043</span><a id="line.43"> * &lt;p/&gt;</a>
<span class="sourceLineNo">044</span><a id="line.44"> * In keeping with the other classes in this hierarchy and Shiro's desire to minimize configuration whenever</a>
<span class="sourceLineNo">045</span><a id="line.45"> * possible, suitable default instances for all dependencies will be created upon instantiation.</a>
<span class="sourceLineNo">046</span><a id="line.46"> *</a>
<span class="sourceLineNo">047</span><a id="line.47"> * @since 0.9</a>
<span class="sourceLineNo">048</span><a id="line.48"> */</a>
<span class="sourceLineNo">049</span><a id="line.49">public abstract class SessionsSecurityManager extends AuthorizingSecurityManager {</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">     * The internal delegate &lt;code&gt;SessionManager&lt;/code&gt; used by this security manager that manages all the</a>
<span class="sourceLineNo">053</span><a id="line.53">     * application's {@link Session Session}s.</a>
<span class="sourceLineNo">054</span><a id="line.54">     */</a>
<span class="sourceLineNo">055</span><a id="line.55">    private SessionManager sessionManager;</a>
<span class="sourceLineNo">056</span><a id="line.56"></a>
<span class="sourceLineNo">057</span><a id="line.57">    /**</a>
<span class="sourceLineNo">058</span><a id="line.58">     * Default no-arg constructor, internally creates a suitable default {@link SessionManager SessionManager} delegate</a>
<span class="sourceLineNo">059</span><a id="line.59">     * instance.</a>
<span class="sourceLineNo">060</span><a id="line.60">     */</a>
<span class="sourceLineNo">061</span><a id="line.61">    public SessionsSecurityManager() {</a>
<span class="sourceLineNo">062</span><a id="line.62">        super();</a>
<span class="sourceLineNo">063</span><a id="line.63">        this.sessionManager = new DefaultSessionManager();</a>
<span class="sourceLineNo">064</span><a id="line.64">        applyCacheManagerToSessionManager();</a>
<span class="sourceLineNo">065</span><a id="line.65">    }</a>
<span class="sourceLineNo">066</span><a id="line.66"></a>
<span class="sourceLineNo">067</span><a id="line.67">    /**</a>
<span class="sourceLineNo">068</span><a id="line.68">     * Sets the underlying delegate {@link SessionManager} instance that will be used to support this implementation's</a>
<span class="sourceLineNo">069</span><a id="line.69">     * &lt;tt&gt;SessionManager&lt;/tt&gt; method calls.</a>
<span class="sourceLineNo">070</span><a id="line.70">     * &lt;p/&gt;</a>
<span class="sourceLineNo">071</span><a id="line.71">     * This &lt;tt&gt;SecurityManager&lt;/tt&gt; implementation does not provide logic to support the inherited</a>
<span class="sourceLineNo">072</span><a id="line.72">     * &lt;tt&gt;SessionManager&lt;/tt&gt; interface, but instead delegates these calls to an internal</a>
<span class="sourceLineNo">073</span><a id="line.73">     * &lt;tt&gt;SessionManager&lt;/tt&gt; instance.</a>
<span class="sourceLineNo">074</span><a id="line.74">     * &lt;p/&gt;</a>
<span class="sourceLineNo">075</span><a id="line.75">     * If a &lt;tt&gt;SessionManager&lt;/tt&gt; instance is not set, a default one will be automatically created and</a>
<span class="sourceLineNo">076</span><a id="line.76">     * initialized appropriately for the the existing runtime environment.</a>
<span class="sourceLineNo">077</span><a id="line.77">     *</a>
<span class="sourceLineNo">078</span><a id="line.78">     * @param sessionManager delegate instance to use to support this manager's &lt;tt&gt;SessionManager&lt;/tt&gt; method calls.</a>
<span class="sourceLineNo">079</span><a id="line.79">     */</a>
<span class="sourceLineNo">080</span><a id="line.80">    public void setSessionManager(SessionManager sessionManager) {</a>
<span class="sourceLineNo">081</span><a id="line.81">        this.sessionManager = sessionManager;</a>
<span class="sourceLineNo">082</span><a id="line.82">        afterSessionManagerSet();</a>
<span class="sourceLineNo">083</span><a id="line.83">    }</a>
<span class="sourceLineNo">084</span><a id="line.84"></a>
<span class="sourceLineNo">085</span><a id="line.85">    protected void afterSessionManagerSet() {</a>
<span class="sourceLineNo">086</span><a id="line.86">        applyCacheManagerToSessionManager();</a>
<span class="sourceLineNo">087</span><a id="line.87">        applyEventBusToSessionManager();</a>
<span class="sourceLineNo">088</span><a id="line.88">    }</a>
<span class="sourceLineNo">089</span><a id="line.89"></a>
<span class="sourceLineNo">090</span><a id="line.90">    /**</a>
<span class="sourceLineNo">091</span><a id="line.91">     * Returns this security manager's internal delegate {@link SessionManager SessionManager}.</a>
<span class="sourceLineNo">092</span><a id="line.92">     *</a>
<span class="sourceLineNo">093</span><a id="line.93">     * @return this security manager's internal delegate {@link SessionManager SessionManager}.</a>
<span class="sourceLineNo">094</span><a id="line.94">     * @see #setSessionManager(org.apache.shiro.session.mgt.SessionManager) setSessionManager</a>
<span class="sourceLineNo">095</span><a id="line.95">     */</a>
<span class="sourceLineNo">096</span><a id="line.96">    public SessionManager getSessionManager() {</a>
<span class="sourceLineNo">097</span><a id="line.97">        return this.sessionManager;</a>
<span class="sourceLineNo">098</span><a id="line.98">    }</a>
<span class="sourceLineNo">099</span><a id="line.99"></a>
<span class="sourceLineNo">100</span><a id="line.100">    /**</a>
<span class="sourceLineNo">101</span><a id="line.101">     * Calls {@link org.apache.shiro.mgt.AuthorizingSecurityManager#afterCacheManagerSet() super.afterCacheManagerSet()} and then immediately calls</a>
<span class="sourceLineNo">102</span><a id="line.102">     * {@link #applyCacheManagerToSessionManager() applyCacheManagerToSessionManager()} to ensure the</a>
<span class="sourceLineNo">103</span><a id="line.103">     * &lt;code&gt;CacheManager&lt;/code&gt; is applied to the SessionManager as necessary.</a>
<span class="sourceLineNo">104</span><a id="line.104">     */</a>
<span class="sourceLineNo">105</span><a id="line.105">    @Override</a>
<span class="sourceLineNo">106</span><a id="line.106">    protected void afterCacheManagerSet() {</a>
<span class="sourceLineNo">107</span><a id="line.107">        super.afterCacheManagerSet();</a>
<span class="sourceLineNo">108</span><a id="line.108">        applyCacheManagerToSessionManager();</a>
<span class="sourceLineNo">109</span><a id="line.109">    }</a>
<span class="sourceLineNo">110</span><a id="line.110"></a>
<span class="sourceLineNo">111</span><a id="line.111">    /**</a>
<span class="sourceLineNo">112</span><a id="line.112">     * Sets any configured EventBus on the SessionManager if necessary.</a>
<span class="sourceLineNo">113</span><a id="line.113">     *</a>
<span class="sourceLineNo">114</span><a id="line.114">     * @since 1.3</a>
<span class="sourceLineNo">115</span><a id="line.115">     */</a>
<span class="sourceLineNo">116</span><a id="line.116">    @Override</a>
<span class="sourceLineNo">117</span><a id="line.117">    protected void afterEventBusSet() {</a>
<span class="sourceLineNo">118</span><a id="line.118">        super.afterEventBusSet();</a>
<span class="sourceLineNo">119</span><a id="line.119">        applyEventBusToSessionManager();</a>
<span class="sourceLineNo">120</span><a id="line.120">    }</a>
<span class="sourceLineNo">121</span><a id="line.121"></a>
<span class="sourceLineNo">122</span><a id="line.122">    /**</a>
<span class="sourceLineNo">123</span><a id="line.123">     * Ensures the internal delegate &lt;code&gt;SessionManager&lt;/code&gt; is injected with the newly set</a>
<span class="sourceLineNo">124</span><a id="line.124">     * {@link #setCacheManager CacheManager} so it may use it for its internal caching needs.</a>
<span class="sourceLineNo">125</span><a id="line.125">     * &lt;p/&gt;</a>
<span class="sourceLineNo">126</span><a id="line.126">     * Note:  This implementation only injects the CacheManager into the SessionManager if the SessionManager</a>
<span class="sourceLineNo">127</span><a id="line.127">     * instance implements the {@link CacheManagerAware CacheManagerAware} interface.</a>
<span class="sourceLineNo">128</span><a id="line.128">     */</a>
<span class="sourceLineNo">129</span><a id="line.129">    protected void applyCacheManagerToSessionManager() {</a>
<span class="sourceLineNo">130</span><a id="line.130">        if (this.sessionManager instanceof CacheManagerAware) {</a>
<span class="sourceLineNo">131</span><a id="line.131">            ((CacheManagerAware) this.sessionManager).setCacheManager(getCacheManager());</a>
<span class="sourceLineNo">132</span><a id="line.132">        }</a>
<span class="sourceLineNo">133</span><a id="line.133">    }</a>
<span class="sourceLineNo">134</span><a id="line.134"></a>
<span class="sourceLineNo">135</span><a id="line.135">    /**</a>
<span class="sourceLineNo">136</span><a id="line.136">     * Ensures the internal delegate &lt;code&gt;SessionManager&lt;/code&gt; is injected with the newly set</a>
<span class="sourceLineNo">137</span><a id="line.137">     * {@link #setEventBus EventBus} so it may use it for its internal event needs.</a>
<span class="sourceLineNo">138</span><a id="line.138">     * &lt;p/&gt;</a>
<span class="sourceLineNo">139</span><a id="line.139">     * Note: This implementation only injects the EventBus into the SessionManager if the SessionManager</a>
<span class="sourceLineNo">140</span><a id="line.140">     * instance implements the {@link EventBusAware EventBusAware} interface.</a>
<span class="sourceLineNo">141</span><a id="line.141">     *</a>
<span class="sourceLineNo">142</span><a id="line.142">     * @since 1.3</a>
<span class="sourceLineNo">143</span><a id="line.143">     */</a>
<span class="sourceLineNo">144</span><a id="line.144">    protected void applyEventBusToSessionManager() {</a>
<span class="sourceLineNo">145</span><a id="line.145">        EventBus eventBus = getEventBus();</a>
<span class="sourceLineNo">146</span><a id="line.146">        if (eventBus != null &amp;&amp; this.sessionManager instanceof EventBusAware) {</a>
<span class="sourceLineNo">147</span><a id="line.147">            ((EventBusAware)this.sessionManager).setEventBus(eventBus);</a>
<span class="sourceLineNo">148</span><a id="line.148">        }</a>
<span class="sourceLineNo">149</span><a id="line.149">    }</a>
<span class="sourceLineNo">150</span><a id="line.150"></a>
<span class="sourceLineNo">151</span><a id="line.151">    public Session start(SessionContext context) throws AuthorizationException {</a>
<span class="sourceLineNo">152</span><a id="line.152">        if (sessionManager == null) {</a>
<span class="sourceLineNo">153</span><a id="line.153">            throw new IllegalStateException("Session manager is not available or has been destroyed");</a>
<span class="sourceLineNo">154</span><a id="line.154">        }</a>
<span class="sourceLineNo">155</span><a id="line.155">        return this.sessionManager.start(context);</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">    public Session getSession(SessionKey key) throws SessionException {</a>
<span class="sourceLineNo">159</span><a id="line.159">        return this.sessionManager.getSession(key);</a>
<span class="sourceLineNo">160</span><a id="line.160">    }</a>
<span class="sourceLineNo">161</span><a id="line.161"></a>
<span class="sourceLineNo">162</span><a id="line.162">    public void destroy() {</a>
<span class="sourceLineNo">163</span><a id="line.163">        LifecycleUtils.destroy(getSessionManager());</a>
<span class="sourceLineNo">164</span><a id="line.164">        this.sessionManager = null;</a>
<span class="sourceLineNo">165</span><a id="line.165">        super.destroy();</a>
<span class="sourceLineNo">166</span><a id="line.166">    }</a>
<span class="sourceLineNo">167</span><a id="line.167">}</a>




























































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