[jboss-cvs] JBossAS SVN: r60360 - projects/aop/trunk/aop/src/main/org/jboss/aop/instrument.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 6 20:58:48 EST 2007
Author: flavia.rainone at jboss.com
Date: 2007-02-06 20:58:47 -0500 (Tue, 06 Feb 2007)
New Revision: 60360
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
Log:
Code Refactoring
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-02-07 01:10:00 UTC (rev 60359)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-02-07 01:58:47 UTC (rev 60360)
@@ -1687,13 +1687,18 @@
if (args.length > 0)
{
final Class[] adviceParams = properties.getAdviceMethod().getParameterTypes();
- argsFound = appendParameters(code, args[0], adviceParams[0],
- isAround, properties, generator);
+ code.append("(");
+ code.append(ClassExpression.simpleType(adviceParams[0]));
+ code.append(")");
+ argsFound = appendParameter(code, args[0], adviceParams[0], properties,
+ generator);
for (int i = 1 ; i < args.length ; i++)
{
- code.append(", ");
- argsFound = appendParameters(code, args[i], adviceParams[i],
- isAround, properties, generator) || argsFound;
+ code.append(", (");
+ code.append(ClassExpression.simpleType(adviceParams[i]));
+ code.append(")");
+ argsFound = appendParameter(code, args[i], adviceParams[i],
+ properties, generator) || argsFound;
}
}
@@ -1701,14 +1706,10 @@
return argsFound;
}
- private final boolean appendParameters(StringBuffer code, final int arg,
- final Class adviceParam, boolean isAround,
- AdviceMethodProperties properties, JoinPointGenerator generator)
+ protected boolean appendParameter(StringBuffer code, final int arg,
+ final Class adviceParam, AdviceMethodProperties properties,
+ JoinPointGenerator generator)
{
- code.append("(");
- // In case of overloaded methods javassist sometimes seems to pick up the wrong method - use explicit casts to get hold of the parameters
- code.append(ClassExpression.simpleType(adviceParam));
- code.append(")");
switch(arg)
{
case AdviceMethodProperties.INVOCATION_ARG:
@@ -1728,10 +1729,6 @@
{
code.append("null");
}
- else if (isAround)
- {
- code.append(TARGET_FIELD);
- }
else
{
code.append('$');
@@ -1743,10 +1740,6 @@
{
code.append("null");
}
- else if (isAround)
- {
- code.append(CALLER_FIELD);
- }
else
{
code.append('$');
@@ -1754,31 +1747,95 @@
}
break;
case AdviceMethodProperties.ARGS_ARG:
- if (isAround)
- {
- code.append(GET_ARGUMENTS);
- }
- else
- {
- code.append(ARGUMENTS);
- }
+ code.append(ARGUMENTS);
// return true when args has been found; false otherwise
return true;
default:
- if (isAround)
- {
- code.append("this.arg");
- code.append(arg);
- }
- else
- {
- //The parameter array is 1-based, and the invokeJoinPoint method may also take the target and caller objects
- code.append("$");
- code.append(arg + generator.parameters.getFirstArgIndex());
- }
+ //The parameter array is 1-based, and the invokeJoinPoint method may also take the target and caller objects
+ code.append("$");
+ code.append(arg + generator.parameters.getFirstArgIndex());
}
return false;
}
+
+// private final boolean appendParameters(StringBuffer code, final int arg,
+// final Class adviceParam, boolean isAround,
+// AdviceMethodProperties properties, JoinPointGenerator generator)
+// {
+// code.append("(");
+// // In case of overloaded methods javassist sometimes seems to pick up the wrong method - use explicit casts to get hold of the parameters
+// code.append(ClassExpression.simpleType(adviceParam));
+// code.append(")");
+// switch(arg)
+// {
+// case AdviceMethodProperties.INVOCATION_ARG:
+// code.append("this");
+// break;
+// case AdviceMethodProperties.JOINPOINT_ARG:
+// code.append(INFO_FIELD);
+// break;
+// case AdviceMethodProperties.RETURN_ARG:
+// code.append(RETURN_VALUE);
+// break;
+// case AdviceMethodProperties.THROWABLE_ARG:
+// code.append(THROWABLE);
+// break;
+// case AdviceMethodProperties.TARGET_ARG:
+// if (!generator.parameters.hasTarget())
+// {
+// code.append("null");
+// }
+// else if (isAround)
+// {
+// code.append(TARGET_FIELD);
+// }
+// else
+// {
+// code.append('$');
+// code.append(generator.parameters.getTargetIndex());
+// }
+// break;
+// case AdviceMethodProperties.CALLER_ARG:
+// if (!generator.parameters.hasCaller())
+// {
+// code.append("null");
+// }
+// else if (isAround)
+// {
+// code.append(CALLER_FIELD);
+// }
+// else
+// {
+// code.append('$');
+// code.append(generator.parameters.getCallerIndex());
+// }
+// break;
+// case AdviceMethodProperties.ARGS_ARG:
+// if (isAround)
+// {
+// code.append(GET_ARGUMENTS);
+// }
+// else
+// {
+// code.append(ARGUMENTS);
+// }
+// // return true when args has been found; false otherwise
+// return true;
+// default:
+// if (isAround)
+// {
+// code.append("this.arg");
+// code.append(arg);
+// }
+// else
+// {
+// //The parameter array is 1-based, and the invokeJoinPoint method may also take the target and caller objects
+// code.append("$");
+// code.append(arg + generator.parameters.getFirstArgIndex());
+// }
+// }
+// return false;
+// }
}
private static class AroundAdviceCallStrategy extends AdviceCallStrategy
@@ -1884,6 +1941,40 @@
}
return result;
}
+
+ protected boolean appendParameter(StringBuffer code, final int arg,
+ final Class adviceParam, AdviceMethodProperties properties,
+ JoinPointGenerator generator)
+ {
+ switch(arg)
+ {
+ case AdviceMethodProperties.TARGET_ARG:
+ if (generator.parameters.hasTarget())
+ {
+ code.append(TARGET_FIELD);
+ return false;
+ }
+ break;
+ case AdviceMethodProperties.CALLER_ARG:
+ if (generator.parameters.hasCaller())
+ {
+ code.append(CALLER_FIELD);
+ return false;
+ }
+ break;
+ case AdviceMethodProperties.ARGS_ARG:
+ code.append(GET_ARGUMENTS);
+ // return true when args has been found; false otherwise
+ return true;
+ }
+ if (arg >= 0)
+ {
+ code.append("this.arg");
+ code.append(arg);
+ return false;
+ }
+ return super.appendParameter(code, arg, adviceParam, properties, generator);
+ }
}
private static class DefaultAdviceCallStrategy extends AdviceCallStrategy
More information about the jboss-cvs-commits
mailing list