Clover coverage report - Acegi Security System for Spring - 1.0.0-RC1
Coverage timestamp: Mon Dec 5 2005 09:05:15 EST
file stats: LOC: 134   Methods: 4
NCLOC: 40   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
MethodInvocationUtils.java 0% 35.3% 25% 28%
coverage coverage
 1    /* Copyright 2004, 2005 Acegi Technology Pty Limited
 2    *
 3    * Licensed under the Apache License, Version 2.0 (the "License");
 4    * you may not use this file except in compliance with the License.
 5    * You may obtain a copy of the License at
 6    *
 7    * http://www.apache.org/licenses/LICENSE-2.0
 8    *
 9    * Unless required by applicable law or agreed to in writing, software
 10    * distributed under the License is distributed on an "AS IS" BASIS,
 11    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12    * See the License for the specific language governing permissions and
 13    * limitations under the License.
 14    */
 15   
 16    package org.acegisecurity.util;
 17   
 18    import org.aopalliance.intercept.MethodInvocation;
 19   
 20    import org.springframework.util.Assert;
 21   
 22    import java.lang.reflect.Method;
 23   
 24    import java.util.ArrayList;
 25    import java.util.List;
 26   
 27   
 28    /**
 29    * Static utility methods for creating <code>MethodInvocation</code>s usable
 30    * within Acegi Security.
 31    *
 32    * <p>
 33    * All methods of this class return a {@link
 34    * org.acegisecurity.util.SimpleMethodInvocation}.
 35    * </p>
 36    *
 37    * @author Ben Alex
 38    * @version $Id: MethodInvocationUtils.java,v 1.1 2005/11/25 04:17:24 benalex Exp $
 39    */
 40    public class MethodInvocationUtils {
 41    //~ Methods ================================================================
 42   
 43    /**
 44    * Generates a <code>MethodInvocation</code> for specified
 45    * <code>methodName</code> on the passed object.
 46    *
 47    * @param object the object that will be used to find the relevant
 48    * <code>Method</code>
 49    * @param methodName the name of the method to find
 50    *
 51    * @return a <code>MethodInvocation</code>, or <code>null</code> if there
 52    * was a problem
 53    */
 54  0 public static MethodInvocation create(Object object, String methodName) {
 55  0 return create(object, methodName, null);
 56    }
 57   
 58    /**
 59    * Generates a <code>MethodInvocation</code> for specified
 60    * <code>methodName</code> on the passed object, using the
 61    * <code>args</code> to locate the method.
 62    *
 63    * @param object the object that will be used to find the relevant
 64    * <code>Method</code>
 65    * @param methodName the name of the method to find
 66    * @param args arguments that are required as part of the method signature
 67    *
 68    * @return a <code>MethodInvocation</code>, or <code>null</code> if there
 69    * was a problem
 70    */
 71  0 public static MethodInvocation create(Object object, String methodName,
 72    Object[] args) {
 73  0 Assert.notNull(object, "Object required");
 74   
 75  0 Class[] classArgs = null;
 76   
 77  0 if (args != null) {
 78  0 List list = new ArrayList();
 79   
 80  0 for (int i = 0; i < args.length; i++) {
 81  0 list.add(args[i].getClass());
 82    }
 83   
 84  0 classArgs = (Class[]) list.toArray();
 85    }
 86   
 87  0 return createFromClass(object.getClass(), methodName, classArgs);
 88    }
 89   
 90    /**
 91    * Generates a <code>MethodInvocation</code> for specified
 92    * <code>methodName</code> on the passed class.
 93    *
 94    * @param clazz the class of object that will be used to find the relevant
 95    * <code>Method</code>
 96    * @param methodName the name of the method to find
 97    *
 98    * @return a <code>MethodInvocation</code>, or <code>null</code> if there
 99    * was a problem
 100    */
 101  0 public static MethodInvocation createFromClass(Class clazz,
 102    String methodName) {
 103  0 return createFromClass(clazz, methodName);
 104    }
 105   
 106    /**
 107    * Generates a <code>MethodInvocation</code> for specified
 108    * <code>methodName</code> on the passed class, using the
 109    * <code>args</code> to locate the method.
 110    *
 111    * @param clazz the class of object that will be used to find the relevant
 112    * <code>Method</code>
 113    * @param methodName the name of the method to find
 114    * @param args arguments that are required as part of the method signature
 115    *
 116    * @return a <code>MethodInvocation</code>, or <code>null</code> if there
 117    * was a problem
 118    */
 119  2 public static MethodInvocation createFromClass(Class clazz,
 120    String methodName, Class[] args) {
 121  2 Assert.notNull(clazz, "Class required");
 122  2 Assert.hasText(methodName, "MethodName required");
 123   
 124  2 Method method;
 125   
 126  2 try {
 127  2 method = clazz.getMethod(methodName, args);
 128    } catch (Exception e) {
 129  0 return null;
 130    }
 131   
 132  2 return new SimpleMethodInvocation(method, args);
 133    }
 134    }