View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.shiro.aop;
20  
21  /**
22   * A <tt>MethodInterceptor</tt> intercepts a <tt>MethodInvocation</tt> to perform before or after logic (aka 'advice').
23   *
24   * <p>Shiro's implementations of this interface mostly have to deal with ensuring a current Subject has the
25   * ability to execute the method before allowing it to continue.
26   *
27   * @since 0.2
28   */
29  public interface MethodInterceptor {
30  
31      /**
32       * Invokes the specified <code>MethodInvocation</code>, allowing implementations to perform pre/post/finally
33       * surrounding the actual invocation.
34       *
35       * @param methodInvocation the <code>MethodInvocation</code> to execute.
36       * @return the result of the invocation
37       * @throws Throwable if the method invocation throws a Throwable or if an error occurs in pre/post/finally advice.
38       */
39      Object invoke(MethodInvocation methodInvocation) throws Throwable;
40  
41  }