Repository: wicket
Updated Branches:
  refs/heads/WICKET-6056-client-properties a7a46269d -> 44e1e4303


WICKET-6056 delay setting info into session until it is fully read


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

Branch: refs/heads/WICKET-6056-client-properties
Commit: 44e1e4303ee184d93f788557a442444c39bc6a46
Parents: a7a4626
Author: Sven Meier <svenme...@apache.org>
Authored: Tue Nov 29 16:49:16 2016 +0100
Committer: Sven Meier <svenme...@apache.org>
Committed: Tue Nov 29 16:49:16 2016 +0100

----------------------------------------------------------------------
 .../wicket/ajax/AjaxClientInfoBehavior.java     |  8 +---
 .../markup/html/pages/BrowserInfoForm.java      |  1 -
 .../markup/html/pages/BrowserInfoPage.java      | 30 +++++++-----
 .../wicket/protocol/http/ClientProperties.java  | 49 +++++++-------------
 .../ajaxhellobrowser/AjaxHelloBrowser.java      |  2 +-
 .../ajaxhellobrowser/ExtendedClientInfo.java    | 13 ++++--
 6 files changed, 47 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/44e1e430/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 e16317a..f51f8a4 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
@@ -22,7 +22,6 @@ import 
org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.pages.BrowserInfoForm;
-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;
@@ -66,15 +65,12 @@ public class AjaxClientInfoBehavior extends 
AbstractAjaxTimerBehavior
                stop(target);
 
                RequestCycle requestCycle = RequestCycle.get();
-               IRequestParameters requestParameters = 
requestCycle.getRequest().getRequestParameters();
 
+               IRequestParameters requestParameters = 
requestCycle.getRequest().getRequestParameters();
                WebClientInfo clientInfo = newWebClientInfo(requestCycle);
+               clientInfo.getProperties().read(requestParameters);
                Session.get().setClientInfo(clientInfo);
 
-               ClientProperties properties = clientInfo.getProperties();
-
-               properties.read(requestParameters);
-
                onClientInfo(target, clientInfo);
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/44e1e430/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 d78cb95..51ef702 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
@@ -20,7 +20,6 @@ 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.panel.GenericPanel;
-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;

http://git-wip-us.apache.org/repos/asf/wicket/blob/44e1e430/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 dc93bce..8d2cdc8 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
@@ -49,7 +49,7 @@ public class BrowserInfoPage extends WebPage
        private static final long serialVersionUID = 1L;
 
        private BrowserInfoForm browserInfoForm;
-
+       
        /**
         * Bookmarkable constructor.
         */
@@ -83,20 +83,24 @@ public class BrowserInfoPage extends WebPage
         */
        private void initComps()
        {
+               IModel<WebClientInfo> info = new 
LoadableDetachableModel<WebClientInfo>() {
+                       @Override
+                       protected WebClientInfo load()
+                       {
+                               return newWebClientInfo(getRequestCycle());
+                       }                       
+               };
+
                IModel<ClientProperties> properties = new 
LoadableDetachableModel<ClientProperties>()
                {
                        @Override
                        protected ClientProperties load()
                        {
-                               WebClientInfo clientInfo = 
newWebClientInfo(getRequestCycle());
-
-                               WebSession.get().setClientInfo(clientInfo);
-
-                               return clientInfo.getProperties();
+                               return info.getObject().getProperties();
                        }
                };
 
-               add(new ContinueLink("link", properties));
+               add(new ContinueLink("link", info));
 
                browserInfoForm = new BrowserInfoForm("postback", properties)
                {
@@ -107,6 +111,8 @@ public class BrowserInfoPage extends WebPage
                        {
                                getModelObject().setJavaScriptEnabled(true);
 
+                               
WebSession.get().setClientInfo(info.getObject());
+
                                continueToOriginalDestination();
 
                                // switch to home page if no original 
destination was intercepted
@@ -121,11 +127,11 @@ public class BrowserInfoPage extends WebPage
                return WebSession.get().getClientInfo().getProperties();
        }
 
-       private static class ContinueLink extends Link<ClientProperties> {
+       private static class ContinueLink extends Link<WebClientInfo> {
 
-               public ContinueLink(String id, IModel<ClientProperties> 
properties)
+               public ContinueLink(String id, IModel<WebClientInfo> info)
                {
-                       super(id, properties);
+                       super(id, info);
                }
 
                @Override
@@ -139,7 +145,9 @@ public class BrowserInfoPage extends WebPage
                @Override
                public void onClick()
                {
-                       getModelObject().setJavaScriptEnabled(false);
+                       
getModelObject().getProperties().setJavaScriptEnabled(false);
+
+                       WebSession.get().setClientInfo(getModelObject());
 
                        continueToOriginalDestination();
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/44e1e430/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 109d175..cd97e4f 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
@@ -791,38 +791,21 @@ public class ClientProperties implements IClusterable
         */
        public void read(IRequestParameters parameters)
        {
-               String navigatorAppName = 
parameters.getParameterValue("navigatorAppName").toString("N/A");
-               String navigatorAppVersion = 
parameters.getParameterValue("navigatorAppVersion").toString("N/A");
-               String navigatorAppCodeName = 
parameters.getParameterValue("navigatorAppCodeName").toString("N/A");
-               boolean navigatorCookieEnabled = 
parameters.getParameterValue("navigatorCookieEnabled").toBoolean(false);
-               Boolean navigatorJavaEnabled = 
parameters.getParameterValue("navigatorJavaEnabled").toBoolean(false);
-               String navigatorLanguage = 
parameters.getParameterValue("navigatorLanguage").toString("N/A");
-               String navigatorPlatform = 
parameters.getParameterValue("navigatorPlatform").toString("N/A");
-               String navigatorUserAgent = 
parameters.getParameterValue("navigatorUserAgent").toString("N/A");
-               int screenWidth = 
parameters.getParameterValue("screenWidth").toInt(-1);
-               int screenHeight = 
parameters.getParameterValue("screenHeight").toInt(-1);
-               int screenColorDepth = 
parameters.getParameterValue("screenColorDepth").toInt(-1);
-               String utcOffset = 
parameters.getParameterValue("utcOffset").toString(null);
-               String utcDSTOffset = 
parameters.getParameterValue("utcDSTOffset").toString(null);
-               int browserWidth = 
parameters.getParameterValue("browserWidth").toInt(-1);
-               int browserHeight = 
parameters.getParameterValue("browserHeight").toInt(-1);
-               String hostname = 
parameters.getParameterValue("hostname").toString("N/A");
-
-               setNavigatorAppCodeName(navigatorAppCodeName);
-               setNavigatorAppName(navigatorAppName);
-               setNavigatorAppVersion(navigatorAppVersion);
-               setNavigatorCookieEnabled(navigatorCookieEnabled);
-               setNavigatorJavaEnabled(navigatorJavaEnabled);
-               setNavigatorLanguage(navigatorLanguage);
-               setNavigatorPlatform(navigatorPlatform);
-               setNavigatorUserAgent(navigatorUserAgent);
-               setScreenWidth(screenWidth);
-               setScreenHeight(screenHeight);
-               setScreenColorDepth(screenColorDepth);
-               setUtcOffset(utcOffset);
-               setUtcDSTOffset(utcDSTOffset);
-               setBrowserWidth(browserWidth);
-               setBrowserHeight(browserHeight);
-               setHostname(hostname);
+               
setNavigatorAppCodeName(parameters.getParameterValue("navigatorAppCodeName").toString("N/A"));
+               
setNavigatorAppName(parameters.getParameterValue("navigatorAppName").toString("N/A"));
+               
setNavigatorAppVersion(parameters.getParameterValue("navigatorAppVersion").toString("N/A"));
+               
setNavigatorCookieEnabled(parameters.getParameterValue("navigatorCookieEnabled").toBoolean(false));
+               
setNavigatorJavaEnabled(parameters.getParameterValue("navigatorJavaEnabled").toBoolean(false));
+               
setNavigatorLanguage(parameters.getParameterValue("navigatorLanguage").toString("N/A"));
+               
setNavigatorPlatform(parameters.getParameterValue("navigatorPlatform").toString("N/A"));
+               
setNavigatorUserAgent(parameters.getParameterValue("navigatorUserAgent").toString("N/A"));
+               
setScreenWidth(parameters.getParameterValue("screenWidth").toInt(-1));
+               
setScreenHeight(parameters.getParameterValue("screenHeight").toInt(-1));
+               
setScreenColorDepth(parameters.getParameterValue("screenColorDepth").toInt(-1));
+               
setUtcOffset(parameters.getParameterValue("utcOffset").toString(null));
+               
setUtcDSTOffset(parameters.getParameterValue("utcDSTOffset").toString(null));
+               
setBrowserWidth(parameters.getParameterValue("browserWidth").toInt(-1));
+               
setBrowserHeight(parameters.getParameterValue("browserHeight").toInt(-1));
+               
setHostname(parameters.getParameterValue("hostname").toString("N/A"));
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/44e1e430/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.java
index 8dcc615..258103c 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/AjaxHelloBrowser.java
@@ -89,7 +89,7 @@ public class AjaxHelloBrowser extends WicketExamplePage
                        {
                                super.renderHead(component, response);
 
-                               String script = 
"Wicket.BrowserInfo.collectExtraInfo = function(info) { info.foo = 'FOO'; };";
+                               String script = 
"Wicket.BrowserInfo.collectExtraInfo = function(info) { info.extendedProperty = 
'This property was read extra.'; };";
 
                                
response.render(JavaScriptHeaderItem.forScript(script, "extended-client-info"));
                        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/44e1e430/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/ExtendedClientInfo.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/ExtendedClientInfo.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/ExtendedClientInfo.java
index d772cdb..849aed8 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/ExtendedClientInfo.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/ExtendedClientInfo.java
@@ -38,11 +38,16 @@ public class ExtendedClientInfo extends WebClientInfo
 
        public class ExtendedClientProperties extends ClientProperties
        {
-               private String foo;
+               private String extendedProperty;
                
-               public String getFoo()
+               public String getExtendedProperty()
                {
-                       return foo;
+                       return extendedProperty;
+               }
+
+               public void setExtendedProperty(String extendedProperty)
+               {
+                       this.extendedProperty = extendedProperty;
                }
                
                @Override
@@ -50,7 +55,7 @@ public class ExtendedClientInfo extends WebClientInfo
                {
                        super.read(parameters);
                        
-                       foo = 
parameters.getParameterValue("foo").toString("N/A");
+                       
setExtendedProperty(parameters.getParameterValue("extendedProperty").toString("N/A"));
                }
        }
 }

Reply via email to