You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2013/01/06 18:20:52 UTC
git commit: =WICKET-4932: testing recreateMountedPagesAfterExpiry
before to recreate a mounted page
Updated Branches:
refs/heads/master 88e81c0d5 -> f20b2d706
=WICKET-4932: testing recreateMountedPagesAfterExpiry before to recreate a mounted page
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/f20b2d70
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/f20b2d70
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/f20b2d70
Branch: refs/heads/master
Commit: f20b2d706bde4d3bc34f6ef984a14bb5bb621555
Parents: 88e81c0
Author: Pedro Santos <pe...@apache.com>
Authored: Sun Jan 6 15:19:06 2013 -0200
Committer: Pedro Santos <pe...@apache.com>
Committed: Sun Jan 6 15:19:06 2013 -0200
----------------------------------------------------------------------
.../request/mapper/AbstractBookmarkableMapper.java | 33 ++++--
.../mapper/AbstractBookmarkableMapperTest.java | 91 +++++++++++++++
2 files changed, 113 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/f20b2d70/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index 86c64a6..56e27d4 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@ -24,6 +24,8 @@ import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
import org.apache.wicket.core.request.handler.PageAndComponentProvider;
import org.apache.wicket.core.request.handler.PageProvider;
import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
+import org.apache.wicket.protocol.http.PageExpiredException;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.IRequestHandlerDelegate;
import org.apache.wicket.request.IRequestMapper;
@@ -41,7 +43,7 @@ import org.slf4j.LoggerFactory;
/**
* Abstract encoder for Bookmarkable, Hybrid and BookmarkableListenerInterface URLs.
- *
+ *
* @author Matej Knopp
*/
public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
@@ -50,7 +52,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
/**
* Represents information stored in URL.
- *
+ *
* @author Matej Knopp
*/
protected static final class UrlInfo
@@ -61,7 +63,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
/**
* Construct.
- *
+ *
* @param pageComponentInfo
* optional parameter providing the page instance and component information
* @param pageClass
@@ -82,7 +84,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
/**
* Cleans the original parameters from entries used by Wicket internals.
- *
+ *
* @param originalParameters
* the current request's non-modified parameters
* @return all parameters but Wicket internal ones
@@ -142,7 +144,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
/**
* Parse the given request to an {@link UrlInfo} instance.
- *
+ *
* @param request
* @return UrlInfo instance or <code>null</code> if this encoder can not handle the request
*/
@@ -151,7 +153,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
/**
* Builds URL for the given {@link UrlInfo} instance. The URL this method produces must be
* parseable by the {@link #parseRequest(Request)} method.
- *
+ *
* @param info
* @return Url result URL
*/
@@ -163,7 +165,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
* <p>
* For generic bookmarkable encoders this method should return <code>true</code>. For explicit
* (mounted) encoders this method should return <code>false</code>
- *
+ *
* @return <code>true</code> if hybrid URL requires page created bookmarkable,
* <code>false</code> otherwise.
*/
@@ -177,7 +179,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
/**
* Creates a {@code IRequestHandler} that processes a bookmarkable request.
- *
+ *
* @param pageClass
* @param pageParameters
* @return a {@code IRequestHandler} capable of processing the bookmarkable request.
@@ -194,7 +196,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
* Creates a {@code IRequestHandler} that processes a hybrid request. When the page identified
* by {@code pageInfo} was not available, the request should be treated as a bookmarkable
* request.
- *
+ *
* @param pageInfo
* @param pageClass
* @param pageParameters
@@ -208,12 +210,21 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
PageProvider provider = new PageProvider(pageInfo.getPageId(), pageClass, pageParameters,
renderCount);
provider.setPageSource(getContext());
- return new RenderPageRequestHandler(provider);
+ if (provider.isNewPageInstance() &&
+ !WebApplication.get().getPageSettings().getRecreateMountedPagesAfterExpiry())
+ {
+ throw new PageExpiredException(String.format("Bookmarkable page id '%d' has expired.",
+ pageInfo.getPageId()));
+ }
+ else
+ {
+ return new RenderPageRequestHandler(provider);
+ }
}
/**
* Creates a {@code IRequestHandler} that processes a listener request.
- *
+ *
* @param pageComponentInfo
* @param pageClass
* @param pageParameters
http://git-wip-us.apache.org/repos/asf/wicket/blob/f20b2d70/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapperTest.java
new file mode 100644
index 0000000..2c17c09
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapperTest.java
@@ -0,0 +1,91 @@
+/*
+ * 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.core.request.mapper;
+
+import org.apache.wicket.MockPage;
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.protocol.http.PageExpiredException;
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.component.IRequestablePage;
+import org.apache.wicket.request.mapper.info.PageInfo;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pedrosans
+ */
+public class AbstractBookmarkableMapperTest extends WicketTestCase
+{
+
+ private static final int NOT_RENDERED_COUNT = 2;
+ private static final int EXPIRED_ID = 2;
+
+
+ /**
+ * <a href="https://issues.apache.org/jira/browse/WICKET-4932">WICKET-4932</a>
+ */
+ @Test(expected = PageExpiredException.class)
+ public void itFailsToProcessAnExpiredPageIfShouldNotRecreateMountedPagesAfterExpiry()
+ {
+ tester.getApplication().getPageSettings().setRecreateMountedPagesAfterExpiry(false);
+ AbstractBookmarkableMapperStub mapper = new AbstractBookmarkableMapperStub();
+ mapper.processHybrid(new PageInfo(EXPIRED_ID), MockPage.class, null, NOT_RENDERED_COUNT);
+ Assert.fail("it shouldn't process expired pages if the app was flagged to not recreated mounted pages after expiry");
+ }
+
+ /** */
+ public class AbstractBookmarkableMapperStub extends AbstractBookmarkableMapper
+ {
+
+ @Override
+ protected UrlInfo parseRequest(Request request)
+ {
+ return null;
+ }
+
+ @Override
+ protected Url buildUrl(UrlInfo info)
+ {
+ return null;
+ }
+
+ @Override
+ protected boolean pageMustHaveBeenCreatedBookmarkable()
+ {
+ return false;
+ }
+
+ @Override
+ public int getCompatibilityScore(Request request)
+ {
+ return 0;
+ }
+
+ @Override
+ protected IRequestHandler processHybrid(PageInfo pageInfo,
+ Class<? extends IRequestablePage> pageClass, PageParameters pageParameters,
+ Integer renderCount)
+ {
+ return super.processHybrid(pageInfo, pageClass, pageParameters, renderCount);
+ }
+
+ }
+
+}