Author: mlusetti
Date: Sun Dec 11 17:47:16 2011
New Revision: 1213031
URL: http://svn.apache.org/viewvc?rev=1213031&view=rev
Log:
TAP5-1768 - @ActivationRequestParameter does not encode to be URL friendly
(merge from trunk)
Modified:
tapestry/tapestry5/branches/5.3/ (props changed)
tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/services/DelegatingRequest.java
(props changed)
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java
Propchange: tapestry/tapestry5/branches/5.3/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Dec 11 17:47:16 2011
@@ -2,4 +2,4 @@
/tapestry/tapestry5/branches/hlship-5.0-perf:726734-728728
/tapestry/tapestry5/tags/releases/5.0.17:719745
/tapestry/tapestry5/tags/releases/hlship-5.0-perf:726733
-/tapestry/tapestry5/trunk:1211947-1212270
+/tapestry/tapestry5/trunk:1211947-1212379
Modified:
tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java?rev=1213031&r1=1213030&r2=1213031&view=diff
==============================================================================
---
tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
(original)
+++
tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
Sun Dec 11 17:47:16 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);
}
};
Propchange:
tapestry/tapestry5/branches/5.3/tapestry-core/src/main/java/org/apache/tapestry5/services/DelegatingRequest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Dec 11 17:47:16 2011
@@ -1 +1 @@
-/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DelegatingRequest.java:1211947-1212270
+/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/DelegatingRequest.java:1211947-1212379
Modified:
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.3/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml?rev=1213031&r1=1213030&r2=1213031&view=diff
==============================================================================
---
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
(original)
+++
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
Sun Dec 11 17:47:16 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/branches/5.3/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.3/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy?rev=1213031&r1=1213030&r2=1213031&view=diff
==============================================================================
---
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
(original)
+++
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
Sun Dec 11 17:47:16 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/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java?rev=1213031&r1=1213030&r2=1213031&view=diff
==============================================================================
---
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java
(original)
+++
tapestry/tapestry5/branches/5.3/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java
Sun Dec 11 17:47:16 2011
@@ -56,6 +56,11 @@ public class ActivationRequestParameterD
message = "Link clicked!";
}
+ void onActionFromSetSpecialMessage()
+ {
+ message = "!#$&'()*+,/:;=?@[]";
+ }
+
void onActionFromReset()
{
clickCount = null;