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 2015/04/24 12:13:39 UTC
[3/4] wicket git commit: simplified with meta refresh to the link
simplified with meta refresh to the link
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b4aec3a4
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b4aec3a4
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b4aec3a4
Branch: refs/heads/master
Commit: b4aec3a494d23a3e88192ff597092f1fa940ca52
Parents: 16311e8
Author: Sven Meier <sv...@apache.org>
Authored: Fri Apr 24 11:27:50 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Apr 24 11:27:50 2015 +0200
----------------------------------------------------------------------
.../markup/html/pages/BrowserInfoPage.java | 71 ++++++++------------
.../apache/wicket/protocol/http/WebSession.java | 23 +------
2 files changed, 31 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/b4aec3a4/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
index 21ad364..c089f89 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoPage.java
@@ -20,29 +20,26 @@ import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnLoadHeaderItem;
import org.apache.wicket.markup.html.WebComponent;
-import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.protocol.http.ClientProperties;
import org.apache.wicket.protocol.http.WebSession;
-import org.apache.wicket.protocol.http.request.WebClientInfo;
-import org.apache.wicket.request.cycle.RequestCycle;
/**
- * <p>
* This page uses a form post right after the page has loaded in the browser, using JavaScript or
* alternative means to detect and pass on settings to the embedded form. The form submit method
* updates this session's {@link org.apache.wicket.core.request.ClientInfo} object and then redirects to
* the original location as was passed in as a URL argument in the constructor.
- * </p>
+ * <p>
+ * If JavaScript is not enabled in the browser, a "refresh" meta-header will initiate a get on this page to
+ * continue with the original destination. As a fallback the user can click a link to do the same.
* <p>
* This page is being used by the default implementation of {@link org.apache.wicket.Session#getClientInfo()},
* which in turn uses
* {@link org.apache.wicket.settings.RequestCycleSettings#getGatherExtendedBrowserInfo() a setting} to
* determine whether this page should be redirected to (it does when it is true).
- * </p>
*
* @author Eelco Hillenius
*/
@@ -53,28 +50,11 @@ public class BrowserInfoPage extends WebPage
private BrowserInfoForm browserInfoForm;
/**
- * Bookmarkable constructor. This is not for normal framework client use. It will be called
- * whenever JavaScript is not supported, and the browser info page's meta refresh fires to this
- * page. Prior to this, the other constructor should already have been called.
+ * Bookmarkable constructor.
*/
public BrowserInfoPage()
{
initComps();
- RequestCycle requestCycle = getRequestCycle();
- WebSession session = (WebSession)getSession();
- WebClientInfo clientInfo = session.getClientInfo();
- if (clientInfo == null)
- {
- clientInfo = new WebClientInfo(requestCycle);
- getSession().setClientInfo(clientInfo);
- }
- else
- {
- ClientProperties properties = clientInfo.getProperties();
- properties.setNavigatorJavaEnabled(false);
- }
-
- continueToOriginalDestination();
}
@Override
@@ -97,20 +77,10 @@ public class BrowserInfoPage extends WebPage
*/
private void initComps()
{
- WebComponent meta = new WebComponent("meta");
-
- final IModel<String> urlModel = new LoadableDetachableModel<String>()
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected String load()
- {
- CharSequence url = urlFor(BrowserInfoPage.class, null);
- return url.toString();
- }
- };
+ final ContinueLink link = new ContinueLink("link");
+ add(link);
+ WebComponent meta = new WebComponent("meta");
meta.add(AttributeModifier.replace("content", new AbstractReadOnlyModel<String>()
{
private static final long serialVersionUID = 1L;
@@ -118,14 +88,10 @@ public class BrowserInfoPage extends WebPage
@Override
public String getObject()
{
- return "0; url=" + urlModel.getObject();
+ return "0; url=" + link.getURL();
}
-
}));
add(meta);
- WebMarkupContainer link = new WebMarkupContainer("link");
- link.add(AttributeModifier.replace("href", urlModel));
- add(link);
IModel<ClientProperties> properties = new AbstractReadOnlyModel<ClientProperties>()
{
@@ -148,4 +114,23 @@ public class BrowserInfoPage extends WebPage
};
add(browserInfoForm);
}
+
+ private class ContinueLink extends Link<Void> {
+ public ContinueLink(String id)
+ {
+ super(id);
+ }
+
+ @Override
+ public CharSequence getURL()
+ {
+ return super.getURL();
+ }
+
+ @Override
+ public void onClick()
+ {
+ continueToOriginalDestination();
+ }
+ };
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/b4aec3a4/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebSession.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebSession.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebSession.java
index 590c31e..ef70e0a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebSession.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebSession.java
@@ -16,7 +16,6 @@
*/
package org.apache.wicket.protocol.http;
-import org.apache.wicket.MetaDataKey;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.WebPage;
@@ -39,11 +38,6 @@ public class WebSession extends Session
return (WebSession)Session.get();
}
- private static final MetaDataKey<Boolean> BROWSER_WAS_POLLED_KEY = new MetaDataKey<Boolean>()
- {
- private static final long serialVersionUID = 1L;
- };
-
/**
* Constructor. Note that {@link RequestCycle} is not available until this constructor returns.
*
@@ -91,24 +85,13 @@ public class WebSession extends Session
if (clientInfo == null)
{
RequestCycle requestCycle = RequestCycle.get();
+ clientInfo = new WebClientInfo(requestCycle);
if (getApplication().getRequestCycleSettings().getGatherExtendedBrowserInfo())
{
- if (getMetaData(BROWSER_WAS_POLLED_KEY) == null)
- {
- // we haven't done the redirect yet; record that we will be
- // doing that now and redirect
- setMetaData(BROWSER_WAS_POLLED_KEY, Boolean.TRUE);
-
- WebPage browserInfoPage = newBrowserInfoPage();
- throw new RestartResponseAtInterceptPageException(browserInfoPage);
- }
- // if we get here, the redirect already has been done; clear
- // the meta data entry; we don't need it any longer is the client
- // info object will be cached too
- setMetaData(BROWSER_WAS_POLLED_KEY, null);
+ WebPage browserInfoPage = newBrowserInfoPage();
+ throw new RestartResponseAtInterceptPageException(browserInfoPage);
}
- clientInfo = new WebClientInfo(requestCycle);
}
return (WebClientInfo)clientInfo;
}