You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2011/08/10 02:51:25 UTC

svn commit: r1155987 - in /tapestry/tapestry5/trunk/plastic/src/test: groovy/org/apache/tapestry5/plastic/MethodAdviceTests.groovy java/testsubjects/FieldConduitAdvisedMethodComplexCase.java

Author: hlship
Date: Wed Aug 10 00:51:25 2011
New Revision: 1155987

URL: http://svn.apache.org/viewvc?rev=1155987&view=rev
Log:
Add another test to try and replicate the issue ProQuest has been seeing

Added:
    tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/FieldConduitAdvisedMethodComplexCase.java
Modified:
    tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/MethodAdviceTests.groovy

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=1155987&r1=1155986&r2=1155987&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 Aug 10 00:51:25 2011
@@ -221,7 +221,6 @@ class MethodAdviceTests extends Abstract
 
             pc.getMethodsWithAnnotation(MethodAnnotation.class).each({ m ->
                 m.addAdvice(justProceed)
-                m.addAdvice(justProceed)
             })
 
             pc.getFieldsWithAnnotation(FieldAnnotation.class).each({ f ->
@@ -241,4 +240,42 @@ class MethodAdviceTests extends Abstract
 
         1 * container.magic() >> "via context and mock"
     }
+
+    def "method advice on method that accesses a field with a conduit (more complex structure)"()
+    {
+        MagicContainer container = Mock()
+
+        FieldConduit fc = [get: { instance, context ->
+
+            return context.get(MagicContainer.class)
+
+        }, set: { instance, context -> }] as FieldConduit
+
+        MethodAdvice justProceed = { inv -> inv.proceed() } as MethodAdvice
+
+        def mgr = createMgr({ PlasticClass pc ->
+
+            pc.getMethodsWithAnnotation(MethodAnnotation.class).each({ m ->
+                m.addAdvice(justProceed)
+            })
+
+            pc.getFieldsWithAnnotation(FieldAnnotation.class).each({ f ->
+                f.setConduit(fc)
+            })
+        } as PlasticClassTransformer)
+
+        if (false) { enableBytecodeDebugging(mgr) }
+
+        def o = mgr.getClassInstantiator("testsubjects.FieldConduitAdvisedMethodComplexCase").with(MagicContainer.class, container).newInstance()
+
+        when:
+
+        o.magic == "via context"
+
+        then:
+
+        1 * container.magic() >> "via context"
+
+    }
+
 }

Added: tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/FieldConduitAdvisedMethodComplexCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/FieldConduitAdvisedMethodComplexCase.java?rev=1155987&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/FieldConduitAdvisedMethodComplexCase.java (added)
+++ tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/FieldConduitAdvisedMethodComplexCase.java Wed Aug 10 00:51:25 2011
@@ -0,0 +1,18 @@
+package testsubjects;
+
+import testannotations.FieldAnnotation;
+import testannotations.MethodAnnotation;
+import testinterfaces.MagicContainer;
+
+
+public class FieldConduitAdvisedMethodComplexCase
+{
+    @FieldAnnotation
+    private MagicContainer container;
+
+    @MethodAnnotation
+    public String getMagic()
+    {
+        return container.magic();
+    }
+}