Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Re: How do I generate a method Signature programatically?

I found the answer myself:

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.runtime.reflect.Factory;

    private void enumeratePublicMethods(String className) {
        try {
            Class<? extends Object> clazz = Class.forName(className);
            for (Method m : clazz.getMethods()) {
                JoinPoint.StaticPart jpsp = Factory.makeEncSJP(m);
                String methodName = jpsp.getSignature().toLongString();
                unusedMethods.add(methodName);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace(System.err);
        }
    }

Olle Hallin
Senior Java Developer and Architect
olle.hallin@xxxxxxxx
www.crisp.se
http://www.linkedin.com/in/ollehallin



2010/5/10 Olle Hallin <olle.hallin@xxxxxx>
Hi,

I'm working on my DeadCodeDetector aspect in my spare time, and now it detects constructed but unused classes (by using a combination of staticinitialization and execution pointcuts).

Now I want to continue and make it detect unused public methods.

For this I intend to use reflection in the after class loading advice, and insert one string for each public method in a Set<String> unusedMethods, which later can be removed by the after public method execution advice.

So what I need is to transform a java.lang.reflect.Method to a org.aspectj.lang.Signature. How do I do that?

Olle Hallin
Senior Java Developer and Architect
olle.hallin@xxxxxxxx
www.crisp.se
http://www.linkedin.com/in/ollehallin



Back to the top