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 2016/11/25 20:14:41 UTC
wicket git commit: WICKET-6056 show extended client properties usage
Repository: wicket
Updated Branches:
refs/heads/WICKET-6056-client-properties 954f27754 -> a7a46269d
WICKET-6056 show extended client properties usage
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a7a46269
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a7a46269
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a7a46269
Branch: refs/heads/WICKET-6056-client-properties
Commit: a7a46269d58a932e30b04c331d0e7230e58ac198
Parents: 954f277
Author: Sven Meier <sv...@apache.org>
Authored: Fri Nov 25 21:14:20 2016 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Fri Nov 25 21:14:20 2016 +0100
----------------------------------------------------------------------
.../markup/html/pages/wicket-browser-info.js | 5 ++
.../wicket/protocol/http/ClientProperties.java | 29 +++++-----
.../ajaxhellobrowser/AjaxHelloBrowser.java | 36 +++++++++++--
.../ajaxhellobrowser/ExtendedClientInfo.java | 56 ++++++++++++++++++++
4 files changed, 109 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/a7a46269/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/wicket-browser-info.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/wicket-browser-info.js b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/wicket-browser-info.js
index 5832fa0..cd0da94 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/wicket-browser-info.js
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/wicket-browser-info.js
@@ -63,6 +63,11 @@
info.browserWidth = window.innerWidth || document.body.offsetWidth;
info.browserHeight = window.innerHeight || document.body.offsetHeight;
info.hostname = window.location.hostname;
+
+ if (Wicket.BrowserInfo.collectExtraInfo) {
+ Wicket.BrowserInfo.collectExtraInfo(info);
+ }
+
return info;
},
http://git-wip-us.apache.org/repos/asf/wicket/blob/a7a46269/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 3d5b54a..109d175 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
@@ -17,6 +17,7 @@
package org.apache.wicket.protocol.http;
import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import java.util.Collection;
import java.util.TimeZone;
@@ -78,16 +79,15 @@ public class ClientProperties implements IClusterable
private int screenColorDepth = -1;
private int screenHeight = -1;
private int screenWidth = -1;
- /** Cached timezone for repeating calls to {@link #getTimeZone()} */
- private TimeZone timeZone;
private String utcDSTOffset;
-
private String utcOffset;
-
private String hostname;
private boolean javaScriptEnabled;
+ /** Cached timezone for repeating calls to {@link #getTimeZone()} */
+ private transient TimeZone timeZone;
+
/**
* @return The browser height at the time it was measured
*/
@@ -731,15 +731,19 @@ public class ClientProperties implements IClusterable
{
StringBuilder b = new StringBuilder();
- Field[] fields = ClientProperties.class.getDeclaredFields();
+ Class<?> clazz = getClass();
+ while (clazz != Object.class) {
+ Field[] fields = clazz.getDeclaredFields();
- for (Field field : fields)
- {
- // Ignore these fields
- if (field.getName().equals("serialVersionUID") == false &&
- field.getName().startsWith("class$") == false &&
- field.getName().startsWith("timeZone") == false)
+ for (Field field : fields)
{
+ // Ignore these fields
+ if (Modifier.isStatic(field.getModifiers()) ||
+ Modifier.isTransient(field.getModifiers()) ||
+ field.isSynthetic())
+ {
+ continue;
+ }
field.setAccessible(true);
@@ -773,8 +777,9 @@ public class ClientProperties implements IClusterable
b.append('\n');
}
}
- }
+ clazz = clazz.getSuperclass();
+ }
return b.toString();
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/a7a46269/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 f63f9cd..8dcc615 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
@@ -21,14 +21,18 @@ import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
+import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxClientInfoBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.examples.WicketExamplePage;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.protocol.http.ClientProperties;
import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.settings.RequestCycleSettings;
@@ -78,11 +82,33 @@ public class AjaxHelloBrowser extends WicketExamplePage
clientTime.setOutputMarkupPlaceholderTag(true);
clientTime.setVisible(false);
- add(AjaxClientInfoBehavior.onClientInfo((AjaxRequestTarget target, WebClientInfo info) -> {
- clientInfo.setVisible(true);
- clientTime.setVisible(true);
- target.add(clientInfo, clientTime);
- }));
+ add(new AjaxClientInfoBehavior() {
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response)
+ {
+ super.renderHead(component, response);
+
+ String script = "Wicket.BrowserInfo.collectExtraInfo = function(info) { info.foo = 'FOO'; };";
+
+ response.render(JavaScriptHeaderItem.forScript(script, "extended-client-info"));
+ }
+
+ @Override
+ protected WebClientInfo newWebClientInfo(RequestCycle requestCycle)
+ {
+ return new ExtendedClientInfo(requestCycle);
+ }
+
+ @Override
+ protected void onClientInfo(AjaxRequestTarget target, WebClientInfo webClientInfo)
+ {
+ clientInfo.setVisible(true);
+ clientTime.setVisible(true);
+
+ target.add(clientInfo, clientTime);
+ }
+ });
add(clientInfo, clientTime);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/a7a46269/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
new file mode 100644
index 0000000..d772cdb
--- /dev/null
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajaxhellobrowser/ExtendedClientInfo.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.examples.ajaxhellobrowser;
+
+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;
+
+
+public class ExtendedClientInfo extends WebClientInfo
+{
+
+ public ExtendedClientInfo(RequestCycle requestCycle)
+ {
+ super(requestCycle);
+ }
+
+ @Override
+ protected ClientProperties newClientProperties()
+ {
+ return new ExtendedClientProperties();
+ }
+
+ public class ExtendedClientProperties extends ClientProperties
+ {
+ private String foo;
+
+ public String getFoo()
+ {
+ return foo;
+ }
+
+ @Override
+ public void read(IRequestParameters parameters)
+ {
+ super.read(parameters);
+
+ foo = parameters.getParameterValue("foo").toString("N/A");
+ }
+ }
+}