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

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


The following commit(s) were added to refs/heads/master by this push:
     new e5c1db9f82 fix: fix GsonUtils concurrent serialization exceptions 
(#6286) (#6287)
e5c1db9f82 is described below

commit e5c1db9f826a535969a41777ee8fc111af687544
Author: fanpipi <[email protected]>
AuthorDate: Wed Feb 4 13:43:25 2026 +0800

    fix: fix GsonUtils concurrent serialization exceptions (#6286) (#6287)
    
    Co-authored-by: aias00 <[email protected]>
---
 .../org/apache/shenyu/common/utils/GsonUtils.java  | 26 +++++++++++-----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git 
a/shenyu-common/src/main/java/org/apache/shenyu/common/utils/GsonUtils.java 
b/shenyu-common/src/main/java/org/apache/shenyu/common/utils/GsonUtils.java
index edd7306b03..7895dc82b5 100644
--- a/shenyu-common/src/main/java/org/apache/shenyu/common/utils/GsonUtils.java
+++ b/shenyu-common/src/main/java/org/apache/shenyu/common/utils/GsonUtils.java
@@ -49,12 +49,11 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.net.URLDecoder;
 import java.sql.Timestamp;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.time.Duration;
+import java.time.LocalDateTime;
+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;
@@ -507,26 +506,27 @@ public class GsonUtils {
     }
     
     private static class TimestampTypeAdapter implements 
JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> {
-        
-        private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss");
-        
+
+        private static final DateTimeFormatter FORMATTER = 
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
         @Override
         public Timestamp deserialize(final JsonElement json, final Type 
typeOfT, final JsonDeserializationContext context) throws JsonParseException {
             if (!(json instanceof JsonPrimitive)) {
                 throw new JsonParseException("The date should be a string 
value");
             }
             try {
-                Date date = format.parse(json.getAsString());
-                return new Timestamp(date.getTime());
-            } catch (ParseException e) {
+                LocalDateTime dateTime = FORMATTER.parse(json.getAsString(), 
LocalDateTime::from);
+                return Timestamp.valueOf(dateTime);
+            } catch (Exception e) {
                 throw new JsonParseException(e);
             }
         }
-        
+
         @Override
         public JsonElement serialize(final Timestamp src, final Type 
typeOfSrc, final JsonSerializationContext context) {
-            String dfString = format.format(new Date(src.getTime()));
-            return new JsonPrimitive(dfString);
+            LocalDateTime ldt = LocalDateTime.ofInstant(src.toInstant(), 
ZoneId.systemDefault());
+            String formatted = FORMATTER.format(ldt);
+            return new JsonPrimitive(formatted);
         }
     }
 }

Reply via email to