You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/10/31 14:29:00 UTC
svn commit: r590662 - in /wicket/trunk/jdk-1.4/wicket/src:
main/java/org/apache/wicket/ test/java/org/apache/wicket/stateless/
Author: jcompagner
Date: Wed Oct 31 06:28:59 2007
New Revision: 590662
URL: http://svn.apache.org/viewvc?rev=590662&view=rev
Log:
pages will remember there constructing page parameters and the request cycle uses that to generate the stateless links
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.html
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java?rev=590662&r1=590661&r2=590662&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java Wed Oct 31 06:28:59 2007
@@ -218,6 +218,9 @@
/** Version manager for this page */
private IPageVersionManager versionManager;
+ /** The page parameters object hat constructed this page */
+ private PageParameters parameters;
+
/**
* Constructor.
*/
@@ -276,7 +279,8 @@
}
/**
- * Constructor.
+ * The {@link PageParameters} parameter will be stored in this page and then those parameters
+ * will be used to create stateless links to this bookmarkable page.
*
* @param parameters
* externally passed parameters
@@ -285,7 +289,19 @@
protected Page(final PageParameters parameters)
{
super(null);
+ this.parameters = parameters;
init();
+ }
+
+ /**
+ * The {@link PageParameters} object that was used to construct this page. This will be used in
+ * creating stateless/bookmarkable links to this page
+ *
+ * @return
+ */
+ public PageParameters getPageParameters()
+ {
+ return parameters;
}
/**
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java?rev=590662&r1=590661&r2=590662&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java Wed Oct 31 06:28:59 2007
@@ -824,8 +824,11 @@
if (listener != IRedirectListener.INTERFACE && component.isStateless() &&
page.isBookmarkable())
{
+ PageParameters pageParameters = page.getPageParameters();
+ if (pageParameters == null)
+ pageParameters = new PageParameters();
target = new BookmarkableListenerInterfaceRequestTarget(page.getPageMapName(), page
- .getClass(), new PageParameters(), component, listener);
+ .getClass(), pageParameters, component, listener);
}
else
{
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.html
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.html?rev=590662&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.html (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.html Wed Oct 31 06:28:59 2007
@@ -0,0 +1,5 @@
+<html>
+<body>
+<a href="#" wicket:id="link">test</a>
+</body>
+</html>
\ No newline at end of file
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java?rev=590662&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams.java Wed Oct 31 06:28:59 2007
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.stateless;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.link.StatelessLink;
+
+/**
+ * @author jcompagner
+ */
+public class StatelessComponentPageWithParams extends WebPage
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param params
+ */
+ public StatelessComponentPageWithParams(PageParameters params)
+ {
+ super(params);
+ add(new StatelessLink("link")
+ {
+ private static final long serialVersionUID = 1L;
+
+ public void onClick()
+ {
+ if (getPageParameters().size() == 2)
+ {
+ throw new WicketRuntimeException("wanted exception");
+ }
+ }
+ });
+
+ }
+}
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html?rev=590662&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html Wed Oct 31 06:28:59 2007
@@ -0,0 +1,5 @@
+<html>
+<body>
+<a href="stateless/testValue1/testValue2/wicket:interface/%3A0%3Alink%3A%3AILinkListener%3A%3A/" wicket:id="link">test</a>
+</body>
+</html>
\ No newline at end of file
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html?rev=590662&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html Wed Oct 31 06:28:59 2007
@@ -0,0 +1,5 @@
+<html>
+<body>
+<a href="stateless/testParam1/testValue1/testParam2/testValue2/wicket:interface/%3A0%3Alink%3A%3AILinkListener%3A%3A/" wicket:id="link">test</a>
+</body>
+</html>
\ No newline at end of file
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html?rev=590662&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html Wed Oct 31 06:28:59 2007
@@ -0,0 +1,5 @@
+<html>
+<body>
+<a href="?wicket:bookmarkablePage=%3Aorg.apache.wicket.stateless.StatelessComponentPageWithParams&testParam1=testValue1&testParam2=testValue2&wicket:interface=%3A0%3Alink%3A%3AILinkListener%3A%3A" wicket:id="link">test</a>
+</body>
+</html>
\ No newline at end of file
Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java?rev=590662&r1=590661&r2=590662&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/stateless/StatelessComponentTest.java Wed Oct 31 06:28:59 2007
@@ -16,7 +16,9 @@
*/
package org.apache.wicket.stateless;
+import org.apache.wicket.PageParameters;
import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.request.target.coding.IndexedParamUrlCodingStrategy;
/**
* @author jcompagner
@@ -83,4 +85,91 @@
}
}
+ /**
+ * @throws Exception
+ */
+ public void testStatelessComponentPageWithParams() throws Exception
+ {
+ PageParameters params = new PageParameters();
+ params.put("testParam1", "testValue1");
+ params.put("testParam2", "testValue2");
+
+ executeTest(StatelessComponentPageWithParams.class, params,
+ "StatelessComponentPageWithParams_result.html");
+
+ tester.setupRequestAndResponse();
+ tester
+ .getServletRequest()
+ .setURL(
+ "/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication?wicket:bookmarkablePage=:org.apache.wicket.stateless.StatelessComponentPageWithParams&testParam1=testValue1&testParam2=testValue2&wicket:interface=:0:link::ILinkListener::");
+ try
+ {
+ tester.processRequestCycle();
+ assertTrue(false);
+ }
+ catch (Exception e)
+ {
+ assertEquals("wanted exception", e.getMessage());
+ }
+
+ }
+
+ /**
+ * @throws Exception
+ */
+ public void testStatelessComponentPageWithParamsWithMount() throws Exception
+ {
+ PageParameters params = new PageParameters();
+ params.put("testParam1", "testValue1");
+ params.put("testParam2", "testValue2");
+ tester.getApplication().mountBookmarkablePage("/stateless",
+ StatelessComponentPageWithParams.class);
+ // test is always the home page. it doesn't work then
+ executeTest(StatelessComponentPageWithParams.class, params,
+ "StatelessComponentPageWithParams_mount_result.html");
+ tester.setupRequestAndResponse();
+ tester
+ .getServletRequest()
+ .setURL(
+ "/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication/stateless/testParam1/testValue1/testParam2/testValue2/wicket:interface/%3A0%3Alink%3A%3AILinkListener%3A%3A/");
+ try
+ {
+ tester.processRequestCycle();
+ fail("An exception should have been thrown for this request!");
+ }
+ catch (Exception e)
+ {
+ assertEquals("wanted exception", e.getMessage());
+ }
+ }
+
+ /**
+ * @throws Exception
+ */
+ public void testStatelessComponentPageWithParamsWithIndexMount() throws Exception
+ {
+ PageParameters params = new PageParameters();
+ params.put("0", "testValue1");
+ params.put("1", "testValue2");
+ tester.getApplication().mount(
+ new IndexedParamUrlCodingStrategy("/stateless",
+ StatelessComponentPageWithParams.class));
+ // test is always the home page. it doesn't work then
+ executeTest(StatelessComponentPageWithParams.class, params,
+ "StatelessComponentPageWithParams_indexed_mount_result.html");
+ tester.setupRequestAndResponse();
+ tester
+ .getServletRequest()
+ .setURL(
+ "/WicketTester$DummyWebApplication/WicketTester$DummyWebApplication/stateless/testValue1/testValue2/wicket:interface/%3A0%3Alink%3A%3AILinkListener%3A%3A/");
+ try
+ {
+ tester.processRequestCycle();
+ fail("An exception should have been thrown for this request!");
+ }
+ catch (Exception e)
+ {
+ assertEquals("wanted exception", e.getMessage());
+ }
+ }
}