[jboss-cvs] JBossAS SVN: r63670 - projects/aop/trunk/aop/src/main/org/jboss/aop/instrument.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jun 27 07:35:47 EDT 2007
Author: kabir.khan at jboss.com
Date: 2007-06-27 07:35:47 -0400 (Wed, 27 Jun 2007)
New Revision: 63670
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
Log:
[JBAOP-431] Avoid excessive casting in generated invoke() and invokeNext() classes
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-06-27 10:17:12 UTC (rev 63669)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-06-27 11:35:47 UTC (rev 63670)
@@ -302,7 +302,6 @@
private Object instantiateClass(Class clazz, AdviceSetup[] aroundSetups, JoinPointInfo info) throws Exception
{
-// System.out.println("Creating instance of " + clazz + " for advisor " + info.getAdvisor().getClass().getName());
Constructor ctor = clazz.getConstructor(new Class[] {info.getClass()});
Object obj;
try
@@ -1622,29 +1621,24 @@
call.append(".");
call.append(setup.getAdviceName());
call.append("(");
-
-
+
final int[] args = properties.getArgs();
boolean argsFound = false;
if (args.length > 0)
{
final Class[] adviceParams = properties.getAdviceMethod().getParameterTypes();
- call.append("(");
- call.append(ClassExpression.simpleType(adviceParams[0]));
- call.append(")");
argsFound = appendParameter(beforeCall, call, args[0], adviceParams[0], properties,
generator);
for (int i = 1 ; i < args.length ; i++)
{
- call.append(", (");
- call.append(ClassExpression.simpleType(adviceParams[i]));
- call.append(")");
+ call.append(", ");
+
argsFound = appendParameter(beforeCall, call, args[i], adviceParams[i],
properties, generator) || argsFound;
}
}
- call.append(");");
+ call.append(");\n");
return argsFound;
}
@@ -1661,12 +1655,15 @@
call.append(INFO_FIELD);
break;
case AdviceMethodProperties.RETURN_ARG:
+ appendCast(call, adviceParam);
call.append(RETURN_VALUE);
break;
case AdviceMethodProperties.THROWABLE_ARG:
+ appendCast(call, adviceParam);
call.append(THROWABLE);
break;
case AdviceMethodProperties.TARGET_ARG:
+ appendCast(call, adviceParam);
if (!generator.parameters.hasTarget())
{
call.append("null");
@@ -1678,6 +1675,7 @@
}
break;
case AdviceMethodProperties.CALLER_ARG:
+ appendCast(call, adviceParam);
if (!generator.parameters.hasCaller())
{
call.append("null");
@@ -1696,6 +1694,8 @@
// return true when args has been found; false otherwise
return true;
default:
+ appendCast(call, adviceParam);
+
// make typed argument consistent, if that is the case
Set<Integer> inconsistentTypeArgs = generator.inconsistentTypeArgs.get();
int argIndex = arg + generator.parameters.getFirstArgIndex();
@@ -1712,6 +1712,13 @@
}
return false;
}
+
+ protected void appendCast(StringBuffer call, Class adviceParam)
+ {
+ call.append("(");
+ call.append(ClassExpression.simpleType(adviceParam));
+ call.append(")");
+ }
}
private static class AroundAdviceCallStrategy extends AdviceCallStrategy
@@ -1825,11 +1832,13 @@
final int arg, final Class adviceParam,
AdviceMethodProperties properties, JoinPointGenerator generator)
{
+
switch(arg)
{
case AdviceMethodProperties.TARGET_ARG:
if (generator.parameters.hasTarget())
{
+ appendCast(call, adviceParam);
call.append(TARGET_FIELD);
return false;
}
@@ -1837,6 +1846,7 @@
case AdviceMethodProperties.CALLER_ARG:
if (generator.parameters.hasCaller())
{
+ appendCast(call, adviceParam);
call.append(CALLER_FIELD);
return false;
}
More information about the jboss-cvs-commits
mailing list