From e75cfe2180dbdb056b581916931cee7b04606a89 Mon Sep 17 00:00:00 2001 From: iroqueta Date: Thu, 11 Sep 2025 16:00:35 -0300 Subject: [PATCH] SDT FromJson method was not working after Spring Boot hot reload. Issue: 206097 --- .../src/main/java/com/genexus/xml/GXXMLSerializable.java | 2 +- .../src/main/java/com/genexus/springboot/GXConfig.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/genexus/xml/GXXMLSerializable.java b/common/src/main/java/com/genexus/xml/GXXMLSerializable.java index 649ac1789..ee4d7cd36 100644 --- a/common/src/main/java/com/genexus/xml/GXXMLSerializable.java +++ b/common/src/main/java/com/genexus/xml/GXXMLSerializable.java @@ -497,7 +497,7 @@ private void collectionFromJSONArray(JSONArray jsonArray, GXSimpleCollection gxC } // cache of methods for classes, inpruve perfomance, becuase each intance get all methods each time called. - private static transient ConcurrentHashMap> classesCacheMethods = new ConcurrentHashMap<>(); + public static transient ConcurrentHashMap> classesCacheMethods = new ConcurrentHashMap<>(); // cache of methods names, inpruve perfomance. private static transient ConcurrentHashMap toLowerCacheMethods = new ConcurrentHashMap<>(); diff --git a/gxspringboot/src/main/java/com/genexus/springboot/GXConfig.java b/gxspringboot/src/main/java/com/genexus/springboot/GXConfig.java index 7a74b9fd0..89a853f88 100644 --- a/gxspringboot/src/main/java/com/genexus/springboot/GXConfig.java +++ b/gxspringboot/src/main/java/com/genexus/springboot/GXConfig.java @@ -5,6 +5,8 @@ import com.genexus.diagnostics.core.ILogger; import com.genexus.diagnostics.core.LogManager; import com.genexus.servlet.CorsFilter; +import com.genexus.xml.GXXMLSerializable; +import jakarta.annotation.PreDestroy; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -75,4 +77,9 @@ public FilterRegistrationBean urlRewriteFilter() { } return registrationBean; } + + @PreDestroy + public void onDestroy() { + GXXMLSerializable.classesCacheMethods.clear(); + } }