You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2020/02/17 21:03:00 UTC
[wicket] branch master updated: WICKET-6745: Deprecate
(Ajax)ServerAndClientTimeFilter
This is an automated email from the ASF dual-hosted git repository.
papegaaij pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/master by this push:
new 80c1b59 WICKET-6745: Deprecate (Ajax)ServerAndClientTimeFilter
80c1b59 is described below
commit 80c1b59ef6bd910c90cdad07b8f7d9960d5fb3b7
Author: Emond Papegaaij <em...@topicus.nl>
AuthorDate: Mon Feb 17 22:02:33 2020 +0100
WICKET-6745: Deprecate (Ajax)ServerAndClientTimeFilter
---
.../response/filter/AjaxServerAndClientTimeFilter.java | 9 +++++++++
.../wicket/response/filter/ServerAndClientTimeFilter.java | 9 +++++++++
.../apache/wicket/examples/WicketExampleApplication.java | 15 +++++++++++++++
3 files changed, 33 insertions(+)
diff --git a/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java b/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java
index 8db3b90..898066e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java
+++ b/wicket-core/src/main/java/org/apache/wicket/response/filter/AjaxServerAndClientTimeFilter.java
@@ -49,7 +49,16 @@ import org.slf4j.LoggerFactory;
* </pre>
*
* @author jcompagner
+ * @deprecated This class has been deprecated for several reasons. The way it tries to measure
+ * server and client times is very inaccurate. Modern browsers provide much better tools
+ * to measure Javascript execution times. The measurements were written in a property
+ * that has been deprecated for years and removed in modern browsers. Finally, rendering
+ * the Javascript directly into the response makes it hard to support a strict CSP with
+ * nonces. There is no real replacement for this class. Use the tools provided by the
+ * browser. See {@code WicketExampleApplication} for a simple example of passing
+ * rendering times to the browser via the {@code Server-Timing} header.
*/
+@Deprecated
public class AjaxServerAndClientTimeFilter implements IResponseFilter
{
private static Logger log = LoggerFactory.getLogger(AjaxServerAndClientTimeFilter.class);
diff --git a/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java b/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java
index 87e9732..51ada47 100644
--- a/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java
+++ b/wicket-core/src/main/java/org/apache/wicket/response/filter/ServerAndClientTimeFilter.java
@@ -50,7 +50,16 @@ import org.slf4j.LoggerFactory;
* </pre>
*
* @author jcompagner
+ * @deprecated This class has been deprecated for several reasons. The way it tries to measure
+ * server and client times is very inaccurate. Modern browsers provide much better tools
+ * to measure Javascript execution times. The measurements were written in a property
+ * that has been deprecated for years and removed in modern browsers. Finally, rendering
+ * the Javascript directly into the response makes it hard to support a strict CSP with
+ * nonces. There is no real replacement for this class. Use the tools provided by the
+ * browser. See {@code WicketExampleApplication} for a simple example of passing
+ * rendering times to the browser via the {@code Server-Timing} header.
*/
+@Deprecated
public class ServerAndClientTimeFilter implements IResponseFilter
{
private static final Logger log = LoggerFactory.getLogger(ServerAndClientTimeFilter.class);
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
index 016276e..526c24f 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
@@ -18,6 +18,10 @@ package org.apache.wicket.examples;
import org.apache.wicket.csp.CSPDirective;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.request.cycle.IRequestCycleListener;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.resource.CssUrlReplacer;
import org.apache.wicket.settings.SecuritySettings;
import org.apache.wicket.util.crypt.ClassCryptFactory;
@@ -64,5 +68,16 @@ public abstract class WicketExampleApplication extends WebApplication
.add(CSPDirective.STYLE_SRC,
"https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css")
.add(CSPDirective.FONT_SRC, "https://maxcdn.bootstrapcdn.com");
+
+ getRequestCycleListeners().add(new IRequestCycleListener()
+ {
+ @Override
+ public void onEndRequest(RequestCycle cycle)
+ {
+ ((WebResponse) cycle.getResponse()).addHeader("Server-Timing",
+ "server;desc=\"Wicket rendering time\";dur="
+ + (System.currentTimeMillis() - cycle.getStartTime()));
+ }
+ });
}
}