| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> |
| <title>Coverage Report</title> |
| <link title="Style" type="text/css" rel="stylesheet" href="css/main.css"/> |
| <script type="text/javascript" src="js/popup.js"></script> |
| </head> |
| <body> |
| <h5>Coverage Report - org.apache.shiro.subject.Subject</h5> |
| <div class="separator"> </div> |
| <table class="report"> |
| <thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead> |
| <tr><td><a href="org.apache.shiro.subject.Subject.html">Subject</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.25;</span>1.25</td></tr> |
| <tr><td><a href="org.apache.shiro.subject.Subject.html">Subject$Builder</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">29%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:29px"><span class="text">11/37</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">12%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:12px"><span class="text">2/16</span></div></div></td></tr></table></td><td class="value"><span class="hidden">1.25;</span>1.25</td></tr> |
| |
| </table> |
| <div class="separator"> </div> |
| <table cellspacing="0" cellpadding="0" class="src"> |
| <tr> <td class="numLine"> 1</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr> |
| <tr> <td class="numLine"> 2</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></pre></td></tr> |
| <tr> <td class="numLine"> 3</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></pre></td></tr> |
| <tr> <td class="numLine"> 4</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * distributed with this work for additional information</span></pre></td></tr> |
| <tr> <td class="numLine"> 5</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></pre></td></tr> |
| <tr> <td class="numLine"> 6</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></pre></td></tr> |
| <tr> <td class="numLine"> 7</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "License"); you may not use this file except in compliance</span></pre></td></tr> |
| <tr> <td class="numLine"> 8</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with the License. You may obtain a copy of the License at</span></pre></td></tr> |
| <tr> <td class="numLine"> 9</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 10</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 11</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 12</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Unless required by applicable law or agreed to in writing,</span></pre></td></tr> |
| <tr> <td class="numLine"> 13</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * software distributed under the License is distributed on an</span></pre></td></tr> |
| <tr> <td class="numLine"> 14</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></pre></td></tr> |
| <tr> <td class="numLine"> 15</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * KIND, either express or implied. See the License for the</span></pre></td></tr> |
| <tr> <td class="numLine"> 16</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specific language governing permissions and limitations</span></pre></td></tr> |
| <tr> <td class="numLine"> 17</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * under the License.</span></pre></td></tr> |
| <tr> <td class="numLine"> 18</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 19</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">package</span> org.apache.shiro.subject;</pre></td></tr> |
| <tr> <td class="numLine"> 20</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 21</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.SecurityUtils;</pre></td></tr> |
| <tr> <td class="numLine"> 22</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authc.AuthenticationException;</pre></td></tr> |
| <tr> <td class="numLine"> 23</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authc.AuthenticationToken;</pre></td></tr> |
| <tr> <td class="numLine"> 24</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authz.AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 25</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.authz.Permission;</pre></td></tr> |
| <tr> <td class="numLine"> 26</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.mgt.SecurityManager;</pre></td></tr> |
| <tr> <td class="numLine"> 27</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.mgt.SubjectFactory;</pre></td></tr> |
| <tr> <td class="numLine"> 28</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.session.Session;</pre></td></tr> |
| <tr> <td class="numLine"> 29</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.subject.support.DefaultSubjectContext;</pre></td></tr> |
| <tr> <td class="numLine"> 30</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.util.CollectionUtils;</pre></td></tr> |
| <tr> <td class="numLine"> 31</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.shiro.util.StringUtils;</pre></td></tr> |
| <tr> <td class="numLine"> 32</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 33</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.io.Serializable;</pre></td></tr> |
| <tr> <td class="numLine"> 34</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Collection;</pre></td></tr> |
| <tr> <td class="numLine"> 35</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.List;</pre></td></tr> |
| <tr> <td class="numLine"> 36</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.concurrent.Callable;</pre></td></tr> |
| <tr> <td class="numLine"> 37</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 38</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 39</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * A {@code Subject} represents state and security operations for a <em>single</em> application user.</span></pre></td></tr> |
| <tr> <td class="numLine"> 40</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * These operations include authentication (login/logout), authorization (access control), and</span></pre></td></tr> |
| <tr> <td class="numLine"> 41</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * session access. It is Shiro's primary mechanism for single-user security functionality.</span></pre></td></tr> |
| <tr> <td class="numLine"> 42</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h3>Acquiring a Subject</h3></span></pre></td></tr> |
| <tr> <td class="numLine"> 43</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * To acquire the currently-executing {@code Subject}, application developers will almost always use</span></pre></td></tr> |
| <tr> <td class="numLine"> 44</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code SecurityUtils}:</span></pre></td></tr> |
| <tr> <td class="numLine"> 45</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 46</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link SecurityUtils SecurityUtils}.{@link org.apache.shiro.SecurityUtils#getSubject() getSubject()}</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 47</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Almost all security operations should be performed with the {@code Subject} returned from this method.</span></pre></td></tr> |
| <tr> <td class="numLine"> 48</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h3>Permission methods</h3></span></pre></td></tr> |
| <tr> <td class="numLine"> 49</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Note that there are many *Permission methods in this interface overloaded to accept String arguments instead of</span></pre></td></tr> |
| <tr> <td class="numLine"> 50</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link Permission Permission} instances. They are a convenience allowing the caller to use a String representation of</span></pre></td></tr> |
| <tr> <td class="numLine"> 51</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * a {@link Permission Permission} if desired. The underlying Authorization subsystem implementations will usually</span></pre></td></tr> |
| <tr> <td class="numLine"> 52</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * simply convert these String values to {@link Permission Permission} instances and then just call the corresponding</span></pre></td></tr> |
| <tr> <td class="numLine"> 53</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * type-safe method. (Shiro's default implementations do String-to-Permission conversion for these methods using</span></pre></td></tr> |
| <tr> <td class="numLine"> 54</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.permission.PermissionResolver PermissionResolver}s.)</span></pre></td></tr> |
| <tr> <td class="numLine"> 55</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 56</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * These overloaded *Permission methods forgo type-saftey for the benefit of convenience and simplicity,</span></pre></td></tr> |
| <tr> <td class="numLine"> 57</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * so you should choose which ones to use based on your preferences and needs.</span></pre></td></tr> |
| <tr> <td class="numLine"> 58</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 59</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.1</span></pre></td></tr> |
| <tr> <td class="numLine"> 60</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 61</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">interface</span> Subject {</pre></td></tr> |
| <tr> <td class="numLine"> 62</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 63</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 64</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns this Subject's application-wide uniquely identifying principal, or {@code null} if this</span></pre></td></tr> |
| <tr> <td class="numLine"> 65</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Subject is anonymous because it doesn't yet have any associated account data (for example,</span></pre></td></tr> |
| <tr> <td class="numLine"> 66</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if they haven't logged in).</span></pre></td></tr> |
| <tr> <td class="numLine"> 67</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 68</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The term <em>principal</em> is just a fancy security term for any identifying attribute(s) of an application</span></pre></td></tr> |
| <tr> <td class="numLine"> 69</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * user, such as a username, or user id, or public key, or anything else you might use in your application to</span></pre></td></tr> |
| <tr> <td class="numLine"> 70</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * identify a user.</span></pre></td></tr> |
| <tr> <td class="numLine"> 71</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h4>Uniqueness</h4></span></pre></td></tr> |
| <tr> <td class="numLine"> 72</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Although given names and family names (first/last) are technically considered principals as well,</span></pre></td></tr> |
| <tr> <td class="numLine"> 73</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Shiro expects the object returned from this method to be an identifying attribute unique across</span></pre></td></tr> |
| <tr> <td class="numLine"> 74</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * your entire application.</span></pre></td></tr> |
| <tr> <td class="numLine"> 75</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 76</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This implies that things like given names and family names are usually poor</span></pre></td></tr> |
| <tr> <td class="numLine"> 77</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * candidates as return values since they are rarely guaranteed to be unique; Things often used for this value:</span></pre></td></tr> |
| <tr> <td class="numLine"> 78</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 79</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>A {@code long} RDBMS surrogate primary key</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 80</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>An application-unique username</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 81</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>A {@link java.util.UUID UUID}</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 82</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>An LDAP Unique ID</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 83</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 84</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * or any other similar suitable unique mechanism valuable to your application.</span></pre></td></tr> |
| <tr> <td class="numLine"> 85</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 86</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Most implementations will simply return</span></pre></td></tr> |
| <tr> <td class="numLine"> 87</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <code>{@link #getPrincipals()}.{@link org.apache.shiro.subject.PrincipalCollection#getPrimaryPrincipal() getPrimaryPrincipal()}</code></span></pre></td></tr> |
| <tr> <td class="numLine"> 88</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 89</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this Subject's application-specific unique identity.</span></pre></td></tr> |
| <tr> <td class="numLine"> 90</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see org.apache.shiro.subject.PrincipalCollection#getPrimaryPrincipal()</span></pre></td></tr> |
| <tr> <td class="numLine"> 91</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 92</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Object getPrincipal();</pre></td></tr> |
| <tr> <td class="numLine"> 93</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 94</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 95</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns this Subject's principals (identifying attributes) in the form of a {@code PrincipalCollection} or</span></pre></td></tr> |
| <tr> <td class="numLine"> 96</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code null} if this Subject is anonymous because it doesn't yet have any associated account data (for example,</span></pre></td></tr> |
| <tr> <td class="numLine"> 97</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if they haven't logged in).</span></pre></td></tr> |
| <tr> <td class="numLine"> 98</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 99</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The word &quot;principals&quot; is nothing more than a fancy security term for identifying attributes associated</span></pre></td></tr> |
| <tr> <td class="numLine"> 100</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with a Subject, aka, application user. For example, user id, a surname (family/last name), given (first) name,</span></pre></td></tr> |
| <tr> <td class="numLine"> 101</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * social security number, nickname, username, etc, are all examples of a principal.</span></pre></td></tr> |
| <tr> <td class="numLine"> 102</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 103</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return all of this Subject's principals (identifying attributes).</span></pre></td></tr> |
| <tr> <td class="numLine"> 104</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getPrincipal()</span></pre></td></tr> |
| <tr> <td class="numLine"> 105</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see org.apache.shiro.subject.PrincipalCollection#getPrimaryPrincipal()</span></pre></td></tr> |
| <tr> <td class="numLine"> 106</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 107</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> PrincipalCollection getPrincipals();</pre></td></tr> |
| <tr> <td class="numLine"> 108</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 109</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 110</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this Subject is permitted to perform an action or access a resource summarized by the</span></pre></td></tr> |
| <tr> <td class="numLine"> 111</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specified permission string.</span></pre></td></tr> |
| <tr> <td class="numLine"> 112</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 113</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.</span></pre></td></tr> |
| <tr> <td class="numLine"> 114</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Please see the class-level JavaDoc for more information on these String-based permission methods.</span></pre></td></tr> |
| <tr> <td class="numLine"> 115</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 116</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permission the String representation of a Permission that is being checked.</span></pre></td></tr> |
| <tr> <td class="numLine"> 117</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if this Subject is permitted, false otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 118</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #isPermitted(Permission permission)</span></pre></td></tr> |
| <tr> <td class="numLine"> 119</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 120</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 121</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> isPermitted(String permission);</pre></td></tr> |
| <tr> <td class="numLine"> 122</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 123</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 124</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this Subject is permitted to perform an action or access a resource summarized by the</span></pre></td></tr> |
| <tr> <td class="numLine"> 125</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specified permission.</span></pre></td></tr> |
| <tr> <td class="numLine"> 126</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 127</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * More specifically, this method determines if any {@code Permission}s associated</span></pre></td></tr> |
| <tr> <td class="numLine"> 128</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with the subject {@link Permission#implies(Permission) imply} the specified permission.</span></pre></td></tr> |
| <tr> <td class="numLine"> 129</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 130</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permission the permission that is being checked.</span></pre></td></tr> |
| <tr> <td class="numLine"> 131</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if this Subject is permitted, false otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 132</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 133</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> isPermitted(Permission permission);</pre></td></tr> |
| <tr> <td class="numLine"> 134</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 135</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 136</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Checks if this Subject implies the given permission strings and returns a boolean array indicating which</span></pre></td></tr> |
| <tr> <td class="numLine"> 137</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * permissions are implied.</span></pre></td></tr> |
| <tr> <td class="numLine"> 138</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 139</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.</span></pre></td></tr> |
| <tr> <td class="numLine"> 140</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Please see the class-level JavaDoc for more information on these String-based permission methods.</span></pre></td></tr> |
| <tr> <td class="numLine"> 141</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 142</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permissions the String representations of the Permissions that are being checked.</span></pre></td></tr> |
| <tr> <td class="numLine"> 143</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a boolean array where indices correspond to the index of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 144</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * permissions in the given list. A true value at an index indicates this Subject is permitted for</span></pre></td></tr> |
| <tr> <td class="numLine"> 145</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * for the associated {@code Permission} string in the list. A false value at an index</span></pre></td></tr> |
| <tr> <td class="numLine"> 146</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * indicates otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 147</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 148</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 149</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span>[] isPermitted(String... permissions);</pre></td></tr> |
| <tr> <td class="numLine"> 150</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 151</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 152</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Checks if this Subject implies the given Permissions and returns a boolean array indicating which permissions</span></pre></td></tr> |
| <tr> <td class="numLine"> 153</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * are implied.</span></pre></td></tr> |
| <tr> <td class="numLine"> 154</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 155</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * More specifically, this method should determine if each {@code Permission} in</span></pre></td></tr> |
| <tr> <td class="numLine"> 156</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the array is {@link Permission#implies(Permission) implied} by permissions</span></pre></td></tr> |
| <tr> <td class="numLine"> 157</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * already associated with the subject.</span></pre></td></tr> |
| <tr> <td class="numLine"> 158</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 159</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is primarily a performance-enhancing method to help reduce the number of</span></pre></td></tr> |
| <tr> <td class="numLine"> 160</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #isPermitted} invocations over the wire in client/server systems.</span></pre></td></tr> |
| <tr> <td class="numLine"> 161</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 162</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permissions the permissions that are being checked.</span></pre></td></tr> |
| <tr> <td class="numLine"> 163</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a boolean array where indices correspond to the index of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 164</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * permissions in the given list. A true value at an index indicates this Subject is permitted for</span></pre></td></tr> |
| <tr> <td class="numLine"> 165</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * for the associated {@code Permission} object in the list. A false value at an index</span></pre></td></tr> |
| <tr> <td class="numLine"> 166</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * indicates otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 167</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 168</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span>[] isPermitted(List<Permission> permissions);</pre></td></tr> |
| <tr> <td class="numLine"> 169</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 170</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 171</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this Subject implies all of the specified permission strings, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 172</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 173</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is an overloaded method for the corresponding type-safe {@link org.apache.shiro.authz.Permission Permission}</span></pre></td></tr> |
| <tr> <td class="numLine"> 174</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * variant. Please see the class-level JavaDoc for more information on these String-based permission methods.</span></pre></td></tr> |
| <tr> <td class="numLine"> 175</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 176</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permissions the String representations of the Permissions that are being checked.</span></pre></td></tr> |
| <tr> <td class="numLine"> 177</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if this Subject has all of the specified permissions, false otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 178</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #isPermittedAll(Collection)</span></pre></td></tr> |
| <tr> <td class="numLine"> 179</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 180</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 181</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> isPermittedAll(String... permissions);</pre></td></tr> |
| <tr> <td class="numLine"> 182</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 183</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 184</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this Subject implies all of the specified permissions, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 185</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 186</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * More specifically, this method determines if all of the given {@code Permission}s are</span></pre></td></tr> |
| <tr> <td class="numLine"> 187</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link Permission#implies(Permission) implied by} permissions already associated with this Subject.</span></pre></td></tr> |
| <tr> <td class="numLine"> 188</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 189</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permissions the permissions to check.</span></pre></td></tr> |
| <tr> <td class="numLine"> 190</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if this Subject has all of the specified permissions, false otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 191</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 192</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> isPermittedAll(Collection<Permission> permissions);</pre></td></tr> |
| <tr> <td class="numLine"> 193</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 194</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 195</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures this Subject implies the specified permission String.</span></pre></td></tr> |
| <tr> <td class="numLine"> 196</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 197</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If this subject's existing associated permissions do not {@link Permission#implies(Permission)} imply}</span></pre></td></tr> |
| <tr> <td class="numLine"> 198</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the given permission, an {@link org.apache.shiro.authz.AuthorizationException} will be thrown.</span></pre></td></tr> |
| <tr> <td class="numLine"> 199</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 200</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.</span></pre></td></tr> |
| <tr> <td class="numLine"> 201</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Please see the class-level JavaDoc for more information on these String-based permission methods.</span></pre></td></tr> |
| <tr> <td class="numLine"> 202</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 203</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permission the String representation of the Permission to check.</span></pre></td></tr> |
| <tr> <td class="numLine"> 204</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws org.apache.shiro.authz.AuthorizationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 205</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if the user does not have the permission.</span></pre></td></tr> |
| <tr> <td class="numLine"> 206</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 207</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 208</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> checkPermission(String permission) <span class="keyword">throws</span> AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 209</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 210</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 211</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures this Subject {@link Permission#implies(Permission) implies} the specified {@code Permission}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 212</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 213</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If this subject's existing associated permissions do not {@link Permission#implies(Permission) imply}</span></pre></td></tr> |
| <tr> <td class="numLine"> 214</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the given permission, an {@link org.apache.shiro.authz.AuthorizationException} will be thrown.</span></pre></td></tr> |
| <tr> <td class="numLine"> 215</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 216</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permission the Permission to check.</span></pre></td></tr> |
| <tr> <td class="numLine"> 217</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws org.apache.shiro.authz.AuthorizationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 218</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if this Subject does not have the permission.</span></pre></td></tr> |
| <tr> <td class="numLine"> 219</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 220</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> checkPermission(Permission permission) <span class="keyword">throws</span> AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 221</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 222</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 223</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures this Subject</span></pre></td></tr> |
| <tr> <td class="numLine"> 224</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.Permission#implies(org.apache.shiro.authz.Permission) implies} all of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 225</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specified permission strings.</span></pre></td></tr> |
| <tr> <td class="numLine"> 226</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 227</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If this subject's existing associated permissions do not</span></pre></td></tr> |
| <tr> <td class="numLine"> 228</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.Permission#implies(org.apache.shiro.authz.Permission) imply} all of the given permissions,</span></pre></td></tr> |
| <tr> <td class="numLine"> 229</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * an {@link org.apache.shiro.authz.AuthorizationException} will be thrown.</span></pre></td></tr> |
| <tr> <td class="numLine"> 230</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 231</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is an overloaded method for the corresponding type-safe {@link Permission Permission} variant.</span></pre></td></tr> |
| <tr> <td class="numLine"> 232</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Please see the class-level JavaDoc for more information on these String-based permission methods.</span></pre></td></tr> |
| <tr> <td class="numLine"> 233</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 234</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permissions the string representations of Permissions to check.</span></pre></td></tr> |
| <tr> <td class="numLine"> 235</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws AuthorizationException if this Subject does not have all of the given permissions.</span></pre></td></tr> |
| <tr> <td class="numLine"> 236</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 237</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 238</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> checkPermissions(String... permissions) <span class="keyword">throws</span> AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 239</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 240</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 241</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures this Subject</span></pre></td></tr> |
| <tr> <td class="numLine"> 242</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.Permission#implies(org.apache.shiro.authz.Permission) implies} all of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 243</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specified permission strings.</span></pre></td></tr> |
| <tr> <td class="numLine"> 244</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 245</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If this subject's existing associated permissions do not</span></pre></td></tr> |
| <tr> <td class="numLine"> 246</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.Permission#implies(org.apache.shiro.authz.Permission) imply} all of the given permissions,</span></pre></td></tr> |
| <tr> <td class="numLine"> 247</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * an {@link org.apache.shiro.authz.AuthorizationException} will be thrown.</span></pre></td></tr> |
| <tr> <td class="numLine"> 248</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 249</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param permissions the Permissions to check.</span></pre></td></tr> |
| <tr> <td class="numLine"> 250</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws AuthorizationException if this Subject does not have all of the given permissions.</span></pre></td></tr> |
| <tr> <td class="numLine"> 251</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 252</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> checkPermissions(Collection<Permission> permissions) <span class="keyword">throws</span> AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 253</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 254</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 255</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this Subject has the specified role, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 256</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 257</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param roleIdentifier the application-specific role identifier (usually a role id or role name).</span></pre></td></tr> |
| <tr> <td class="numLine"> 258</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return {@code true} if this Subject has the specified role, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 259</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 260</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> hasRole(String roleIdentifier);</pre></td></tr> |
| <tr> <td class="numLine"> 261</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 262</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 263</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Checks if this Subject has the specified roles, returning a boolean array indicating</span></pre></td></tr> |
| <tr> <td class="numLine"> 264</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * which roles are associated.</span></pre></td></tr> |
| <tr> <td class="numLine"> 265</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 266</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is primarily a performance-enhancing method to help reduce the number of</span></pre></td></tr> |
| <tr> <td class="numLine"> 267</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #hasRole} invocations over the wire in client/server systems.</span></pre></td></tr> |
| <tr> <td class="numLine"> 268</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 269</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param roleIdentifiers the application-specific role identifiers to check (usually role ids or role names).</span></pre></td></tr> |
| <tr> <td class="numLine"> 270</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a boolean array where indices correspond to the index of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 271</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * roles in the given identifiers. A true value indicates this Subject has the</span></pre></td></tr> |
| <tr> <td class="numLine"> 272</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * role at that index. False indicates this Subject does not have the role at that index.</span></pre></td></tr> |
| <tr> <td class="numLine"> 273</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 274</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span>[] hasRoles(List<String> roleIdentifiers);</pre></td></tr> |
| <tr> <td class="numLine"> 275</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 276</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 277</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this Subject has all of the specified roles, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 278</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 279</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param roleIdentifiers the application-specific role identifiers to check (usually role ids or role names).</span></pre></td></tr> |
| <tr> <td class="numLine"> 280</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if this Subject has all the roles, false otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 281</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 282</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> hasAllRoles(Collection<String> roleIdentifiers);</pre></td></tr> |
| <tr> <td class="numLine"> 283</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 284</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 285</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Asserts this Subject has the specified role by returning quietly if they do or throwing an</span></pre></td></tr> |
| <tr> <td class="numLine"> 286</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.AuthorizationException} if they do not.</span></pre></td></tr> |
| <tr> <td class="numLine"> 287</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 288</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param roleIdentifier the application-specific role identifier (usually a role id or role name ).</span></pre></td></tr> |
| <tr> <td class="numLine"> 289</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws org.apache.shiro.authz.AuthorizationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 290</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if this Subject does not have the role.</span></pre></td></tr> |
| <tr> <td class="numLine"> 291</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 292</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> checkRole(String roleIdentifier) <span class="keyword">throws</span> AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 293</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 294</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 295</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Asserts this Subject has all of the specified roles by returning quietly if they do or throwing an</span></pre></td></tr> |
| <tr> <td class="numLine"> 296</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.AuthorizationException} if they do not.</span></pre></td></tr> |
| <tr> <td class="numLine"> 297</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 298</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param roleIdentifiers the application-specific role identifiers to check (usually role ids or role names).</span></pre></td></tr> |
| <tr> <td class="numLine"> 299</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws org.apache.shiro.authz.AuthorizationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 300</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if this Subject does not have all of the specified roles.</span></pre></td></tr> |
| <tr> <td class="numLine"> 301</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 302</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> checkRoles(Collection<String> roleIdentifiers) <span class="keyword">throws</span> AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 303</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 304</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 305</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Same as {@link #checkRoles(Collection<String> roleIdentifiers) checkRoles(Collection<String> roleIdentifiers)} but</span></pre></td></tr> |
| <tr> <td class="numLine"> 306</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * doesn't require a collection as a an argument.</span></pre></td></tr> |
| <tr> <td class="numLine"> 307</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Asserts this Subject has all of the specified roles by returning quietly if they do or throwing an</span></pre></td></tr> |
| <tr> <td class="numLine"> 308</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.authz.AuthorizationException} if they do not.</span></pre></td></tr> |
| <tr> <td class="numLine"> 309</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 310</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param roleIdentifiers roleIdentifiers the application-specific role identifiers to check (usually role ids or role names).</span></pre></td></tr> |
| <tr> <td class="numLine"> 311</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws AuthorizationException org.apache.shiro.authz.AuthorizationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 312</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if this Subject does not have all of the specified roles.</span></pre></td></tr> |
| <tr> <td class="numLine"> 313</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 314</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 315</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> checkRoles(String... roleIdentifiers) <span class="keyword">throws</span> AuthorizationException;</pre></td></tr> |
| <tr> <td class="numLine"> 316</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 317</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 318</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Performs a login attempt for this Subject/user. If unsuccessful,</span></pre></td></tr> |
| <tr> <td class="numLine"> 319</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * an {@link AuthenticationException} is thrown, the subclass of which identifies why the attempt failed.</span></pre></td></tr> |
| <tr> <td class="numLine"> 320</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If successful, the account data associated with the submitted principals/credentials will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 321</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * associated with this {@code Subject} and the method will return quietly.</span></pre></td></tr> |
| <tr> <td class="numLine"> 322</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 323</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Upon returning quietly, this {@code Subject} instance can be considered</span></pre></td></tr> |
| <tr> <td class="numLine"> 324</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * authenticated and {@link #getPrincipal() getPrincipal()} will be non-null and</span></pre></td></tr> |
| <tr> <td class="numLine"> 325</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #isAuthenticated() isAuthenticated()} will be {@code true}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 326</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 327</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param token the token encapsulating the subject's principals and credentials to be passed to the</span></pre></td></tr> |
| <tr> <td class="numLine"> 328</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Authentication subsystem for verification.</span></pre></td></tr> |
| <tr> <td class="numLine"> 329</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws org.apache.shiro.authc.AuthenticationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 330</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * if the authentication attempt fails.</span></pre></td></tr> |
| <tr> <td class="numLine"> 331</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 332</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 333</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> login(AuthenticationToken token) <span class="keyword">throws</span> AuthenticationException;</pre></td></tr> |
| <tr> <td class="numLine"> 334</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 335</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 336</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this Subject/user proved their identity <em>during their current session</em></span></pre></td></tr> |
| <tr> <td class="numLine"> 337</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * by providing valid credentials matching those known to the system, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 338</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 339</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Note that even if this Subject's identity has been remembered via 'remember me' services, this method will</span></pre></td></tr> |
| <tr> <td class="numLine"> 340</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * still return {@code false} unless the user has actually logged in with proper credentials <em>during their</span></pre></td></tr> |
| <tr> <td class="numLine"> 341</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * current session</em>. See the {@link #isRemembered() isRemembered()} method JavaDoc for more.</span></pre></td></tr> |
| <tr> <td class="numLine"> 342</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 343</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return {@code true} if this Subject proved their identity during their current session</span></pre></td></tr> |
| <tr> <td class="numLine"> 344</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * by providing valid credentials matching those known to the system, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 345</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 346</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 347</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> isAuthenticated();</pre></td></tr> |
| <tr> <td class="numLine"> 348</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 349</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 350</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 351</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this {@code Subject} has an identity (it is not anonymous) and the identity</span></pre></td></tr> |
| <tr> <td class="numLine"> 352</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (aka {@link #getPrincipals() principals}) is remembered from a successful authentication during a previous</span></pre></td></tr> |
| <tr> <td class="numLine"> 353</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * session.</span></pre></td></tr> |
| <tr> <td class="numLine"> 354</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 355</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Although the underlying implementation determines exactly how this method functions, most implementations have</span></pre></td></tr> |
| <tr> <td class="numLine"> 356</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * this method act as the logical equivalent to this code:</span></pre></td></tr> |
| <tr> <td class="numLine"> 357</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 358</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getPrincipal() getPrincipal()} != null && !{@link #isAuthenticated() isAuthenticated()}</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 359</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 360</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Note as indicated by the above code example, if a {@code Subject} is remembered, they are</span></pre></td></tr> |
| <tr> <td class="numLine"> 361</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <em>NOT</em> considered authenticated. A check against {@link #isAuthenticated() isAuthenticated()} is a more</span></pre></td></tr> |
| <tr> <td class="numLine"> 362</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * strict check than that reflected by this method. For example, a check to see if a subject can access financial</span></pre></td></tr> |
| <tr> <td class="numLine"> 363</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * information should almost always depend on {@link #isAuthenticated() isAuthenticated()} to <em>guarantee</em> a</span></pre></td></tr> |
| <tr> <td class="numLine"> 364</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * verified identity, and not this method.</span></pre></td></tr> |
| <tr> <td class="numLine"> 365</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 366</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Once the subject is authenticated, they are no longer considered only remembered because their identity would</span></pre></td></tr> |
| <tr> <td class="numLine"> 367</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * have been verified during the current session.</span></pre></td></tr> |
| <tr> <td class="numLine"> 368</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h4>Remembered vs Authenticated</h4></span></pre></td></tr> |
| <tr> <td class="numLine"> 369</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Authentication is the process of <em>proving</em> you are who you say you are. When a user is only remembered,</span></pre></td></tr> |
| <tr> <td class="numLine"> 370</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the remembered identity gives the system an idea who that user probably is, but in reality, has no way of</span></pre></td></tr> |
| <tr> <td class="numLine"> 371</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * absolutely <em>guaranteeing</em> if the remembered {@code Subject} represents the user currently</span></pre></td></tr> |
| <tr> <td class="numLine"> 372</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * using the application.</span></pre></td></tr> |
| <tr> <td class="numLine"> 373</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 374</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * So although many parts of the application can still perform user-specific logic based on the remembered</span></pre></td></tr> |
| <tr> <td class="numLine"> 375</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #getPrincipals() principals}, such as customized views, it should never perform highly-sensitive</span></pre></td></tr> |
| <tr> <td class="numLine"> 376</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * operations until the user has legitimately verified their identity by executing a successful authentication</span></pre></td></tr> |
| <tr> <td class="numLine"> 377</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * attempt.</span></pre></td></tr> |
| <tr> <td class="numLine"> 378</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 379</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * We see this paradigm all over the web, and we will use <a href="http://www.amazon.com">Amazon.com</a> as an</span></pre></td></tr> |
| <tr> <td class="numLine"> 380</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * example:</span></pre></td></tr> |
| <tr> <td class="numLine"> 381</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 382</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * When you visit Amazon.com and perform a login and ask it to 'remember me', it will set a cookie with your</span></pre></td></tr> |
| <tr> <td class="numLine"> 383</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * identity. If you don't log out and your session expires, and you come back, say the next day, Amazon still knows</span></pre></td></tr> |
| <tr> <td class="numLine"> 384</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * who you <em>probably</em> are: you still see all of your book and movie recommendations and similar user-specific</span></pre></td></tr> |
| <tr> <td class="numLine"> 385</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * features since these are based on your (remembered) user id.</span></pre></td></tr> |
| <tr> <td class="numLine"> 386</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 387</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * BUT, if you try to do something sensitive, such as access your account's billing data, Amazon forces you</span></pre></td></tr> |
| <tr> <td class="numLine"> 388</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to do an actual log-in, requiring your username and password.</span></pre></td></tr> |
| <tr> <td class="numLine"> 389</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 390</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is because although amazon.com assumed your identity from 'remember me', it recognized that you were not</span></pre></td></tr> |
| <tr> <td class="numLine"> 391</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * actually authenticated. The only way to really guarantee you are who you say you are, and therefore allow you</span></pre></td></tr> |
| <tr> <td class="numLine"> 392</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * access to sensitive account data, is to force you to perform an actual successful authentication. You can</span></pre></td></tr> |
| <tr> <td class="numLine"> 393</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * check this guarantee via the {@link #isAuthenticated() isAuthenticated()} method and not via this method.</span></pre></td></tr> |
| <tr> <td class="numLine"> 394</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 395</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return {@code true} if this {@code Subject}'s identity (aka {@link #getPrincipals() principals}) is</span></pre></td></tr> |
| <tr> <td class="numLine"> 396</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * remembered from a successful authentication during a previous session, {@code false} otherwise.</span></pre></td></tr> |
| <tr> <td class="numLine"> 397</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 398</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 399</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> isRemembered();</pre></td></tr> |
| <tr> <td class="numLine"> 400</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 401</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 402</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the application {@code Session} associated with this Subject. If no session exists when this</span></pre></td></tr> |
| <tr> <td class="numLine"> 403</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * method is called, a new session will be created, associated with this Subject, and then returned.</span></pre></td></tr> |
| <tr> <td class="numLine"> 404</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 405</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the application {@code Session} associated with this Subject.</span></pre></td></tr> |
| <tr> <td class="numLine"> 406</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getSession(boolean)</span></pre></td></tr> |
| <tr> <td class="numLine"> 407</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 408</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 409</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Session getSession();</pre></td></tr> |
| <tr> <td class="numLine"> 410</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 411</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 412</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the application {@code Session} associated with this Subject. Based on the boolean argument,</span></pre></td></tr> |
| <tr> <td class="numLine"> 413</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * this method functions as follows:</span></pre></td></tr> |
| <tr> <td class="numLine"> 414</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 415</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If there is already an existing session associated with this {@code Subject}, it is returned and</span></pre></td></tr> |
| <tr> <td class="numLine"> 416</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the {@code create} argument is ignored.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 417</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If no session exists and {@code create} is {@code true}, a new session will be created, associated with</span></pre></td></tr> |
| <tr> <td class="numLine"> 418</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * this {@code Subject} and then returned.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 419</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If no session exists and {@code create} is {@code false}, {@code null} is returned.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 420</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 421</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 422</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param create boolean argument determining if a new session should be created or not if there is no existing session.</span></pre></td></tr> |
| <tr> <td class="numLine"> 423</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the application {@code Session} associated with this {@code Subject} or {@code null} based</span></pre></td></tr> |
| <tr> <td class="numLine"> 424</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * on the above described logic.</span></pre></td></tr> |
| <tr> <td class="numLine"> 425</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 426</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 427</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Session getSession(<span class="keyword">boolean</span> create);</pre></td></tr> |
| <tr> <td class="numLine"> 428</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 429</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 430</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Logs out this Subject and invalidates and/or removes any associated entities,</span></pre></td></tr> |
| <tr> <td class="numLine"> 431</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * such as a {@link Session Session} and authorization data. After this method is called, the Subject is</span></pre></td></tr> |
| <tr> <td class="numLine"> 432</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * considered 'anonymous' and may continue to be used for another log-in if desired.</span></pre></td></tr> |
| <tr> <td class="numLine"> 433</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h3>Web Environment Warning</h3></span></pre></td></tr> |
| <tr> <td class="numLine"> 434</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Calling this method in web environments will usually remove any associated session cookie as part of</span></pre></td></tr> |
| <tr> <td class="numLine"> 435</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * session invalidation. Because cookies are part of the HTTP header, and headers can only be set before the</span></pre></td></tr> |
| <tr> <td class="numLine"> 436</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * response body (html, image, etc) is sent, this method in web environments must be called before <em>any</em></span></pre></td></tr> |
| <tr> <td class="numLine"> 437</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * content has been rendered.</span></pre></td></tr> |
| <tr> <td class="numLine"> 438</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 439</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The typical approach most applications use in this scenario is to redirect the user to a different</span></pre></td></tr> |
| <tr> <td class="numLine"> 440</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * location (e.g. home page) immediately after calling this method. This is an effect of the HTTP protocol</span></pre></td></tr> |
| <tr> <td class="numLine"> 441</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * itself and not a reflection of Shiro's implementation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 442</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 443</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Non-HTTP environments may of course use a logged-out subject for login again if desired.</span></pre></td></tr> |
| <tr> <td class="numLine"> 444</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 445</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> logout();</pre></td></tr> |
| <tr> <td class="numLine"> 446</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 447</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 448</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Associates the specified {@code Callable} with this {@code Subject} instance and then executes it on the</span></pre></td></tr> |
| <tr> <td class="numLine"> 449</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * currently running thread. If you want to execute the {@code Callable} on a different thread, it is better to</span></pre></td></tr> |
| <tr> <td class="numLine"> 450</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * use the {@link #associateWith(Callable)} method instead.</span></pre></td></tr> |
| <tr> <td class="numLine"> 451</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 452</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param callable the Callable to associate with this subject and then execute.</span></pre></td></tr> |
| <tr> <td class="numLine"> 453</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param <V> the type of return value the {@code Callable} will return</span></pre></td></tr> |
| <tr> <td class="numLine"> 454</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the resulting object returned by the {@code Callable}'s execution.</span></pre></td></tr> |
| <tr> <td class="numLine"> 455</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws ExecutionException if the {@code Callable}'s {@link Callable#call call} method throws an exception.</span></pre></td></tr> |
| <tr> <td class="numLine"> 456</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 457</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 458</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <V> V execute(Callable<V> callable) <span class="keyword">throws</span> ExecutionException;</pre></td></tr> |
| <tr> <td class="numLine"> 459</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 460</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 461</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Associates the specified {@code Runnable} with this {@code Subject} instance and then executes it on the</span></pre></td></tr> |
| <tr> <td class="numLine"> 462</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * currently running thread. If you want to execute the {@code Runnable} on a different thread, it is better to</span></pre></td></tr> |
| <tr> <td class="numLine"> 463</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * use the {@link #associateWith(Runnable)} method instead.</span></pre></td></tr> |
| <tr> <td class="numLine"> 464</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 465</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>Note</b>: This method is primarily provided to execute existing/legacy Runnable implementations. It is better</span></pre></td></tr> |
| <tr> <td class="numLine"> 466</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * for new code to use {@link #execute(Callable)} since that supports the ability to return values and catch</span></pre></td></tr> |
| <tr> <td class="numLine"> 467</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * exceptions.</span></pre></td></tr> |
| <tr> <td class="numLine"> 468</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 469</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param runnable the {@code Runnable} to associate with this {@code Subject} and then execute.</span></pre></td></tr> |
| <tr> <td class="numLine"> 470</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 471</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 472</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> execute(Runnable runnable);</pre></td></tr> |
| <tr> <td class="numLine"> 473</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 474</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 475</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns a {@code Callable} instance matching the given argument while additionally ensuring that it will</span></pre></td></tr> |
| <tr> <td class="numLine"> 476</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * retain and execute under this Subject's identity. The returned object can be used with an</span></pre></td></tr> |
| <tr> <td class="numLine"> 477</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link java.util.concurrent.ExecutorService ExecutorService} to execute as this Subject.</span></pre></td></tr> |
| <tr> <td class="numLine"> 478</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 479</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This will effectively ensure that any calls to</span></pre></td></tr> |
| <tr> <td class="numLine"> 480</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code SecurityUtils}.{@link SecurityUtils#getSubject() getSubject()} and related functionality will continue</span></pre></td></tr> |
| <tr> <td class="numLine"> 481</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to function properly on any thread that executes the returned {@code Callable} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 482</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 483</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param callable the callable to execute as this {@code Subject}</span></pre></td></tr> |
| <tr> <td class="numLine"> 484</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param <V> the {@code Callable}s return value type</span></pre></td></tr> |
| <tr> <td class="numLine"> 485</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a {@code Callable} that can be run as this {@code Subject}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 486</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 487</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 488</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <V> Callable<V> associateWith(Callable<V> callable);</pre></td></tr> |
| <tr> <td class="numLine"> 489</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 490</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 491</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns a {@code Runnable} instance matching the given argument while additionally ensuring that it will</span></pre></td></tr> |
| <tr> <td class="numLine"> 492</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * retain and execute under this Subject's identity. The returned object can be used with an</span></pre></td></tr> |
| <tr> <td class="numLine"> 493</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link java.util.concurrent.Executor Executor} or another thread to execute as this Subject.</span></pre></td></tr> |
| <tr> <td class="numLine"> 494</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 495</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This will effectively ensure that any calls to</span></pre></td></tr> |
| <tr> <td class="numLine"> 496</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code SecurityUtils}.{@link SecurityUtils#getSubject() getSubject()} and related functionality will continue</span></pre></td></tr> |
| <tr> <td class="numLine"> 497</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to function properly on any thread that executes the returned {@code Runnable} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 498</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 499</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * *Note that if you need a return value to be returned as a result of the runnable's execution or if you need to</span></pre></td></tr> |
| <tr> <td class="numLine"> 500</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * react to any Exceptions, it is highly recommended to use the</span></pre></td></tr> |
| <tr> <td class="numLine"> 501</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #associateWith(java.util.concurrent.Callable) createCallable} method instead of this one.</span></pre></td></tr> |
| <tr> <td class="numLine"> 502</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 503</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param runnable the runnable to execute as this {@code Subject}</span></pre></td></tr> |
| <tr> <td class="numLine"> 504</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a {@code Runnable} that can be run as this {@code Subject} on another thread.</span></pre></td></tr> |
| <tr> <td class="numLine"> 505</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #associateWith (java.util.concurrent.Callable)</span></pre></td></tr> |
| <tr> <td class="numLine"> 506</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 507</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 508</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Runnable associateWith(Runnable runnable);</pre></td></tr> |
| <tr> <td class="numLine"> 509</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 510</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 511</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Allows this subject to 'run as' or 'assume' another identity indefinitely. This can only be</span></pre></td></tr> |
| <tr> <td class="numLine"> 512</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * called when the {@code Subject} instance already has an identity (i.e. they are remembered from a previous</span></pre></td></tr> |
| <tr> <td class="numLine"> 513</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * log-in or they have authenticated during their current session).</span></pre></td></tr> |
| <tr> <td class="numLine"> 514</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 515</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Some notes about {@code runAs}:</span></pre></td></tr> |
| <tr> <td class="numLine"> 516</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 517</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>You can tell if a {@code Subject} is 'running as' another identity by calling the</span></pre></td></tr> |
| <tr> <td class="numLine"> 518</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #isRunAs() isRunAs()} method.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 519</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>If running as another identity, you can determine what the previous 'pre run as' identity</span></pre></td></tr> |
| <tr> <td class="numLine"> 520</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * was by calling the {@link #getPreviousPrincipals() getPreviousPrincipals()} method.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 521</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>When you want a {@code Subject} to stop running as another identity, you can return to its previous</span></pre></td></tr> |
| <tr> <td class="numLine"> 522</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * 'pre run as' identity by calling the {@link #releaseRunAs() releaseRunAs()} method.</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 523</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ul></span></pre></td></tr> |
| <tr> <td class="numLine"> 524</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 525</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param principals the identity to 'run as', aka the identity to <em>assume</em> indefinitely.</span></pre></td></tr> |
| <tr> <td class="numLine"> 526</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws NullPointerException if the specified principals collection is {@code null} or empty.</span></pre></td></tr> |
| <tr> <td class="numLine"> 527</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws IllegalStateException if this {@code Subject} does not yet have an identity of its own.</span></pre></td></tr> |
| <tr> <td class="numLine"> 528</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 529</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 530</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> runAs(PrincipalCollection principals) <span class="keyword">throws</span> NullPointerException, IllegalStateException;</pre></td></tr> |
| <tr> <td class="numLine"> 531</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 532</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 533</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns {@code true} if this {@code Subject} is 'running as' another identity other than its original one or</span></pre></td></tr> |
| <tr> <td class="numLine"> 534</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code false} otherwise (normal {@code Subject} state). See the {@link #runAs runAs} method for more</span></pre></td></tr> |
| <tr> <td class="numLine"> 535</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * information.</span></pre></td></tr> |
| <tr> <td class="numLine"> 536</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 537</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return {@code true} if this {@code Subject} is 'running as' another identity other than its original one or</span></pre></td></tr> |
| <tr> <td class="numLine"> 538</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code false} otherwise (normal {@code Subject} state).</span></pre></td></tr> |
| <tr> <td class="numLine"> 539</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #runAs</span></pre></td></tr> |
| <tr> <td class="numLine"> 540</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 541</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 542</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">boolean</span> isRunAs();</pre></td></tr> |
| <tr> <td class="numLine"> 543</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 544</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 545</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the previous 'pre run as' identity of this {@code Subject} before assuming the current</span></pre></td></tr> |
| <tr> <td class="numLine"> 546</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #runAs runAs} identity, or {@code null} if this {@code Subject} is not operating under an assumed</span></pre></td></tr> |
| <tr> <td class="numLine"> 547</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * identity (normal state). See the {@link #runAs runAs} method for more information.</span></pre></td></tr> |
| <tr> <td class="numLine"> 548</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 549</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the previous 'pre run as' identity of this {@code Subject} before assuming the current</span></pre></td></tr> |
| <tr> <td class="numLine"> 550</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link #runAs runAs} identity, or {@code null} if this {@code Subject} is not operating under an assumed</span></pre></td></tr> |
| <tr> <td class="numLine"> 551</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * identity (normal state).</span></pre></td></tr> |
| <tr> <td class="numLine"> 552</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #runAs</span></pre></td></tr> |
| <tr> <td class="numLine"> 553</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 554</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 555</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> PrincipalCollection getPreviousPrincipals();</pre></td></tr> |
| <tr> <td class="numLine"> 556</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 557</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 558</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Releases the current 'run as' (assumed) identity and reverts back to the previous 'pre run as'</span></pre></td></tr> |
| <tr> <td class="numLine"> 559</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * identity that existed before {@code #runAs runAs} was called.</span></pre></td></tr> |
| <tr> <td class="numLine"> 560</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 561</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This method returne 'run as' (assumed) identity being released or {@code null} if this {@code Subject} is not</span></pre></td></tr> |
| <tr> <td class="numLine"> 562</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * operating under an assumed identity.</span></pre></td></tr> |
| <tr> <td class="numLine"> 563</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 564</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the 'run as' (assumed) identity being released or {@code null} if this {@code Subject} is not operating</span></pre></td></tr> |
| <tr> <td class="numLine"> 565</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * under an assumed identity.</span></pre></td></tr> |
| <tr> <td class="numLine"> 566</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #runAs</span></pre></td></tr> |
| <tr> <td class="numLine"> 567</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 568</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 569</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> PrincipalCollection releaseRunAs();</pre></td></tr> |
| <tr> <td class="numLine"> 570</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 571</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 572</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Builder design pattern implementation for creating {@link Subject} instances in a simplified way without</span></pre></td></tr> |
| <tr> <td class="numLine"> 573</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * requiring knowledge of Shiro's construction techniques.</span></pre></td></tr> |
| <tr> <td class="numLine"> 574</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 575</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>NOTE</b>: This is provided for framework development support only and should typically never be used by</span></pre></td></tr> |
| <tr> <td class="numLine"> 576</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * application developers. {@code Subject} instances should generally be acquired by using</span></pre></td></tr> |
| <tr> <td class="numLine"> 577</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <code>SecurityUtils.{@link SecurityUtils#getSubject() getSubject()}</code></span></pre></td></tr> |
| <tr> <td class="numLine"> 578</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <h4>Usage</h4></span></pre></td></tr> |
| <tr> <td class="numLine"> 579</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The simplest usage of this builder is to construct an anonymous, session-less {@code Subject} instance:</span></pre></td></tr> |
| <tr> <td class="numLine"> 580</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 581</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Subject subject = new Subject.{@link #Builder() Builder}().{@link #buildSubject() buildSubject()};</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 582</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The default, no-arg {@code Subject.Builder()} constructor shown above will use the application's</span></pre></td></tr> |
| <tr> <td class="numLine"> 583</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * currently accessible {@code SecurityManager} via</span></pre></td></tr> |
| <tr> <td class="numLine"> 584</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <code>SecurityUtils.{@link SecurityUtils#getSecurityManager() getSecurityManager()}</code>. You may also</span></pre></td></tr> |
| <tr> <td class="numLine"> 585</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specify the exact {@code SecurityManager} instance to be used by the additional</span></pre></td></tr> |
| <tr> <td class="numLine"> 586</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <code>Subject.{@link #Builder(org.apache.shiro.mgt.SecurityManager) Builder(securityManager)}</code></span></pre></td></tr> |
| <tr> <td class="numLine"> 587</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * constructor if desired.</span></pre></td></tr> |
| <tr> <td class="numLine"> 588</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 589</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * All other methods may be called before the {@link #buildSubject() buildSubject()} method to</span></pre></td></tr> |
| <tr> <td class="numLine"> 590</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * provide context on how to construct the {@code Subject} instance. For example, if you have a session id and</span></pre></td></tr> |
| <tr> <td class="numLine"> 591</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * want to acquire the {@code Subject} that 'owns' that session (assuming the session exists and is not expired):</span></pre></td></tr> |
| <tr> <td class="numLine"> 592</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 593</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Subject subject = new Subject.Builder().sessionId(sessionId).buildSubject();</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 594</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 595</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Similarly, if you want a {@code Subject} instance reflecting a certain identity:</span></pre></td></tr> |
| <tr> <td class="numLine"> 596</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 597</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * PrincipalCollection principals = new SimplePrincipalCollection("username", <em>yourRealmName</em>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 598</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Subject subject = new Subject.Builder().principals(principals).build();</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 599</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 600</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>Note*</b> that the returned {@code Subject} instance is <b>not</b> automatically bound to the application (thread)</span></pre></td></tr> |
| <tr> <td class="numLine"> 601</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * for further use. That is,</span></pre></td></tr> |
| <tr> <td class="numLine"> 602</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.SecurityUtils SecurityUtils}.{@link org.apache.shiro.SecurityUtils#getSubject() getSubject()}</span></pre></td></tr> |
| <tr> <td class="numLine"> 603</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * will not automatically return the same instance as what is returned by the builder. It is up to the framework</span></pre></td></tr> |
| <tr> <td class="numLine"> 604</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * developer to bind the built {@code Subject} for continued use if desired.</span></pre></td></tr> |
| <tr> <td class="numLine"> 605</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 606</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.0</span></pre></td></tr> |
| <tr> <td class="numLine"> 607</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 608</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class</span> Builder {</pre></td></tr> |
| <tr> <td class="numLine"> 609</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 610</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 611</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Hold all contextual data via the Builder instance's method invocations to be sent to the</span></pre></td></tr> |
| <tr> <td class="numLine"> 612</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code SecurityManager} during the {@link #buildSubject} call.</span></pre></td></tr> |
| <tr> <td class="numLine"> 613</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 614</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> SubjectContext subjectContext;</pre></td></tr> |
| <tr> <td class="numLine"> 615</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 616</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 617</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The SecurityManager to invoke during the {@link #buildSubject} call.</span></pre></td></tr> |
| <tr> <td class="numLine"> 618</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 619</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> SecurityManager securityManager;</pre></td></tr> |
| <tr> <td class="numLine"> 620</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 621</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 622</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Constructs a new {@link Subject.Builder} instance, using the {@code SecurityManager} instance available</span></pre></td></tr> |
| <tr> <td class="numLine"> 623</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to the calling code as determined by a call to {@link org.apache.shiro.SecurityUtils#getSecurityManager()}</span></pre></td></tr> |
| <tr> <td class="numLine"> 624</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to build the {@code Subject} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 625</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 626</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 627</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(SecurityUtils.getSecurityManager());</pre></td></tr> |
| <tr> <td class="numLineCover"> 628</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 629</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 630</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 631</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Constructs a new {@link Subject.Builder} instance which will use the specified {@code SecurityManager} when</span></pre></td></tr> |
| <tr> <td class="numLine"> 632</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * building the {@code Subject} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 633</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 634</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param securityManager the {@code SecurityManager} to use when building the {@code Subject} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 635</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 636</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Builder(SecurityManager securityManager) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 637</td> <td class="nbHitsUncovered"><a title="Line 637: Conditional coverage 50% (1/2)."> 29</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 637: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (securityManager == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 638</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> NullPointerException(<span class="string">"SecurityManager method argument cannot be null."</span>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 639</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 640</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.securityManager = securityManager;</pre></td></tr> |
| <tr> <td class="numLineCover"> 641</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.subjectContext = newSubjectContextInstance();</pre></td></tr> |
| <tr> <td class="numLineCover"> 642</td> <td class="nbHitsUncovered"><a title="Line 642: Conditional coverage 50% (1/2)."> 29</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 642: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (<span class="keyword">this</span>.subjectContext == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 643</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalStateException(<span class="string">"Subject instance returned from 'newSubjectContextInstance' "</span> +</span></pre></td></tr> |
| <tr> <td class="numLine"> 644</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="string">"cannot be null."</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 645</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 646</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.subjectContext.setSecurityManager(securityManager);</pre></td></tr> |
| <tr> <td class="numLineCover"> 647</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 648</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 649</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 650</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Creates a new {@code SubjectContext} instance to be used to populate with subject contextual data that</span></pre></td></tr> |
| <tr> <td class="numLine"> 651</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * will then be sent to the {@code SecurityManager} to create a new {@code Subject} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 652</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 653</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a new {@code SubjectContext} instance</span></pre></td></tr> |
| <tr> <td class="numLine"> 654</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 655</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> SubjectContext newSubjectContextInstance() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 656</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> DefaultSubjectContext();</pre></td></tr> |
| <tr> <td class="numLine"> 657</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 658</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 659</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 660</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns the backing context used to build the {@code Subject} instance, available to subclasses</span></pre></td></tr> |
| <tr> <td class="numLine"> 661</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * since the {@code context} class attribute is marked as {@code private}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 662</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 663</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the backing context used to build the {@code Subject} instance, available to subclasses.</span></pre></td></tr> |
| <tr> <td class="numLine"> 664</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 665</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">protected</span> SubjectContext getSubjectContext() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 666</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>.subjectContext;</span></pre></td></tr> |
| <tr> <td class="numLine"> 667</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 668</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 669</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 670</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Enables building a {@link Subject Subject} instance that owns the {@link Session Session} with the</span></pre></td></tr> |
| <tr> <td class="numLine"> 671</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specified {@code sessionId}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 672</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 673</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Usually when specifying a {@code sessionId}, no other {@code Builder} methods would be specified because</span></pre></td></tr> |
| <tr> <td class="numLine"> 674</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * everything else (principals, inet address, etc) can usually be reconstructed based on the referenced</span></pre></td></tr> |
| <tr> <td class="numLine"> 675</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * session alone. In other words, this is almost always sufficient:</span></pre></td></tr> |
| <tr> <td class="numLine"> 676</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 677</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * new Subject.Builder().sessionId(sessionId).buildSubject();</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 678</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 679</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>Although simple in concept, this method provides very powerful functionality previously absent in almost</span></pre></td></tr> |
| <tr> <td class="numLine"> 680</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * all Java environments:</b></span></pre></td></tr> |
| <tr> <td class="numLine"> 681</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 682</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The ability to reference a {@code Subject} and their server-side session</span></pre></td></tr> |
| <tr> <td class="numLine"> 683</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <em>across clients of different mediums</em> such as web applications, Java applets,</span></pre></td></tr> |
| <tr> <td class="numLine"> 684</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * standalone C# clients over XML-RPC and/or SOAP, and many others. This is a <em>huge</em></span></pre></td></tr> |
| <tr> <td class="numLine"> 685</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * benefit in heterogeneous enterprise applications.</span></pre></td></tr> |
| <tr> <td class="numLine"> 686</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 687</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * To maintain session integrity across client mediums, the {@code sessionId} <b>must</b> be transmitted</span></pre></td></tr> |
| <tr> <td class="numLine"> 688</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to all client mediums securely (e.g. over SSL) to prevent man-in-the-middle attacks. This</span></pre></td></tr> |
| <tr> <td class="numLine"> 689</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * is nothing new - all web applications are susceptible to the same problem when transmitting</span></pre></td></tr> |
| <tr> <td class="numLine"> 690</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code Cookie}s or when using URL rewriting. As long as the</span></pre></td></tr> |
| <tr> <td class="numLine"> 691</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code sessionId} is transmitted securely, session integrity can be maintained.</span></pre></td></tr> |
| <tr> <td class="numLine"> 692</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 693</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param sessionId the id of the session that backs the desired Subject being acquired.</span></pre></td></tr> |
| <tr> <td class="numLine"> 694</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this {@code Builder} instance for method chaining.</span></pre></td></tr> |
| <tr> <td class="numLine"> 695</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 696</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder sessionId(Serializable sessionId) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 697</td> <td class="nbHitsUncovered"><a title="Line 697: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 697: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (sessionId != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 698</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.setSessionId(sessionId);</span></pre></td></tr> |
| <tr> <td class="numLine"> 699</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 700</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 701</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 702</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 703</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 704</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures the {@code Subject} being built will reflect the specified host name or IP as its originating</span></pre></td></tr> |
| <tr> <td class="numLine"> 705</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * location.</span></pre></td></tr> |
| <tr> <td class="numLine"> 706</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 707</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param host the host name or IP address to use as the {@code Subject}'s originating location.</span></pre></td></tr> |
| <tr> <td class="numLine"> 708</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this {@code Builder} instance for method chaining.</span></pre></td></tr> |
| <tr> <td class="numLine"> 709</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 710</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder host(String host) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 711</td> <td class="nbHitsUncovered"><a title="Line 711: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 711: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (StringUtils.hasText(host)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 712</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.setHost(host);</span></pre></td></tr> |
| <tr> <td class="numLine"> 713</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 714</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 715</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 716</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 717</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 718</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures the {@code Subject} being built will use the specified {@link Session} instance. Note that it is</span></pre></td></tr> |
| <tr> <td class="numLine"> 719</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * more common to use the {@link #sessionId sessionId} builder method rather than having to construct a</span></pre></td></tr> |
| <tr> <td class="numLine"> 720</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code Session} instance for this method.</span></pre></td></tr> |
| <tr> <td class="numLine"> 721</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 722</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param session the session to use as the {@code Subject}'s {@link Session}</span></pre></td></tr> |
| <tr> <td class="numLine"> 723</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this {@code Builder} instance for method chaining.</span></pre></td></tr> |
| <tr> <td class="numLine"> 724</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 725</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder session(Session session) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 726</td> <td class="nbHitsUncovered"><a title="Line 726: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 726: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (session != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 727</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.setSession(session);</span></pre></td></tr> |
| <tr> <td class="numLine"> 728</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 729</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 730</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 731</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 732</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 733</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures the {@code Subject} being built will reflect the specified principals (aka identity).</span></pre></td></tr> |
| <tr> <td class="numLine"> 734</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 735</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * For example, if your application's unique identifier for users is a {@code String} username, and you wanted</span></pre></td></tr> |
| <tr> <td class="numLine"> 736</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to create a {@code Subject} instance that reflected a user whose username is</span></pre></td></tr> |
| <tr> <td class="numLine"> 737</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * '{@code jsmith}', and you knew the Realm that could acquire {@code jsmith}'s principals based on the username</span></pre></td></tr> |
| <tr> <td class="numLine"> 738</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * was named &quot;{@code myRealm}&quot;, you might create the '{@code jsmith} {@code Subject} instance this</span></pre></td></tr> |
| <tr> <td class="numLine"> 739</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * way:</span></pre></td></tr> |
| <tr> <td class="numLine"> 740</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 741</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * PrincipalCollection identity = new {@link org.apache.shiro.subject.SimplePrincipalCollection#SimplePrincipalCollection(Object, String) SimplePrincipalCollection}(&quot;jsmith&quot;, &quot;myRealm&quot;);</span></pre></td></tr> |
| <tr> <td class="numLine"> 742</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Subject jsmith = new Subject.Builder().principals(identity).buildSubject();</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 743</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 744</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Similarly, if your application's unique identifier for users is a {@code long} value (such as might be used</span></pre></td></tr> |
| <tr> <td class="numLine"> 745</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * as a primary key in a relational database) and you were using a {@code JDBC}</span></pre></td></tr> |
| <tr> <td class="numLine"> 746</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code Realm} named, (unimaginatively) &quot;jdbcRealm&quot;, you might create the Subject</span></pre></td></tr> |
| <tr> <td class="numLine"> 747</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * instance this way:</span></pre></td></tr> |
| <tr> <td class="numLine"> 748</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 749</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * long userId = //get user ID from somewhere</span></pre></td></tr> |
| <tr> <td class="numLine"> 750</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * PrincipalCollection userIdentity = new {@link org.apache.shiro.subject.SimplePrincipalCollection#SimplePrincipalCollection(Object, String) SimplePrincipalCollection}(<em>userId</em>, &quot;jdbcRealm&quot;);</span></pre></td></tr> |
| <tr> <td class="numLine"> 751</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Subject user = new Subject.Builder().principals(identity).buildSubject();</pre></span></pre></td></tr> |
| <tr> <td class="numLine"> 752</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 753</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param principals the principals to use as the {@code Subject}'s identity.</span></pre></td></tr> |
| <tr> <td class="numLine"> 754</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this {@code Builder} instance for method chaining.</span></pre></td></tr> |
| <tr> <td class="numLine"> 755</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 756</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder principals(PrincipalCollection principals) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 757</td> <td class="nbHitsUncovered"><a title="Line 757: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 757: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (!CollectionUtils.isEmpty(principals)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 758</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.setPrincipals(principals);</span></pre></td></tr> |
| <tr> <td class="numLine"> 759</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 760</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 761</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 762</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 763</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 764</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Configures whether or not the created Subject instance can create a new {@code Session} if one does not</span></pre></td></tr> |
| <tr> <td class="numLine"> 765</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * already exist. If set to {@code false}, any application calls to</span></pre></td></tr> |
| <tr> <td class="numLine"> 766</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code subject.getSession()} or {@code subject.getSession(true))} will result in a SessionException.</span></pre></td></tr> |
| <tr> <td class="numLine"> 767</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 768</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This setting is {@code true} by default, as most applications find value in sessions.</span></pre></td></tr> |
| <tr> <td class="numLine"> 769</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 770</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param enabled whether or not the created Subject instance can create a new {@code Session} if one does not</span></pre></td></tr> |
| <tr> <td class="numLine"> 771</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * already exist.</span></pre></td></tr> |
| <tr> <td class="numLine"> 772</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this {@code Builder} instance for method chaining.</span></pre></td></tr> |
| <tr> <td class="numLine"> 773</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 1.2</span></pre></td></tr> |
| <tr> <td class="numLine"> 774</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 775</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder sessionCreationEnabled(<span class="keyword">boolean</span> enabled) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 776</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.setSessionCreationEnabled(enabled);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 777</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 778</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 779</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 780</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 781</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures the {@code Subject} being built will be considered</span></pre></td></tr> |
| <tr> <td class="numLine"> 782</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.subject.Subject#isAuthenticated() authenticated}. Per the</span></pre></td></tr> |
| <tr> <td class="numLine"> 783</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.subject.Subject#isAuthenticated() isAuthenticated()} JavaDoc, be careful</span></pre></td></tr> |
| <tr> <td class="numLine"> 784</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * when specifying {@code true} - you should know what you are doing and have a good reason for ignoring Shiro's</span></pre></td></tr> |
| <tr> <td class="numLine"> 785</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * default authentication state mechanisms.</span></pre></td></tr> |
| <tr> <td class="numLine"> 786</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 787</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param authenticated whether or not the built {@code Subject} will be considered authenticated.</span></pre></td></tr> |
| <tr> <td class="numLine"> 788</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this {@code Builder} instance for method chaining.</span></pre></td></tr> |
| <tr> <td class="numLine"> 789</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see org.apache.shiro.subject.Subject#isAuthenticated()</span></pre></td></tr> |
| <tr> <td class="numLine"> 790</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 791</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder authenticated(<span class="keyword">boolean</span> authenticated) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 792</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.setAuthenticated(authenticated);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 793</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 794</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 795</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 796</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 797</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Allows custom attributes to be added to the underlying context {@code Map} used to construct the</span></pre></td></tr> |
| <tr> <td class="numLine"> 798</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link Subject} instance.</span></pre></td></tr> |
| <tr> <td class="numLine"> 799</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 800</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * A {@code null} key throws an {@link IllegalArgumentException}. A {@code null} value effectively removes</span></pre></td></tr> |
| <tr> <td class="numLine"> 801</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * any previously stored attribute under the given key from the context map.</span></pre></td></tr> |
| <tr> <td class="numLine"> 802</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 803</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>*NOTE*:</b> This method is only useful when configuring Shiro with a custom {@link SubjectFactory}</span></pre></td></tr> |
| <tr> <td class="numLine"> 804</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * implementation. This method allows end-users to append additional data to the context map which the</span></pre></td></tr> |
| <tr> <td class="numLine"> 805</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code SubjectFactory} implementation can use when building custom Subject instances. As such, this method</span></pre></td></tr> |
| <tr> <td class="numLine"> 806</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * is only useful when a custom {@code SubjectFactory} implementation has been configured.</span></pre></td></tr> |
| <tr> <td class="numLine"> 807</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 808</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param attributeKey the key under which the corresponding value will be stored in the context {@code Map}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 809</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param attributeValue the value to store in the context map under the specified {@code attributeKey}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 810</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return this {@code Builder} instance for method chaining.</span></pre></td></tr> |
| <tr> <td class="numLine"> 811</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws IllegalArgumentException if the {@code attributeKey} is {@code null}.</span></pre></td></tr> |
| <tr> <td class="numLine"> 812</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see SubjectFactory#createSubject(SubjectContext)</span></pre></td></tr> |
| <tr> <td class="numLine"> 813</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 814</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Builder contextAttribute(String attributeKey, Object attributeValue) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 815</td> <td class="nbHitsUncovered"><a title="Line 815: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 815: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (attributeKey == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 816</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> String msg = <span class="string">"Subject context map key cannot be null."</span>;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 817</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(msg);</span></pre></td></tr> |
| <tr> <td class="numLine"> 818</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 819</td> <td class="nbHitsUncovered"><a title="Line 819: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 819: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (attributeValue == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 820</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.remove(attributeKey);</span></pre></td></tr> |
| <tr> <td class="numLine"> 821</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 822</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.subjectContext.put(attributeKey, attributeValue);</span></pre></td></tr> |
| <tr> <td class="numLine"> 823</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 824</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 825</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 826</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 827</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 828</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Creates and returns a new {@code Subject} instance reflecting the cumulative state acquired by the</span></pre></td></tr> |
| <tr> <td class="numLine"> 829</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * other methods in this class.</span></pre></td></tr> |
| <tr> <td class="numLine"> 830</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 831</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This {@code Builder} instance will still retain the underlying state after this method is called - it</span></pre></td></tr> |
| <tr> <td class="numLine"> 832</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * will not clear it; repeated calls to this method will return multiple {@link Subject} instances, all</span></pre></td></tr> |
| <tr> <td class="numLine"> 833</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * reflecting the exact same state. If a new (different) {@code Subject} is to be constructed, a new</span></pre></td></tr> |
| <tr> <td class="numLine"> 834</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@code Builder} instance must be created.</span></pre></td></tr> |
| <tr> <td class="numLine"> 835</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p/></span></pre></td></tr> |
| <tr> <td class="numLine"> 836</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <b>Note</b> that the returned {@code Subject} instance is <b>not</b> automatically bound to the application</span></pre></td></tr> |
| <tr> <td class="numLine"> 837</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (thread) for further use. That is,</span></pre></td></tr> |
| <tr> <td class="numLine"> 838</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * {@link org.apache.shiro.SecurityUtils SecurityUtils}.{@link org.apache.shiro.SecurityUtils#getSubject() getSubject()}</span></pre></td></tr> |
| <tr> <td class="numLine"> 839</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * will not automatically return the same instance as what is returned by the builder. It is up to the</span></pre></td></tr> |
| <tr> <td class="numLine"> 840</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * framework developer to bind the returned {@code Subject} for continued use if desired.</span></pre></td></tr> |
| <tr> <td class="numLine"> 841</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 842</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a new {@code Subject} instance reflecting the cumulative state acquired by the</span></pre></td></tr> |
| <tr> <td class="numLine"> 843</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * other methods in this class.</span></pre></td></tr> |
| <tr> <td class="numLine"> 844</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 845</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Subject buildSubject() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 846</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.securityManager.createSubject(<span class="keyword">this</span>.subjectContext);</pre></td></tr> |
| <tr> <td class="numLine"> 847</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 848</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 849</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 850</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| </table> |
| |
| <div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 5/25/16 11:31 PM.</div> |
| </body> |
| </html> |