Example usage for org.aspectj.lang.reflect ConstructorSignature getParameterNames

List of usage examples for org.aspectj.lang.reflect ConstructorSignature getParameterNames

Introduction

In this page you can find the example usage for org.aspectj.lang.reflect ConstructorSignature getParameterNames.

Prototype

String[] getParameterNames();

Source Link

Usage

From source file:net.sf.oval.guard.ParameterNameResolverAspectJImpl.java

License:Open Source License

private void determineParamterNames(final Class<?> clazz)
        throws IllegalArgumentException, IllegalAccessException {
    assert clazz != null;

    for (final Field field : clazz.getDeclaredFields()) {
        // search for static fields of type JoinPoint.StaticPart
        if (ReflectionUtils.isStatic(field) && field.getType() == JoinPoint.StaticPart.class) {
            // access the StaticPart object
            field.setAccessible(true);//from w w w  . j  a v a  2 s  .co m
            final JoinPoint.StaticPart staticPart = (JoinPoint.StaticPart) field.get(null);
            if (staticPart == null) {
                break;
            }

            if (staticPart.getSignature() instanceof ConstructorSignature) {
                final ConstructorSignature sig = (ConstructorSignature) staticPart.getSignature();
                final String[] parameterNames = sig.getParameterNames();

                final Constructor<?> constr = sig.getConstructor();

                if (parameterNames.length > 0) {
                    parameterNamesCache.put(constr, parameterNames);
                }
            } else if (staticPart.getSignature() instanceof MethodSignature) {
                final MethodSignature sig = (MethodSignature) staticPart.getSignature();
                final String[] parameterNames = sig.getParameterNames();

                final Method method = sig.getMethod();

                if (parameterNames.length > 0) {
                    parameterNamesCache.put(method, parameterNames);
                }
            }
        }
    }
}