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 <[email protected]>
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()));
+                       }
+               });
        }
 }

Reply via email to