From 35c19e8e906e1b88cdb05e04ed583bd28b65f2d9 Mon Sep 17 00:00:00 2001
From: gongyangfan <704210402@qq.com>
Date: Wed, 27 Nov 2024 10:42:05 +0800
Subject: [PATCH] fix: Fix if it was inner enumeration, classLoader load class
maybe fail
This problem can cause the data dictionary not to load the inner enumeration and the enumeration display to be incorrect
Closes #969
---
.../com/ly/doc/builder/ProjectDocConfigBuilder.java | 4 ++--
.../java/com/ly/doc/helper/ParamsBuildHelper.java | 4 ++--
src/main/java/com/ly/doc/utils/DocUtil.java | 2 +-
src/main/java/com/ly/doc/utils/JavaClassUtil.java | 12 ++++++------
src/main/java/com/ly/doc/utils/JavaFieldUtil.java | 4 ++--
5 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ly/doc/builder/ProjectDocConfigBuilder.java b/src/main/java/com/ly/doc/builder/ProjectDocConfigBuilder.java
index 1cb94d8da..7b846b61b 100644
--- a/src/main/java/com/ly/doc/builder/ProjectDocConfigBuilder.java
+++ b/src/main/java/com/ly/doc/builder/ProjectDocConfigBuilder.java
@@ -342,10 +342,10 @@ private void initClassFilesMap() {
ClassLoader classLoader = apiConfig.getClassLoader();
try {
if (Objects.isNull(classLoader)) {
- enumClass = Class.forName(cls.getFullyQualifiedName());
+ enumClass = Class.forName(cls.getBinaryName());
}
else {
- enumClass = classLoader.loadClass(cls.getFullyQualifiedName());
+ enumClass = classLoader.loadClass(cls.getBinaryName());
}
enumClassMap.put(cls.getFullyQualifiedName(), enumClass);
}
diff --git a/src/main/java/com/ly/doc/helper/ParamsBuildHelper.java b/src/main/java/com/ly/doc/helper/ParamsBuildHelper.java
index 7ddf07f2e..c1762020b 100644
--- a/src/main/java/com/ly/doc/helper/ParamsBuildHelper.java
+++ b/src/main/java/com/ly/doc/helper/ParamsBuildHelper.java
@@ -823,7 +823,7 @@ public static String handleEnumComment(JavaClass javaClass, ProjectDocConfigBuil
String enumComments = javaClass.getComment();
if (Boolean.TRUE.equals(projectBuilder.getApiConfig().getInlineEnum())) {
ApiDataDictionary dataDictionary = projectBuilder.getApiConfig()
- .getDataDictionary(javaClass.getCanonicalName());
+ .getDataDictionary(javaClass.getBinaryName());
if (Objects.isNull(dataDictionary)) {
// the output format should be unified ( as same as the "else" output)
comment = comment + "
[Enum: " + JavaClassUtil.getEnumParams(javaClass) + "]";
@@ -833,7 +833,7 @@ public static String handleEnumComment(JavaClass javaClass, ProjectDocConfigBuil
if (enumClass.isInterface()) {
ClassLoader classLoader = projectBuilder.getApiConfig().getClassLoader();
try {
- enumClass = classLoader.loadClass(javaClass.getFullyQualifiedName());
+ enumClass = classLoader.loadClass(javaClass.getBinaryName());
}
catch (ClassNotFoundException e) {
return comment;
diff --git a/src/main/java/com/ly/doc/utils/DocUtil.java b/src/main/java/com/ly/doc/utils/DocUtil.java
index 706c62da7..a654712ab 100644
--- a/src/main/java/com/ly/doc/utils/DocUtil.java
+++ b/src/main/java/com/ly/doc/utils/DocUtil.java
@@ -1181,7 +1181,7 @@ public static List buildDictionary(ApiConfig config, JavaProjectBuil
}
for (Class extends Enum>> enumClass : enumImplementSet) {
- JavaClass javaClass = javaProjectBuilder.getClassByName(enumClass.getCanonicalName());
+ JavaClass javaClass = javaProjectBuilder.getClassByName(enumClass.getName());
if (Objects.nonNull(javaClass.getTagByName(DocTags.IGNORE))) {
continue;
}
diff --git a/src/main/java/com/ly/doc/utils/JavaClassUtil.java b/src/main/java/com/ly/doc/utils/JavaClassUtil.java
index d4b124822..5b3f3dd81 100644
--- a/src/main/java/com/ly/doc/utils/JavaClassUtil.java
+++ b/src/main/java/com/ly/doc/utils/JavaClassUtil.java
@@ -419,10 +419,10 @@ private static Class> loadEnumClass(JavaClass javaClass, ProjectDocConfigBuild
ClassLoader classLoader = apiConfig.getClassLoader();
try {
if (Objects.nonNull(classLoader)) {
- return classLoader.loadClass(javaClass.getFullyQualifiedName());
+ return classLoader.loadClass(javaClass.getBinaryName());
}
else {
- return Class.forName(javaClass.getFullyQualifiedName());
+ return Class.forName(javaClass.getBinaryName());
}
}
catch (ClassNotFoundException e) {
@@ -605,7 +605,7 @@ public static EnumInfo getEnumInfo(JavaClass javaClass, ProjectDocConfigBuilder
ApiConfig apiConfig = builder.getApiConfig();
ClassLoader classLoader = apiConfig.getClassLoader();
- ApiDataDictionary dataDictionary = apiConfig.getDataDictionary(javaClass.getFullyQualifiedName());
+ ApiDataDictionary dataDictionary = apiConfig.getDataDictionary(javaClass.getBinaryName());
EnumInfo enumInfo = new EnumInfo();
String comment = javaClass.getComment();
@@ -620,7 +620,7 @@ public static EnumInfo getEnumInfo(JavaClass javaClass, ProjectDocConfigBuilder
Class> enumClass = dataDictionary.getEnumClass();
if (enumClass.isInterface()) {
try {
- enumClass = classLoader.loadClass(javaClass.getFullyQualifiedName());
+ enumClass = classLoader.loadClass(javaClass.getBinaryName());
}
catch (ClassNotFoundException e) {
return enumInfo;
@@ -1120,10 +1120,10 @@ private static String getFieldGenericType(JavaField javaField, ClassLoader class
try {
Class> c;
if (Objects.nonNull(classLoader)) {
- c = classLoader.loadClass(javaField.getDeclaringClass().getCanonicalName());
+ c = classLoader.loadClass(javaField.getDeclaringClass().getBinaryName());
}
else {
- c = Class.forName(javaField.getDeclaringClass().getCanonicalName());
+ c = Class.forName(javaField.getDeclaringClass().getBinaryName());
}
Field f = c.getDeclaredField(name);
f.setAccessible(true);
diff --git a/src/main/java/com/ly/doc/utils/JavaFieldUtil.java b/src/main/java/com/ly/doc/utils/JavaFieldUtil.java
index 99b7f3e54..f019bb27e 100644
--- a/src/main/java/com/ly/doc/utils/JavaFieldUtil.java
+++ b/src/main/java/com/ly/doc/utils/JavaFieldUtil.java
@@ -204,10 +204,10 @@ public static String getConstantsFieldValue(ClassLoader classLoader, JavaClass j
try {
Class> c;
if (Objects.nonNull(classLoader)) {
- c = classLoader.loadClass(javaClass.getFullyQualifiedName());
+ c = classLoader.loadClass(javaClass.getBinaryName());
}
else {
- c = Class.forName(javaClass.getFullyQualifiedName());
+ c = Class.forName(javaClass.getBinaryName());
}
Field[] fields = c.getDeclaredFields();
for (Field f : fields) {