<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">/*</a>
<span class="sourceLineNo">002</span><a id="line.2"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">003</span><a id="line.3"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">004</span><a id="line.4"> * distributed with this work for additional information</a>
<span class="sourceLineNo">005</span><a id="line.5"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">006</span><a id="line.6"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">007</span><a id="line.7"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">008</span><a id="line.8"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">009</span><a id="line.9"> *</a>
<span class="sourceLineNo">010</span><a id="line.10"> *     http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">011</span><a id="line.11"> *</a>
<span class="sourceLineNo">012</span><a id="line.12"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">013</span><a id="line.13"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">014</span><a id="line.14"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">015</span><a id="line.15"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">016</span><a id="line.16"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">017</span><a id="line.17"> * under the License.</a>
<span class="sourceLineNo">018</span><a id="line.18"> */</a>
<span class="sourceLineNo">019</span><a id="line.19">package org.apache.shiro.authz.aop;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import java.util.ArrayList;</a>
<span class="sourceLineNo">022</span><a id="line.22">import java.util.Collection;</a>
<span class="sourceLineNo">023</span><a id="line.23"></a>
<span class="sourceLineNo">024</span><a id="line.24">import org.apache.shiro.aop.MethodInvocation;</a>
<span class="sourceLineNo">025</span><a id="line.25">import org.apache.shiro.authz.AuthorizationException;</a>
<span class="sourceLineNo">026</span><a id="line.26"></a>
<span class="sourceLineNo">027</span><a id="line.27">/**</a>
<span class="sourceLineNo">028</span><a id="line.28"> * An &lt;tt&gt;AnnotationsAuthorizingMethodInterceptor&lt;/tt&gt; is a MethodInterceptor that asserts a given method is authorized</a>
<span class="sourceLineNo">029</span><a id="line.29"> * to execute based on one or more configured &lt;tt&gt;AuthorizingAnnotationMethodInterceptor&lt;/tt&gt;s.</a>
<span class="sourceLineNo">030</span><a id="line.30"> *</a>
<span class="sourceLineNo">031</span><a id="line.31"> * &lt;p&gt;This allows multiple annotations on a method to be processed before the method</a>
<span class="sourceLineNo">032</span><a id="line.32"> * executes, and if any of the &lt;tt&gt;AuthorizingAnnotationMethodInterceptor&lt;/tt&gt;s indicate that the method should not be</a>
<span class="sourceLineNo">033</span><a id="line.33"> * executed, an &lt;tt&gt;AuthorizationException&lt;/tt&gt; will be thrown, otherwise the method will be invoked as expected.</a>
<span class="sourceLineNo">034</span><a id="line.34"> *</a>
<span class="sourceLineNo">035</span><a id="line.35"> * &lt;p&gt;It is essentially a convenience mechanism to allow multiple annotations to be processed in a single method</a>
<span class="sourceLineNo">036</span><a id="line.36"> * interceptor.</a>
<span class="sourceLineNo">037</span><a id="line.37"> *</a>
<span class="sourceLineNo">038</span><a id="line.38"> * @since 0.2</a>
<span class="sourceLineNo">039</span><a id="line.39"> */</a>
<span class="sourceLineNo">040</span><a id="line.40">public abstract class AnnotationsAuthorizingMethodInterceptor extends AuthorizingMethodInterceptor {</a>
<span class="sourceLineNo">041</span><a id="line.41"></a>
<span class="sourceLineNo">042</span><a id="line.42">    /**</a>
<span class="sourceLineNo">043</span><a id="line.43">     * The method interceptors to execute for the annotated method.</a>
<span class="sourceLineNo">044</span><a id="line.44">     */</a>
<span class="sourceLineNo">045</span><a id="line.45">    protected Collection&lt;AuthorizingAnnotationMethodInterceptor&gt; methodInterceptors;</a>
<span class="sourceLineNo">046</span><a id="line.46"></a>
<span class="sourceLineNo">047</span><a id="line.47">    /**</a>
<span class="sourceLineNo">048</span><a id="line.48">     * Default no-argument constructor that defaults the </a>
<span class="sourceLineNo">049</span><a id="line.49">     * {@link #methodInterceptors methodInterceptors} attribute to contain two interceptors by default - the</a>
<span class="sourceLineNo">050</span><a id="line.50">     * {@link RoleAnnotationMethodInterceptor RoleAnnotationMethodInterceptor} and the</a>
<span class="sourceLineNo">051</span><a id="line.51">     * {@link PermissionAnnotationMethodInterceptor PermissionAnnotationMethodInterceptor} to</a>
<span class="sourceLineNo">052</span><a id="line.52">     * support role and permission annotations.</a>
<span class="sourceLineNo">053</span><a id="line.53">     */</a>
<span class="sourceLineNo">054</span><a id="line.54">    public AnnotationsAuthorizingMethodInterceptor() {</a>
<span class="sourceLineNo">055</span><a id="line.55">        methodInterceptors = new ArrayList&lt;AuthorizingAnnotationMethodInterceptor&gt;(5);</a>
<span class="sourceLineNo">056</span><a id="line.56">        methodInterceptors.add(new RoleAnnotationMethodInterceptor());</a>
<span class="sourceLineNo">057</span><a id="line.57">        methodInterceptors.add(new PermissionAnnotationMethodInterceptor());</a>
<span class="sourceLineNo">058</span><a id="line.58">        methodInterceptors.add(new AuthenticatedAnnotationMethodInterceptor());</a>
<span class="sourceLineNo">059</span><a id="line.59">        methodInterceptors.add(new UserAnnotationMethodInterceptor());</a>
<span class="sourceLineNo">060</span><a id="line.60">        methodInterceptors.add(new GuestAnnotationMethodInterceptor());</a>
<span class="sourceLineNo">061</span><a id="line.61">    }</a>
<span class="sourceLineNo">062</span><a id="line.62"></a>
<span class="sourceLineNo">063</span><a id="line.63">    /**</a>
<span class="sourceLineNo">064</span><a id="line.64">     * Returns the method interceptors to execute for the annotated method.</a>
<span class="sourceLineNo">065</span><a id="line.65">     * &lt;p/&gt;</a>
<span class="sourceLineNo">066</span><a id="line.66">     * Unless overridden by the {@link #setMethodInterceptors(java.util.Collection)} method, the default collection</a>
<span class="sourceLineNo">067</span><a id="line.67">     * contains a</a>
<span class="sourceLineNo">068</span><a id="line.68">     * {@link RoleAnnotationMethodInterceptor RoleAnnotationMethodInterceptor} and a</a>
<span class="sourceLineNo">069</span><a id="line.69">     * {@link PermissionAnnotationMethodInterceptor PermissionAnnotationMethodInterceptor} to</a>
<span class="sourceLineNo">070</span><a id="line.70">     * support role and permission annotations automatically.</a>
<span class="sourceLineNo">071</span><a id="line.71">     * @return the method interceptors to execute for the annotated method.</a>
<span class="sourceLineNo">072</span><a id="line.72">     */</a>
<span class="sourceLineNo">073</span><a id="line.73">    public Collection&lt;AuthorizingAnnotationMethodInterceptor&gt; getMethodInterceptors() {</a>
<span class="sourceLineNo">074</span><a id="line.74">        return methodInterceptors;</a>
<span class="sourceLineNo">075</span><a id="line.75">    }</a>
<span class="sourceLineNo">076</span><a id="line.76"></a>
<span class="sourceLineNo">077</span><a id="line.77">    /**</a>
<span class="sourceLineNo">078</span><a id="line.78">     * Sets the method interceptors to execute for the annotated method.</a>
<span class="sourceLineNo">079</span><a id="line.79">     * @param methodInterceptors the method interceptors to execute for the annotated method.</a>
<span class="sourceLineNo">080</span><a id="line.80">     * @see #getMethodInterceptors()</a>
<span class="sourceLineNo">081</span><a id="line.81">     */</a>
<span class="sourceLineNo">082</span><a id="line.82">    public void setMethodInterceptors(Collection&lt;AuthorizingAnnotationMethodInterceptor&gt; methodInterceptors) {</a>
<span class="sourceLineNo">083</span><a id="line.83">        this.methodInterceptors = methodInterceptors;</a>
<span class="sourceLineNo">084</span><a id="line.84">    }</a>
<span class="sourceLineNo">085</span><a id="line.85"></a>
<span class="sourceLineNo">086</span><a id="line.86">    /**</a>
<span class="sourceLineNo">087</span><a id="line.87">     * Iterates over the internal {@link #getMethodInterceptors() methodInterceptors} collection, and for each one,</a>
<span class="sourceLineNo">088</span><a id="line.88">     * ensures that if the interceptor</a>
<span class="sourceLineNo">089</span><a id="line.89">     * {@link AuthorizingAnnotationMethodInterceptor#supports(org.apache.shiro.aop.MethodInvocation) supports}</a>
<span class="sourceLineNo">090</span><a id="line.90">     * the invocation, that the interceptor</a>
<span class="sourceLineNo">091</span><a id="line.91">     * {@link AuthorizingAnnotationMethodInterceptor#assertAuthorized(org.apache.shiro.aop.MethodInvocation) asserts}</a>
<span class="sourceLineNo">092</span><a id="line.92">     * that the invocation is authorized to proceed.</a>
<span class="sourceLineNo">093</span><a id="line.93">     */</a>
<span class="sourceLineNo">094</span><a id="line.94">    protected void assertAuthorized(MethodInvocation methodInvocation) throws AuthorizationException {</a>
<span class="sourceLineNo">095</span><a id="line.95">        //default implementation just ensures no deny votes are cast:</a>
<span class="sourceLineNo">096</span><a id="line.96">        Collection&lt;AuthorizingAnnotationMethodInterceptor&gt; aamis = getMethodInterceptors();</a>
<span class="sourceLineNo">097</span><a id="line.97">        if (aamis != null &amp;&amp; !aamis.isEmpty()) {</a>
<span class="sourceLineNo">098</span><a id="line.98">            for (AuthorizingAnnotationMethodInterceptor aami : aamis) {</a>
<span class="sourceLineNo">099</span><a id="line.99">                if (aami.supports(methodInvocation)) {</a>
<span class="sourceLineNo">100</span><a id="line.100">                    aami.assertAuthorized(methodInvocation);</a>
<span class="sourceLineNo">101</span><a id="line.101">                }</a>
<span class="sourceLineNo">102</span><a id="line.102">            }</a>
<span class="sourceLineNo">103</span><a id="line.103">        }</a>
<span class="sourceLineNo">104</span><a id="line.104">    }</a>
<span class="sourceLineNo">105</span><a id="line.105">}</a>




























































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