main
HuangHai 1 month ago
parent 9a601400bd
commit 54e7e155d6

@ -5,7 +5,6 @@ import freemarker.template.TemplateException;
import io.github.yedaxia.apidocs.DocContext;
import io.github.yedaxia.apidocs.IPluginSupport;
import io.github.yedaxia.apidocs.Resources;
import io.github.yedaxia.apidocs.Utils;
import io.github.yedaxia.apidocs.parser.ControllerNode;
import java.io.File;
@ -14,35 +13,85 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import java.util.logging.Level;
/**
* Postman
* PostmanAPI
*/
public class PostmanDocPlugin implements IPluginSupport {
private static final Logger LOGGER = Logger.getLogger(PostmanDocPlugin.class.getName());
/**
*
*/
public PostmanDocPlugin() {
// 默认构造函数
}
/**
*
*
* @param controllerNodeList
*/
@Override
public void execute(List<ControllerNode> controllerNodeList) {
FileWriter docFileWriter = null;
try {
Template ctrlTemplate = this.getDocTpl();
String docFileName = String.format("%s-%s-api-docs.json", DocContext.getDocsConfig().getProjectName(), DocContext.getDocsConfig().getApiVersion());
Template template = getDocTemplate();
String docFileName = generateDocFileName();
File docFile = new File(DocContext.getDocPath(), docFileName);
docFileWriter = new FileWriter(docFile);
Map<String, Object> data = new HashMap();
data.put("controllerNodes", controllerNodeList);
data.put("currentApiVersion", DocContext.getCurrentApiVersion());
data.put("projectName", DocContext.getDocsConfig().getProjectName());
data.put("i18n", DocContext.getI18n());
ctrlTemplate.process(data, docFileWriter);
} catch (IOException | TemplateException var10) {
var10.printStackTrace();
} finally {
Utils.closeSilently(docFileWriter);
// 使用try-with-resources自动管理资源
try (FileWriter docFileWriter = new FileWriter(docFile)) {
Map<String, Object> templateData = createTemplateData(controllerNodeList);
template.process(templateData, docFileWriter);
LOGGER.info("Postman文档生成成功: " + docFile.getAbsolutePath());
}
} catch (IOException e) {
LOGGER.log(Level.SEVERE, "文件操作异常", e);
throw new RuntimeException("生成Postman文档时发生IO异常", e);
} catch (TemplateException e) {
LOGGER.log(Level.SEVERE, "模板处理异常", e);
throw new RuntimeException("处理Freemarker模板时发生异常", e);
}
}
private Template getDocTpl() throws IOException {
/**
*
*
* @return Freemarker
* @throws IOException
*/
private Template getDocTemplate() throws IOException {
return Resources.getFreemarkerTemplate("postman-doc.json.ftl");
}
/**
*
*
* @return
*/
private String generateDocFileName() {
return String.format("%s-%s-api-docs.json",
DocContext.getDocsConfig().getProjectName(),
DocContext.getDocsConfig().getApiVersion());
}
/**
*
*
* @param controllerNodeList
* @return Map
*/
private Map<String, Object> createTemplateData(List<ControllerNode> controllerNodeList) {
Map<String, Object> data = new HashMap<>();
data.put("controllerNodes", controllerNodeList);
data.put("currentApiVersion", DocContext.getCurrentApiVersion());
data.put("projectName", DocContext.getDocsConfig().getProjectName());
data.put("i18n", DocContext.getI18n());
return data;
}
}
Loading…
Cancel
Save