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

petrov-mg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 5af30609864 IGNITE-28891 Fixed IDTOSerializerGenerator class name 
parsing for JDK 21 (#13371)
5af30609864 is described below

commit 5af306098646398a865b1055cd70d91b816ff049
Author: Mikhail Petrov <[email protected]>
AuthorDate: Wed Jul 15 09:23:25 2026 +0300

    IGNITE-28891 Fixed IDTOSerializerGenerator class name parsing for JDK 21 
(#13371)
---
 .../internal/MessageSerializerGenerator.java       | 23 +++++++++++
 .../internal/idto/IDTOSerializerGenerator.java     | 45 ++++++++--------------
 .../SystemViewRowAttributeWalkerGenerator.java     | 34 +++-------------
 3 files changed, 45 insertions(+), 57 deletions(-)

diff --git 
a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
 
b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
index 2fe3a5e7d80..caa9adcd650 100644
--- 
a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
+++ 
b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
@@ -1159,4 +1159,27 @@ public class MessageSerializerGenerator {
 
         throw new IllegalArgumentException("Compress annotation is used for an 
unsupported type: " + type);
     }
+
+    /** */
+    public static String simpleClassName(TypeMirror type) {
+        if (type.getKind() == TypeKind.DECLARED) {
+            DeclaredType declaredType = (DeclaredType)type;
+
+            return declaredType.asElement().getSimpleName().toString();
+        }
+
+        return type.toString();
+    }
+
+    /** */
+    public static String qualifiedClassName(TypeMirror type) {
+        if (type.getKind() == TypeKind.DECLARED) {
+            DeclaredType declaredType = (DeclaredType)type;
+            TypeElement el = (TypeElement)declaredType.asElement();
+
+            return el.getQualifiedName().toString();
+        }
+
+        return type.toString();
+    }
 }
diff --git 
a/modules/codegen/src/main/java/org/apache/ignite/internal/idto/IDTOSerializerGenerator.java
 
b/modules/codegen/src/main/java/org/apache/ignite/internal/idto/IDTOSerializerGenerator.java
index acbd9ecd35b..31185785402 100644
--- 
a/modules/codegen/src/main/java/org/apache/ignite/internal/idto/IDTOSerializerGenerator.java
+++ 
b/modules/codegen/src/main/java/org/apache/ignite/internal/idto/IDTOSerializerGenerator.java
@@ -65,6 +65,7 @@ import static 
org.apache.ignite.internal.MessageSerializerGenerator.NL;
 import static org.apache.ignite.internal.MessageSerializerGenerator.TAB;
 import static org.apache.ignite.internal.MessageSerializerGenerator.enumType;
 import static 
org.apache.ignite.internal.MessageSerializerGenerator.identicalFileIsAlreadyGenerated;
+import static 
org.apache.ignite.internal.MessageSerializerGenerator.qualifiedClassName;
 import static 
org.apache.ignite.internal.idto.IgniteDataTransferObjectProcessor.DTO_CLASS;
 
 /**
@@ -382,7 +383,7 @@ public class IDTOSerializerGenerator {
         else if (type.getKind() == TypeKind.TYPEVAR)
             serDes = F.t("out.writeObject(${var})", "in.readObject()");
         else {
-            serDes = TYPE_SERDES.get(className(type));
+            serDes = TYPE_SERDES.get(qualifiedClassName(type));
 
             if (serDes == null) {
                 if (enumType(env, type))
@@ -492,13 +493,13 @@ public class IDTOSerializerGenerator {
         TypeMirror valType = ta.get(1);
         TypeMirror strCls = 
env.getElementUtils().getTypeElement(String.class.getName()).asType();
 
-        if (className(type).equals(Map.class.getName()) && 
assignableFrom(keyType, strCls) && assignableFrom(valType, strCls))
+        if (qualifiedClassName(type).equals(Map.class.getName()) && 
assignableFrom(keyType, strCls) && assignableFrom(valType, strCls))
             serDes = STR_STR_MAP;
 
         if (serDes == null && !hasCustomSerdes(keyType) && 
!hasCustomSerdes(valType)) {
-            if (className(type).equals(TreeMap.class.getName()))
+            if (qualifiedClassName(type).equals(TreeMap.class.getName()))
                 serDes = F.t("U.writeMap(out, ${var})", "U.readTreeMap(in)");
-            else if (className(type).equals(LinkedHashMap.class.getName()))
+            else if 
(qualifiedClassName(type).equals(LinkedHashMap.class.getName()))
                 serDes = F.t("U.writeMap(out, ${var})", "U.readLinkedMap(in)");
             else
                 serDes = F.t("U.writeMap(out, ${var})", "U.readMap(in)");
@@ -513,9 +514,9 @@ public class IDTOSerializerGenerator {
         String el = withLevel("el");
         String k = withLevel("k");
         String v = withLevel("v");
-        String mapImpl = className(type).equals(TreeMap.class.getName())
+        String mapImpl = 
qualifiedClassName(type).equals(TreeMap.class.getName())
             ? TreeMap.class.getName()
-            : className(type).equals(LinkedHashMap.class.getName())
+            : qualifiedClassName(type).equals(LinkedHashMap.class.getName())
                 ? LinkedHashMap.class.getName()
                 : HashMap.class.getName();
 
@@ -589,11 +590,11 @@ public class IDTOSerializerGenerator {
             // Ignite can't serialize collections elements efficiently.
             IgniteBiTuple<String, String> serDes = null;
 
-            if (Collection.class.getName().equals(className(type)))
+            if (Collection.class.getName().equals(qualifiedClassName(type)))
                 serDes = F.t("U.writeCollection(out, ${var})", 
"U.readCollection(in)");
-            else if (List.class.getName().equals(className(type)))
+            else if (List.class.getName().equals(qualifiedClassName(type)))
                 serDes = F.t("U.writeCollection(out, ${var})", 
"U.readList(in)");
-            else if (Set.class.getName().equals(className(type)))
+            else if (Set.class.getName().equals(qualifiedClassName(type)))
                 serDes = F.t("U.writeCollection(out, ${var})", 
"U.readSet(in)");
 
             throwIfNull(type, serDes);
@@ -608,7 +609,7 @@ public class IDTOSerializerGenerator {
         Map<String, String> params = Map.of(
             "${var}", var,
             "${Type}", colEl.toString(),
-            "${CollectionImpl}", simpleName(COLL_IMPL.get(className(type))),
+            "${CollectionImpl}", 
simpleName(COLL_IMPL.get(qualifiedClassName(type))),
             "${len}", withLevel("len"),
             "${i}", withLevel("i"),
             "${el}", el
@@ -627,7 +628,7 @@ public class IDTOSerializerGenerator {
             res = Stream.concat(res, Stream.of(TAB + TAB + "}", TAB + "}", 
"}"));
         }
         else {
-            String implCls = COLL_IMPL.get(className(type));
+            String implCls = COLL_IMPL.get(qualifiedClassName(type));
 
             imports.add(implCls);
 
@@ -658,7 +659,7 @@ public class IDTOSerializerGenerator {
     private Stream<String> arrayCode(TypeMirror type, String var) {
         TypeMirror comp = ((ArrayType)type).getComponentType();
 
-        IgniteBiTuple<String, String> arrSerdes = 
ARRAY_TYPE_SERDES.get(className(comp));
+        IgniteBiTuple<String, String> arrSerdes = 
ARRAY_TYPE_SERDES.get(qualifiedClassName(comp));
 
         if (arrSerdes == null && !hasCustomSerdes(comp)) {
             // Ignite can't serialize array element efficiently.
@@ -739,20 +740,6 @@ public class IDTOSerializerGenerator {
         return flds.values();
     }
 
-    /** @return FQN of {@code comp}. */
-    private static String className(TypeMirror comp) {
-        String n = comp.toString();
-
-        int spaceIdx = n.indexOf(' ');
-
-        if (spaceIdx != -1)
-            n = n.substring(spaceIdx + 1);
-
-        int genIdx = n.indexOf('<');
-
-        return genIdx == -1 ? n : n.substring(0, genIdx);
-    }
-
     /** @return Serializer class name. */
     private String serializerName() {
         return type.getSimpleName() + "Serializer";
@@ -765,9 +752,9 @@ public class IDTOSerializerGenerator {
      */
     private String simpleClassName(TypeMirror type) {
         if (type instanceof PrimitiveType)
-            return className(type);
+            return qualifiedClassName(type);
 
-        String fqn = className(type);
+        String fqn = qualifiedClassName(type);
 
         if (!fqn.startsWith("java.lang") && type.getKind() != TypeKind.TYPEVAR 
&& type.getKind() != TypeKind.ARRAY)
             imports.add(fqn);
@@ -829,7 +816,7 @@ public class IDTOSerializerGenerator {
 
     /** */
     private boolean hasCustomSerdes(TypeMirror type) {
-        return TYPE_SERDES.containsKey(className(type))
+        return TYPE_SERDES.containsKey(qualifiedClassName(type))
             || enumType(env, type)
             || isCollection(type)
             || isBiTuple(type)
diff --git 
a/modules/codegen/src/main/java/org/apache/ignite/internal/systemview/SystemViewRowAttributeWalkerGenerator.java
 
b/modules/codegen/src/main/java/org/apache/ignite/internal/systemview/SystemViewRowAttributeWalkerGenerator.java
index 7d264377690..f085da55954 100644
--- 
a/modules/codegen/src/main/java/org/apache/ignite/internal/systemview/SystemViewRowAttributeWalkerGenerator.java
+++ 
b/modules/codegen/src/main/java/org/apache/ignite/internal/systemview/SystemViewRowAttributeWalkerGenerator.java
@@ -33,12 +33,13 @@ import javax.lang.model.element.ElementKind;
 import javax.lang.model.element.ExecutableElement;
 import javax.lang.model.element.Modifier;
 import javax.lang.model.element.TypeElement;
-import javax.lang.model.type.DeclaredType;
 import javax.lang.model.type.TypeKind;
 import javax.lang.model.type.TypeMirror;
 import javax.tools.JavaFileObject;
 import org.apache.ignite.internal.util.typedef.F;
 
+import static 
org.apache.ignite.internal.MessageSerializerGenerator.qualifiedClassName;
+import static 
org.apache.ignite.internal.MessageSerializerGenerator.simpleClassName;
 import static 
org.apache.ignite.internal.systemview.SystemViewRowAttributeWalkerProcessor.superclasses;
 
 /**
@@ -144,10 +145,10 @@ public class SystemViewRowAttributeWalkerGenerator {
 
             String line = TAB + TAB;
 
-            if (!retClazz.getKind().isPrimitive() && 
!qualifiedName(retClazz).startsWith("java.lang"))
-                imports.add("import " + qualifiedName(retClazz) + ";");
+            if (!retClazz.getKind().isPrimitive() && 
!qualifiedClassName(retClazz).startsWith("java.lang"))
+                imports.add("import " + qualifiedClassName(retClazz) + ";");
 
-            line += "v.accept(" + i + ", \"" + name + "\", " + 
simpleName(retClazz) + ".class);";
+            line += "v.accept(" + i + ", \"" + name + "\", " + 
simpleClassName(retClazz) + ".class);";
 
             code.add(line);
         });
@@ -164,7 +165,7 @@ public class SystemViewRowAttributeWalkerGenerator {
             String line = TAB + TAB;
 
             if (!retClazz.getKind().isPrimitive())
-                line += "v.accept(" + i + ", \"" + name + "\", " + 
simpleName(retClazz) + ".class, row." + name + "());";
+                line += "v.accept(" + i + ", \"" + name + "\", " + 
simpleClassName(retClazz) + ".class, row." + name + "());";
             else if (retClazz.getKind() == TypeKind.BOOLEAN)
                 line += "v.acceptBoolean(" + i + ", \"" + name + "\", row." + 
name + "());";
             else if (retClazz.getKind() == TypeKind.CHAR)
@@ -275,27 +276,4 @@ public class SystemViewRowAttributeWalkerGenerator {
         for (int i = 0; i < notOrdered.size(); i++)
             c.accept(notOrdered.get(i), i + ordered.size());
     }
-
-    /** */
-    private String simpleName(TypeMirror type) {
-        if (type.getKind() == TypeKind.DECLARED) {
-            DeclaredType declaredType = (DeclaredType)type;
-
-            return declaredType.asElement().getSimpleName().toString();
-        }
-
-        return type.toString();
-    }
-
-    /** */
-    private String qualifiedName(TypeMirror type) {
-        if (type.getKind() == TypeKind.DECLARED) {
-            DeclaredType declaredType = (DeclaredType)type;
-            TypeElement el = (TypeElement)declaredType.asElement();
-
-            return el.getQualifiedName().toString();
-        }
-
-        return type.toString();
-    }
 }

Reply via email to