开发者

AspectJ JoinPoint question

I am currently using JoinPoint to capture the parameters passed to service methods at runtime. Though JoinPoint helps me retrieve the parameter values, I see that it doesn't provide any good API to retrieve the names of the parameters, para开发者_C百科meter types, individual parameter values when the parameter passed is an array etc.

Here's an example:

public void doIt(String user, Attribute[] attr, Integer[] i, boolean bool, List<Attribute> list){.....}

For the above method, when I use JoinPoint.getArgs(), i see a garbage value for the parameter which is an array or a collection. If the parameter is an array or a collection, how can I verify if they are one of those and how can I traverse them to retrieve individual values?

Any suggestions ? Thanks


This should work:

MethodSignature signature = (MethodSignature)joinPoint.getSignature();
String[] parameterNames = signature.getParameterNames();
Object[] parameterValues = joinPoint.getArgs();

The parameterNames should match what you have passed in.

Update 1: You are probably compiling with debugging symbols turned off -(explicitly passing in javac -g:none, or through flags in maven/ant). With debugging symbols off, names will not be available and will replaced with args1 etc by the compiler. Try with a compilation with debug symbols not explicitly turned off.


AspectJ pointcut

public pointcut pointcutName():
        execution(* ClassName.method(..));

Getting Parameter names of the method

before():pointcutName(){
String[] paramNames = ((CodeSignature) thisJoinPointStaticPart
                .getSignature()).getParameterNames();
 for(String paramName:paramNames){
            System.out.println(paramName);
        }
}

Getting Parameter Values:

before():pointcutName(){
Object[] paramValues = thisJoinPoint.getArgs();

for (Object object:paramValues){
        System.out.println(object.toString);
        }
}

Getting Method Return Value:

after() returning(Object objectReturn) :pointcutName(){
    System.out.println(objectReturn);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜