You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by ul...@apache.org on 2011/12/09 13:44:32 UTC

svn commit: r1212379 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/transform/ test/app1/ test/groovy/org/apache/tapestry5/integration/app1/ test/java/org/apache/tapestry5/integration/app1/pages/

Author: uli
Date: Fri Dec  9 12:44:31 2011
New Revision: 1212379

URL: http://svn.apache.org/viewvc?rev=1212379&view=rev
Log:
TAP5-1768 - @ActivationRequestParameter does not encode to be URL friendly

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
    tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java?rev=1212379&r1=1212378&r2=1212379&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java Fri Dec  9 12:44:31 2011
@@ -28,6 +28,7 @@ import org.apache.tapestry5.runtime.Comp
 import org.apache.tapestry5.runtime.ComponentEvent;
 import org.apache.tapestry5.services.ComponentEventHandler;
 import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.URLEncoder;
 import org.apache.tapestry5.services.ValueEncoderSource;
 import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
 import org.apache.tapestry5.services.transform.TransformationSupport;
@@ -49,12 +50,15 @@ public class ActivationRequestParameterW
 
     private final ValueEncoderSource valueEncoderSource;
 
+    private final URLEncoder urlEncoder;
+
     public ActivationRequestParameterWorker(Request request, ComponentClassCache classCache,
-                                            ValueEncoderSource valueEncoderSource)
+                                            ValueEncoderSource valueEncoderSource, URLEncoder urlEncoder)
     {
         this.request = request;
         this.classCache = classCache;
         this.valueEncoderSource = valueEncoderSource;
+        this.urlEncoder = urlEncoder;
     }
 
     public void transform(PlasticClass plasticClass, TransformationSupport support, MutableComponentModel model)
@@ -82,9 +86,9 @@ public class ActivationRequestParameterW
 
         String fieldName = String.format("%s.%s", field.getPlasticClass().getClassName(), field.getName());
 
-        setValueFromInitializeEventHandler(support, fieldName, handle, parameterName, encoder);
+        setValueFromInitializeEventHandler(support, fieldName, handle, parameterName, encoder, urlEncoder);
 
-        decorateLinks(support, fieldName, handle, parameterName, encoder);
+        decorateLinks(support, fieldName, handle, parameterName, encoder, urlEncoder);
 
         preallocateName(support, parameterName);
     }
@@ -109,7 +113,7 @@ public class ActivationRequestParameterW
 
     @SuppressWarnings("all")
     private void setValueFromInitializeEventHandler(TransformationSupport support, String fieldName, final FieldHandle handle,
-                                                    final String parameterName, final ValueEncoder encoder)
+                                                    final String parameterName, final ValueEncoder encoder, final URLEncoder urlEncoder)
     {
         ComponentEventHandler handler = new ComponentEventHandler()
         {
@@ -120,6 +124,9 @@ public class ActivationRequestParameterW
                 if (clientValue == null)
                     return;
 
+                // TAP5-1768: unescape encoded value
+                clientValue = urlEncoder.decode(clientValue);
+
                 Object value = encoder.toValue(clientValue);
 
                 handle.set(instance, value);
@@ -133,7 +140,7 @@ public class ActivationRequestParameterW
 
     @SuppressWarnings("all")
     private static void decorateLinks(TransformationSupport support, String fieldName, final FieldHandle handle,
-                                      final String parameterName, final ValueEncoder encoder)
+                                      final String parameterName, final ValueEncoder encoder, final URLEncoder urlEncoder)
     {
         ComponentEventHandler handler = new ComponentEventHandler()
         {
@@ -150,6 +157,9 @@ public class ActivationRequestParameterW
 
                 String clientValue = encoder.toClient(value);
 
+                // TAP5-1768: escape special characters
+                clientValue = urlEncoder.encode(clientValue);
+
                 link.addParameter(parameterName, clientValue);
             }
         };

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml?rev=1212379&r1=1212378&r2=1212379&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml Fri Dec  9 12:44:31 2011
@@ -21,6 +21,9 @@
       <t:actionlink t:id="setMessage">set message</t:actionlink>
     </li>
     <li>
+      <t:actionlink t:id="setSpecialMessage">set special message</t:actionlink>
+    </li>
+    <li>
       <t:actionlink t:id="reset">reset</t:actionlink>
     </li>
   </ul>

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy?rev=1212379&r1=1212378&r2=1212379&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy Fri Dec  9 12:44:31 2011
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.integration.app1;
 
-import org.apache.tapestry5.corelib.components.Submit;
-import org.apache.tapestry5.integration.TapestryCoreTestCase 
-import org.testng.annotations.Test 
+
+import org.apache.tapestry5.integration.TapestryCoreTestCase
+import org.testng.annotations.Test
 
 class ActivationRequestParameterTests extends TapestryCoreTestCase
 {
@@ -39,7 +39,16 @@ class ActivationRequestParameterTests ex
         
         assertText "click-count", "1"
         assertText "click-count-set", "true"
-        assertText "message", "Link clicked!"        
+        assertText "message", "Link clicked!"
+    }
+
+    @Test
+    void special_chars() {
+        openLinks "ActivationRequestParameter Annotation Demo"
+
+        clickAndWait "link=set special message"
+
+        assertText "message", "!#\$&'()*+,/:;=?@[]"
     }
     
     @Test

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java?rev=1212379&r1=1212378&r2=1212379&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java Fri Dec  9 12:44:31 2011
@@ -56,6 +56,11 @@ public class ActivationRequestParameterD
         message = "Link clicked!";
     }
 
+    void onActionFromSetSpecialMessage()
+    {
+        message = "!#$&'()*+,/:;=?@[]";
+    }
+
     void onActionFromReset()
     {
         clickCount = null;



Re: svn commit: r1212379 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/transform/ test/app1/ test/groovy/org/apache/tapestry5/integration/app1/ test/java/org/apache/tapestry5/integration/app1/pages/

Posted by Massimo Lusetti <ml...@gmail.com>.
On Fri, Dec 9, 2011 at 1:44 PM,  <ul...@apache.org> wrote:

> Author: uli
> Date: Fri Dec  9 12:44:31 2011
> New Revision: 1212379
>
> URL: http://svn.apache.org/viewvc?rev=1212379&view=rev
> Log:
> TAP5-1768 - @ActivationRequestParameter does not encode to be URL friendly

Would you mind backporting ot 5.3 branch ?

Cheers
-- 
Massimo
http://meridio.blogspot.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org