Проблема в добавлении аннотации SwaggerDefinition на уровне класса
Я новичок в библиотеке ложки для преобразования источника Java. Попытка использовать его для преобразования существующих служб REST. Требуется добавить аннотацию io.swagger.annotations.SwaggerDefinition на уровне класса, например:
@SwaggerDefinition(
tags = {
@Tag(
name = "api name", description = "api description"
)
}
)
Проблема в том, что когда я добавляю аннотацию, она добавляется как:
@SwaggerDefinition(
tags =
@Tag(
name = "api name", description = "api description"
)
)
Примечание. Отсутствующие фигурные скобки '{' и соответствующие закрывающие скобки '}'
Ниже приведены используемые функции:
private CtAnnotation createSwaggerDefinitionAnnotation(CtClass<?> ctClass) throws JSONException {
CtAnnotation tagAnnotation = createTagAnnotation(ctClass);
CtAnnotation swaggerDefAnnotation = getFactory().Core().createAnnotation();
CtTypeReference<Object> ref = getFactory().Core().createTypeReference();
ref.setSimpleName("SwaggerDefinition");
CtPackageReference refPackage = getFactory().Core().createPackageReference();
refPackage.setSimpleName("io.swagger.annotations");
ref.setPackage(refPackage);
swaggerDefAnnotation.setAnnotationType(ref);
swaggerDefAnnotation.addValue("tags", tagAnnotation); // TODO: The tag should be wrapped in curly braces
return swaggerDefAnnotation;
}
private CtAnnotation createTagAnnotation(CtClass<?> ctClass) {
String className = ctClass.getQualifiedName();
CtAnnotation tagAnnotation = getFactory().Core().createAnnotation();
CtTypeReference<Object> ref = getFactory().Core().createTypeReference();
ref.setSimpleName("Tag");
CtPackageReference refPackage = getFactory().Core().createPackageReference();
refPackage.setSimpleName("io.swagger.annotations");
ref.setPackage(refPackage);
tagAnnotation.setAnnotationType(ref);
tagAnnotation.addValue("name", getSwaggerDefinitionTagName(className));
tagAnnotation.addValue("description", getSwaggerDefinitionTagDescription(className));
return tagAnnotation;
}
Может ли кто-то определить недостающую часть. Я НЕ в состоянии понять это.
1 ответ
Чтобы добавить фигурные скобки вокруг значений, вам нужно создать CtNewArray, который содержит значения вашей аннотации.
private CtAnnotation createSwaggerDefinitionAnnotation(CtClass<?> ctClass) {
CtAnnotation tagAnnotation = createTagAnnotation(ctClass);
CtAnnotation swaggerDefAnnotation = getFactory().Core().createAnnotation();
CtTypeReference<Object> ref = getFactory().Core().createTypeReference();
ref.setSimpleName("SwaggerDefinition");
CtPackageReference refPackage = getFactory().Core().createPackageReference();
refPackage.setSimpleName("io.swagger.annotations");
ref.setPackage(refPackage);
swaggerDefAnnotation.setAnnotationType(ref);
CtNewArray<Object> arrayValue = getFactory().Core().createNewArray();
arrayValue.addElement(tagAnnotation);
swaggerDefAnnotation.addValue("tags", arrayValue);
return swaggerDefAnnotation;
}
Ouput:
@io.swagger.annotations.SwaggerDefinition(
tags = {
@io.swagger.annotations.Tag(
description = "description", name = "name")
})