WICKET-5347 reuse PageProvider
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/d86d0096
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d86d0096
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d86d0096
Branch: refs/heads/master
Commit: d86d00967a024a64172cf6e815cc2679ae0c2404
Parents: f2fa6c7
Author: svenmeier <[email protected]>
Authored: Wed Sep 11 11:57:54 2013 +0200
Committer: svenmeier <[email protected]>
Committed: Wed Sep 11 11:57:54 2013 +0200
----------------------------------------------------------------------
.../wicket/markup/html/link/IPageLink.java | 73 --------------------
.../wicket/markup/html/link/InlineFrame.java | 65 ++++-------------
2 files changed, 13 insertions(+), 125 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/d86d0096/wicket-core/src/main/java/org/apache/wicket/markup/html/link/IPageLink.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/IPageLink.java
b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/IPageLink.java
deleted file mode 100644
index 14aa1d5..0000000
---
a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/IPageLink.java
+++ /dev/null
@@ -1,73 +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.markup.html.link;
-
-import org.apache.wicket.Page;
-import org.apache.wicket.util.io.IClusterable;
-
-/**
- * Interface that is used to implement delayed page linking. The
getPage() method returns an
- * instance of Page when a link is actually clicked (thus avoiding the
need to create a destination
- * Page object for every link on a given Page in advance). The
getPageIdentity() method returns the
- * subclass of Page that getPage() will return if and when it is called.
- * <p>
- * This way of arranging things is useful in determining whether a link
links to a given page, which
- * is in turn useful for deciding how to display the link (because links
in a navigation which link
- * to a page itself are not useful and generally should instead indicate
where the user is in the
- * navigation).
- * <p>
- * To understand how getPageIdentity() is used in this way, take a look
at the Link.linksTo() method
- * and its override in PageLink. Also, see the documentation for
getPageIdentity() below.
- *
- * @see Link#linksTo(Page)
- * @author Jonathan Locke
- */
-public interface IPageLink extends IClusterable
-{
- /**
- * Gets the page to go to.
- *
- * @return The page to go to.
- */
- Page getPage();
-
- /**
- * Gets the class of the destination page, which serves as a form
of identity that can be used
- * to determine if a link is on the same Page that it links to.
When Pages are parameterized,
- * the Link.linksTo() method should be overridden instead.
- * <p>
- * A page's identity is important because links which are on the
same page that they link to
- * often need to be displayed in a different way to indicate that
they are 'disabled' and don't
- * go anywhere. Links can be manually disabled by calling
Link.setDisabled(). Links which have
- * setAutoEnable(true) will automatically enable or disable
themselves depending on whether or
- * not Link.linksTo() returns true. The default implementation of
PageLink.linksTo() therefore
- * looks like this:
- *
- * <pre>
- * private final IPageLink pageLink;
- *
- * public boolean linksTo(final Page page)
- * {
- * return page.getClass() == pageLink.getPageIdentity();
- * }
- * </pre>
- *
- * @return The class of page linked to, as a form of identity
- * @see Link#linksTo(Page)
- */
- Class<? extends Page> getPageIdentity();
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/d86d0096/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
index f9f0959..ae868b0 100644
---
a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
+++
b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
@@ -17,7 +17,8 @@
package org.apache.wicket.markup.html.link;
import org.apache.wicket.Page;
-import org.apache.wicket.Session;
+import org.apache.wicket.core.request.handler.IPageProvider;
+import org.apache.wicket.core.request.handler.PageProvider;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -36,8 +37,8 @@ public class InlineFrame extends WebMarkupContainer
implements ILinkListener
{
private static final long serialVersionUID = 1L;
- /** The link. */
- private final IPageLink pageLink;
+ /** The provider of the page. */
+ private final IPageProvider pageProvider;
/**
* Constructs an inline frame that instantiates the given Page
class when the content of the
@@ -71,31 +72,7 @@ public class InlineFrame extends WebMarkupContainer
implements ILinkListener
public <C extends Page> InlineFrame(final String id, final
Class<C> c,
final PageParameters params)
{
- this(id, new IPageLink()
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- public Page getPage()
- {
- // TODO use PageProvider instead
- if (params == null)
- {
- // Create page using page factory
- return
(Page)Session.get().getPageFactory().newPage(c);
- }
- else
- {
- return
(Page)Session.get().getPageFactory().newPage(c, params);
- }
- }
-
- @Override
- public Class<? extends Page> getPageIdentity()
- {
- return c;
- }
- });
+ this(id, new PageProvider(c, params));
// Ensure that c is a subclass of Page
if (!Page.class.isAssignableFrom(c))
@@ -115,24 +92,7 @@ public class InlineFrame extends WebMarkupContainer
implements ILinkListener
*/
public InlineFrame(final String id, final Page page)
{
- this(id, new IPageLink()
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- public Page getPage()
- {
- // use given page
- return page;
- }
-
- @Override
- public Class<? extends Page> getPageIdentity()
- {
- return page.getClass();
- }
-
- });
+ this(id, new PageProvider(page.getPageId(),
page.getClass(), page.getRenderCount()));
}
/**
@@ -144,14 +104,15 @@ public class InlineFrame extends WebMarkupContainer
implements ILinkListener
*
* @param id
* See Component
- * @param pageLink
- * An implementation of IPageLink which will create the
page to be contained in the
- * inline frame if and when the content is requested
+ * @param pageProvider
+ * the provider of the page to be contained in the
inline frame if and when the
+ * content is requested
*/
- public InlineFrame(final String id, IPageLink pageLink)
+ public InlineFrame(final String id, IPageProvider pageProvider)
{
super(id);
- this.pageLink = pageLink;
+
+ this.pageProvider = pageProvider;
}
/**
@@ -191,7 +152,7 @@ public class InlineFrame extends WebMarkupContainer
implements ILinkListener
@Override
public final void onLinkClicked()
{
- setResponsePage(pageLink.getPage());
+ setResponsePage(pageProvider.getPageInstance());
}