Repository: wicket Updated Branches: refs/heads/WICKET-6056-client-properties d6235ba55 -> 954f27754
WICKET-6056 added factory methods for clientInfo Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/954f2775 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/954f2775 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/954f2775 Branch: refs/heads/WICKET-6056-client-properties Commit: 954f27754ea3841173871cc56e58966d63c95226 Parents: d6235ba Author: Sven Meier <svenme...@apache.org> Authored: Thu Nov 24 18:05:40 2016 +0100 Committer: Sven Meier <svenme...@apache.org> Committed: Thu Nov 24 18:05:40 2016 +0100 ---------------------------------------------------------------------- .../wicket/ajax/AjaxClientInfoBehavior.java | 7 +++++- .../markup/html/pages/BrowserInfoForm.java | 3 +-- .../markup/html/pages/BrowserInfoPage.java | 23 +++++++++++++++++--- .../protocol/http/request/WebClientInfo.java | 16 ++++++++++---- 4 files changed, 39 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/954f2775/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 ca39644..e16317a 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 @@ -68,7 +68,7 @@ public class AjaxClientInfoBehavior extends AbstractAjaxTimerBehavior RequestCycle requestCycle = RequestCycle.get(); IRequestParameters requestParameters = requestCycle.getRequest().getRequestParameters(); - WebClientInfo clientInfo = new WebClientInfo(requestCycle); + WebClientInfo clientInfo = newWebClientInfo(requestCycle); Session.get().setClientInfo(clientInfo); ClientProperties properties = clientInfo.getProperties(); @@ -78,6 +78,11 @@ public class AjaxClientInfoBehavior extends AbstractAjaxTimerBehavior onClientInfo(target, clientInfo); } + protected WebClientInfo newWebClientInfo(RequestCycle requestCycle) + { + return new WebClientInfo(requestCycle); + } + /** * A callback method invoked when the client info is collected. * http://git-wip-us.apache.org/repos/asf/wicket/blob/954f2775/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 5a659e9..d78cb95 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 @@ -64,8 +64,7 @@ public class BrowserInfoForm extends GenericPanel<ClientProperties> */ protected Form<ClientProperties> createForm(String componentId, IModel<ClientProperties> properties) { - Form<ClientProperties> form = new Form<ClientProperties>(componentId, - new CompoundPropertyModel<ClientProperties>(properties)) + Form<ClientProperties> form = new Form<ClientProperties>(componentId, properties) { private static final long serialVersionUID = 1L; http://git-wip-us.apache.org/repos/asf/wicket/blob/954f2775/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 e7143d7..dc93bce 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 @@ -22,8 +22,11 @@ import org.apache.wicket.markup.head.OnLoadHeaderItem; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.link.Link; 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; /** * This page uses a form post right after the page has loaded in the browser, using JavaScript or @@ -70,17 +73,26 @@ public class BrowserInfoPage extends WebPage return false; } + protected WebClientInfo newWebClientInfo(RequestCycle requestCycle) + { + return new WebClientInfo(requestCycle); + } + /** * Adds components. */ private void initComps() { - IModel<ClientProperties> properties = new IModel<ClientProperties>() + IModel<ClientProperties> properties = new LoadableDetachableModel<ClientProperties>() { @Override - public ClientProperties getObject() + protected ClientProperties load() { - return WebSession.get().getClientInfo().getProperties(); + WebClientInfo clientInfo = newWebClientInfo(getRequestCycle()); + + WebSession.get().setClientInfo(clientInfo); + + return clientInfo.getProperties(); } }; @@ -104,6 +116,11 @@ public class BrowserInfoPage extends WebPage add(browserInfoForm); } + protected ClientProperties newClientInfo() + { + return WebSession.get().getClientInfo().getProperties(); + } + private static class ContinueLink extends Link<ClientProperties> { public ContinueLink(String id, IModel<ClientProperties> properties) http://git-wip-us.apache.org/repos/asf/wicket/blob/954f2775/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 9fc4700..5561226 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 @@ -52,7 +52,7 @@ public class WebClientInfo extends ClientInfo private final String userAgent; /** Client properties object. */ - private final ClientProperties properties = new ClientProperties(); + private final ClientProperties properties; /** * Construct. @@ -79,7 +79,10 @@ public class WebClientInfo extends ClientInfo super(); this.userAgent = userAgent; + + properties = newClientProperties(); properties.setRemoteAddress(getRemoteAddr(requestCycle)); + init(); } @@ -93,6 +96,11 @@ public class WebClientInfo extends ClientInfo return properties; } + protected ClientProperties newClientProperties() + { + return new ClientProperties(); + } + /** * returns the user agent string. * @@ -219,8 +227,8 @@ public class WebClientInfo extends ClientInfo if (userAgent.contains("version/")) { - // e.g.: Mozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE) AppleWebKit/533.19.4 -// (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 + // e.g.: Mozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE) AppleWebKit/533.19 + // (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 setMajorMinorVersionByPattern("version/(\\d+)\\.(\\d+)"); } } @@ -239,7 +247,7 @@ public class WebClientInfo extends ClientInfo if (properties.isBrowserMozillaFirefox()) { // e.g.: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 -// Ubuntu/9.25 (jaunty) Firefox/3.8 + // Ubuntu/9.25 (jaunty) Firefox/3.8 setMajorMinorVersionByPattern("firefox/(\\d+)\\.(\\d+)"); } }