Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
Coca
提交
bd15504d
C
Coca
项目概览
Phodal
/
Coca
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coca
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
bd15504d
编写于
11月 10, 2019
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: add basic api recogize
上级
e03bfbaa
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
109 addition
and
1 deletion
+109
-1
adapter/call/JavaCallListener.go
adapter/call/JavaCallListener.go
+64
-1
examples/api/BookController.java
examples/api/BookController.java
+45
-0
未找到文件。
adapter/call/JavaCallListener.go
浏览文件 @
bd15504d
package
call
import
(
"fmt"
"github.com/antlr/antlr4/runtime/Go/antlr"
.
"github.com/phodal/coca/adapter/models"
.
"github.com/phodal/coca/language/java"
...
...
@@ -21,6 +22,9 @@ var localVars = make(map[string]string)
var
formalParameters
=
make
(
map
[
string
]
string
)
var
currentClzExtends
=
""
var
hasEnterClass
=
false
var
isSpringRestController
=
false
func
NewJavaCallListener
()
*
JavaCallListener
{
currentClz
=
""
currentPkg
=
""
...
...
@@ -47,6 +51,7 @@ func (s *JavaCallListener) EnterImportDeclaration(ctx *ImportDeclarationContext)
}
func
(
s
*
JavaCallListener
)
EnterClassDeclaration
(
ctx
*
ClassDeclarationContext
)
{
hasEnterClass
=
true
currentType
=
"Class"
currentClz
=
ctx
.
IDENTIFIER
()
.
GetText
()
...
...
@@ -105,7 +110,7 @@ func (s *JavaCallListener) EnterMethodDeclaration(ctx *MethodDeclarationContext)
methods
=
append
(
methods
,
*
method
)
if
ctx
.
FormalParameters
()
!=
nil
{
if
ctx
.
FormalParameters
()
.
GetChild
(
0
)
==
nil
{
if
ctx
.
FormalParameters
()
.
GetChild
(
0
)
==
nil
||
ctx
.
FormalParameters
()
.
GetText
()
==
"()"
||
ctx
.
FormalParameters
()
.
GetChild
(
1
)
==
nil
{
return
}
...
...
@@ -167,6 +172,64 @@ 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
!
hasEnterClass
{
if
annotationName
==
"RequestMapping"
{
if
ctx
.
ElementValuePairs
()
!=
nil
{
firstPair
:=
ctx
.
ElementValuePairs
()
.
GetChild
(
0
)
.
(
*
ElementValuePairContext
)
if
firstPair
.
IDENTIFIER
()
.
GetText
()
==
"value"
{
baseApiUrlName
=
firstPair
.
ElementValue
()
.
GetText
()
}
}
else
{
baseApiUrlName
=
"/"
}
}
}
if
!
(
annotationName
==
"GetMapping"
||
annotationName
==
"PutMapping"
||
annotationName
==
"PostMapping"
||
annotationName
==
"DeleteMapping"
)
{
return
}
uri
:=
""
if
ctx
.
ElementValuePairs
()
!=
nil
{
firstPair
:=
ctx
.
ElementValuePairs
()
.
GetChild
(
0
)
.
(
*
ElementValuePairContext
)
if
firstPair
.
IDENTIFIER
()
.
GetText
()
==
"value"
{
uri
=
baseApiUrlName
+
firstPair
.
ElementValue
()
.
GetText
()
}
}
restApi
:=
&
RestApi
{
uri
,
""
,
""
,
nil
}
if
hasEnterClass
{
switch
annotationName
{
case
"GetMapping"
:
restApi
.
Method
=
"GET"
case
"PutMapping"
:
restApi
.
Method
=
"PUT"
case
"PostMapping"
:
restApi
.
Method
=
"POST"
case
"DeleteMapping"
:
restApi
.
Method
=
"DELETE"
}
}
fmt
.
Println
(
restApi
)
}
func
(
s
*
JavaCallListener
)
EnterExpression
(
ctx
*
ExpressionContext
)
{
// lambda BlogPO::of
if
ctx
.
COLONCOLON
()
!=
nil
{
...
...
examples/api/BookController.java
0 → 100644
浏览文件 @
bd15504d
package
com.phodal.pholedge.book
;
import
com.phodal.pholedge.book.model.BookRepresentaion
;
import
com.phodal.pholedge.book.model.command.CreateBookCommand
;
import
com.phodal.pholedge.book.model.command.UpdateBookCommand
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
google
.
common
.
collect
.
ImmutableSortedMap
.
of
;
@RestController
@RequestMapping
(
value
=
"/books"
)
public
class
BookController
{
private
final
BookService
applicationService
;
public
BookController
(
BookService
applicationService
)
{
this
.
applicationService
=
applicationService
;
}
@PostMapping
@ResponseStatus
(
HttpStatus
.
CREATED
)
public
Map
<
String
,
String
>
createBook
(
@RequestBody
@Valid
CreateBookCommand
command
)
{
return
of
(
"id"
,
applicationService
.
createBook
(
command
));
}
@PutMapping
(
"/{id}"
)
@ResponseStatus
(
HttpStatus
.
OK
)
public
BookRepresentaion
updateBook
(
@PathVariable
(
name
=
"id"
)
String
id
,
@RequestBody
@Valid
UpdateBookCommand
command
)
{
return
applicationService
.
updateBook
(
id
,
command
);
}
@GetMapping
(
"/"
)
public
List
<
BookRepresentaion
>
getBookList
()
{
return
applicationService
.
getBooksLists
();
}
@GetMapping
(
"/{id}"
)
public
BookRepresentaion
getBookById
(
@PathVariable
(
name
=
"id"
)
String
id
)
{
return
applicationService
.
getBookById
(
id
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录