Coverage Report - org.apache.shiro.aspectj.BeforeAdviceMethodInvocationAdapter
 
Classes in this File Line Coverage Branch Coverage Complexity
BeforeAdviceMethodInvocationAdapter
66%
12/18
25%
1/4
1.833
 
 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.aspectj;
 20  
 
 21  
 import org.apache.shiro.aop.MethodInvocation;
 22  
 import org.aspectj.lang.JoinPoint;
 23  
 import org.aspectj.lang.reflect.AdviceSignature;
 24  
 import org.aspectj.lang.reflect.MethodSignature;
 25  
 
 26  
 import java.lang.reflect.Method;
 27  
 
 28  
 /**
 29  
  * Helper class that adapts an AspectJ {@link JoinPoint JoinPoint}.
 30  
  *
 31  
  * @since 1.0
 32  
  */
 33  
 public class BeforeAdviceMethodInvocationAdapter implements MethodInvocation {
 34  
 
 35  
     private Object _object;
 36  
     private Method _method;
 37  
     private Object[] _arguments;
 38  
 
 39  
     /**
 40  
      * Factory method that creates a new {@link BeforeAdviceMethodInvocationAdapter} instance
 41  
      * using the AspectJ {@link JoinPoint} provided. If the joint point passed in is not
 42  
      * a method joint point, this method throws an {@link IllegalArgumentException}.
 43  
      *
 44  
      * @param aJoinPoint The AspectJ {@link JoinPoint} to use to adapt the advice.
 45  
      * @return The created instance.
 46  
      * @throws IllegalArgumentException If the join point passed in does not involve a method call.
 47  
      */
 48  
     public static BeforeAdviceMethodInvocationAdapter createFrom(JoinPoint aJoinPoint) {
 49  18
         if (aJoinPoint.getSignature() instanceof MethodSignature) {
 50  36
             return new BeforeAdviceMethodInvocationAdapter(aJoinPoint.getThis(),
 51  18
                     ((MethodSignature) aJoinPoint.getSignature()).getMethod(),
 52  18
                     aJoinPoint.getArgs());
 53  
 
 54  0
         } else if (aJoinPoint.getSignature() instanceof AdviceSignature) {
 55  0
             return new BeforeAdviceMethodInvocationAdapter(aJoinPoint.getThis(),
 56  0
                     ((AdviceSignature) aJoinPoint.getSignature()).getAdvice(),
 57  0
                     aJoinPoint.getArgs());
 58  
 
 59  
         } else {
 60  0
             throw new IllegalArgumentException("The joint point signature is invalid: expected a MethodSignature or an AdviceSignature but was " + aJoinPoint.getSignature());
 61  
         }
 62  
     }
 63  
 
 64  
     /**
 65  
      * Creates a new {@link BeforeAdviceMethodInvocationAdapter} instance.
 66  
      *
 67  
      * @param aMethod       The method to invoke.
 68  
      * @param someArguments The arguments of the method invocation.
 69  
      */
 70  18
     public BeforeAdviceMethodInvocationAdapter(Object anObject, Method aMethod, Object[] someArguments) {
 71  18
         _object = anObject;
 72  18
         _method = aMethod;
 73  18
         _arguments = someArguments;
 74  18
     }
 75  
 
 76  
     /* (non-Javadoc)
 77  
     * @see org.apache.shiro.aop.MethodInvocation#getArguments()
 78  
     */
 79  
 
 80  
     public Object[] getArguments() {
 81  0
         return _arguments;
 82  
     }
 83  
 
 84  
     /* (non-Javadoc)
 85  
     * @see org.apache.shiro.aop.MethodInvocation#getMethod()
 86  
     */
 87  
 
 88  
     public Method getMethod() {
 89  101
         return _method;
 90  
     }
 91  
 
 92  
     /* (non-Javadoc)
 93  
     * @see org.apache.shiro.aop.MethodInvocation#proceed()
 94  
     */
 95  
 
 96  
     public Object proceed() throws Throwable {
 97  
         // Do nothing since this adapts a before advice
 98  10
         return null;
 99  
     }
 100  
 
 101  
     /**
 102  
      * @since 1.0
 103  
      */
 104  
     public Object getThis() {
 105  55
         return _object;
 106  
     }
 107  
 }