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:37 UTC

[1/4] wicket git commit: get rid of ClientPropertiesBean, it's so JSF-ish

Repository: wicket
Updated Branches:
  refs/heads/master 77f211dd4 -> ca8aba724


get rid of ClientPropertiesBean, it's so JSF-ish


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/7c6066a3
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/7c6066a3
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/7c6066a3

Branch: refs/heads/master
Commit: 7c6066a343622cde71908bb2501cf103bc1e4f59
Parents: 77f211d
Author: Sven Meier <sv...@apache.org>
Authored: Fri Apr 24 10:25:54 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Apr 24 10:25:54 2015 +0200

----------------------------------------------------------------------
 .../wicket/ajax/AjaxClientInfoBehavior.java     |   4 +-
 .../markup/html/pages/BrowserInfoForm.java      | 467 ++-----------------
 .../markup/html/pages/BrowserInfoPage.java      |  13 +-
 .../wicket/protocol/http/ClientProperties.java  |  40 +-
 .../protocol/http/request/WebClientInfo.java    |   2 +-
 5 files changed, 78 insertions(+), 448 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/7c6066a3/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
index 015f59f..30b2714 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
@@ -88,8 +88,8 @@ public class AjaxClientInfoBehavior extends AbstractAjaxTimerBehavior
 		properties.setNavigatorAppCodeName(navigatorAppCodeName);
 		properties.setNavigatorAppName(navigatorAppName);
 		properties.setNavigatorAppVersion(navigatorAppVersion);
-		properties.setCookiesEnabled(navigatorCookieEnabled);
-		properties.setJavaEnabled(navigatorJavaEnabled);
+		properties.setNavigatorCookieEnabled(navigatorCookieEnabled);
+		properties.setNavigatorJavaEnabled(navigatorJavaEnabled);
 		properties.setNavigatorLanguage(navigatorLanguage);
 		properties.setNavigatorPlatform(navigatorPlatform);
 		properties.setNavigatorUserAgent(navigatorUserAgent);

http://git-wip-us.apache.org/repos/asf/wicket/blob/7c6066a3/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
index 653c9eb..ab40dfa 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
@@ -16,18 +16,17 @@
  */
 package org.apache.wicket.markup.html.pages;
 
+import java.util.Locale;
+
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
 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;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.util.io.IClusterable;
 
 /**
  * Form for posting JavaScript properties.
@@ -39,7 +38,7 @@ public class BrowserInfoForm extends Panel
 	/**
 	 * The special form that submits the client/browser info
 	 */
-	private final Form<? extends ClientPropertiesBean> form;
+	private final Form<ClientProperties> form;
 
 	/**
 	 * Constructor.
@@ -47,11 +46,11 @@ public class BrowserInfoForm extends Panel
 	 * @param id
 	 *            component id
 	 */
-	public BrowserInfoForm(String id)
+	public BrowserInfoForm(String id, IModel<ClientProperties> properties)
 	{
 		super(id);
 
-		this.form = createForm("postback");
+		this.form = createForm("postback", properties);
 		form.setOutputMarkupId(true);
 		add(form);
 	}
@@ -63,50 +62,35 @@ public class BrowserInfoForm extends Panel
 	 *      the id for the Form component
 	 * @return the Form that will submit the data
 	 */
-	protected Form<? extends ClientPropertiesBean> createForm(String componentId)
+	protected Form<ClientProperties> createForm(String componentId, IModel<ClientProperties> properties)
 	{
-		Form<ClientPropertiesBean> form = new Form<ClientPropertiesBean>(componentId,
-				new CompoundPropertyModel<ClientPropertiesBean>(new ClientPropertiesBean()))
+		Form<ClientProperties> form = new Form<ClientProperties>(componentId,
+				new CompoundPropertyModel<ClientProperties>(properties))
 		{
 			private static final long serialVersionUID = 1L;
 
 			@Override
 			protected void onSubmit()
 			{
-				ClientPropertiesBean propertiesBean = getModelObject();
-
-				RequestCycle requestCycle = getRequestCycle();
-				WebSession session = getWebSession();
-				WebClientInfo clientInfo = session.getClientInfo();
-
-				if (clientInfo == null)
-				{
-					clientInfo = new WebClientInfo(requestCycle);
-					getSession().setClientInfo(clientInfo);
-				}
-
-				ClientProperties properties = clientInfo.getProperties();
-				propertiesBean.merge(properties);
-
 				afterSubmit();
 			}
 		};
-		form.add(new TextField<String>("navigatorAppName"));
-		form.add(new TextField<String>("navigatorAppVersion"));
-		form.add(new TextField<String>("navigatorAppCodeName"));
-		form.add(new TextField<Boolean>("navigatorCookieEnabled"));
-		form.add(new TextField<Boolean>("navigatorJavaEnabled"));
-		form.add(new TextField<String>("navigatorLanguage"));
-		form.add(new TextField<String>("navigatorPlatform"));
-		form.add(new TextField<String>("navigatorUserAgent"));
-		form.add(new TextField<String>("screenWidth"));
-		form.add(new TextField<String>("screenHeight"));
-		form.add(new TextField<String>("screenColorDepth"));
-		form.add(new TextField<String>("utcOffset"));
-		form.add(new TextField<String>("utcDSTOffset"));
-		form.add(new TextField<String>("browserWidth"));
-		form.add(new TextField<String>("browserHeight"));
-		form.add(new TextField<String>("hostname"));
+		form.add(new ReadOnlyTextField<String>("navigatorAppName"));
+		form.add(new ReadOnlyTextField<String>("navigatorAppVersion"));
+		form.add(new ReadOnlyTextField<String>("navigatorAppCodeName"));
+		form.add(new ReadOnlyTextField<Boolean>("navigatorCookieEnabled"));
+		form.add(new ReadOnlyTextField<Boolean>("navigatorJavaEnabled"));
+		form.add(new ReadOnlyTextField<String>("navigatorLanguage"));
+		form.add(new ReadOnlyTextField<String>("navigatorPlatform"));
+		form.add(new ReadOnlyTextField<String>("navigatorUserAgent"));
+		form.add(new ReadOnlyTextField<String>("screenWidth"));
+		form.add(new ReadOnlyTextField<String>("screenHeight"));
+		form.add(new ReadOnlyTextField<String>("screenColorDepth"));
+		form.add(new ReadOnlyTextField<String>("utcOffset"));
+		form.add(new ReadOnlyTextField<String>("utcDSTOffset"));
+		form.add(new ReadOnlyTextField<String>("browserWidth"));
+		form.add(new ReadOnlyTextField<String>("browserHeight"));
+		form.add(new ReadOnlyTextField<String>("hostname"));
 		return form;
 	}
 
@@ -130,403 +114,24 @@ public class BrowserInfoForm extends Panel
 	{
 		return form.getMarkupId();
 	}
+	
+	private static final class ReadOnlyTextField<T> extends TextField<T> {
 
-	/**
-	 * Holds properties of the client.
-	 */
-	public static class ClientPropertiesBean implements IClusterable
-	{
-		private static final long serialVersionUID = 1L;
-
-		private String navigatorAppCodeName;
-		private String navigatorAppName;
-		private String navigatorAppVersion;
-		private Boolean navigatorCookieEnabled = Boolean.FALSE;
-		private Boolean navigatorJavaEnabled = Boolean.FALSE;
-		private String navigatorLanguage;
-		private String navigatorPlatform;
-		private String navigatorUserAgent;
-		private String screenColorDepth;
-		private String screenHeight;
-		private String screenWidth;
-		private String utcOffset;
-		private String utcDSTOffset;
-		private String browserWidth;
-		private String browserHeight;
-		private String hostname;
-
-		/**
-		 * Gets browserHeight.
-		 * 
-		 * @return browserHeight
-		 */
-		public String getBrowserHeight()
-		{
-			return browserHeight;
-		}
-
-		/**
-		 * Gets browserWidth.
-		 * 
-		 * @return browserWidth
-		 */
-		public String getBrowserWidth()
-		{
-			return browserWidth;
-		}
-
-		/**
-		 * Gets navigatorAppCodeName.
-		 * 
-		 * @return navigatorAppCodeName
-		 */
-		public String getNavigatorAppCodeName()
-		{
-			return navigatorAppCodeName;
-		}
-
-		/**
-		 * Gets navigatorAppName.
-		 * 
-		 * @return navigatorAppName
-		 */
-		public String getNavigatorAppName()
-		{
-			return navigatorAppName;
-		}
-
-		/**
-		 * Gets navigatorAppVersion.
-		 * 
-		 * @return navigatorAppVersion
-		 */
-		public String getNavigatorAppVersion()
+		public ReadOnlyTextField(String id)
 		{
-			return navigatorAppVersion;
+			super(id);
 		}
 
-		/**
-		 * Gets navigatorCookieEnabled.
-		 * 
-		 * @return navigatorCookieEnabled
-		 */
-		public Boolean getNavigatorCookieEnabled()
+		@Override
+		protected String getModelValue()
 		{
-			return navigatorCookieEnabled;
+			return "";
 		}
-
-		/**
-		 * Gets navigatorJavaEnabled.
-		 * 
-		 * @return navigatorJavaEnabled
-		 */
-		public Boolean getNavigatorJavaEnabled()
+		
+		@Override
+		public Locale getLocale()
 		{
-			return navigatorJavaEnabled;
+			return Locale.ENGLISH;
 		}
-
-		/**
-		 * Gets navigatorLanguage.
-		 * 
-		 * @return navigatorLanguage
-		 */
-		public String getNavigatorLanguage()
-		{
-			return navigatorLanguage;
-		}
-
-		/**
-		 * Gets navigatorPlatform.
-		 * 
-		 * @return navigatorPlatform
-		 */
-		public String getNavigatorPlatform()
-		{
-			return navigatorPlatform;
-		}
-
-		/**
-		 * Gets navigatorUserAgent.
-		 * 
-		 * @return navigatorUserAgent
-		 */
-		public String getNavigatorUserAgent()
-		{
-			return navigatorUserAgent;
-		}
-
-		/**
-		 * Gets screenColorDepth.
-		 * 
-		 * @return screenColorDepth
-		 */
-		public String getScreenColorDepth()
-		{
-			return screenColorDepth;
-		}
-
-		/**
-		 * Gets screenHeight.
-		 * 
-		 * @return screenHeight
-		 */
-		public String getScreenHeight()
-		{
-			return screenHeight;
-		}
-
-		/**
-		 * Gets screenWidth.
-		 * 
-		 * @return screenWidth
-		 */
-		public String getScreenWidth()
-		{
-			return screenWidth;
-		}
-
-		/**
-		 * Gets utcOffset.
-		 * 
-		 * @return utcOffset
-		 */
-		public String getUtcOffset()
-		{
-			return utcOffset;
-		}
-
-		/**
-		 * Gets utcDSTOffset.
-		 * 
-		 * @return utcOffset
-		 */
-		public String getUtcDSTOffset()
-		{
-			return utcDSTOffset;
-		}
-
-		/**
-		 * Merge this with the given properties object.
-		 * 
-		 * @param properties
-		 *            the properties object to merge with
-		 */
-		public void merge(ClientProperties properties)
-		{
-			properties.setNavigatorAppName(navigatorAppName);
-			properties.setNavigatorAppVersion(navigatorAppVersion);
-			properties.setNavigatorAppCodeName(navigatorAppCodeName);
-			properties.setCookiesEnabled((navigatorCookieEnabled != null) ? navigatorCookieEnabled
-				: false);
-			properties.setJavaEnabled((navigatorJavaEnabled != null) ? navigatorJavaEnabled : false);
-			properties.setNavigatorLanguage(navigatorLanguage);
-			properties.setNavigatorPlatform(navigatorPlatform);
-			properties.setNavigatorUserAgent(navigatorUserAgent);
-			properties.setScreenWidth(getInt(screenWidth));
-			properties.setScreenHeight(getInt(screenHeight));
-			properties.setBrowserWidth(getInt(browserWidth));
-			properties.setBrowserHeight(getInt(browserHeight));
-			properties.setScreenColorDepth(getInt(screenColorDepth));
-			properties.setUtcOffset(utcOffset);
-			properties.setUtcDSTOffset(utcDSTOffset);
-			properties.setHostname(hostname);
-		}
-
-		/**
-		 * Sets browserHeight.
-		 * 
-		 * @param browserHeight
-		 *            browserHeight
-		 */
-		public void setBrowserHeight(String browserHeight)
-		{
-			this.browserHeight = browserHeight;
-		}
-
-		/**
-		 * Sets browserWidth.
-		 * 
-		 * @param browserWidth
-		 *            browserWidth
-		 */
-		public void setBrowserWidth(String browserWidth)
-		{
-			this.browserWidth = browserWidth;
-		}
-
-		/**
-		 * Sets navigatorAppCodeName.
-		 * 
-		 * @param navigatorAppCodeName
-		 *            navigatorAppCodeName
-		 */
-		public void setNavigatorAppCodeName(String navigatorAppCodeName)
-		{
-			this.navigatorAppCodeName = navigatorAppCodeName;
-		}
-
-		/**
-		 * Sets navigatorAppName.
-		 * 
-		 * @param navigatorAppName
-		 *            navigatorAppName
-		 */
-		public void setNavigatorAppName(String navigatorAppName)
-		{
-			this.navigatorAppName = navigatorAppName;
-		}
-
-		/**
-		 * Sets navigatorAppVersion.
-		 * 
-		 * @param navigatorAppVersion
-		 *            navigatorAppVersion
-		 */
-		public void setNavigatorAppVersion(String navigatorAppVersion)
-		{
-			this.navigatorAppVersion = navigatorAppVersion;
-		}
-
-		/**
-		 * Sets navigatorCookieEnabled.
-		 * 
-		 * @param navigatorCookieEnabled
-		 *            navigatorCookieEnabled
-		 */
-		public void setNavigatorCookieEnabled(Boolean navigatorCookieEnabled)
-		{
-			this.navigatorCookieEnabled = navigatorCookieEnabled;
-		}
-
-		/**
-		 * Sets navigatorJavaEnabled.
-		 * 
-		 * @param navigatorJavaEnabled
-		 *            navigatorJavaEnabled
-		 */
-		public void setNavigatorJavaEnabled(Boolean navigatorJavaEnabled)
-		{
-			this.navigatorJavaEnabled = navigatorJavaEnabled;
-		}
-
-		/**
-		 * Sets navigatorLanguage.
-		 * 
-		 * @param navigatorLanguage
-		 *            navigatorLanguage
-		 */
-		public void setNavigatorLanguage(String navigatorLanguage)
-		{
-			this.navigatorLanguage = navigatorLanguage;
-		}
-
-		/**
-		 * Sets navigatorPlatform.
-		 * 
-		 * @param navigatorPlatform
-		 *            navigatorPlatform
-		 */
-		public void setNavigatorPlatform(String navigatorPlatform)
-		{
-			this.navigatorPlatform = navigatorPlatform;
-		}
-
-		/**
-		 * Sets navigatorUserAgent.
-		 * 
-		 * @param navigatorUserAgent
-		 *            navigatorUserAgent
-		 */
-		public void setNavigatorUserAgent(String navigatorUserAgent)
-		{
-			this.navigatorUserAgent = navigatorUserAgent;
-		}
-
-		/**
-		 * Sets screenColorDepth.
-		 * 
-		 * @param screenColorDepth
-		 *            screenColorDepth
-		 */
-		public void setScreenColorDepth(String screenColorDepth)
-		{
-			this.screenColorDepth = screenColorDepth;
-		}
-
-		/**
-		 * Sets screenHeight.
-		 * 
-		 * @param screenHeight
-		 *            screenHeight
-		 */
-		public void setScreenHeight(String screenHeight)
-		{
-			this.screenHeight = screenHeight;
-		}
-
-		/**
-		 * Sets screenWidth.
-		 * 
-		 * @param screenWidth
-		 *            screenWidth
-		 */
-		public void setScreenWidth(String screenWidth)
-		{
-			this.screenWidth = screenWidth;
-		}
-
-		/**
-		 * @param hostname
-		 *            the hostname shown in the browser.
-		 */
-		public void setHostname(String hostname)
-		{
-			this.hostname = hostname;
-		}
-
-		/**
-		 * @return The clients hostname shown in the browser
-		 */
-		public String getHostname()
-		{
-			return hostname;
-		}
-
-		/**
-		 * Sets utcOffset.
-		 * 
-		 * @param utcOffset
-		 *            utcOffset
-		 */
-		public void setUtcOffset(String utcOffset)
-		{
-			this.utcOffset = utcOffset;
-		}
-
-		/**
-		 * Sets utcDSTOffset.
-		 * 
-		 * @param utcDSTOffset
-		 *            utcDSTOffset
-		 */
-		public void setUtcDSTOffset(String utcDSTOffset)
-		{
-			this.utcDSTOffset = utcDSTOffset;
-		}
-
-		private int getInt(String value)
-		{
-			int intValue = -1;
-			try
-			{
-				intValue = Integer.parseInt(value);
-			}
-			catch (NumberFormatException e)
-			{
-				// Do nothing
-			}
-			return intValue;
-		}
-
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/7c6066a3/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 f6574e9..21ad364 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
@@ -71,7 +71,7 @@ public class BrowserInfoPage extends WebPage
 		else
 		{
 			ClientProperties properties = clientInfo.getProperties();
-			properties.setJavaEnabled(false);
+			properties.setNavigatorJavaEnabled(false);
 		}
 
 		continueToOriginalDestination();
@@ -127,7 +127,16 @@ public class BrowserInfoPage extends WebPage
 		link.add(AttributeModifier.replace("href", urlModel));
 		add(link);
 
-		browserInfoForm = new BrowserInfoForm("postback")
+		IModel<ClientProperties> properties = new AbstractReadOnlyModel<ClientProperties>()
+		{
+			@Override
+			public ClientProperties getObject()
+			{
+				return WebSession.get().getClientInfo().getProperties();
+			}
+		};
+
+		browserInfoForm = new BrowserInfoForm("postback", properties)
 		{
 			private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/7c6066a3/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
index 6c72cf4..3153e32 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
@@ -65,8 +65,8 @@ public class ClientProperties implements IClusterable
 	private int browserVersionMajor = -1;
 	private int browserVersionMinor = -1;
 	private int browserWidth = -1;
-	private boolean cookiesEnabled;
-	private boolean javaEnabled;
+	private boolean navigatorCookieEnabled;
+	private boolean navigatorJavaEnabled;
 	private String navigatorAppCodeName;
 	private String navigatorAppName;
 	private String navigatorAppVersion;
@@ -424,26 +424,42 @@ public class ClientProperties implements IClusterable
 	}
 
 	/**
+	 * @deprecated use {@link #isNavigatorCookieEnabled()} instead
+	 */
+	public boolean isCookiesEnabled()
+	{
+		return isNavigatorCookieEnabled();
+	}
+
+	/**
+	 * @deprecated use {@link #isNavigatorJavaEnabled()} instead
+	 */
+	public boolean isJavaEnabled()
+	{
+		return isNavigatorJavaEnabled();
+	}
+
+	/**
 	 * 
 	 * 
 	 * @return The client's navigator.cookieEnabled property.
 	 */
-	public boolean isCookiesEnabled()
+	public boolean isNavigatorCookieEnabled()
 	{
-		if (!cookiesEnabled && RequestCycle.get() != null)
+		if (!navigatorCookieEnabled && RequestCycle.get() != null)
 		{
 			Collection<Cookie> cookies = ((WebRequest)RequestCycle.get().getRequest()).getCookies();
-			cookiesEnabled = cookies != null && cookies.size() > 0;
+			navigatorCookieEnabled = cookies != null && cookies.size() > 0;
 		}
-		return cookiesEnabled;
+		return navigatorCookieEnabled;
 	}
 
 	/**
 	 * @return The client's navigator.javaEnabled property.
 	 */
-	public boolean isJavaEnabled()
+	public boolean isNavigatorJavaEnabled()
 	{
-		return javaEnabled;
+		return navigatorJavaEnabled;
 	}
 
 	/**
@@ -565,18 +581,18 @@ public class ClientProperties implements IClusterable
 	 * @param cookiesEnabled
 	 *            The client's navigator.cookieEnabled property.
 	 */
-	public void setCookiesEnabled(boolean cookiesEnabled)
+	public void setNavigatorCookieEnabled(boolean cookiesEnabled)
 	{
-		this.cookiesEnabled = cookiesEnabled;
+		this.navigatorCookieEnabled = cookiesEnabled;
 	}
 
 	/**
 	 * @param navigatorJavaEnabled
 	 *            The client's navigator.javaEnabled property.
 	 */
-	public void setJavaEnabled(boolean navigatorJavaEnabled)
+	public void setNavigatorJavaEnabled(boolean navigatorJavaEnabled)
 	{
-		javaEnabled = navigatorJavaEnabled;
+		this.navigatorJavaEnabled = navigatorJavaEnabled;
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/7c6066a3/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
index 85e751e..9fc4700 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/request/WebClientInfo.java
@@ -46,7 +46,7 @@ public class WebClientInfo extends ClientInfo
 
 	/**
 	 * The user agent string from the User-Agent header, app. Theoretically, this might differ from
-	 * {@link org.apache.wicket.protocol.http.ClientProperties#isJavaEnabled()} property, which is
+	 * {@link org.apache.wicket.protocol.http.ClientProperties#isNavigatorJavaEnabled()} property, which is
 	 * not set until an actual reply from a browser (e.g. using {@link BrowserInfoPage} is set.
 	 */
 	private final String userAgent;


[2/4] wicket git commit: declare reference for js

Posted by sv...@apache.org.
declare reference for js


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/16311e84
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/16311e84
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/16311e84

Branch: refs/heads/master
Commit: 16311e84a32cfe8c4124d013df3b0b520be36b39
Parents: 7c6066a
Author: Sven Meier <sv...@apache.org>
Authored: Fri Apr 24 10:31:34 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Apr 24 10:31:34 2015 +0200

----------------------------------------------------------------------
 .../java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java    | 4 +---
 .../org/apache/wicket/markup/html/pages/BrowserInfoForm.java   | 6 ++++--
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/16311e84/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
index 30b2714..cbe18fc 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
@@ -26,7 +26,6 @@ import org.apache.wicket.protocol.http.ClientProperties;
 import org.apache.wicket.protocol.http.request.WebClientInfo;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.util.time.Duration;
 
 /**
@@ -130,7 +129,6 @@ public class AjaxClientInfoBehavior extends AbstractAjaxTimerBehavior
 	{
 		super.renderHead(component, response);
 
-		response.render(JavaScriptHeaderItem.forReference(
-				new JavaScriptResourceReference(BrowserInfoForm.class, "wicket-browser-info.js")));
+		response.render(JavaScriptHeaderItem.forReference(BrowserInfoForm.JS));
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/16311e84/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
index ab40dfa..b1852d0 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
@@ -27,6 +27,7 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.protocol.http.ClientProperties;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
 
 /**
  * Form for posting JavaScript properties.
@@ -34,6 +35,8 @@ import org.apache.wicket.request.resource.JavaScriptResourceReference;
 public class BrowserInfoForm extends Panel
 {
 	private static final long serialVersionUID = 1L;
+	
+	public static final ResourceReference JS = new JavaScriptResourceReference(BrowserInfoForm.class, "wicket-browser-info.js");
 
 	/**
 	 * The special form that submits the client/browser info
@@ -103,8 +106,7 @@ public class BrowserInfoForm extends Panel
 	{
 		super.renderHead(response);
 
-		response.render(JavaScriptHeaderItem.forReference(
-				new JavaScriptResourceReference(BrowserInfoForm.class, "wicket-browser-info.js")));
+		response.render(JavaScriptHeaderItem.forReference(JS));
 	}
 
 	/**


[3/4] wicket git commit: simplified with meta refresh to the link

Posted by sv...@apache.org.
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;
 	}


[4/4] wicket git commit: WICKET-5892 ClientProperties#isJavaScriptEnabled()

Posted by sv...@apache.org.
WICKET-5892 ClientProperties#isJavaScriptEnabled()


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ca8aba72
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ca8aba72
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ca8aba72

Branch: refs/heads/master
Commit: ca8aba7246e8d0944d96de6a78d619f613343981
Parents: b4aec3a
Author: Sven Meier <sv...@apache.org>
Authored: Fri Apr 24 12:09:01 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Apr 24 12:09:01 2015 +0200

----------------------------------------------------------------------
 .../wicket/ajax/AjaxClientInfoBehavior.java     |  2 ++
 .../markup/html/pages/BrowserInfoForm.java      |  6 ++--
 .../markup/html/pages/BrowserInfoPage.java      | 30 +++++++++++---------
 .../wicket/protocol/http/ClientProperties.java  | 19 +++++++++++++
 4 files changed, 41 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/ca8aba72/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
index cbe18fc..a2fc41a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
@@ -84,6 +84,8 @@ public class AjaxClientInfoBehavior extends AbstractAjaxTimerBehavior
 		Session.get().setClientInfo(clientInfo);
 
 		ClientProperties properties = clientInfo.getProperties();
+		properties.setJavaScriptEnabled(true);
+
 		properties.setNavigatorAppCodeName(navigatorAppCodeName);
 		properties.setNavigatorAppName(navigatorAppName);
 		properties.setNavigatorAppVersion(navigatorAppVersion);

http://git-wip-us.apache.org/repos/asf/wicket/blob/ca8aba72/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
index b1852d0..8164c1b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/BrowserInfoForm.java
@@ -22,7 +22,7 @@ import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.html.panel.GenericPanel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.protocol.http.ClientProperties;
@@ -32,7 +32,7 @@ import org.apache.wicket.request.resource.ResourceReference;
 /**
  * Form for posting JavaScript properties.
  */
-public class BrowserInfoForm extends Panel
+public class BrowserInfoForm extends GenericPanel<ClientProperties>
 {
 	private static final long serialVersionUID = 1L;
 	
@@ -51,7 +51,7 @@ public class BrowserInfoForm extends Panel
 	 */
 	public BrowserInfoForm(String id, IModel<ClientProperties> properties)
 	{
-		super(id);
+		super(id, properties);
 
 		this.form = createForm("postback", properties);
 		form.setOutputMarkupId(true);

http://git-wip-us.apache.org/repos/asf/wicket/blob/ca8aba72/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 c089f89..6b63972 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
@@ -77,7 +77,16 @@ public class BrowserInfoPage extends WebPage
 	 */
 	private void initComps()
 	{
-		final ContinueLink link = new ContinueLink("link");
+		IModel<ClientProperties> properties = new AbstractReadOnlyModel<ClientProperties>()
+		{
+			@Override
+			public ClientProperties getObject()
+			{
+				return WebSession.get().getClientInfo().getProperties();
+			}
+		};
+
+		final ContinueLink link = new ContinueLink("link", properties);
 		add(link);
 
 		WebComponent meta = new WebComponent("meta");
@@ -93,15 +102,6 @@ public class BrowserInfoPage extends WebPage
 		}));
 		add(meta);
 
-		IModel<ClientProperties> properties = new AbstractReadOnlyModel<ClientProperties>()
-		{
-			@Override
-			public ClientProperties getObject()
-			{
-				return WebSession.get().getClientInfo().getProperties();
-			}
-		};
-
 		browserInfoForm = new BrowserInfoForm("postback", properties)
 		{
 			private static final long serialVersionUID = 1L;
@@ -109,16 +109,18 @@ public class BrowserInfoPage extends WebPage
 			@Override
 			protected void afterSubmit()
 			{
+				getModelObject().setJavaScriptEnabled(true);
+
 				continueToOriginalDestination();
 			}
 		};
 		add(browserInfoForm);
 	}
 	
-	private class ContinueLink extends Link<Void> {
-		public ContinueLink(String id)
+	private class ContinueLink extends Link<ClientProperties> {
+		public ContinueLink(String id, IModel<ClientProperties> properties)
 		{
-			super(id);
+			super(id, properties);
 		}
 
 		@Override
@@ -130,6 +132,8 @@ public class BrowserInfoPage extends WebPage
 		@Override
 		public void onClick()
 		{
+			getModelObject().setJavaScriptEnabled(false);
+
 			continueToOriginalDestination();
 		}
 	};

http://git-wip-us.apache.org/repos/asf/wicket/blob/ca8aba72/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
index 3153e32..f8bb40b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/ClientProperties.java
@@ -85,6 +85,8 @@ public class ClientProperties implements IClusterable
 
 	private String hostname;
 
+	private boolean javaScriptEnabled;
+
 	/**
 	 * @return The browser height at the time it was measured
 	 */
@@ -352,6 +354,15 @@ public class ClientProperties implements IClusterable
 	}
 
 	/**
+	 * Flag indicating support of JavaScript in the browser.
+	 * 
+	 * @return True if JavaScript is enabled
+	 */
+	public boolean isJavaScriptEnabled() {
+		return javaScriptEnabled;
+	}
+
+	/**
 	 * Flag indicating that the browser is a derivative of the Microsoft Internet Explorer browser
 	 * platform.
 	 * 
@@ -722,6 +733,14 @@ public class ClientProperties implements IClusterable
 		this.utcOffset = utcOffset;
 	}
 
+	/**
+	 * @param javaScriptEnabled
+	 *            is JavaScript supported in the browser
+	 */
+	public void setJavaScriptEnabled(boolean javaScriptEnabled) {
+		this.javaScriptEnabled = javaScriptEnabled;
+	}
+
 	@Override
 	public String toString()
 	{