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;
 	}