未验证 提交 737cd974 编写于 作者: P Phodal Huang

feat: thinking in refactor api listener

上级 66aa8f3a
......@@ -24,12 +24,27 @@ var currentClzExtends = ""
var hasEnterClass = false
var isSpringRestController = false
var hasEnterRestController = false
var baseApiUrlName = ""
type RestApi struct {
Uri string
HttpMethod string
MethodName string
ResponseStatus string
Body []string
MethodParams map[string]string
}
var currentRestApi RestApi
var RestApis []RestApi
func NewJavaCallListener() *JavaCallListener {
currentClz = ""
currentPkg = ""
methods = nil
methodCalls = nil
isSpringRestController = false
return &JavaCallListener{}
}
......@@ -38,6 +53,7 @@ type JavaCallListener struct {
}
func (s *JavaCallListener) getNodeInfo() *JClassNode {
fmt.Println(RestApis)
return &JClassNode{currentPkg, currentClz, currentType, "", methods, methodCalls}
}
......@@ -109,6 +125,7 @@ func (s *JavaCallListener) EnterMethodDeclaration(ctx *MethodDeclarationContext)
method := &JMethod{name, typeType, startLine, startLinePosition, stopLine, stopLinePosition}
methods = append(methods, *method)
methodParams := make(map[string]string)
if ctx.FormalParameters() != nil {
if ctx.FormalParameters().GetChild(0) == nil || ctx.FormalParameters().GetText() == "()" || ctx.FormalParameters().GetChild(1) == nil {
return
......@@ -122,8 +139,16 @@ func (s *JavaCallListener) EnterMethodDeclaration(ctx *MethodDeclarationContext)
paramValue := paramContext.VariableDeclaratorId().(*VariableDeclaratorIdContext).IDENTIFIER().GetText()
localVars[paramValue] = paramType
methodParams[paramValue] = paramType
}
}
if hasEnterRestController {
currentRestApi.MethodName = name
currentRestApi.MethodParams = methodParams
RestApis = append(RestApis, currentRestApi)
hasEnterRestController = false
}
}
func (s *JavaCallListener) EnterCreator(ctx *CreatorContext) {
......@@ -172,21 +197,16 @@ func (s *JavaCallListener) EnterMethodCall(ctx *MethodCallContext) {
}
}
var baseApiUrlName = ""
type RestApi struct {
Uri string
Method string
ResponseStatus string
Body []string
}
func (s *JavaCallListener) EnterAnnotation(ctx *AnnotationContext) {
annotationName := ctx.QualifiedName().GetText()
if annotationName == "RestController" {
isSpringRestController = true
}
if !isSpringRestController {
return
}
if !hasEnterClass {
if annotationName == "RequestMapping" {
if ctx.ElementValuePairs() != nil {
......@@ -204,6 +224,7 @@ func (s *JavaCallListener) EnterAnnotation(ctx *AnnotationContext) {
return
}
hasEnterRestController = true
uri := ""
if ctx.ElementValue() != nil {
uri = baseApiUrlName + ctx.ElementValue().GetText()
......@@ -213,21 +234,19 @@ func (s *JavaCallListener) EnterAnnotation(ctx *AnnotationContext) {
uriRemoveQuote := strings.ReplaceAll(uri, "\"", "")
restApi := &RestApi{uriRemoveQuote, "", "", nil}
currentRestApi = RestApi{uriRemoveQuote, "", "", "", nil, nil}
if hasEnterClass {
switch annotationName {
case "GetMapping":
restApi.Method = "GET"
currentRestApi.HttpMethod = "GET"
case "PutMapping":
restApi.Method = "PUT"
currentRestApi.HttpMethod = "PUT"
case "PostMapping":
restApi.Method = "POST"
currentRestApi.HttpMethod = "POST"
case "DeleteMapping":
restApi.Method = "DELETE"
currentRestApi.HttpMethod = "DELETE"
}
}
fmt.Println(restApi)
}
func (s *JavaCallListener) EnterExpression(ctx *ExpressionContext) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册