]> source.dussan.org Git - jgit.git/commitdiff
[spotbugs] parse time using thread-safe DateTimeFormatter 85/172985/4
authorMatthias Sohn <matthias.sohn@sap.com>
Sun, 29 Nov 2020 20:43:51 +0000 (21:43 +0100)
committerChristian Halstrick <christian.halstrick@sap.com>
Thu, 17 Dec 2020 16:18:11 +0000 (17:18 +0100)
LfsConnectionFactory used a static SimpleDateFormat which isn't
thread-safe. Use DateTimeFormatter instead to fix this.

Change-Id: Id580251c999e1e412c269f37b29860d310124c89
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/internal/LfsConnectionFactory.java

index 7a0ed456c1b3e7df4759ffc049ffe9c988d7940d..e221913beaa5e85898940dbec1f3f5932fdb2d13 100644 (file)
@@ -18,7 +18,9 @@ import java.io.IOException;
 import java.net.ProxySelector;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.TreeMap;
@@ -258,8 +260,8 @@ public class LfsConnectionFactory {
        private static final class AuthCache {
                private static final long AUTH_CACHE_EAGER_TIMEOUT = 500;
 
-               private static final SimpleDateFormat ISO_FORMAT = new SimpleDateFormat(
-                               "yyyy-MM-dd'T'HH:mm:ss.SSSX"); //$NON-NLS-1$
+               private static final DateTimeFormatter ISO_FORMAT = DateTimeFormatter
+                               .ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"); //$NON-NLS-1$
 
                /**
                 * Creates a cache entry for an authentication response.
@@ -278,8 +280,10 @@ public class LfsConnectionFactory {
                                                        - AUTH_CACHE_EAGER_TIMEOUT;
                                } else if (action.expiresAt != null
                                                && !action.expiresAt.isEmpty()) {
-                                       this.validUntil = ISO_FORMAT.parse(action.expiresAt)
-                                                       .getTime() - AUTH_CACHE_EAGER_TIMEOUT;
+                                       this.validUntil = LocalDateTime
+                                                       .parse(action.expiresAt, ISO_FORMAT)
+                                                       .atZone(ZoneOffset.UTC).toInstant().toEpochMilli()
+                                                       - AUTH_CACHE_EAGER_TIMEOUT;
                                } else {
                                        this.validUntil = System.currentTimeMillis();
                                }