[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