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