Author: jdonnerstag
Date: Sun Apr 26 14:01:54 2009
New Revision: 768707
URL: http://svn.apache.org/viewvc?rev=768707&view=rev
Log:
I reverted the change and updated the test case. From the test case it is
obvious that the URL generated is not sufficient for stateless pages. More over
there seem structural weaknesses in how URLs are generated and used, besides
some inconsistencies.
Issue: WICKET-2204
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/IndexParamWithStatelessIFrameTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/TestPageWithIFrame.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java?rev=768707&r1=768706&r2=768707&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java Sun
Apr 26 14:01:54 2009
@@ -120,7 +120,9 @@
* <p>
* <table>
* <tr>
- * <th align = "left">Class</th> <th align = "left">Interface</th> <th
align="left">Purpose</th>
+ * <th align = "left">Class</th>
+ * <th align = "left">Interface</th>
+ * <th align="left">Purpose</th>
* </tr>
* <tr>
* <td>Form</td>
@@ -890,8 +892,7 @@
// Get Page holding component and mark it as stateful.
final Page page = component.getPage();
final IRequestTarget target;
- if ((listener != IRedirectListener.INTERFACE) &&
- (listener != IResourceListener.INTERFACE) &&
component.isStateless() &&
+ if ((listener != IRedirectListener.INTERFACE) &&
component.isStateless() &&
page.isBookmarkable() && page.getStatelessHint())
{
PageParameters pageParameters =
page.getPageParameters();
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/IndexParamWithStatelessIFrameTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/IndexParamWithStatelessIFrameTest.java?rev=768707&r1=768706&r2=768707&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/IndexParamWithStatelessIFrameTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/IndexParamWithStatelessIFrameTest.java
Sun Apr 26 14:01:54 2009
@@ -18,6 +18,7 @@
import org.apache.wicket.PageParameters;
import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.protocol.http.WebRequestCycle;
/**
* @author jcompagner
@@ -27,15 +28,53 @@
/**
* @throws Exception
*/
- public void
testIndexedUrlMountedPageWithComponentThatUsesUrlForResourceListener()
+ public void
testIndexedUrlMountedPageWithComponentThatUsesUrlForResourceListener1()
throws Exception
{
+ execTest(true);
+ fail("test");
+ }
+
+ /**
+ * @throws Exception
+ */
+ public void
testIndexedUrlMountedPageWithComponentThatUsesUrlForResourceListener2()
+ throws Exception
+ {
+ execTest(false);
+ }
+
+ /**
+ * @param stateless
+ * @throws Exception
+ */
+ public void execTest(boolean stateless) throws Exception
+ {
tester.getApplication().mount(
new IndexedParamUrlCodingStrategy("/test",
TestPageWithIFrame.class));
TestPageWithIFrame test = new TestPageWithIFrame(new
PageParameters("0=foo,1=bar"));
+ test.setStatelessHint(stateless);
tester.startPage(test);
tester.assertRenderedPage(TestPageWithIFrame.class);
tester.assertNoErrorMessage();
-
tester.assertContains("src=\"test/wicket:interface/:0:frame::IResourceListener::\"");
+ String doc = tester.getServletResponse().getDocument();
+ if (stateless == true)
+ {
+
tester.assertContains("src=\"test/wicket:interface/:0:frame::IResourceListener::\"");
+ }
+ else
+ {
+
tester.assertContains("src=\"\\?wicket:interface=:0:frame::IResourceListener::\"");
+ }
+
+ // TODO the URL generated doesn't work for stateless pages. The
page information is missing
+ if (stateless == false)
+ {
+ WebRequestCycle cycle =
tester.setupRequestAndResponse();
+ tester.getServletRequest()
+
.setURL("test/wicket:interface/:0:frame::IResourceListener::");
+ tester.processRequestCycle(cycle);
+ assertEquals(test.resourceContent,
TestPageWithIFrame.resourceText);
+ }
}
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/TestPageWithIFrame.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/TestPageWithIFrame.java?rev=768707&r1=768706&r2=768707&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/TestPageWithIFrame.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/target/coding/TestPageWithIFrame.java
Sun Apr 26 14:01:54 2009
@@ -30,7 +30,11 @@
private static final Logger log =
LoggerFactory.getLogger(TestPageWithIFrame.class);
- static class TestFrame extends WebMarkupContainer implements
IResourceListener
+ public static final String resourceText = "foobar - do nada nothing
njet";
+
+ public String resourceContent;
+
+ class TestFrame extends WebMarkupContainer implements IResourceListener
{
private static final long serialVersionUID = 1L;
@@ -49,7 +53,8 @@
public void onResourceRequested()
{
- log.info("foobar - do nada nothing njet");
+ resourceContent = resourceText;
+ log.info(resourceContent);
}
}