Author: dashorst
Date: Tue Apr 26 12:24:45 2011
New Revision: 1096739
URL: http://svn.apache.org/viewvc?rev=1096739&view=rev
Log:
No more calling of requestcyclelistener#onScheduleHandler with null handler
Issue: WICKET-3646
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.html
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java?rev=1096739&r1=1096738&r2=1096739&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
Tue Apr 26 12:24:45 2011
@@ -668,7 +668,10 @@ public class RequestCycle implements IRe
{
// just delegating the call to {@link IRequestHandlerExecutor}
and invoking listeners
requestHandlerExecutor.schedule(handler);
- listeners.onRequestHandlerScheduled(handler);
+
+ // only forward calls to the listeners when handler is null
+ if (handler != null)
+ listeners.onRequestHandlerScheduled(handler);
}
/**
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java?rev=1096739&r1=1096738&r2=1096739&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
Tue Apr 26 12:24:45 2011
@@ -88,5 +88,11 @@ class MultiRequestCycleListenerCallOrder
callSequence.add(name + ".onException");
return null;
}
+
+ @Override
+ public String toString()
+ {
+ return "Listener " + name;
+ }
}
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.html?rev=1096739&r1=1096738&r2=1096739&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.html
Tue Apr 26 12:24:45 2011
@@ -3,5 +3,7 @@
<head>
</head>
<body>
+ <a href="#" wicket:id="link">Click me to start global
thermonuclear war</a>
+ <a href="#" wicket:id="ajax">Click me to start global
thermonuclear war with that new spanking ajax technology</a>
</body>
</html>
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.java?rev=1096739&r1=1096738&r2=1096739&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderPage.java
Tue Apr 26 12:24:45 2011
@@ -16,13 +16,40 @@
*/
package org.apache.wicket.request.cycle;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.link.Link;
-class MultiRequestCycleListenerCallOrderPage extends WebPage
+/**
+ */
+public class MultiRequestCycleListenerCallOrderPage extends WebPage
{
private static final long serialVersionUID = 1L;
+ /**
+ * Construct.
+ */
public MultiRequestCycleListenerCallOrderPage()
{
+ add(new Link<Void>("link")
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick()
+ {
+ }
+ });
+
+ add(new AjaxLink<Void>("ajax")
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ }
+ });
}
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java?rev=1096739&r1=1096738&r2=1096739&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java
Tue Apr 26 12:24:45 2011
@@ -17,9 +17,10 @@
package org.apache.wicket.request.cycle;
import static java.util.Arrays.asList;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Before;
@@ -35,30 +36,114 @@ public class MultiRequestCycleListenerCa
private MultiRequestCycleListenerCallOrderApplication application;
/**
- * setUp()
*/
@Before
public void setUp()
{
application = new
MultiRequestCycleListenerCallOrderApplication();
tester = new WicketTester(application);
+ application.callSequence.clear();
}
/**
- * callSequenceIsFirstInLastOut()
*/
@Test
- public void callSequenceIsFirstInLastOut()
+ public void bookmarkableCallSequenceIsFirstInLastOut()
+ {
+ // start and render the test page
+ tester.startPage(MultiRequestCycleListenerCallOrderPage.class);
+
+ // assert rendered page class
+
tester.assertRenderedPage(MultiRequestCycleListenerCallOrderPage.class);
+
+ List<String> primaryRequest = asList("first.onBeginRequest",
"second.onBeginRequest",
+ "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
+ "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach");
+ List<String> redirectRequest = asList("first.onBeginRequest",
"second.onBeginRequest",
+ "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
+ "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach");
+
+ List<String> expected = new ArrayList<String>();
+ expected.addAll(primaryRequest);
+ expected.addAll(redirectRequest);
+ assertEquals(expected.toString(),
application.callSequence.toString());
+ }
+
+ /**
+ */
+ @Test
+ public void sessionRelativePageRequestCallSequenceIsFirstInLastOut()
{
// start and render the test page
tester.startPage(new MultiRequestCycleListenerCallOrderPage());
// assert rendered page class
tester.assertRenderedPage(MultiRequestCycleListenerCallOrderPage.class);
- assertThat(
- application.callSequence,
- is(equalTo(asList("first.onBeginRequest",
"second.onBeginRequest",
- "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
- "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach"))));
+ List<String> primaryRequest = asList("first.onBeginRequest",
"second.onBeginRequest",
+ "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
+ "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach");
+ List<String> redirectRequest = asList("first.onBeginRequest",
"second.onBeginRequest",
+ "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
+ "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach");
+
+ List<String> expected = new ArrayList<String>();
+ expected.addAll(primaryRequest);
+ expected.addAll(redirectRequest);
+ assertEquals(expected.toString(),
application.callSequence.toString());
+ }
+
+ /**
+ */
+ @Test
+ public void linkListenerCallSequenceIsFirstInLastOut()
+ {
+ // start and render the test page
+ tester.startPage(new MultiRequestCycleListenerCallOrderPage());
+ // assert rendered page class
+
tester.assertRenderedPage(MultiRequestCycleListenerCallOrderPage.class);
+
+ application.callSequence.clear();
+
+ tester.clickLink("link");
+
+ List<String> primaryRequest = asList("first.onBeginRequest",
"second.onBeginRequest",
+ "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
+ "first.onRequestHandlerScheduled",
"second.onRequestHandlerScheduled",
+ "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach");
+ List<String> redirectRequest = asList("first.onBeginRequest",
"second.onBeginRequest",
+ "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
+ "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach");
+
+ List<String> expected = new ArrayList<String>();
+ expected.addAll(primaryRequest);
+ expected.addAll(redirectRequest);
+
+ assertEquals(expected.toString(),
application.callSequence.toString());
+ }
+
+ /**
+ */
+ @Test
+ public void ajaxlinkListenerCallSequenceIsFirstInLastOut()
+ {
+ // start and render the test page
+ tester.startPage(new MultiRequestCycleListenerCallOrderPage());
+ // assert rendered page class
+
tester.assertRenderedPage(MultiRequestCycleListenerCallOrderPage.class);
+
+ application.callSequence.clear();
+
+ tester.clickLink("ajax", true);
+
+ List<String> primaryRequest = asList("first.onBeginRequest",
"second.onBeginRequest",
+ "first.onRequestHandlerResolved",
"second.onRequestHandlerResolved",
+ "first.onRequestHandlerScheduled",
"second.onRequestHandlerScheduled",
+ "second.onEndRequest", "first.onEndRequest",
"second.onDetach", "first.onDetach");
+
+ // with ajax requests we don't expect a redirect
+ List<String> expected = new ArrayList<String>();
+ expected.addAll(primaryRequest);
+
+ assertEquals(expected.toString(),
application.callSequence.toString());
}
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java?rev=1096739&r1=1096738&r2=1096739&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
Tue Apr 26 12:24:45 2011
@@ -197,7 +197,7 @@ public class RequestCycleListenerTest ex
assertEquals(401, errorCode);
assertEquals(1, incrementingListener.exceptionResolutions);
- assertEquals(1, incrementingListener.schedules);
+ assertEquals(0, incrementingListener.schedules);
// two listeners that return a request handler should cause an
exception
Application.get().getRequestCycleListeners().add(new
ErrorCodeListener(401));