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