You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by fs...@apache.org on 2022/04/13 13:56:24 UTC

[jmeter] branch master updated: Further silence error prone warnings

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

fschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 8f8eb0f209 Further silence error prone warnings
8f8eb0f209 is described below

commit 8f8eb0f209bd6cd76fd9c5dd0173cb34c292d744
Author: Felix Schumacher <fe...@internetallee.de>
AuthorDate: Wed Apr 13 15:55:02 2022 +0200

    Further silence error prone warnings
    
    Replace JdkObsolete with JavaUtilDate where we can't replace usage of new Date()
    Use Instant and other newer APIs from java.time, where we can replace Date() without
    changing our API.
    
    And while we are here, we can get use some more isEmpty calls.
    
    Part of #708
---
 .../visualizers/RespTimeGraphVisualizer.java       | 12 ++++---
 .../jmeter/visualizers/SamplerResultTab.java       | 12 ++++---
 .../src/main/java/org/apache/jmeter/JMeter.java    | 38 ++++++++++++++--------
 .../org/apache/jmeter/report/core/TimeHelper.java  |  2 +-
 .../jmeter/report/dashboard/ReportGenerator.java   |  2 +-
 .../report/processor/NormalizerSampleConsumer.java |  2 +-
 .../org/apache/jmeter/reporters/ResultSaver.java   | 11 +++----
 .../org/apache/jmeter/save/CSVSaveService.java     |  4 +--
 .../jmeter/functions/DateTimeConvertFunction.java  | 18 ++++++----
 .../org/apache/jmeter/functions/TimeFunction.java  | 16 +++++----
 .../jmeter/protocol/http/control/CacheManager.java |  8 ++---
 .../protocol/http/control/HC4CookieHandler.java    |  4 +--
 .../jmeter/protocol/http/proxy/ProxyControl.java   |  8 ++---
 .../protocol/jms/sampler/BaseJMSSampler.java       |  2 +-
 .../jmeter/protocol/jms/sampler/JMSSampler.java    | 20 +++++++++---
 15 files changed, 95 insertions(+), 64 deletions(-)

diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
index 03115a2ce9..a98701c052 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
@@ -23,9 +23,10 @@ import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -705,12 +706,13 @@ public class RespTimeGraphVisualizer extends AbstractVisualizer implements Actio
         return buttonPanel;
     }
 
-    @SuppressWarnings("JdkObsolete")
     public String[] getXAxisLabels() {
-        SimpleDateFormat formatter = new SimpleDateFormat(xAxisTimeFormat.getText()); //$NON-NLS-1$
+        DateTimeFormatter formatter = DateTimeFormatter
+                .ofPattern(xAxisTimeFormat.getText()) //$NON-NLS-1$
+                .withZone(ZoneId.systemDefault());
         String[] xAxisLabels = new String[(int) durationTest]; // Test can't have a duration more than 2^31 secs (cast from long to int)
         for (int j = 0; j < durationTest; j++) {
-            xAxisLabels[j] = formatter.format(new Date((minStartTime + j) * intervalValue));
+            xAxisLabels[j] = formatter.format(Instant.ofEpochMilli((minStartTime + j) * intervalValue));
         }
         return xAxisLabels;
     }
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java b/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java
index 5e1d4a0b83..f0115931e1 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java
@@ -26,9 +26,9 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Reader;
 import java.io.Writer;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
@@ -86,7 +86,9 @@ public abstract class SamplerResultTab implements ResultRenderer {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(SamplerResultTab.class);
     // N.B. these are not multi-threaded, so don't make it static
-    private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); // ISO format $NON-NLS-1$
+    private final DateTimeFormatter dateFormat = DateTimeFormatter
+            .ofPattern("yyyy-MM-dd HH:mm:ss z")  // ISO format $NON-NLS-1$
+            .withZone(ZoneId.systemDefault());
 
     private static final String NL = "\n"; // $NON-NLS-1$
 
@@ -262,7 +264,7 @@ public abstract class SamplerResultTab implements ResultRenderer {
                                 .getResString("view_results_thread_name")) //$NON-NLS-1$
                         .append(sampleResult.getThreadName()).append(NL);
                 String startTime = dateFormat
-                        .format(new Date(sampleResult.getStartTime()));
+                        .format(Instant.ofEpochMilli(sampleResult.getStartTime()));
                 statsBuff
                         .append(JMeterUtils
                                 .getResString("view_results_sample_start")) //$NON-NLS-1$
diff --git a/src/core/src/main/java/org/apache/jmeter/JMeter.java b/src/core/src/main/java/org/apache/jmeter/JMeter.java
index 3fa0d81f51..7c6f51a098 100644
--- a/src/core/src/main/java/org/apache/jmeter/JMeter.java
+++ b/src/core/src/main/java/org/apache/jmeter/JMeter.java
@@ -32,10 +32,12 @@ import java.net.MalformedURLException;
 import java.net.SocketException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.FormatStyle;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Date;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
@@ -456,7 +458,6 @@ public class JMeter implements JMeterPlugin {
      * Called reflectively by {@link NewDriver#main(String[])}
      * @param args The arguments for JMeter
      */
-    @SuppressWarnings("JdkObsolete")
     public void start(String[] args) {
         CLArgsParser parser = new CLArgsParser(args, options);
         String error = parser.getErrorString();
@@ -524,11 +525,10 @@ public class JMeter implements JMeterPlugin {
             }
 
             // Set some (hopefully!) useful properties
-            long now=System.currentTimeMillis();
-            JMeterUtils.setProperty("START.MS",Long.toString(now));// $NON-NLS-1$
-            Date today=new Date(now); // so it agrees with above
-            JMeterUtils.setProperty("START.YMD",new SimpleDateFormat("yyyyMMdd").format(today));// $NON-NLS-1$ $NON-NLS-2$
-            JMeterUtils.setProperty("START.HMS",new SimpleDateFormat("HHmmss").format(today));// $NON-NLS-1$ $NON-NLS-2$
+            Instant now = Instant.now();
+            JMeterUtils.setProperty("START.MS",Long.toString(now.toEpochMilli()));// $NON-NLS-1$
+            JMeterUtils.setProperty("START.YMD", getFormatter("yyyyMMdd").format(now));// $NON-NLS-1$ $NON-NLS-2$
+            JMeterUtils.setProperty("START.HMS", getFormatter("HHmmss").format(now));// $NON-NLS-1$ $NON-NLS-2$
 
             if (parser.getArgumentById(VERSION_OPT) != null) {
                 displayAsciiArt();
@@ -599,6 +599,10 @@ public class JMeter implements JMeterPlugin {
         }
     }
 
+    private static DateTimeFormatter getFormatter(String pattern) {
+        return DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.systemDefault());
+    }
+
     /**
      * Extract option JMeter#REPORT_OUTPUT_FOLDER_OPT and if defined sets property
      * {@link JMeter#JMETER_REPORT_OUTPUT_DIR_PROPERTY} after checking folder can
@@ -1096,8 +1100,8 @@ public class JMeter implements JMeterPlugin {
                 clonedTree.add(clonedTree.getArray()[0], new ListenToTest(
                         org.apache.jmeter.JMeter.ListenToTest.RunMode.LOCAL, false, reportGenerator));
                 engine.configure(clonedTree);
-                long now=System.currentTimeMillis();
-                println("Starting standalone test @ "+new Date(now)+" ("+now+")");
+                Instant now = Instant.now();
+                println("Starting standalone test @ "+ formatLikeDate(now) + " (" + now.toEpochMilli() + ')');
                 engines.add(engine);
                 engine.runTest();
             } else {
@@ -1127,6 +1131,14 @@ public class JMeter implements JMeterPlugin {
         }
     }
 
+    private static String formatLikeDate(Instant instant) {
+        return DateTimeFormatter
+                .ofLocalizedDateTime(FormatStyle.LONG)
+                .withLocale(Locale.ROOT)
+                .withZone(ZoneId.systemDefault())
+                .format(instant);
+    }
+
     /**
      * This function does the following:
      * <ul>
@@ -1325,11 +1337,11 @@ public class JMeter implements JMeterPlugin {
 
         @SuppressWarnings("JdkObsolete")
         private void endTest(boolean isDistributed) {
-            long now = System.currentTimeMillis();
+            Instant now = Instant.now();
             if (isDistributed) {
-                println("Tidying up remote @ "+new Date(now)+" ("+now+")");
+                println("Tidying up remote @ " + formatLikeDate(now) + " (" + now.toEpochMilli() + ')');
             } else {
-                println("Tidying up ...    @ "+new Date(now)+" ("+now+")");
+                println("Tidying up ...    @ " + formatLikeDate(now) + " (" + now.toEpochMilli() + ')');
             }
 
             if (isDistributed) {
diff --git a/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java b/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java
index b490b48dea..0c1953f870 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java
@@ -76,7 +76,7 @@ public class TimeHelper {
      *            the format
      * @return the string
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     public static String formatTimeStamp(long timeStamp, String format) {
         SimpleDateFormat dateFormat = format != null ? new SimpleDateFormat(
                 format) : new SimpleDateFormat();
diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java
index ce575a8842..c73031c340 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java
@@ -270,7 +270,7 @@ public class ReportGenerator {
     /**
      * @return {@link FilterConsumer} that filter data based on date range
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private FilterConsumer createFilterByDateRange() {
         FilterConsumer dateRangeFilter = new FilterConsumer();
         dateRangeFilter.setName(DATE_RANGE_FILTER_CONSUMER_NAME);
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java
index 7834af8f4e..55df979911 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java
@@ -89,7 +89,7 @@ public class NormalizerSampleConsumer extends AbstractSampleConsumer {
     }
 
     @Override
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     public void consume(Sample s, int channel) {
         Date date = null;
         try {
diff --git a/src/core/src/main/java/org/apache/jmeter/reporters/ResultSaver.java b/src/core/src/main/java/org/apache/jmeter/reporters/ResultSaver.java
index b1f0c55977..cd9b6d565e 100644
--- a/src/core/src/main/java/org/apache/jmeter/reporters/ResultSaver.java
+++ b/src/core/src/main/java/org/apache/jmeter/reporters/ResultSaver.java
@@ -23,9 +23,9 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.Serializable;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 
 import org.apache.jmeter.control.TransactionController;
 import org.apache.jmeter.engine.util.NoThreadClone;
@@ -123,13 +123,12 @@ public class ResultSaver extends AbstractTestElement implements NoThreadClone, S
     }
 
     @Override
-    @SuppressWarnings("JdkObsolete")
     public void testStarted(String host) {
         synchronized(LOCK){
             sequenceNumber = 0;
             if (getAddTimeStamp()) {
-                DateFormat format = new SimpleDateFormat(TIMESTAMP_FORMAT);
-                timeStamp = format.format(new Date());
+                DateTimeFormatter format = DateTimeFormatter.ofPattern(TIMESTAMP_FORMAT).withZone(ZoneId.systemDefault());
+                timeStamp = format.format(Instant.now());
             } else {
                 timeStamp = "";
             }
diff --git a/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java b/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java
index 6d13807364..fc13865c55 100644
--- a/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java
+++ b/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java
@@ -203,7 +203,7 @@ public final class CSVSaveService {
      *
      * @throws JMeterError
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private static SampleEvent makeResultFromDelimitedString(
             final String[] parts,
             final SampleSaveConfiguration saveConfig, // may be updated
@@ -843,7 +843,7 @@ public final class CSVSaveService {
      *            the separation string
      * @return the separated value representation of the result
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     public static String resultToDelimitedString(SampleEvent event,
             SampleResult sample,
             SampleSaveConfiguration saveConfig,
diff --git a/src/functions/src/main/java/org/apache/jmeter/functions/DateTimeConvertFunction.java b/src/functions/src/main/java/org/apache/jmeter/functions/DateTimeConvertFunction.java
index 002d795f66..c382ba1747 100644
--- a/src/functions/src/main/java/org/apache/jmeter/functions/DateTimeConvertFunction.java
+++ b/src/functions/src/main/java/org/apache/jmeter/functions/DateTimeConvertFunction.java
@@ -17,10 +17,11 @@
 
 package org.apache.jmeter.functions;
 
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Date;
 import java.util.List;
 
 import org.apache.jmeter.engine.util.CompoundVariable;
@@ -62,20 +63,23 @@ public class DateTimeConvertFunction extends AbstractFunction {
     }
 
     @Override
-    @SuppressWarnings("JdkObsolete")
     public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
         String dateString = values[0].execute();
         String sourceDateFormat = values[1].execute();
         String targetDateFormat = values[2].execute();
         try {
-            SimpleDateFormat targetDateFormatter = new SimpleDateFormat(targetDateFormat);
+            DateTimeFormatter targetDateFormatter = DateTimeFormatter
+                    .ofPattern(targetDateFormat)
+                    .withZone(ZoneId.systemDefault());
             String newDate;
-            if (sourceDateFormat != null && sourceDateFormat.length() > 0) {
-                SimpleDateFormat sourceDateFormatter = new SimpleDateFormat(sourceDateFormat);
+            if (sourceDateFormat != null && !sourceDateFormat.isEmpty()) {
+                DateTimeFormatter sourceDateFormatter = DateTimeFormatter
+                        .ofPattern(sourceDateFormat)
+                        .withZone(ZoneId.systemDefault());
                 newDate = targetDateFormatter.format(sourceDateFormatter.parse(dateString));
             } else {
                 // dateString will be an epoch time
-                newDate = targetDateFormatter.format(new Date(Long.parseLong(dateString)));
+                newDate = targetDateFormatter.format(Instant.ofEpochMilli(Long.parseLong(dateString)));
             }
             addVariableValue(newDate, values, 3);
             return newDate;
diff --git a/src/functions/src/main/java/org/apache/jmeter/functions/TimeFunction.java b/src/functions/src/main/java/org/apache/jmeter/functions/TimeFunction.java
index e6566a205f..69c90be61d 100644
--- a/src/functions/src/main/java/org/apache/jmeter/functions/TimeFunction.java
+++ b/src/functions/src/main/java/org/apache/jmeter/functions/TimeFunction.java
@@ -17,10 +17,11 @@
 
 package org.apache.jmeter.functions;
 
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -77,10 +78,9 @@ public class TimeFunction extends AbstractFunction {
 
     /** {@inheritDoc} */
     @Override
-    @SuppressWarnings("JdkObsolete")
     public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
         String datetime;
-        if (format.length() == 0){// Default to milliseconds
+        if (format.isEmpty()) {// Default to milliseconds
             datetime = Long.toString(System.currentTimeMillis());
         } else {
             // Resolve any aliases
@@ -92,12 +92,14 @@ public class TimeFunction extends AbstractFunction {
                 long div = Long.parseLong(fmt.substring(1)); // should never case NFE
                 datetime = Long.toString(System.currentTimeMillis() / div);
             } else {
-                SimpleDateFormat df = new SimpleDateFormat(fmt);// Not synchronised, so can't be shared
-                datetime = df.format(new Date());
+                DateTimeFormatter df = DateTimeFormatter // Not synchronised, so can't be shared
+                        .ofPattern(fmt)
+                        .withZone(ZoneId.systemDefault());
+                datetime = df.format(Instant.now());
             }
         }
 
-        if (variable.length() > 0) {
+        if (!variable.isEmpty()) {
             JMeterVariables vars = getVariables();
             if (vars != null){// vars will be null on TestPlan
                 vars.put(variable, datetime);
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java
index 8b26d702de..9e0a426484 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/CacheManager.java
@@ -63,7 +63,7 @@ public class CacheManager extends ConfigTestElement implements TestStateListener
 
     private static final Logger log = LoggerFactory.getLogger(CacheManager.class);
 
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private static final Date EXPIRED_DATE = new Date(0L);
     private static final int DEFAULT_MAX_SIZE = 5000;
     private static final long ONE_YEAR_MS = 365*24*60*60*1000L;
@@ -307,7 +307,7 @@ public class CacheManager extends ConfigTestElement implements TestStateListener
         return expiresDate;
     }
 
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private Date extractExpiresDateFromCacheControl(String lastModified,
             String cacheControl, String expires, String etag, String url,
             String date, final String maxAge, Date defaultExpiresDate) {
@@ -327,7 +327,7 @@ public class CacheManager extends ConfigTestElement implements TestStateListener
         return defaultExpiresDate;
     }
 
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private Date calcExpiresDate(String lastModified, String cacheControl,
             String expires, String etag, String url, String date) {
         if(!StringUtils.isEmpty(lastModified) && !StringUtils.isEmpty(date)) {
@@ -516,7 +516,7 @@ public class CacheManager extends ConfigTestElement implements TestStateListener
 
     }
 
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private boolean entryStillValid(URL url, CacheEntry entry) {
         log.debug("Check if entry {} is still valid for url {}", entry, url);
         if (entry != null && entry.getVaryHeader() == null) {
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java
index a5c07414b7..0dab8cac52 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java
@@ -104,7 +104,7 @@ public class HC4CookieHandler implements CookieHandler {
     }
 
     @Override
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     public void addCookieFromHeader(CookieManager cookieManager,
             boolean checkCookies, String cookieHeader, URL url) {
             boolean debugEnabled = log.isDebugEnabled();
@@ -240,7 +240,7 @@ public class HC4CookieHandler implements CookieHandler {
     /**
      * Create an HttpClient cookie from a JMeter cookie
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private org.apache.http.cookie.Cookie makeCookie(Cookie jmc) {
         long exp = jmc.getExpiresMillis();
         BasicClientCookie ret = new BasicClientCookie(jmc.getName(),
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
index 52b751b280..6c0335109f 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
@@ -773,7 +773,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
         }
     }
 
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     public String[] getCertificateDetails() {
         if (isDynamicMode()) {
             try {
@@ -1540,7 +1540,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
     /**
      * Initialise the user-provided keystore
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private void initUserKeyStore() {
         try {
             keyStore = getKeyStore(storePassword.toCharArray());
@@ -1562,7 +1562,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
     /**
      * Initialise the dynamic domain keystore
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private void initDynamicKeyStore() throws IOException, GeneralSecurityException {
         if (storePassword  != null) { // Assume we have already created the store
             try {
@@ -1658,7 +1658,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
     /**
      * Initialise the single key JMeter keystore (original behaviour)
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     private void initJMeterKeyStore() throws IOException, GeneralSecurityException {
         if (storePassword != null) { // Assume we have already created the store
             try {
diff --git a/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java b/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java
index 9e60decdf3..0ff317f76a 100644
--- a/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java
+++ b/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java
@@ -337,7 +337,7 @@ public abstract class BaseJMSSampler extends AbstractSampler {
      * @param message JMS Message
      * @return String with message header values.
      */
-    @SuppressWarnings("JdkObsolete")
+    @SuppressWarnings("JavaUtilDate")
     public static String getMessageHeaders(Message message) {
         final StringBuilder response = new StringBuilder(256);
         try {
diff --git a/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java b/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java
index 62d7488746..5d448f98c8 100644
--- a/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java
+++ b/src/protocol/jms/src/main/java/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java
@@ -18,9 +18,13 @@
 package org.apache.jmeter.protocol.jms.sampler;
 
 import java.nio.charset.StandardCharsets;
-import java.util.Date;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.FormatStyle;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.Locale;
 import java.util.Map;
 
 import javax.jms.BytesMessage;
@@ -747,10 +751,17 @@ public class JMSSampler extends AbstractSampler implements ThreadListener {
         }
     }
 
-    @SuppressWarnings("JdkObsolete")
+    private static String formatLikeDate(Instant instant) {
+        return DateTimeFormatter
+                .ofLocalizedDateTime(FormatStyle.LONG)
+                .withLocale(Locale.ROOT)
+                .withZone(ZoneId.systemDefault())
+                .format(instant);
+    }
+
     private void logThreadStart() {
         if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("Thread started {}", new Date());
+            LOGGER.debug("Thread started {}", formatLikeDate(Instant.now()));
             LOGGER.debug("JMSSampler: [{}], hashCode=[{}]", Thread.currentThread().getName(), hashCode());
             LOGGER.debug("QCF: [{}], sendQueue=[{}]", getQueueConnectionFactory(), getSendQueue());
             LOGGER.debug("Timeout = [{}]", getTimeout());
@@ -794,10 +805,9 @@ public class JMSSampler extends AbstractSampler implements ThreadListener {
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("JdkObsolete")
     public void threadFinished() {
         if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("Thread ended {}", new Date());
+            LOGGER.debug("Thread ended {}", formatLikeDate(Instant.now()));
         }
 
         if (context != null) {