<!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.realm.text;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.ShiroException;</a>
<span class="sourceLineNo">022</span><a id="line.22">import org.apache.shiro.io.ResourceUtils;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.apache.shiro.util.Destroyable;</a>
<span class="sourceLineNo">024</span><a id="line.24">import org.slf4j.Logger;</a>
<span class="sourceLineNo">025</span><a id="line.25">import org.slf4j.LoggerFactory;</a>
<span class="sourceLineNo">026</span><a id="line.26"></a>
<span class="sourceLineNo">027</span><a id="line.27">import java.io.File;</a>
<span class="sourceLineNo">028</span><a id="line.28">import java.io.IOException;</a>
<span class="sourceLineNo">029</span><a id="line.29">import java.io.InputStream;</a>
<span class="sourceLineNo">030</span><a id="line.30">import java.util.Enumeration;</a>
<span class="sourceLineNo">031</span><a id="line.31">import java.util.Properties;</a>
<span class="sourceLineNo">032</span><a id="line.32">import java.util.concurrent.ExecutorService;</a>
<span class="sourceLineNo">033</span><a id="line.33">import java.util.concurrent.Executors;</a>
<span class="sourceLineNo">034</span><a id="line.34">import java.util.concurrent.ScheduledExecutorService;</a>
<span class="sourceLineNo">035</span><a id="line.35">import java.util.concurrent.TimeUnit;</a>
<span class="sourceLineNo">036</span><a id="line.36"></a>
<span class="sourceLineNo">037</span><a id="line.37">/**</a>
<span class="sourceLineNo">038</span><a id="line.38"> * A {@link TextConfigurationRealm} that defers all logic to the parent class, but just enables</a>
<span class="sourceLineNo">039</span><a id="line.39"> * {@link java.util.Properties Properties} based configuration in addition to the parent class's String configuration.</a>
<span class="sourceLineNo">040</span><a id="line.40"> * &lt;p/&gt;</a>
<span class="sourceLineNo">041</span><a id="line.41"> * This class allows processing of a single .properties file for user, role, and</a>
<span class="sourceLineNo">042</span><a id="line.42"> * permission configuration.</a>
<span class="sourceLineNo">043</span><a id="line.43"> * &lt;p/&gt;</a>
<span class="sourceLineNo">044</span><a id="line.44"> * The {@link #setResourcePath resourcePath} &lt;em&gt;MUST&lt;/em&gt; be set before this realm can be initialized.  You</a>
<span class="sourceLineNo">045</span><a id="line.45"> * can specify any resource path supported by</a>
<span class="sourceLineNo">046</span><a id="line.46"> * {@link ResourceUtils#getInputStreamForPath(String) ResourceUtils.getInputStreamForPath} method.</a>
<span class="sourceLineNo">047</span><a id="line.47"> * &lt;p/&gt;</a>
<span class="sourceLineNo">048</span><a id="line.48"> * The Properties format understood by this implementation must be written as follows:</a>
<span class="sourceLineNo">049</span><a id="line.49"> * &lt;p/&gt;</a>
<span class="sourceLineNo">050</span><a id="line.50"> * Each line's key/value pair represents either a user-to-role(s) mapping &lt;em&gt;or&lt;/em&gt; a role-to-permission(s)</a>
<span class="sourceLineNo">051</span><a id="line.51"> * mapping.</a>
<span class="sourceLineNo">052</span><a id="line.52"> * &lt;p/&gt;</a>
<span class="sourceLineNo">053</span><a id="line.53"> * The user-to-role(s) lines have this format:&lt;/p&gt;</a>
<span class="sourceLineNo">054</span><a id="line.54"> * &lt;p/&gt;</a>
<span class="sourceLineNo">055</span><a id="line.55"> * &lt;code&gt;&lt;b&gt;user.&lt;/b&gt;&lt;em&gt;username&lt;/em&gt; = &lt;em&gt;password&lt;/em&gt;,role1,role2,...&lt;/code&gt;&lt;/p&gt;</a>
<span class="sourceLineNo">056</span><a id="line.56"> * &lt;p/&gt;</a>
<span class="sourceLineNo">057</span><a id="line.57"> * Note that each key is prefixed with the token &lt;b&gt;{@code user.}&lt;/b&gt;  Each value must adhere to the</a>
<span class="sourceLineNo">058</span><a id="line.58"> * the {@link #setUserDefinitions(String) setUserDefinitions(String)} JavaDoc.</a>
<span class="sourceLineNo">059</span><a id="line.59"> * &lt;p/&gt;</a>
<span class="sourceLineNo">060</span><a id="line.60"> * The role-to-permission(s) lines have this format:&lt;/p&gt;</a>
<span class="sourceLineNo">061</span><a id="line.61"> * &lt;p/&gt;</a>
<span class="sourceLineNo">062</span><a id="line.62"> * &lt;code&gt;&lt;b&gt;role.&lt;/b&gt;&lt;em&gt;rolename&lt;/em&gt; = &lt;em&gt;permissionDefinition1&lt;/em&gt;, &lt;em&gt;permissionDefinition2&lt;/em&gt;, ...&lt;/code&gt;</a>
<span class="sourceLineNo">063</span><a id="line.63"> * &lt;p/&gt;</a>
<span class="sourceLineNo">064</span><a id="line.64"> * where each key is prefixed with the token &lt;b&gt;{@code role.}&lt;/b&gt; and the value adheres to the format specified in</a>
<span class="sourceLineNo">065</span><a id="line.65"> * the {@link #setRoleDefinitions(String) setRoleDefinitions(String)} JavaDoc.</a>
<span class="sourceLineNo">066</span><a id="line.66"> * &lt;p/&gt;</a>
<span class="sourceLineNo">067</span><a id="line.67"> * Here is an example of a very simple properties definition that conforms to the above format rules and corresponding</a>
<span class="sourceLineNo">068</span><a id="line.68"> * method JavaDocs:</a>
<span class="sourceLineNo">069</span><a id="line.69"> * &lt;p/&gt;</a>
<span class="sourceLineNo">070</span><a id="line.70"> * &lt;code&gt;user.root = &lt;em&gt;rootPassword&lt;/em&gt;,administrator&lt;br/&gt;</a>
<span class="sourceLineNo">071</span><a id="line.71"> * user.jsmith = &lt;em&gt;jsmithPassword&lt;/em&gt;,manager,engineer,employee&lt;br/&gt;</a>
<span class="sourceLineNo">072</span><a id="line.72"> * user.abrown = &lt;em&gt;abrownPassword&lt;/em&gt;,qa,employee&lt;br/&gt;</a>
<span class="sourceLineNo">073</span><a id="line.73"> * user.djones = &lt;em&gt;djonesPassword&lt;/em&gt;,qa,contractor&lt;br/&gt;</a>
<span class="sourceLineNo">074</span><a id="line.74"> * &lt;br/&gt;</a>
<span class="sourceLineNo">075</span><a id="line.75"> * role.administrator = *&lt;br/&gt;</a>
<span class="sourceLineNo">076</span><a id="line.76"> * role.manager = &amp;quot;user:read,write&amp;quot;, file:execute:/usr/local/emailManagers.sh&lt;br/&gt;</a>
<span class="sourceLineNo">077</span><a id="line.77"> * role.engineer = &amp;quot;file:read,execute:/usr/local/tomcat/bin/startup.sh&amp;quot;&lt;br/&gt;</a>
<span class="sourceLineNo">078</span><a id="line.78"> * role.employee = application:use:wiki&lt;br/&gt;</a>
<span class="sourceLineNo">079</span><a id="line.79"> * role.qa = &amp;quot;server:view,start,shutdown,restart:someQaServer&amp;quot;, server:view:someProductionServer&lt;br/&gt;</a>
<span class="sourceLineNo">080</span><a id="line.80"> * role.contractor = application:use:timesheet&lt;/code&gt;</a>
<span class="sourceLineNo">081</span><a id="line.81"> *</a>
<span class="sourceLineNo">082</span><a id="line.82"> * @since 0.2</a>
<span class="sourceLineNo">083</span><a id="line.83"> */</a>
<span class="sourceLineNo">084</span><a id="line.84">public class PropertiesRealm extends TextConfigurationRealm implements Destroyable, Runnable {</a>
<span class="sourceLineNo">085</span><a id="line.85"></a>
<span class="sourceLineNo">086</span><a id="line.86">    //TODO - complete JavaDoc</a>
<span class="sourceLineNo">087</span><a id="line.87"></a>
<span class="sourceLineNo">088</span><a id="line.88">    /*-------------------------------------------</a>
<span class="sourceLineNo">089</span><a id="line.89">    |             C O N S T A N T S             |</a>
<span class="sourceLineNo">090</span><a id="line.90">    ============================================*/</a>
<span class="sourceLineNo">091</span><a id="line.91">    private static final int DEFAULT_RELOAD_INTERVAL_SECONDS = 10;</a>
<span class="sourceLineNo">092</span><a id="line.92">    private static final String USERNAME_PREFIX = "user.";</a>
<span class="sourceLineNo">093</span><a id="line.93">    private static final String ROLENAME_PREFIX = "role.";</a>
<span class="sourceLineNo">094</span><a id="line.94">    private static final String DEFAULT_RESOURCE_PATH = "classpath:shiro-users.properties";</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">    |    I N S T A N C E   V A R I A B L E S    |</a>
<span class="sourceLineNo">098</span><a id="line.98">    ============================================*/</a>
<span class="sourceLineNo">099</span><a id="line.99">    private static final Logger log = LoggerFactory.getLogger(PropertiesRealm.class);</a>
<span class="sourceLineNo">100</span><a id="line.100"></a>
<span class="sourceLineNo">101</span><a id="line.101">    protected ExecutorService scheduler = null;</a>
<span class="sourceLineNo">102</span><a id="line.102">    protected boolean useXmlFormat = false;</a>
<span class="sourceLineNo">103</span><a id="line.103">    protected String resourcePath = DEFAULT_RESOURCE_PATH;</a>
<span class="sourceLineNo">104</span><a id="line.104">    protected long fileLastModified;</a>
<span class="sourceLineNo">105</span><a id="line.105">    protected int reloadIntervalSeconds = DEFAULT_RELOAD_INTERVAL_SECONDS;</a>
<span class="sourceLineNo">106</span><a id="line.106"></a>
<span class="sourceLineNo">107</span><a id="line.107">    public PropertiesRealm() {</a>
<span class="sourceLineNo">108</span><a id="line.108">        super();</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">    |  A C C E S S O R S / M O D I F I E R S    |</a>
<span class="sourceLineNo">113</span><a id="line.113">    ============================================*/</a>
<span class="sourceLineNo">114</span><a id="line.114"></a>
<span class="sourceLineNo">115</span><a id="line.115">    /**</a>
<span class="sourceLineNo">116</span><a id="line.116">     * Determines whether or not the properties XML format should be used.  For more information, see</a>
<span class="sourceLineNo">117</span><a id="line.117">     * {@link Properties#loadFromXML(java.io.InputStream)}</a>
<span class="sourceLineNo">118</span><a id="line.118">     *</a>
<span class="sourceLineNo">119</span><a id="line.119">     * @param useXmlFormat true to use XML or false to use the normal format.  Defaults to false.</a>
<span class="sourceLineNo">120</span><a id="line.120">     */</a>
<span class="sourceLineNo">121</span><a id="line.121">    public void setUseXmlFormat(boolean useXmlFormat) {</a>
<span class="sourceLineNo">122</span><a id="line.122">        this.useXmlFormat = useXmlFormat;</a>
<span class="sourceLineNo">123</span><a id="line.123">    }</a>
<span class="sourceLineNo">124</span><a id="line.124"></a>
<span class="sourceLineNo">125</span><a id="line.125">    /**</a>
<span class="sourceLineNo">126</span><a id="line.126">     * Sets the path of the properties file to load user, role, and permission information from.  The properties</a>
<span class="sourceLineNo">127</span><a id="line.127">     * file will be loaded using {@link ResourceUtils#getInputStreamForPath(String)} so any convention recognized</a>
<span class="sourceLineNo">128</span><a id="line.128">     * by that method is accepted here.  For example, to load a file from the classpath use</a>
<span class="sourceLineNo">129</span><a id="line.129">     * {@code classpath:myfile.properties}; to load a file from disk simply specify the full path; to load</a>
<span class="sourceLineNo">130</span><a id="line.130">     * a file from a URL use {@code url:www.mysite.com/myfile.properties}.</a>
<span class="sourceLineNo">131</span><a id="line.131">     *</a>
<span class="sourceLineNo">132</span><a id="line.132">     * @param resourcePath the path to load the properties file from.  This is a required property.</a>
<span class="sourceLineNo">133</span><a id="line.133">     */</a>
<span class="sourceLineNo">134</span><a id="line.134">    public void setResourcePath(String resourcePath) {</a>
<span class="sourceLineNo">135</span><a id="line.135">        this.resourcePath = resourcePath;</a>
<span class="sourceLineNo">136</span><a id="line.136">    }</a>
<span class="sourceLineNo">137</span><a id="line.137"></a>
<span class="sourceLineNo">138</span><a id="line.138">    /**</a>
<span class="sourceLineNo">139</span><a id="line.139">     * Sets the interval in seconds at which the property file will be checked for changes and reloaded.  If this is</a>
<span class="sourceLineNo">140</span><a id="line.140">     * set to zero or less, property file reloading will be disabled.  If it is set to 1 or greater, then a</a>
<span class="sourceLineNo">141</span><a id="line.141">     * separate thread will be created to monitor the property file for changes and reload the file if it is updated.</a>
<span class="sourceLineNo">142</span><a id="line.142">     *</a>
<span class="sourceLineNo">143</span><a id="line.143">     * @param reloadIntervalSeconds the interval in seconds at which the property file should be examined for changes.</a>
<span class="sourceLineNo">144</span><a id="line.144">     *                              If set to zero or less, reloading is disabled.</a>
<span class="sourceLineNo">145</span><a id="line.145">     */</a>
<span class="sourceLineNo">146</span><a id="line.146">    public void setReloadIntervalSeconds(int reloadIntervalSeconds) {</a>
<span class="sourceLineNo">147</span><a id="line.147">        this.reloadIntervalSeconds = reloadIntervalSeconds;</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">    |               M E T H O D S               |</a>
<span class="sourceLineNo">152</span><a id="line.152">    ============================================*/</a>
<span class="sourceLineNo">153</span><a id="line.153"></a>
<span class="sourceLineNo">154</span><a id="line.154">    @Override</a>
<span class="sourceLineNo">155</span><a id="line.155">    public void onInit() {</a>
<span class="sourceLineNo">156</span><a id="line.156">        super.onInit();</a>
<span class="sourceLineNo">157</span><a id="line.157">        //TODO - cleanup - this method shouldn't be necessary</a>
<span class="sourceLineNo">158</span><a id="line.158">        afterRoleCacheSet();</a>
<span class="sourceLineNo">159</span><a id="line.159">    }</a>
<span class="sourceLineNo">160</span><a id="line.160"></a>
<span class="sourceLineNo">161</span><a id="line.161">    protected void afterRoleCacheSet() {</a>
<span class="sourceLineNo">162</span><a id="line.162">        loadProperties();</a>
<span class="sourceLineNo">163</span><a id="line.163">        //we can only determine if files have been modified at runtime (not classpath entries or urls), so only</a>
<span class="sourceLineNo">164</span><a id="line.164">        //start the thread in this case:</a>
<span class="sourceLineNo">165</span><a id="line.165">        if (this.resourcePath.startsWith(ResourceUtils.FILE_PREFIX) &amp;&amp; scheduler == null) {</a>
<span class="sourceLineNo">166</span><a id="line.166">            startReloadThread();</a>
<span class="sourceLineNo">167</span><a id="line.167">        }</a>
<span class="sourceLineNo">168</span><a id="line.168">    }</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">     * Destroy reload scheduler if one exists.</a>
<span class="sourceLineNo">172</span><a id="line.172">     */</a>
<span class="sourceLineNo">173</span><a id="line.173">    public void destroy() {</a>
<span class="sourceLineNo">174</span><a id="line.174">        try {</a>
<span class="sourceLineNo">175</span><a id="line.175">            if (scheduler != null) {</a>
<span class="sourceLineNo">176</span><a id="line.176">                scheduler.shutdown();</a>
<span class="sourceLineNo">177</span><a id="line.177">            }</a>
<span class="sourceLineNo">178</span><a id="line.178">        } catch (Exception e) {</a>
<span class="sourceLineNo">179</span><a id="line.179">            if (log.isInfoEnabled()) {</a>
<span class="sourceLineNo">180</span><a id="line.180">                log.info("Unable to cleanly shutdown Scheduler.  Ignoring (shutting down)...", e);</a>
<span class="sourceLineNo">181</span><a id="line.181">            }</a>
<span class="sourceLineNo">182</span><a id="line.182">        } finally {</a>
<span class="sourceLineNo">183</span><a id="line.183">            scheduler = null;</a>
<span class="sourceLineNo">184</span><a id="line.184">        }</a>
<span class="sourceLineNo">185</span><a id="line.185">    }</a>
<span class="sourceLineNo">186</span><a id="line.186"></a>
<span class="sourceLineNo">187</span><a id="line.187">    protected void startReloadThread() {</a>
<span class="sourceLineNo">188</span><a id="line.188">        if (this.reloadIntervalSeconds &gt; 0) {</a>
<span class="sourceLineNo">189</span><a id="line.189">            this.scheduler = Executors.newSingleThreadScheduledExecutor();</a>
<span class="sourceLineNo">190</span><a id="line.190">            ((ScheduledExecutorService) this.scheduler).scheduleAtFixedRate(this, reloadIntervalSeconds, reloadIntervalSeconds, TimeUnit.SECONDS);</a>
<span class="sourceLineNo">191</span><a id="line.191">        }</a>
<span class="sourceLineNo">192</span><a id="line.192">    }</a>
<span class="sourceLineNo">193</span><a id="line.193"></a>
<span class="sourceLineNo">194</span><a id="line.194">    public void run() {</a>
<span class="sourceLineNo">195</span><a id="line.195">        try {</a>
<span class="sourceLineNo">196</span><a id="line.196">            reloadPropertiesIfNecessary();</a>
<span class="sourceLineNo">197</span><a id="line.197">        } catch (Exception e) {</a>
<span class="sourceLineNo">198</span><a id="line.198">            if (log.isErrorEnabled()) {</a>
<span class="sourceLineNo">199</span><a id="line.199">                log.error("Error while reloading property files for realm.", e);</a>
<span class="sourceLineNo">200</span><a id="line.200">            }</a>
<span class="sourceLineNo">201</span><a id="line.201">        }</a>
<span class="sourceLineNo">202</span><a id="line.202">    }</a>
<span class="sourceLineNo">203</span><a id="line.203"></a>
<span class="sourceLineNo">204</span><a id="line.204">    private void loadProperties() {</a>
<span class="sourceLineNo">205</span><a id="line.205">        if (resourcePath == null || resourcePath.length() == 0) {</a>
<span class="sourceLineNo">206</span><a id="line.206">            throw new IllegalStateException("The resourcePath property is not set.  " +</a>
<span class="sourceLineNo">207</span><a id="line.207">                    "It must be set prior to this realm being initialized.");</a>
<span class="sourceLineNo">208</span><a id="line.208">        }</a>
<span class="sourceLineNo">209</span><a id="line.209"></a>
<span class="sourceLineNo">210</span><a id="line.210">        if (log.isDebugEnabled()) {</a>
<span class="sourceLineNo">211</span><a id="line.211">            log.debug("Loading user security information from file [" + resourcePath + "]...");</a>
<span class="sourceLineNo">212</span><a id="line.212">        }</a>
<span class="sourceLineNo">213</span><a id="line.213"></a>
<span class="sourceLineNo">214</span><a id="line.214">        Properties properties = loadProperties(resourcePath);</a>
<span class="sourceLineNo">215</span><a id="line.215">        createRealmEntitiesFromProperties(properties);</a>
<span class="sourceLineNo">216</span><a id="line.216">    }</a>
<span class="sourceLineNo">217</span><a id="line.217"></a>
<span class="sourceLineNo">218</span><a id="line.218">    private Properties loadProperties(String resourcePath) {</a>
<span class="sourceLineNo">219</span><a id="line.219">        Properties props = new Properties();</a>
<span class="sourceLineNo">220</span><a id="line.220"></a>
<span class="sourceLineNo">221</span><a id="line.221">        InputStream is = null;</a>
<span class="sourceLineNo">222</span><a id="line.222">        try {</a>
<span class="sourceLineNo">223</span><a id="line.223"></a>
<span class="sourceLineNo">224</span><a id="line.224">            if (log.isDebugEnabled()) {</a>
<span class="sourceLineNo">225</span><a id="line.225">                log.debug("Opening input stream for path [" + resourcePath + "]...");</a>
<span class="sourceLineNo">226</span><a id="line.226">            }</a>
<span class="sourceLineNo">227</span><a id="line.227"></a>
<span class="sourceLineNo">228</span><a id="line.228">            is = ResourceUtils.getInputStreamForPath(resourcePath);</a>
<span class="sourceLineNo">229</span><a id="line.229">            if (useXmlFormat) {</a>
<span class="sourceLineNo">230</span><a id="line.230"></a>
<span class="sourceLineNo">231</span><a id="line.231">                if (log.isDebugEnabled()) {</a>
<span class="sourceLineNo">232</span><a id="line.232">                    log.debug("Loading properties from path [" + resourcePath + "] in XML format...");</a>
<span class="sourceLineNo">233</span><a id="line.233">                }</a>
<span class="sourceLineNo">234</span><a id="line.234"></a>
<span class="sourceLineNo">235</span><a id="line.235">                props.loadFromXML(is);</a>
<span class="sourceLineNo">236</span><a id="line.236">            } else {</a>
<span class="sourceLineNo">237</span><a id="line.237"></a>
<span class="sourceLineNo">238</span><a id="line.238">                if (log.isDebugEnabled()) {</a>
<span class="sourceLineNo">239</span><a id="line.239">                    log.debug("Loading properties from path [" + resourcePath + "]...");</a>
<span class="sourceLineNo">240</span><a id="line.240">                }</a>
<span class="sourceLineNo">241</span><a id="line.241"></a>
<span class="sourceLineNo">242</span><a id="line.242">                props.load(is);</a>
<span class="sourceLineNo">243</span><a id="line.243">            }</a>
<span class="sourceLineNo">244</span><a id="line.244"></a>
<span class="sourceLineNo">245</span><a id="line.245">        } catch (IOException e) {</a>
<span class="sourceLineNo">246</span><a id="line.246">            throw new ShiroException("Error reading properties path [" + resourcePath + "].  " +</a>
<span class="sourceLineNo">247</span><a id="line.247">                    "Initializing of the realm from this file failed.", e);</a>
<span class="sourceLineNo">248</span><a id="line.248">        } finally {</a>
<span class="sourceLineNo">249</span><a id="line.249">            ResourceUtils.close(is);</a>
<span class="sourceLineNo">250</span><a id="line.250">        }</a>
<span class="sourceLineNo">251</span><a id="line.251"></a>
<span class="sourceLineNo">252</span><a id="line.252">        return props;</a>
<span class="sourceLineNo">253</span><a id="line.253">    }</a>
<span class="sourceLineNo">254</span><a id="line.254"></a>
<span class="sourceLineNo">255</span><a id="line.255"></a>
<span class="sourceLineNo">256</span><a id="line.256">    private void reloadPropertiesIfNecessary() {</a>
<span class="sourceLineNo">257</span><a id="line.257">        if (isSourceModified()) {</a>
<span class="sourceLineNo">258</span><a id="line.258">            restart();</a>
<span class="sourceLineNo">259</span><a id="line.259">        }</a>
<span class="sourceLineNo">260</span><a id="line.260">    }</a>
<span class="sourceLineNo">261</span><a id="line.261"></a>
<span class="sourceLineNo">262</span><a id="line.262">    private boolean isSourceModified() {</a>
<span class="sourceLineNo">263</span><a id="line.263">        //we can only check last modified times on files - classpath and URL entries can't tell us modification times</a>
<span class="sourceLineNo">264</span><a id="line.264">        return this.resourcePath.startsWith(ResourceUtils.FILE_PREFIX) &amp;&amp; isFileModified();</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">    private boolean isFileModified() {</a>
<span class="sourceLineNo">268</span><a id="line.268">        //SHIRO-394: strip file prefix before constructing the File instance:</a>
<span class="sourceLineNo">269</span><a id="line.269">        String fileNameWithoutPrefix = this.resourcePath.substring(this.resourcePath.indexOf(":") + 1);</a>
<span class="sourceLineNo">270</span><a id="line.270">        File propertyFile = new File(fileNameWithoutPrefix);</a>
<span class="sourceLineNo">271</span><a id="line.271">        long currentLastModified = propertyFile.lastModified();</a>
<span class="sourceLineNo">272</span><a id="line.272">        if (currentLastModified &gt; this.fileLastModified) {</a>
<span class="sourceLineNo">273</span><a id="line.273">            this.fileLastModified = currentLastModified;</a>
<span class="sourceLineNo">274</span><a id="line.274">            return true;</a>
<span class="sourceLineNo">275</span><a id="line.275">        } else {</a>
<span class="sourceLineNo">276</span><a id="line.276">            return false;</a>
<span class="sourceLineNo">277</span><a id="line.277">        }</a>
<span class="sourceLineNo">278</span><a id="line.278">    }</a>
<span class="sourceLineNo">279</span><a id="line.279"></a>
<span class="sourceLineNo">280</span><a id="line.280">    @SuppressWarnings("unchecked")</a>
<span class="sourceLineNo">281</span><a id="line.281">    private void restart() {</a>
<span class="sourceLineNo">282</span><a id="line.282">        if (resourcePath == null || resourcePath.length() == 0) {</a>
<span class="sourceLineNo">283</span><a id="line.283">            throw new IllegalStateException("The resourcePath property is not set.  " +</a>
<span class="sourceLineNo">284</span><a id="line.284">                    "It must be set prior to this realm being initialized.");</a>
<span class="sourceLineNo">285</span><a id="line.285">        }</a>
<span class="sourceLineNo">286</span><a id="line.286"></a>
<span class="sourceLineNo">287</span><a id="line.287">        if (log.isDebugEnabled()) {</a>
<span class="sourceLineNo">288</span><a id="line.288">            log.debug("Loading user security information from file [" + resourcePath + "]...");</a>
<span class="sourceLineNo">289</span><a id="line.289">        }</a>
<span class="sourceLineNo">290</span><a id="line.290"></a>
<span class="sourceLineNo">291</span><a id="line.291">        try {</a>
<span class="sourceLineNo">292</span><a id="line.292">            destroy();</a>
<span class="sourceLineNo">293</span><a id="line.293">        } catch (Exception e) {</a>
<span class="sourceLineNo">294</span><a id="line.294">            //ignored</a>
<span class="sourceLineNo">295</span><a id="line.295">        }</a>
<span class="sourceLineNo">296</span><a id="line.296">        init();</a>
<span class="sourceLineNo">297</span><a id="line.297">    }</a>
<span class="sourceLineNo">298</span><a id="line.298"></a>
<span class="sourceLineNo">299</span><a id="line.299">    @SuppressWarnings("unchecked")</a>
<span class="sourceLineNo">300</span><a id="line.300">    private void createRealmEntitiesFromProperties(Properties properties) {</a>
<span class="sourceLineNo">301</span><a id="line.301"></a>
<span class="sourceLineNo">302</span><a id="line.302">        StringBuilder userDefs = new StringBuilder();</a>
<span class="sourceLineNo">303</span><a id="line.303">        StringBuilder roleDefs = new StringBuilder();</a>
<span class="sourceLineNo">304</span><a id="line.304"></a>
<span class="sourceLineNo">305</span><a id="line.305">        Enumeration&lt;String&gt; propNames = (Enumeration&lt;String&gt;) properties.propertyNames();</a>
<span class="sourceLineNo">306</span><a id="line.306"></a>
<span class="sourceLineNo">307</span><a id="line.307">        while (propNames.hasMoreElements()) {</a>
<span class="sourceLineNo">308</span><a id="line.308"></a>
<span class="sourceLineNo">309</span><a id="line.309">            String key = propNames.nextElement().trim();</a>
<span class="sourceLineNo">310</span><a id="line.310">            String value = properties.getProperty(key).trim();</a>
<span class="sourceLineNo">311</span><a id="line.311">            if (log.isTraceEnabled()) {</a>
<span class="sourceLineNo">312</span><a id="line.312">                log.trace("Processing properties line - key: [" + key + "], value: [" + value + "].");</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">            if (isUsername(key)) {</a>
<span class="sourceLineNo">316</span><a id="line.316">                String username = getUsername(key);</a>
<span class="sourceLineNo">317</span><a id="line.317">                userDefs.append(username).append(" = ").append(value).append("\n");</a>
<span class="sourceLineNo">318</span><a id="line.318">            } else if (isRolename(key)) {</a>
<span class="sourceLineNo">319</span><a id="line.319">                String rolename = getRolename(key);</a>
<span class="sourceLineNo">320</span><a id="line.320">                roleDefs.append(rolename).append(" = ").append(value).append("\n");</a>
<span class="sourceLineNo">321</span><a id="line.321">            } else {</a>
<span class="sourceLineNo">322</span><a id="line.322">                String msg = "Encountered unexpected key/value pair.  All keys must be prefixed with either '" +</a>
<span class="sourceLineNo">323</span><a id="line.323">                        USERNAME_PREFIX + "' or '" + ROLENAME_PREFIX + "'.";</a>
<span class="sourceLineNo">324</span><a id="line.324">                throw new IllegalStateException(msg);</a>
<span class="sourceLineNo">325</span><a id="line.325">            }</a>
<span class="sourceLineNo">326</span><a id="line.326">        }</a>
<span class="sourceLineNo">327</span><a id="line.327"></a>
<span class="sourceLineNo">328</span><a id="line.328">        setUserDefinitions(userDefs.toString());</a>
<span class="sourceLineNo">329</span><a id="line.329">        setRoleDefinitions(roleDefs.toString());</a>
<span class="sourceLineNo">330</span><a id="line.330">        processDefinitions();</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">    protected String getName(String key, String prefix) {</a>
<span class="sourceLineNo">334</span><a id="line.334">        return key.substring(prefix.length(), key.length());</a>
<span class="sourceLineNo">335</span><a id="line.335">    }</a>
<span class="sourceLineNo">336</span><a id="line.336"></a>
<span class="sourceLineNo">337</span><a id="line.337">    protected boolean isUsername(String key) {</a>
<span class="sourceLineNo">338</span><a id="line.338">        return key != null &amp;&amp; key.startsWith(USERNAME_PREFIX);</a>
<span class="sourceLineNo">339</span><a id="line.339">    }</a>
<span class="sourceLineNo">340</span><a id="line.340"></a>
<span class="sourceLineNo">341</span><a id="line.341">    protected boolean isRolename(String key) {</a>
<span class="sourceLineNo">342</span><a id="line.342">        return key != null &amp;&amp; key.startsWith(ROLENAME_PREFIX);</a>
<span class="sourceLineNo">343</span><a id="line.343">    }</a>
<span class="sourceLineNo">344</span><a id="line.344"></a>
<span class="sourceLineNo">345</span><a id="line.345">    protected String getUsername(String key) {</a>
<span class="sourceLineNo">346</span><a id="line.346">        return getName(key, USERNAME_PREFIX);</a>
<span class="sourceLineNo">347</span><a id="line.347">    }</a>
<span class="sourceLineNo">348</span><a id="line.348"></a>
<span class="sourceLineNo">349</span><a id="line.349">    protected String getRolename(String key) {</a>
<span class="sourceLineNo">350</span><a id="line.350">        return getName(key, ROLENAME_PREFIX);</a>
<span class="sourceLineNo">351</span><a id="line.351">    }</a>
<span class="sourceLineNo">352</span><a id="line.352">}</a>




























































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