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