You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2016/04/04 14:02:49 UTC
wicket git commit: WICKET-6129 moved test from
RequestHandlerStackTest to RequestCycleListenerTest
Repository: wicket
Updated Branches:
refs/heads/WICKET-6129-scheduled-handler-notification fa33fbb99 -> 39c0ba604
WICKET-6129 moved test from RequestHandlerStackTest to RequestCycleListenerTest
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/39c0ba60
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/39c0ba60
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/39c0ba60
Branch: refs/heads/WICKET-6129-scheduled-handler-notification
Commit: 39c0ba604ed8feba17203eef69f5658388b7a967
Parents: fa33fbb
Author: Sven Meier <sv...@apache.org>
Authored: Mon Apr 4 14:01:51 2016 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Mon Apr 4 14:01:51 2016 +0200
----------------------------------------------------------------------
.../request/cycle/RequestCycleListenerTest.java | 150 +++++---
.../request/cycle/RequestHandlerStackTest.java | 348 -------------------
.../wicket/request/RequestHandlerStack.java | 3 +-
3 files changed, 104 insertions(+), 397 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/39c0ba60/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
index 76a0389..d921d11 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
@@ -28,6 +28,7 @@ import org.apache.wicket.request.IRequestCycle;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.IRequestMapper;
import org.apache.wicket.request.Request;
+import org.apache.wicket.request.RequestHandlerStack.ReplaceHandlerException;
import org.apache.wicket.request.Response;
import org.apache.wicket.request.Url;
import org.apache.wicket.resource.DummyApplication;
@@ -71,7 +72,7 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
}
- private RequestCycle newRequestCycle(final boolean throwExceptionInRespond)
+ private RequestCycle newRequestCycle(final RuntimeException exception)
{
final Response originalResponse = newResponse();
Request request = new MockWebRequest(Url.parse("http://wicket.apache.org"));
@@ -80,9 +81,9 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
@Override
public void respond(IRequestCycle requestCycle)
{
- if (throwExceptionInRespond)
+ if (exception != null)
{
- throw new RuntimeException("testing purposes only");
+ throw exception;
}
responses++;
}
@@ -144,53 +145,94 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
IncrementingListener incrementingListener = new IncrementingListener();
Application.get().getRequestCycleListeners().add(incrementingListener);
- RequestCycle cycle = newRequestCycle(false);
+ RequestCycle cycle = newRequestCycle((RuntimeException)null);
- incrementingListener.assertValues(0, 0, 0, 0);
+ incrementingListener.assertValues(0, 0, 0, 0, 0, 0);
assertValues(0, 0, 0);
- /*
- * begins, ends, responses and detaches should increment by one because we have one listener
- *
- * exceptions should not increment because none are thrown
- */
cycle.processRequestAndDetach();
-
- incrementingListener.assertValues(1, 1, 0, 1);
+ // 0 exceptions mapped
+ incrementingListener.assertValues(1, 1, 1, 1, 0, 1);
+ // 0 exceptions mapped
assertValues(0, 1, 1);
// TEST WITH TWO LISTENERS
- cycle = newRequestCycle(false);
+ cycle = newRequestCycle((RuntimeException)null);
cycle.getListeners().add(incrementingListener);
- /*
- * we now have two listeners (app and cycle)
- *
- * begins and ends should increment by two (once for each listener)
- *
- * exceptions should not increment because none are thrown
- *
- * responses and detaches should increment by one
- */
cycle.processRequestAndDetach();
- incrementingListener.assertValues(3, 3, 0, 3);
- assertValues(0, 2, 2);
+ // 0 exceptions mapped, all other 2 due to two listeners
+ incrementingListener.assertValues(2, 2, 2, 2, 0, 2);
+ // 0 exceptions mapped
+ assertValues(0, 1, 1);
+
// TEST WITH TWO LISTENERS AND AN EXCEPTION DURING RESPONSE
- cycle = newRequestCycle(true);
+ cycle = newRequestCycle(new RuntimeException("testing purposes only"));
cycle.getListeners().add(incrementingListener);
- /*
- * begins and ends should increment by two (once for each listener)
- *
- * exceptions should increment by two (once for each listener)
- *
- * exceptionsMapped should increment by one
- *
- * responses should not increment because of the error
- *
- * detaches should increment by one
- */
cycle.processRequestAndDetach();
- incrementingListener.assertValues(5, 5, 2, 5);
- assertValues(1, 2, 3);
+ // 0 executed
+ incrementingListener.assertValues(2, 2, 2, 0, 2, 2);
+ // 1 exception mapped, 0 responded
+ assertValues(1, 0, 1);
+
+
+ // TEST A REPLACE EXCEPTION DURING RESPONSE
+ IRequestHandler replacement = new IRequestHandler()
+ {
+ @Override
+ public void respond(IRequestCycle requestCycle)
+ {
+ responses++;
+ }
+
+ @Override
+ public void detach(IRequestCycle requestCycle)
+ {
+ detaches++;
+ }
+ };
+ cycle = newRequestCycle(new ReplaceHandlerException(replacement, true));
+ cycle.scheduleRequestHandlerAfterCurrent(new IRequestHandler()
+ {
+ @Override
+ public void respond(IRequestCycle requestCycle)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void detach(IRequestCycle requestCycle)
+ {
+ throw new UnsupportedOperationException();
+ }
+ });
+ cycle.processRequestAndDetach();
+ // 2 resolved, 1 executed, 0 exception mapped
+ incrementingListener.assertValues(1, 1, 2, 1, 0, 1);
+ // 0 exception mapped, 1 responded, 2 detached
+ assertValues(0, 1, 2);
+
+
+ // TEST A REPLACE EXCEPTION DURING RESPONSE
+ cycle = newRequestCycle(new ReplaceHandlerException(replacement, false));
+ cycle.scheduleRequestHandlerAfterCurrent(new IRequestHandler()
+ {
+ @Override
+ public void respond(IRequestCycle requestCycle)
+ {
+ responses++;
+ }
+
+ @Override
+ public void detach(IRequestCycle requestCycle)
+ {
+ detaches++;
+ }
+ });
+ cycle.processRequestAndDetach();
+ // 2 resolved, 2 executed, 0 exception mapped
+ incrementingListener.assertValues(1, 1, 3, 2, 0, 1);
+ // 0 exception mapped, 2 responded, 3 detached
+ assertValues(0, 2, 3);
}
/** */
@@ -201,7 +243,7 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
Application.get().getRequestCycleListeners().add(incrementingListener);
Application.get().getRequestCycleListeners().add(new ErrorCodeListener(401));
- RequestCycle cycle = newRequestCycle(true);
+ RequestCycle cycle = newRequestCycle(new RuntimeException("testing purposes only"));
cycle.processRequestAndDetach();
assertEquals(401, errorCode);
@@ -217,7 +259,7 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
Application.get().getRequestCycleListeners().add(new ErrorCodeListener(401));
Application.get().getRequestCycleListeners().add(new ErrorCodeListener(402));
- RequestCycle cycle = newRequestCycle(true);
+ RequestCycle cycle = newRequestCycle(new RuntimeException("testing purposes only"));
cycle.processRequestAndDetach();
// the first handler returned is used to handle the exception
@@ -232,7 +274,7 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
{
// this test is a little flaky because it depends on the ordering of listeners which is not
// guaranteed
- RequestCycle cycle = newRequestCycle(false);
+ RequestCycle cycle = newRequestCycle((RuntimeException)null);
IncrementingListener incrementingListener = new IncrementingListener()
{
@Override
@@ -247,9 +289,8 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
cycle.getListeners().add(incrementingListener);
cycle.processRequestAndDetach();
- incrementingListener.assertValues(3, 3, 0, 3);
+ incrementingListener.assertValues(3, 3, 3, 3, 0, 3);
assertValues(0, 1, 1);
- assertEquals(3, incrementingListener.resolutions);
}
private void assertValues(int exceptionsMapped, int responses, int detaches)
@@ -257,6 +298,10 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
assertEquals(exceptionsMapped, this.exceptionsMapped);
assertEquals(responses, this.responses);
assertEquals(detaches, this.detaches);
+
+ this.exceptionsMapped = 0;
+ this.responses = 0;
+ this.detaches = 0;
}
private class ErrorCodeListener extends AbstractRequestCycleListener
@@ -291,8 +336,8 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
private class IncrementingListener implements IRequestCycleListener
{
- private int begins, ends, exceptions, detachesnotified, resolutions, exceptionResolutions,
- schedules, executions = 0;
+ private int begins, ends, exceptions, detachesnotified, resolved, exceptionResolutions,
+ schedules, executed = 0;
@Override
public IRequestHandler onException(final RequestCycle cycle, Exception ex)
@@ -323,7 +368,7 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
@Override
public void onRequestHandlerResolved(final RequestCycle cycle, IRequestHandler handler)
{
- resolutions++;
+ resolved++;
}
@Override
@@ -339,18 +384,27 @@ public class RequestCycleListenerTest extends BaseRequestHandlerStackTest
schedules++;
}
- private void assertValues(int begins, int ends, int exceptions, int detachesnotified)
+ private void assertValues(int begins, int ends, int resolved, int executed, int exceptions, int detachesnotified)
{
assertEquals(begins, this.begins);
assertEquals(ends, this.ends);
+ assertEquals(resolved, this.resolved);
+ assertEquals(executed, this.executed);
assertEquals(exceptions, this.exceptions);
assertEquals(detachesnotified, this.detachesnotified);
+
+ this.begins = 0;
+ this.ends = 0;
+ this.resolved = 0;
+ this.executed = 0;
+ this.exceptions = 0;
+ this.detachesnotified = 0;
}
@Override
public void onRequestHandlerExecuted(RequestCycle cycle, IRequestHandler handler)
{
- executions++;
+ executed++;
}
@Override
http://git-wip-us.apache.org/repos/asf/wicket/blob/39c0ba60/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java
deleted file mode 100644
index 7839806..0000000
--- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * 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.request.cycle;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.wicket.request.IRequestCycle;
-import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.RequestHandlerStack;
-import org.apache.wicket.request.Response;
-import org.junit.Test;
-
-/**
- * @author Matej Knopp
- */
-public class RequestHandlerStackTest extends BaseRequestHandlerStackTest
-{
- private boolean testFlag1;
- private boolean testFlag2;
- private boolean testFlag3;
- private boolean testFlag4;
-
- private boolean detachedFlag1;
- private boolean detachedFlag2;
- private boolean detachedFlag3;
- private boolean detachedFlag4;
-
- private void initFlags()
- {
- testFlag1 = true;
- testFlag2 = true;
- testFlag3 = true;
- testFlag4 = true;
-
- detachedFlag1 = false;
- detachedFlag2 = false;
- detachedFlag3 = false;
- detachedFlag4 = false;
- }
-
- /** */
- @Test
- public void test1()
- {
- initFlags();
-
- final Response originalResponse = newResponse();
- final IRequestCycle requestCycle = newRequestCycle(originalResponse);
- final RequestHandlerStack stack = newStack(requestCycle);
-
- final IRequestHandler handler3 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag3 = false;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag3 = true;
- }
- };
-
- final IRequestHandler handler2 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag2 = false;
-
- stack.replaceAll(handler3);
-
- // this code must not be executed
- testFlag2 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag2 = true;
- }
- };
-
- final IRequestHandler handler1 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag1 = false;
-
- Response resp = newResponse();
- requestCycle.setResponse(resp);
- stack.execute(handler2);
- assertEquals(requestCycle.getResponse(), resp);
-
- // this code must be executed
- testFlag1 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag1 = true;
- }
- };
-
- stack.execute(handler1);
-
- assertEquals(requestCycle.getResponse(), originalResponse);
-
- stack.detach();
-
- assertFalse(testFlag1);
- assertFalse(testFlag2);
- assertFalse(testFlag3);
-
- assertTrue(detachedFlag1);
- assertTrue(detachedFlag2);
- assertTrue(detachedFlag3);
- }
-
- /** */
- @Test
- public void test2()
- {
- initFlags();
-
- final Response originalResponse = newResponse();
- final IRequestCycle requestCycle = newRequestCycle(originalResponse);
- final RequestHandlerStack stack = newStack(requestCycle);
-
-
- final IRequestHandler handler4 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag4 = false;
-
- assertEquals(requestCycle.getResponse(), originalResponse);
-
- requestCycle.setResponse(newResponse());
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag4 = true;
- }
- };
-
- final IRequestHandler handler3 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag3 = false;
- requestCycle.setResponse(newResponse());
- stack.replaceAll(handler4);
- // code must not be reached
- testFlag3 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag3 = true;
- }
- };
-
- final IRequestHandler handler2 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag2 = false;
- requestCycle.setResponse(newResponse());
- stack.execute(handler3);
- // code must not be reached
- testFlag2 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag2 = true;
- }
- };
-
- IRequestHandler handler1 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag1 = false;
- requestCycle.setResponse(newResponse());
- stack.execute(handler2);
-
- // code must not be reached
- testFlag1 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag1 = true;
- }
- };
-
- stack.execute(handler1);
-
- assertEquals(requestCycle.getResponse(), originalResponse);
-
- stack.detach();
-
- assertFalse(testFlag1);
- assertFalse(testFlag2);
- assertFalse(testFlag3);
- assertFalse(testFlag4);
-
- assertTrue(detachedFlag1);
- assertTrue(detachedFlag2);
- assertTrue(detachedFlag3);
- assertTrue(detachedFlag4);
- }
-
- /** */
- @Test
- public void test3()
- {
- initFlags();
-
- final Response originalResponse = newResponse();
- final IRequestCycle requestCycle = newRequestCycle(originalResponse);
- final RequestHandlerStack stack = newStack(requestCycle);
-
- final IRequestHandler handler4 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag4 = true;
-
- requestCycle.setResponse(newResponse());
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag4 = true;
- }
- };
-
- final IRequestHandler handler3 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag3 = false;
- stack.schedule(handler4);
-
- // make sure that handler4's respond method is fired after this
- // one ends
- testFlag4 = false;
-
- // code must be be reached
- testFlag3 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag3 = true;
- }
- };
-
- final IRequestHandler handler2 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag2 = false;
- stack.execute(handler3);
- // code must be reached
- testFlag2 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag2 = true;
- }
- };
-
- IRequestHandler handler1 = new IRequestHandler()
- {
- @Override
- public void respond(IRequestCycle requestCycle)
- {
- testFlag1 = false;
- stack.execute(handler2);
-
- // code must be reached
- testFlag1 = true;
- }
-
- @Override
- public void detach(IRequestCycle requestCycle)
- {
- detachedFlag1 = true;
- }
- };
-
- stack.execute(handler1);
-
- assertEquals(requestCycle.getResponse(), originalResponse);
-
- stack.detach();
-
- assertTrue(testFlag1);
- assertTrue(testFlag2);
- assertTrue(testFlag3);
- assertTrue(testFlag4);
-
- assertTrue(detachedFlag1);
- assertTrue(detachedFlag2);
- assertTrue(detachedFlag3);
- assertTrue(detachedFlag4);
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/39c0ba60/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java b/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
index 6657a07..291b457 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
@@ -73,8 +73,9 @@ public abstract class RequestHandlerStack
if (replacer.removeAll)
{
scheduledAfterCurrent = null;
- throw exception;
}
+
+ throw replacer;
}
finally
{