diff --git a/dsBase/src/main/java/com/dsideal/Base/Plugin/PostmanDocPlugin.java b/dsBase/src/main/java/com/dsideal/Base/Plugin/PostmanDocPlugin.java index a4e95425..c66e8d78 100644 --- a/dsBase/src/main/java/com/dsideal/Base/Plugin/PostmanDocPlugin.java +++ b/dsBase/src/main/java/com/dsideal/Base/Plugin/PostmanDocPlugin.java @@ -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文档生成插件 + * 用于生成Postman格式的API文档 + */ public class PostmanDocPlugin implements IPluginSupport { + + private static final Logger LOGGER = Logger.getLogger(PostmanDocPlugin.class.getName()); + + /** + * 默认构造函数 + */ public PostmanDocPlugin() { + // 默认构造函数 } + /** + * 执行文档生成 + * + * @param controllerNodeList 控制器节点列表 + */ + @Override public void execute(List 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 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 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 createTemplateData(List controllerNodeList) { + Map 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; + } } \ No newline at end of file