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);
                }
        }
 


Reply via email to