You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/04/06 21:10:47 UTC

svn commit: r1089576 - in /tapestry/tapestry5/trunk/plastic/src: main/java/org/apache/tapestry5/internal/plastic/ main/java/org/apache/tapestry5/plastic/ test/groovy/org/apache/tapestry5/plastic/

Author: hlship
Date: Wed Apr  6 19:10:46 2011
New Revision: 1089576

URL: http://svn.apache.org/viewvc?rev=1089576&view=rev
Log:
TAP5-853: Add getMethodName() to MethodInvocation interface

Modified:
    tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/AbstractMethodInvocation.java
    tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/MethodInvocationBundle.java
    tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
    tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/MethodInvocation.java
    tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/MethodAdviceTests.groovy

Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/AbstractMethodInvocation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/AbstractMethodInvocation.java?rev=1089576&r1=1089575&r2=1089576&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/AbstractMethodInvocation.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/AbstractMethodInvocation.java Wed Apr  6 19:10:46 2011
@@ -84,5 +84,10 @@ public abstract class AbstractMethodInvo
         return this;
     }
 
+    public String getMethodName()
+    {
+        return bundle.methodDescription.methodName;
+    }
+
     protected abstract void proceedToAdvisedMethod();
 }

Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/MethodInvocationBundle.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/MethodInvocationBundle.java?rev=1089576&r1=1089575&r2=1089576&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/MethodInvocationBundle.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/MethodInvocationBundle.java Wed Apr  6 19:10:46 2011
@@ -15,16 +15,20 @@
 package org.apache.tapestry5.internal.plastic;
 
 import org.apache.tapestry5.plastic.MethodAdvice;
+import org.apache.tapestry5.plastic.MethodDescription;
 
 /**
  * Bundles together the fixed (same for all instances) information needed by a {@link MethodInvocationBundle}.
  */
 public class MethodInvocationBundle
 {
+    public final MethodDescription methodDescription;
+
     public final MethodAdvice[] advice;
 
-    public MethodInvocationBundle(MethodAdvice[] advice)
+    public MethodInvocationBundle(MethodDescription methodDescription, MethodAdvice[] advice)
     {
+        this.methodDescription = methodDescription;
         this.advice = advice;
     }
 }

Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java?rev=1089576&r1=1089575&r2=1089576&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java Wed Apr  6 19:10:46 2011
@@ -1207,10 +1207,11 @@ public class PlasticClassImpl extends Lo
         {
             pool.realize(invocationClassNode);
 
-            String fieldName = String.format("methodinvocationbundle_%s_%s", description.methodName, PlasticUtils.nextUID());
+            String fieldName = String.format("methodinvocationbundle_%s_%s", description.methodName,
+                    PlasticUtils.nextUID());
 
             MethodAdvice[] adviceArray = advice.toArray(new MethodAdvice[advice.size()]);
-            MethodInvocationBundle bundle = new MethodInvocationBundle(adviceArray);
+            MethodInvocationBundle bundle = new MethodInvocationBundle(description, adviceArray);
 
             classNode.visitField(ACC_PRIVATE | ACC_FINAL, fieldName, nameCache.toDesc(constructorTypes[2]), null, null);
             initializeFieldFromStaticContext(fieldName, constructorTypes[2], bundle);

Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/MethodInvocation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/MethodInvocation.java?rev=1089576&r1=1089575&r2=1089576&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/MethodInvocation.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/MethodInvocation.java Wed Apr  6 19:10:46 2011
@@ -76,4 +76,7 @@ public interface MethodInvocation extend
      * @return this method invocation, for a fluent API
      */
     MethodInvocation setCheckedException(Exception exception);
+
+    /** Returns the name of the advised method. */
+    String getMethodName();
 }

Modified: tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/MethodAdviceTests.groovy
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/MethodAdviceTests.groovy?rev=1089576&r1=1089575&r2=1089576&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/MethodAdviceTests.groovy (original)
+++ tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/MethodAdviceTests.groovy Wed Apr  6 19:10:46 2011
@@ -14,7 +14,10 @@ class MethodAdviceTests extends Abstract
 
             findMethod(pc, "aSingleMethod").addAdvice ({
                 didInvoke = true
-                it.proceed()
+                
+                assert it.methodName == "aSingleMethod"
+                
+                it.proceed()                
             } as MethodAdvice)
         } as PlasticClassTransformer)