You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2009/02/22 14:14:29 UTC
svn commit: r746670 - in /wicket/trunk/wicket/src:
main/java/org/apache/wicket/ main/java/org/apache/wicket/util/tester/
test/java/org/apache/wicket/ajax/ test/java/org/apache/wicket/protocol/http/
Author: jdonnerstag
Date: Sun Feb 22 13:14:28 2009
New Revision: 746670
URL: http://svn.apache.org/viewvc?rev=746670&view=rev
Log:
fixed WICKET-2114: execute ajax behavior fails if Button is used to submit form.
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/RequestCycle.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestErrorPage.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.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=746670&r1=746669&r2=746670&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 Feb 22 13:14:28 2009
@@ -538,7 +538,10 @@
checkReuse();
// set it as the current target, on the top of the stack
- requestTargets.push(target);
+ if (target != null)
+ {
+ requestTargets.push(target);
+ }
// set start step
currentStep = PROCESS_EVENTS;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=746670&r1=746669&r2=746670&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Sun Feb 22 13:14:28 2009
@@ -42,6 +42,7 @@
import org.apache.wicket.feedback.FeedbackMessages;
import org.apache.wicket.feedback.IFeedbackMessageFilter;
import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.CheckGroup;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
@@ -738,8 +739,7 @@
String failMessage = "No form submit behavior found on the submit link. Strange!!";
notNull(failMessage, ajaxFormSubmitBehavior);
- setupRequestAndResponse(true);
- WebRequestCycle requestCycle = createRequestCycle();
+ WebRequestCycle requestCycle = setupRequestAndResponse(true);
submitAjaxFormSubmitBehavior(ajaxFormSubmitBehavior);
@@ -1136,7 +1136,6 @@
if (behavior instanceof AjaxEventBehavior)
{
AjaxEventBehavior tmp = (AjaxEventBehavior)behavior;
-
if (event.equals(tmp.getEvent()))
{
ajaxEventBehavior = tmp;
@@ -1149,10 +1148,10 @@
failMessage = "No AjaxEventBehavior found on component: " + component.getId() +
" which matches the event: " + event;
notNull(failMessage, ajaxEventBehavior);
- WebRequestCycle requestCycle = resolveRequestCycle();
- // when the requestcycle is not created via setupRequestAndResponse(true), it can happen
- // that the request is not an ajax request -> we have to set the header manually
+ // when the requestcycle is not created via setupRequestAndResponse(true), than create a new
+ // one
+ WebRequestCycle requestCycle = resolveRequestCycle();
if (!requestCycle.getWebRequest().isAjax())
{
throw new IllegalStateException(
@@ -1166,6 +1165,7 @@
submitAjaxFormSubmitBehavior(ajaxFormSubmitBehavior);
}
+ // process the event
ajaxEventBehavior.onRequest();
// process the request target
@@ -1174,7 +1174,7 @@
/**
*
- * @return
+ * @return WebRequestCycle
*/
protected WebRequestCycle resolveRequestCycle()
{
@@ -1273,17 +1273,15 @@
{
if (formComponent.isVisible())
{
- // !(formComponent instanceof Button) &&
if (!(formComponent instanceof RadioGroup) &&
- !(formComponent instanceof CheckGroup))
+ !(formComponent instanceof CheckGroup) &&
+ !(formComponent.getClass().isAssignableFrom(Button.class)))
{
String name = formComponent.getInputName();
String value = formComponent.getValue();
- // Set request parameter with the field value, but do not
- // modify an existing
- // request parameter explicitly set using
- // FormTester.setValue()
+ // Set request parameter with the field value, but do not modify an existing
+ // request parameter explicitly set using FormTester.setValue()
if (getServletRequest().getParameterMap().get(name) == null)
{
getServletRequest().setParameter(name, value);
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java?rev=746670&r1=746669&r2=746670&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java Sun Feb 22 13:14:28 2009
@@ -544,7 +544,6 @@
public void assertResultPage(final Class<?> clazz, final String filename) throws Exception
{
String document = getServletResponse().getDocument();
- setupRequestAndResponse();
DiffUtil.validatePage(document, clazz, filename, true);
}
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderTest.java?rev=746670&r1=746669&r2=746670&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderTest.java Sun Feb 22 13:14:28 2009
@@ -17,12 +17,17 @@
package org.apache.wicket.ajax;
import org.apache.wicket.WicketTestCase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author jcompagner
*/
public class DomReadyOrderTest extends WicketTestCase
{
+ /** log. */
+ private static final Logger log = LoggerFactory.getLogger(DomReadyOrderTest.class);
+
/**
* @throws Exception
*/
@@ -31,7 +36,49 @@
tester.processRequestCycle(DomReadyOrderPage.class);
tester.assertResultPage(DomReadyOrderPage.class, "DomReadyOrderPage_expected.html");
+ tester.clickLink("test", true);
+ tester.assertResultPage(DomReadyOrderPage.class, "DomReadyOrderPage_ajax_expected.html");
+ }
+
+ /**
+ * @throws Exception
+ */
+ public void testDomReadyOrder2() throws Exception
+ {
+ tester.processRequestCycle(DomReadyOrderPage.class);
+ tester.assertResultPage(DomReadyOrderPage.class, "DomReadyOrderPage_expected.html");
+
tester.executeAjaxEvent("test", "onclick");
tester.assertResultPage(DomReadyOrderPage.class, "DomReadyOrderPage_ajax_expected.html");
}
+
+ /**
+ *
+ */
+ public void testAjaxSubmitWhileAnotherButtonIsNotVisible()
+ {
+ // start and render the test page
+ tester.startPage(HomePage.class);
+ // assert rendered page class
+ tester.assertRenderedPage(HomePage.class);
+ // assert rendered label component
+ tester.assertLabel("message",
+ "If you see this message wicket is properly configured and running");
+
+ // assert rendered row element
+ tester.assertLabel("form:listViewContainer:listView:0:label", "0");
+
+ // add a row, execute ajax
+ tester.executeAjaxEvent("form:addButton", "onclick");
+
+ // assert rendered page class
+ tester.assertRenderedPage(HomePage.class);
+
+ String doc = tester.getServletResponse().getDocument();
+ log.error("'" + doc + "'");
+
+ // assert rendered row elements
+ tester.assertLabel("form:listViewContainer:listView:0:label", "0");
+ tester.assertLabel("form:listViewContainer:listView:1:label", "1");
+ }
}
Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.html?rev=746670&view=auto
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.html (added)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.html Sun Feb 22 13:14:28 2009
@@ -0,0 +1,26 @@
+<html>
+ <head>
+ <title>Wicket Quickstart Archetype Homepage</title>
+ </head>
+ <body>
+ <strong>Wicket Quickstart Archetype Homepage</strong>
+ <br/><br/>
+ <span wicket:id="message">message will be here</span>
+
+ <form wicket:id="form">
+ <input wicket:id="textfield"/>
+ <input type="submit" wicket:id="submit"/>
+
+ <div wicket:id="listViewContainer">
+ <wicket:container wicket:id="listView">
+ <label wicket:id="label"/><br/>
+ </wicket:container>
+ </div>
+
+ <a href="#" wicket:id="addButton">Click me to add a row</a>
+
+ </form>
+
+ </body>
+</html>
+
Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.java?rev=746670&view=auto
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.java (added)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/HomePage.java Sun Feb 22 13:14:28 2009
@@ -0,0 +1,115 @@
+/*
+ * 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.ajax;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.AbstractReadOnlyModel;
+import org.apache.wicket.model.Model;
+
+/**
+ * Homepage
+ */
+public class HomePage extends WebPage
+{
+ private static final long serialVersionUID = 1L;
+
+ int rows = 1;
+
+ /**
+ */
+ public HomePage()
+ {
+ this(true, 0);
+ }
+
+ /**
+ * @param enableInputField
+ * @param newPageId
+ */
+ @SuppressWarnings("serial")
+ public HomePage(boolean enableInputField, int newPageId)
+ {
+ // Add the simplest type of label
+ add(new Label("message",
+ "If you see this message wicket is properly configured and running"));
+
+ Form<Void> form = new Form<Void>("form")
+ {
+ @Override
+ protected void onSubmit()
+ {
+ if (!continueToOriginalDestination())
+ {
+ setResponsePage(HomePage.class);
+ }
+ }
+ };
+ add(form);
+ form.add(new TextField<String>("textfield", new Model<String>()));
+ form.add(new Button("submit"));
+
+ final WebMarkupContainer listViewContainer = new WebMarkupContainer("listViewContainer");
+ form.add(listViewContainer);
+ listViewContainer.setOutputMarkupId(true);
+
+ final ListView<Object> listView;
+ listViewContainer.add(listView = new ListView<Object>("listView",
+ new AbstractReadOnlyModel<List<Object>>()
+ {
+ @Override
+ public List<Object> getObject()
+ {
+ List<Object> objects = new LinkedList<Object>();
+ for (int i = 0; i < rows; i++)
+ {
+ objects.add(new Object());
+ }
+
+ return objects;
+ }
+ })
+ {
+ @Override
+ protected void populateItem(ListItem<Object> item)
+ {
+ item.add(new Label("label", Integer.toString(item.getIndex())));
+ }
+ });
+
+ form.add(new AjaxFallbackButton("addButton", form)
+ {
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form)
+ {
+ rows++;
+ listView.removeAll();
+ target.addComponent(listViewContainer);
+ }
+ }.setDefaultFormProcessing(false));
+ }
+}
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestErrorPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestErrorPage.java?rev=746670&r1=746669&r2=746670&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestErrorPage.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/TestErrorPage.java Sun Feb 22 13:14:28 2009
@@ -34,8 +34,7 @@
*/
public TestErrorPage()
{
-
- add(new AjaxLink("link")
+ add(new AjaxLink<String>("link")
{
private static final long serialVersionUID = 1L;
@@ -57,5 +56,4 @@
}
});
}
-
}
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java?rev=746670&r1=746669&r2=746670&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java Sun Feb 22 13:14:28 2009
@@ -114,7 +114,6 @@
}
tester.startPage(TestErrorPage.class);
- link = (AjaxLink)tester.getComponentFromLastRenderedPage("link");
try
{