update(REQ-2516) - 测试 Javaparser 生成代码

This commit is contained in:
wangli 2024-06-10 22:02:40 +08:00
parent d491169c78
commit 15323a6752

View File

@ -1,15 +1,25 @@
package cn.axzo.workflow.support.api;
import cn.axzo.workflow.client.config.WorkflowEngineClientAutoConfiguration;
import cn.axzo.workflow.common.annotation.InvokeMode;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO;
import cn.axzo.workflow.starter.WorkflowEngineStarterAutoConfiguration;
import com.github.javaparser.ParseResult;
import com.github.javaparser.ParserConfiguration;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.Modifier;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.body.Parameter;
import com.github.javaparser.ast.expr.NormalAnnotationExpr;
import com.github.javaparser.printer.DefaultPrettyPrinter;
import com.github.javaparser.printer.Printer;
import com.github.javaparser.utils.CodeGenerationUtils;
import com.github.javaparser.utils.SourceRoot;
import lombok.SneakyThrows;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
@ -35,12 +45,34 @@ public class CodeGeneration {
List<ParseResult<CompilationUnit>> parseResults = sourceRoot.tryToParse();
List<CompilationUnit> compilationUnits = sourceRoot.getCompilationUnits();
compilationUnits.forEach(compilationUnit -> {
System.out.println("compilationUnit = " + compilationUnit);
// System.out.println("compilationUnit = " + compilationUnit);
});
// https://www.jianshu.com/p/04b413c97988
Path outputCodeRoot = CodeGenerationUtils.mavenModuleRoot(WorkflowEngineStarterAutoConfiguration.class).resolve(Paths.get("src/main/java/cn/axzo/workflow/starter/api"));
SourceRoot outputCodeSR = new SourceRoot(outputCodeRoot);
outputCodeSR.saveAll(StandardCharsets.UTF_8);
CompilationUnit compilationUnit = new CompilationUnit();
ClassOrInterfaceDeclaration workflowCoreServiceTest = compilationUnit.addInterface("WorkflowCoreServiceTest").setPublic(true);
workflowCoreServiceTest.setInterface(true);
MethodDeclaration a = workflowCoreServiceTest.addMethod("a", Modifier.Keyword.PUBLIC).removeBody();
a.setJavadocComment("创建审批流程");
Parameter dto = a.addAndGetParameter(BpmnProcessInstanceCreateDTO.class, "dto");
dto.addAnnotation(Validated.class).addAnnotation(RequestBody.class);
a.setType(String.class);
NormalAnnotationExpr postMapping = a.addAndGetAnnotation(PostMapping.class);
postMapping.addPair("value", "/api/process/instance/create");
// postMapping.setName("/api/process/instance/create");
NormalAnnotationExpr invokeMode = a.addAndGetAnnotation(InvokeMode.class);
invokeMode.addPair("value", "SYNC");
// compilationUnit.setPackageDeclaration("cn.axzo.workflow.starter.api");
compilationUnit.addImport(BpmnProcessInstanceCreateDTO.class);
String string = workflowCoreServiceTest.toString();
System.out.println("string = " + string);
}
}