This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-api.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ff882d  SLING-11206 : Add support for buidling RequestProgressTracker
0ff882d is described below

commit 0ff882d51c40518ce612a2c654a8e943018ad561
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Tue Mar 15 12:53:11 2022 +0100

    SLING-11206 : Add support for buidling RequestProgressTracker
---
 .../sling/api/request/RequestProgressTracker.java  |  6 ++
 .../builder/impl/RequestProgressTrackerImpl.java   | 85 ++++++----------------
 .../org/apache/sling/api/request/package-info.java |  2 +-
 3 files changed, 31 insertions(+), 62 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/api/request/RequestProgressTracker.java 
b/src/main/java/org/apache/sling/api/request/RequestProgressTracker.java
index 760c80b..1324717 100644
--- a/src/main/java/org/apache/sling/api/request/RequestProgressTracker.java
+++ b/src/main/java/org/apache/sling/api/request/RequestProgressTracker.java
@@ -142,4 +142,10 @@ public interface RequestProgressTracker {
      *  method is processed, all further calls to this method are ignored.
      */
     void done();
+
+    /**
+     * Get the duration in nano seconds.
+     * @since 2.6.0 (Sling API Bundle 2.25.0)
+     */
+    long getDuration();
 }
diff --git 
a/src/main/java/org/apache/sling/api/request/builder/impl/RequestProgressTrackerImpl.java
 
b/src/main/java/org/apache/sling/api/request/builder/impl/RequestProgressTrackerImpl.java
index 2cc1b09..99fadb8 100644
--- 
a/src/main/java/org/apache/sling/api/request/builder/impl/RequestProgressTrackerImpl.java
+++ 
b/src/main/java/org/apache/sling/api/request/builder/impl/RequestProgressTrackerImpl.java
@@ -25,8 +25,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import javax.servlet.http.HttpServletRequest;
-
 import org.apache.sling.api.request.RequestProgressTracker;
 
 /**
@@ -113,7 +111,7 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
     /**
      * The system time at creation of this instance or the last {@link 
#reset()}.
      */
-    private long processingStart;
+    private final long processingStart;
 
     /**
      * The system time when {@link #done()} was called or -1 while processing 
is in progress.
@@ -136,40 +134,14 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
      * Creates a new request progress tracker.
      */
     public RequestProgressTrackerImpl() {
-        this(null);
-    }
-
-    /**
-     * Creates a new request progress tracker and logs initial messages about 
the supplied request.
-     *
-     * @param request the request
-     */
-    public RequestProgressTrackerImpl(final HttpServletRequest request) {
-        reset();
-        if (request != null) {
-            log("Method={0}, PathInfo={1}", request.getMethod(), 
request.getPathInfo());
-        }
-    }
-
-    /**
-     * Resets this timer by removing all current entries and timers and adds an
-     * initial timer entry
-     */
-    public void reset() {
-        // remove all entries
-        entries.clear();
-        namedTimerEntries.clear();
-
         // enter initial messages
-        processingStart = startTimerInternal(REQUEST_PROCESSING_TIMER);
-        processingEnd = -1;
+        this.processingStart = startTimerInternal(REQUEST_PROCESSING_TIMER);
+        this.processingEnd = -1;
 
-        entries.add(new TrackingEntry(COMMENT_PREFIX + "timer_end format is " 
+ TIMER_END_FORMAT));
+        this.entries.add(new TrackingEntry(COMMENT_PREFIX + "timer_end format 
is " + TIMER_END_FORMAT));
     }
 
-    /**
-     * @see org.apache.sling.api.request.RequestProgressTracker#getMessages()
-     */
+    @Override
     public Iterator<String> getMessages() {
         return new Iterator<String>() {
             private final Iterator<TrackingEntry> entryIter = 
entries.iterator();
@@ -191,7 +163,7 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
         };
     }
 
-    private String formatMessage(long offset, String message) {
+    private String formatMessage(final long offset, final String message) {
         // Set exact length to avoid array copies within StringBuilder
         final StringBuilder sb = new StringBuilder(PADDING_WIDTH + 1 +  
message.length() + 1);
         final String offsetStr = Long.toString(offset / 1000);
@@ -202,10 +174,7 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
         return sb.toString();
     }
 
-    /**
-     * Dumps the process timer entries to the given writer, one entry per line.
-     * See the class comments for the rough format of each message line.
-     */
+    @Override
     public void dump(final PrintWriter writer) {
         logTimer(REQUEST_PROCESSING_TIMER,
             "Dumping SlingRequestProgressTracker Entries");
@@ -218,22 +187,19 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
         writer.print(sb.toString());
     }
 
-    /** Creates an entry with the given message. */
-    public void log(String message) {
+    @Override
+    public void log(final String message) {
         entries.add(new TrackingEntry(LOG_PREFIX + message));
     }
 
-    /** Creates an entry with the given entry tag and message */
-    public void log(String format, Object... args) {
+    @Override
+    public void log(final String format, final Object... args) {
         String message = messageFormat.format(format, args);
         entries.add(new TrackingEntry(LOG_PREFIX + message));
     }
 
-    /**
-     * Starts a named timer. If a timer of the same name already exists, it is
-     * reset to the current time.
-     */
-    public void startTimer(String name) {
+    @Override
+    public void startTimer(final String name) {
         startTimerInternal(name);
     }
 
@@ -244,26 +210,22 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
      * TIMER_START{<name>} <optional message>
      * </pre>
      */
-    private long startTimerInternal(String name) {
+    private long startTimerInternal(final String name) {
         long timer = System.nanoTime();
         namedTimerEntries.put(name, timer);
         entries.add(new TrackingEntry(timer, "TIMER_START{" + name + "}"));
         return timer;
     }
 
-    /**
-     * Log a timer entry, including start, end and elapsed time.
-     */
-    public void logTimer(String name) {
+    @Override
+    public void logTimer(final String name) {
         if (namedTimerEntries.containsKey(name)) {
             logTimerInternal(name, null, namedTimerEntries.get(name));
         }
     }
 
-    /**
-     * Log a timer entry, including start, end and elapsed time.
-     */
-    public void logTimer(String name, String format, Object... args) {
+    @Override
+    public void logTimer(final String name, final String format, final 
Object... args) {
         if (namedTimerEntries.containsKey(name)) {
             logTimerInternal(name, messageFormat.format(format, args), 
namedTimerEntries.get(name));
         }
@@ -272,7 +234,7 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
     /**
      * Log a timer entry, including start, end and elapsed time using 
TIMER_END_FORMAT
      */
-    private void logTimerInternal(String name, String msg, long startTime) {
+    private void logTimerInternal(final String name, final String msg, final 
long startTime) {
         final StringBuilder sb = new StringBuilder();
         sb.append("TIMER_END{");
         sb.append((System.nanoTime() - startTime) / 1000);
@@ -286,6 +248,7 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
         entries.add(new TrackingEntry(sb.toString()));
     }
 
+    @Override
     public void done() {
         if(processingEnd != -1) return;
         logTimer(REQUEST_PROCESSING_TIMER, REQUEST_PROCESSING_TIMER);
@@ -296,6 +259,7 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
         return processingStart;
     }
 
+    @Override
     public long getDuration() {
         if (processingEnd != -1) {
             return processingEnd - processingStart;
@@ -312,12 +276,11 @@ public class RequestProgressTrackerImpl implements 
RequestProgressTracker {
         // tracking message
         private final String message;
 
-        TrackingEntry(String message) {
-            this.timeStamp = System.nanoTime();
-            this.message = message;
+        TrackingEntry(final String message) {
+            this(System.nanoTime(), message);
         }
 
-        TrackingEntry(long timeStamp, String message) {
+        TrackingEntry(final long timeStamp, final String message) {
             this.timeStamp = timeStamp;
             this.message = message;
         }
diff --git a/src/main/java/org/apache/sling/api/request/package-info.java 
b/src/main/java/org/apache/sling/api/request/package-info.java
index eb8d106..3dc8622 100644
--- a/src/main/java/org/apache/sling/api/request/package-info.java
+++ b/src/main/java/org/apache/sling/api/request/package-info.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@Version("2.5.0")
+@Version("2.6.0")
 package org.apache.sling.api.request;
 
 import org.osgi.annotation.versioning.Version;

Reply via email to