Skip to content

Commit

Permalink
Fix support openapi 3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
lkqm committed Jun 11, 2023
1 parent b1ee559 commit dee11d3
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/main/java/io/apidocx/parse/parser/ParseHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,10 @@ public List<String> getApiTags(PsiMethod method) {
/**
* 获取参数描述
*/
public String getParameterDescription(PsiParameter parameter, Map<String, String> paramTagMap,
public String getParameterDescription(PsiMethod method, PsiParameter parameter, Map<String, String> paramTagMap,
List<Value> values) {
// @ApiParam > @param
String summary = PsiSwaggerUtils.getParameterDescription(parameter);
String summary = PsiSwaggerUtils.getParameterDescription(method, parameter);
if (StringUtils.isEmpty(summary)) {
summary = paramTagMap.get(parameter.getName());
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/apidocx/parse/parser/RequestParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ private Property doParseParameter(PsiMethod method, PsiParameter parameter) {
required = parseHelper.getParameterRequired(parameter);
}
Map<String, String> paramTags = PsiDocCommentUtils.getTagParamTextMap(method);
String description = parseHelper.getParameterDescription(parameter, paramTags, property.getPropertyValues());
String description = parseHelper.getParameterDescription(method, parameter, paramTags, property.getPropertyValues());
property.setIn(in);
property.setName(name);
property.setDescription(description);
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/io/apidocx/parse/util/PsiAnnotationUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiModifierListOwner;
import com.intellij.psi.PsiParameter;
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiTypeElement;
import com.intellij.psi.impl.JavaConstantExpressionEvaluator;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

Expand All @@ -34,6 +36,13 @@ public static PsiAnnotation getAnnotation(PsiModifierListOwner element, String f
return element.getAnnotation(fqn);
}

/**
* 获取指定注解
*/
public static PsiAnnotation[] getAnnotations(PsiModifierListOwner element, String fqn) {
return Arrays.stream(element.getAnnotations()).filter(annotation -> fqn.equals(annotation.getQualifiedName())).toArray(PsiAnnotation[]::new);
}

/**
* 获取指定注解
*/
Expand Down Expand Up @@ -187,4 +196,5 @@ public static BigDecimal getBigDecimalAttributeValueByAnnotation(PsiAnnotation a
}
return null;
}

}
10 changes: 9 additions & 1 deletion src/main/java/io/apidocx/parse/util/PsiSwaggerUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public static String getApiSummary(PsiMethod psiMethod) {
return null;
}

public static String getParameterDescription(PsiParameter psiParameter) {
public static String getParameterDescription(PsiMethod method, PsiParameter psiParameter) {
PsiAnnotation apiParam = PsiAnnotationUtils.getAnnotation(psiParameter, SwaggerConstants.ApiParam);
if (apiParam != null) {
return PsiAnnotationUtils.getStringAttributeValueByAnnotation(apiParam);
Expand All @@ -51,6 +51,14 @@ public static String getParameterDescription(PsiParameter psiParameter) {
if (parameter != null) {
return PsiAnnotationUtils.getStringAttributeValueByAnnotation(parameter, "description");
}
PsiAnnotation[] parameters = PsiAnnotationUtils.getAnnotations(psiParameter, SwaggerConstants.Parameter);
for (PsiAnnotation p : parameters) {
String name = PsiAnnotationUtils.getStringAttributeValueByAnnotation(p, "name");
if (name != null && name.equals(psiParameter.getName())) {
return PsiAnnotationUtils.getStringAttributeValueByAnnotation(p, "description");
}
}

return null;
}

Expand Down

0 comments on commit dee11d3

Please sign in to comment.