You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/09/07 03:26:45 UTC
[2/2] wicket git commit: WICKET-6237 Uses PageRequestHandlerTracker
to check last IRequestHandler encapsulated in IRequestHandlerDelegate
WICKET-6237 Uses PageRequestHandlerTracker to check last IRequestHandler encapsulated in IRequestHandlerDelegate
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b35b978e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b35b978e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b35b978e
Branch: refs/heads/master
Commit: b35b978ef12f6a127c4961f754069e80fc44a549
Parents: f3b369f
Author: Artur Micha\u0142owski <am...@gmail.com>
Authored: Mon Sep 5 02:29:44 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Sep 7 05:26:14 2016 +0200
----------------------------------------------------------------------
.../cycle/PageRequestHandlerTracker.java | 2 +-
.../cycle/PageRequestHandlerTrackerTest.java | 89 +++++++++++++++++++-
2 files changed, 87 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b35b978e/wicket-core/src/main/java/org/apache/wicket/request/cycle/PageRequestHandlerTracker.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/cycle/PageRequestHandlerTracker.java b/wicket-core/src/main/java/org/apache/wicket/request/cycle/PageRequestHandlerTracker.java
index 2585ce7..e80848c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/cycle/PageRequestHandlerTracker.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/cycle/PageRequestHandlerTracker.java
@@ -115,7 +115,7 @@ public class PageRequestHandlerTracker extends AbstractRequestCycleListener
}
/**
- * retrieves last handler from requestcycle
+ * retrieves last handler from request cycle
*
* @param cycle
* @return last handler
http://git-wip-us.apache.org/repos/asf/wicket/blob/b35b978e/wicket-core/src/test/java/org/apache/wicket/request/cycle/PageRequestHandlerTrackerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/PageRequestHandlerTrackerTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/PageRequestHandlerTrackerTest.java
index 3f79d7b..2d4eb5b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/PageRequestHandlerTrackerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/PageRequestHandlerTrackerTest.java
@@ -18,11 +18,19 @@ package org.apache.wicket.request.cycle;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.core.request.handler.IPageRequestHandler;
+import org.apache.wicket.core.request.handler.RequestSettingRequestHandler;
+import org.apache.wicket.core.request.mapper.CryptoMapper;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.IRequestMapper;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.mapper.IRequestMapperDelegate;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Before;
import org.junit.Test;
/**
@@ -30,6 +38,13 @@ import org.junit.Test;
*/
public class PageRequestHandlerTrackerTest extends WicketTestCase
{
+
+ @Before
+ public void before()
+ {
+ tester.getApplication().getRequestCycleListeners().add(new PageRequestHandlerTracker());
+ }
+
/**
* Uses PageRequestHandlerTracker to track the requested page and the response page
* https://issues.apache.org/jira/browse/WICKET-4624
@@ -37,22 +52,40 @@ public class PageRequestHandlerTrackerTest extends WicketTestCase
@Test
public void trackPages()
{
- tester.getApplication().getRequestCycleListeners().add(new PageRequestHandlerTracker());
tester.getApplication().getRequestCycleListeners().add(new AbstractRequestCycleListener()
{
@Override
public void onDetach(RequestCycle cycle)
{
IPageRequestHandler firstHandler = PageRequestHandlerTracker.getFirstHandler(cycle);
- assertEquals(PageA.class, firstHandler.getPageClass());
+ if (firstHandler != null)
+ {
+ assertEquals(PageA.class, firstHandler.getPageClass());
+ }
IPageRequestHandler lastHandler = PageRequestHandlerTracker.getLastHandler(cycle);
- assertEquals(PageB.class, lastHandler.getPageClass());
+ if (lastHandler != null)
+ {
+ assertEquals(PageB.class, lastHandler.getPageClass());
+ }
}
});
tester.startPage(new PageA());
}
+
+ /**
+ * Uses PageRequestHandlerTracker to check last IRequestHandler encapsulated in IRequestHandlerDelegate
+ */
+ @Test
+ public void trackPagesWithMapperDelegate()
+ {
+ IRequestMapper mapper = tester.getApplication().getRootRequestMapper();
+ tester.getApplication().setRootRequestMapper(new MapperDelegate(mapper));
+ tester.startPage(new PageA());
+ tester.getApplication().setRootRequestMapper(mapper);
+ }
+
/**
* The requested page
@@ -70,6 +103,10 @@ public class PageRequestHandlerTrackerTest extends WicketTestCase
{
super.onConfigure();
+
+ IPageRequestHandler lastHandler = PageRequestHandlerTracker.getLastHandler(getRequestCycle());
+ assertNotNull("Last handler is null: probably issue in IRequestHandlerDelegate support", lastHandler);
+
setResponsePage(new PageB());
}
@@ -91,4 +128,50 @@ public class PageRequestHandlerTrackerTest extends WicketTestCase
return new StringResourceStream("<html/>");
}
}
+
+ /**
+ * Mapper which imitate behavior of {@link CryptoMapper#mapRequest(Request)}
+ */
+ private static class MapperDelegate implements IRequestMapperDelegate
+ {
+ IRequestMapper mapper;
+
+ public MapperDelegate(IRequestMapper mapper)
+ {
+ this.mapper = mapper;
+ }
+
+ @Override
+ public IRequestHandler mapRequest(Request request)
+ {
+ Request decryptedRequest = request.cloneWithUrl(request.getUrl());
+ IRequestHandler handler = mapper.mapRequest(decryptedRequest);
+
+ if (handler != null)
+ {
+ handler = new RequestSettingRequestHandler(decryptedRequest, handler);
+ }
+
+ return handler;
+ }
+
+ @Override
+ public int getCompatibilityScore(Request request)
+ {
+ return mapper.getCompatibilityScore(request);
+ }
+
+ @Override
+ public Url mapHandler(IRequestHandler requestHandler)
+ {
+ return mapper.mapHandler(requestHandler);
+ }
+
+ @Override
+ public IRequestMapper getDelegateMapper()
+ {
+ return mapper;
+ }
+
+ }
}