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)