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
 		{