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);
}
}
}