Author: thrantal
Date: Sun Sep 28 20:41:11 2008
New Revision: 699976
URL: http://svn.apache.org/viewvc?rev=699976&view=rev
Log:
WICKET-1582: Allowed surpassing the existing RequestCycle reuse in
executeAjaxEvent() as a cleaner workaround for the problem. See
http://www.nabble.com/WICKET-1582-blocked-by-WICKET-254-td19521561.html#a19521561
for discussion.
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/MockPageWithFormAndCheckGroup.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
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=699976&r1=699975&r2=699976&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 Sep 28 20:41:11 2008
@@ -1147,19 +1147,8 @@
failMessage = "No AjaxEventBehavior found on component: " +
component.getId() +
" which matches the event: " + event;
notNull(failMessage, ajaxEventBehavior);
+ WebRequestCycle requestCycle = resolveRequestCycle();
- // initialize the request only if needed to allow the user to
pass
- // request parameters, see
- // WICKET-254
- WebRequestCycle requestCycle;
- if (RequestCycle.get() == null)
- {
- requestCycle = setupRequestAndResponse(true);
- }
- else
- {
- requestCycle = (WebRequestCycle)RequestCycle.get();
- }
// 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
if (!requestCycle.getWebRequest().isAjax())
@@ -1184,6 +1173,23 @@
processRequestCycle(requestCycle);
}
+ protected WebRequestCycle resolveRequestCycle()
+ {
+ // initialize the request only if needed to allow the user to
pass
+ // request parameters, see
+ // WICKET-254
+ WebRequestCycle requestCycle;
+ if (RequestCycle.get() == null)
+ {
+ requestCycle = setupRequestAndResponse(true);
+ }
+ else
+ {
+ requestCycle = (WebRequestCycle)RequestCycle.get();
+ }
+ return requestCycle;
+ }
+
/**
* Retrieves a <code>TagTester</code> based on a
<code>wicket:id</code>. If more
* <code>Component</code>s exist with the same <code>wicket:id</code>
in the markup, only the
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/MockPageWithFormAndCheckGroup.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/MockPageWithFormAndCheckGroup.java?rev=699976&r1=699975&r2=699976&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/MockPageWithFormAndCheckGroup.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/MockPageWithFormAndCheckGroup.java
Sun Sep 28 20:41:11 2008
@@ -46,7 +46,7 @@
*/
public MockPageWithFormAndCheckGroup()
{
- Form<?> form = new Form("form");
+ Form<?> form = new Form<Void>("form");
add(form);
@@ -64,6 +64,7 @@
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form)
{
+ target.addComponent(this);
}
});
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java?rev=699976&r1=699975&r2=699976&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
Sun Sep 28 20:41:11 2008
@@ -20,11 +20,8 @@
import junit.framework.TestCase;
-import org.apache.wicket.Component;
-import org.apache.wicket.MockPageWithLink;
-import org.apache.wicket.MockPageWithOneComponent;
-import org.apache.wicket.Page;
-import org.apache.wicket.Session;
+import org.apache.wicket.*;
+import org.apache.wicket.protocol.http.WebRequestCycle;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -467,6 +464,20 @@
tester.clickLink("submitLink");
}
+ public void
testTesterCanBeOverridenToNotReuseExistingRequestCycleInExecuteAjaxEvent()
+ {
+ tester = new WicketTester(new MyMockApplication()) {
+ @Override
+ protected WebRequestCycle resolveRequestCycle()
+ {
+ return setupRequestAndResponse(true);
+ }
+ };
+ tester.startPage(MockPageWithFormAndCheckGroup.class);
+ tester.executeAjaxEvent("submitLink", "onclick");
+ tester.assertComponentOnAjaxResponse("submitLink");
+ }
+
/**
* Test that the executeAjaxEvent "submits" the form if the event is a
AjaxFormSubmitBehavior.
*/