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