Skip to content

Commit e71aa4e

Browse files
committed
fix: open api judge is java bean rule change from getter to setter
1 parent d5a8659 commit e71aa4e

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

dongtai-api-gather/dongtai-api-gather-openapi/src/main/java/io/dongtai/iast/api/openapi/convertor/JavaBeanOpenApiSchemaConvertor.java

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private List<Field> parseFieldList(Class clazz) {
8888

8989
List<Field> allFieldList = new ArrayList<>();
9090
Set<String> fieldNameSet = new HashSet<>();
91-
Set<String> getterNameLowercaseSet = new HashSet<>();
91+
Set<String> setterNameLowercaseSet = new HashSet<>();
9292
Class currentClass = clazz;
9393

9494
while (currentClass != null && currentClass != Object.class) {
@@ -104,7 +104,7 @@ private List<Field> parseFieldList(Class clazz) {
104104
}
105105

106106
// 收集类上的方法名字
107-
getterNameLowercaseSet.addAll(parseGetterNameLowercaseSet(currentClass));
107+
setterNameLowercaseSet.addAll(parseSetterNameLowercaseSet(currentClass));
108108

109109
// 再处理父类,一路向上知道找到根
110110
currentClass = currentClass.getSuperclass();
@@ -113,7 +113,7 @@ private List<Field> parseFieldList(Class clazz) {
113113
// 然后筛选出来符合条件的字段,作为bean的属性
114114
List<Field> beanFieldList = new ArrayList<>();
115115
allFieldList.forEach(field -> {
116-
if (isBeanField(field, getterNameLowercaseSet)) {
116+
if (isBeanField(field, setterNameLowercaseSet)) {
117117
beanFieldList.add(field);
118118
}
119119
});
@@ -125,41 +125,36 @@ private List<Field> parseFieldList(Class clazz) {
125125
* 判断Field是否是bean的field
126126
*
127127
* @param field
128-
* @param getterNameLowercaseSet
128+
* @param setterNameLowercaseSet
129129
* @return
130130
*/
131-
private boolean isBeanField(Field field, Set<String> getterNameLowercaseSet) {
131+
private boolean isBeanField(Field field, Set<String> setterNameLowercaseSet) {
132132

133133
// 采用白名单的方式,public并且是实例方法则认为是可以的
134134
if (Modifier.isPublic(field.getModifiers())) {
135135
return !Modifier.isStatic(field.getModifiers()) && !Modifier.isFinal(field.getModifiers());
136136
}
137137

138138
// 私有方法并且有对应的getter
139-
String setterMethodName = "";
140-
if (field.getType() == boolean.class || field.getType() == Boolean.class) {
141-
setterMethodName = "is" + field.getName().toLowerCase();
142-
} else {
143-
setterMethodName = "get" + field.getName().toLowerCase();
144-
}
145-
return getterNameLowercaseSet.contains(setterMethodName);
139+
String setterMethodName = "set" + field.getName().toLowerCase();
140+
return setterNameLowercaseSet.contains(setterMethodName);
146141
}
147142

148143
/**
149-
* 解析类上的getter方法,并将其方法名都转为小写返回
144+
* 解析类上的setter方法,并将其方法名都转为小写返回
150145
*
151146
* @param clazz
152147
* @return
153148
*/
154-
private Set<String> parseGetterNameLowercaseSet(Class clazz) {
155-
Set<String> getterNameLowercaseSet = new HashSet<>();
149+
private Set<String> parseSetterNameLowercaseSet(Class clazz) {
150+
Set<String> setterNameLowercaseSet = new HashSet<>();
156151
for (Method declaredMethod : clazz.getDeclaredMethods()) {
157152
// 这里采用比较简单的策略,只要是关键字开头的就认为是ok的
158-
if (declaredMethod.getName().startsWith("get") || declaredMethod.getName().startsWith("is")) {
159-
getterNameLowercaseSet.add(declaredMethod.getName().toLowerCase());
153+
if (declaredMethod.getName().startsWith("set")) {
154+
setterNameLowercaseSet.add(declaredMethod.getName().toLowerCase());
160155
}
161156
}
162-
return getterNameLowercaseSet;
157+
return setterNameLowercaseSet;
163158
}
164159

165160
@Override

0 commit comments

Comments
 (0)