Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
R
RAGO - RAG OpenAPI Framework
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
JastAdd
RAGO - RAG OpenAPI Framework
Commits
2038b0b2
Commit
2038b0b2
authored
3 years ago
by
Jueun Park
Browse files
Options
Downloads
Patches
Plain Diff
edit Parser.jrag (~ ExternalDocObject)
parent
978ce03d
Branches
Branches containing commit
No related tags found
1 merge request
!1
Tests/openapi generator
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/jastadd/OpenAPISpecification.relast
+9
-12
9 additions, 12 deletions
src/main/jastadd/OpenAPISpecification.relast
src/main/jastadd/Parser.jrag
+145
-120
145 additions, 120 deletions
src/main/jastadd/Parser.jrag
with
154 additions
and
132 deletions
src/main/jastadd/OpenAPISpecification.relast
+
9
−
12
View file @
2038b0b2
...
@@ -99,7 +99,7 @@ abstract PathItemOb;
...
@@ -99,7 +99,7 @@ abstract PathItemOb;
PathItemReference : PathItemOb ::= <Ref> <Summary> <Description>;
PathItemReference : PathItemOb ::= <Ref> <Summary> <Description>;
PathItemObject : PathItemOb ::= <Ref> <Summary> <Description>;
PathItemObject : PathItemOb ::= <Ref> <Summary> <Description>;
rel PathItemReference.r -> PathItem
Tuple
;
rel PathItemReference.r -> PathItem
Object
;
rel PathItemObject.g? -> Get;
rel PathItemObject.g? -> Get;
rel PathItemObject.put? -> Put;
rel PathItemObject.put? -> Put;
rel PathItemObject.post? -> Post;
rel PathItemObject.post? -> Post;
...
@@ -154,7 +154,7 @@ ParameterObject : ParameterOb ::= <Name> <In> <Description> <Required:Boolean> <
...
@@ -154,7 +154,7 @@ ParameterObject : ParameterOb ::= <Name> <In> <Description> <Required:Boolean> <
ContentTuple ::= <Key>;
ContentTuple ::= <Key>;
rel ContentTuple.m -> MediaTypeObject;
rel ContentTuple.m -> MediaTypeObject;
rel ParameterReference.p -> Pa
thItemTuple
;
rel ParameterReference.p -> Pa
rameterObject
;
rel ParameterObject.s? -> SchemaOb;
rel ParameterObject.s? -> SchemaOb;
rel ParameterObject.e* -> ExampleTuple;
rel ParameterObject.e* -> ExampleTuple;
rel ParameterObject.c* -> ContentTuple;
rel ParameterObject.c* -> ContentTuple;
...
@@ -166,7 +166,7 @@ abstract RequestBodyOb;
...
@@ -166,7 +166,7 @@ abstract RequestBodyOb;
RequestBodyReference : RequestBodyOb ::= <Ref> <Summary> <Description>;
RequestBodyReference : RequestBodyOb ::= <Ref> <Summary> <Description>;
RequestBodyObject : RequestBodyOb ::= <Description> <Required:Boolean>;
RequestBodyObject : RequestBodyOb ::= <Description> <Required:Boolean>;
rel RequestBodyReference.r -> RequestBody
Tuple
;
rel RequestBodyReference.r -> RequestBody
Object
;
rel RequestBodyObject.c* -> ContentTuple;
rel RequestBodyObject.c* -> ContentTuple;
rel RequestBodyObject.ex* -> Extension;
rel RequestBodyObject.ex* -> Extension;
...
@@ -188,9 +188,6 @@ rel EncodingObject.ex* -> Extension;
...
@@ -188,9 +188,6 @@ rel EncodingObject.ex* -> Extension;
//Responses Object (ResponseTuple is used for HTTPStatusCode)
//Responses Object (ResponseTuple is used for HTTPStatusCode)
ResponsesObject;
ResponsesObject;
//Default
rel ResponsesObject.d? -> ResponseOb;
//HTTPStatusCode
//HTTPStatusCode
rel ResponsesObject.r* -> ResponseTuple;
rel ResponsesObject.r* -> ResponseTuple;
...
@@ -199,7 +196,7 @@ abstract ResponseOb;
...
@@ -199,7 +196,7 @@ abstract ResponseOb;
ResponseReference : ResponseOb ::= <Ref> <Summary> <Description>;
ResponseReference : ResponseOb ::= <Ref> <Summary> <Description>;
ResponseObject : ResponseOb ::= <Description>;
ResponseObject : ResponseOb ::= <Description>;
rel ResponseReference.r -> Response
Tuple
;
rel ResponseReference.r -> Response
Object
;
rel ResponseObject.h* -> HeaderTuple;
rel ResponseObject.h* -> HeaderTuple;
rel ResponseObject.c* -> ContentTuple;
rel ResponseObject.c* -> ContentTuple;
rel ResponseObject.l* -> LinkTuple;
rel ResponseObject.l* -> LinkTuple;
...
@@ -214,7 +211,7 @@ Extension ::= <Key> <Value:Object>;
...
@@ -214,7 +211,7 @@ Extension ::= <Key> <Value:Object>;
Expression ::= <Name>;
Expression ::= <Name>;
rel Expression.p -> PathItemOb;
rel Expression.p -> PathItemOb;
rel CallbackReference.r -> Callback
Tuple
;
rel CallbackReference.r -> Callback
Object
;
rel CallbackObject.e* -> Expression;
rel CallbackObject.e* -> Expression;
rel CallbackObject.ex* -> Extension;
rel CallbackObject.ex* -> Extension;
...
@@ -229,7 +226,7 @@ LinkReference : LinkOb ::= <Ref> <Summary> <Description>;
...
@@ -229,7 +226,7 @@ LinkReference : LinkOb ::= <Ref> <Summary> <Description>;
LinkObject : LinkOb ::= <OperationRef> <OperationID> <LinkRequestBody:Object> <Description>;
LinkObject : LinkOb ::= <OperationRef> <OperationID> <LinkRequestBody:Object> <Description>;
LinkParameterTuple ::= <Key> <Value:Object>;
LinkParameterTuple ::= <Key> <Value:Object>;
rel LinkReference.r -> Link
Tuple
;
rel LinkReference.r -> Link
Object
;
rel LinkObject.l* -> LinkParameterTuple;
rel LinkObject.l* -> LinkParameterTuple;
rel LinkObject.s? -> ServerObject;
rel LinkObject.s? -> ServerObject;
rel LinkObject.ex* -> Extension;
rel LinkObject.ex* -> Extension;
...
@@ -239,7 +236,7 @@ abstract HeaderOb;
...
@@ -239,7 +236,7 @@ abstract HeaderOb;
HeaderReference : HeaderOb ::= <Ref> <Summary> <Description>;
HeaderReference : HeaderOb ::= <Ref> <Summary> <Description>;
HeaderObject : HeaderOb ::= <Description> <Required:Boolean> <DeprecatedBoolean:Boolean> <AllowEmptyValue:Boolean> <Style> <Explode:Boolean> <AllowReserved:Boolean> <Example:Object>;
HeaderObject : HeaderOb ::= <Description> <Required:Boolean> <DeprecatedBoolean:Boolean> <AllowEmptyValue:Boolean> <Style> <Explode:Boolean> <AllowReserved:Boolean> <Example:Object>;
rel HeaderReference.r -> Header
Tuple
;
rel HeaderReference.r -> Header
Object
;
rel HeaderObject.s? -> SchemaOb;
rel HeaderObject.s? -> SchemaOb;
rel HeaderObject.e* -> ExampleTuple;
rel HeaderObject.e* -> ExampleTuple;
rel HeaderObject.c* -> ContentTuple;
rel HeaderObject.c* -> ContentTuple;
...
@@ -282,7 +279,7 @@ TypeArray ::= <TypeElements:Object>;
...
@@ -282,7 +279,7 @@ TypeArray ::= <TypeElements:Object>;
EnumObj ::= <EnumOb:Object>;
EnumObj ::= <EnumOb:Object>;
RequiredField ::= <Value>;
RequiredField ::= <Value>;
rel SchemaReference.r -> Schema
Tuple
;
rel SchemaReference.r -> Schema
Object
;
rel SchemaObject.a? -> AdditionalProperties;
rel SchemaObject.a? -> AdditionalProperties;
rel SchemaObject.d? -> DiscriminatorObject;
rel SchemaObject.d? -> DiscriminatorObject;
rel SchemaObject.e* -> EnumObj;
rel SchemaObject.e* -> EnumObj;
...
@@ -317,7 +314,7 @@ abstract SecuritySchemeOb;
...
@@ -317,7 +314,7 @@ abstract SecuritySchemeOb;
SecuritySchemeReference : SecuritySchemeOb ::= <Ref> <Summary> <Description>;
SecuritySchemeReference : SecuritySchemeOb ::= <Ref> <Summary> <Description>;
SecuritySchemeObject : SecuritySchemeOb ::= <Type> <Description> <Name> <In> <Scheme> <BearerFormat> <OpenIdConnectUrl>;
SecuritySchemeObject : SecuritySchemeOb ::= <Type> <Description> <Name> <In> <Scheme> <BearerFormat> <OpenIdConnectUrl>;
rel SecuritySchemeReference.r -> SecurityScheme
Tuple
;
rel SecuritySchemeReference.r -> SecurityScheme
Object
;
rel SecuritySchemeObject.o? -> OAuthFlowsObject;
rel SecuritySchemeObject.o? -> OAuthFlowsObject;
rel SecuritySchemeObject.ex* -> Extension;
rel SecuritySchemeObject.ex* -> Extension;
...
...
This diff is collapsed.
Click to expand it.
src/main/jastadd/Parser.jrag
+
145
−
120
View file @
2038b0b2
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.*;
import io.swagger.v3.oas.models.callbacks.*;
import io.swagger.v3.oas.models.examples.*;
import io.swagger.v3.oas.models.headers.*;
import io.swagger.v3.oas.models.info.*;
import io.swagger.v3.oas.models.info.*;
import io.swagger.v3.oas.models.links.*;
import io.swagger.v3.oas.models.media.*;
import io.swagger.v3.oas.models.parameters.*;
import io.swagger.v3.oas.models.responses.*;
import io.swagger.v3.oas.models.security.*;
import io.swagger.v3.oas.models.servers.*;
import io.swagger.v3.oas.models.servers.*;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.tags.*;
aspect Parser {
aspect Parser {
...
@@ -189,74 +199,90 @@ aspect Parser {
...
@@ -189,74 +199,90 @@ aspect Parser {
componentsObject.addEx(new Extension(key, components.getExtensions().get(key)));
componentsObject.addEx(new Extension(key, components.getExtensions().get(key)));
}
}
/* 3.1.0 features
if (components.getPathItems() != null) ...
*/
return componentsObject;
return componentsObject;
}
}
public static PathItemOb
ject
PathItemOb
ject
.parsePath(Path
path, OAIContext context, Map<Object, ASTNode> map) throws DecodeException
{
public static PathItemOb PathItemOb.parsePath(Path
Item path)
{
PathItemObject pathItem = new PathItemObject();
PathItemObject pathItem = new PathItemObject();
if(path.get$ref() != null){
PathItemReference r = new PathItemReference();
r.setRef(path.get$ref());
/* 3.1.0 features
if (path.getSummary() != null) ...
if (path.getDescription() != null) ...
if (path.getPathItem() != null) ...
*/
return r;
} else
if (path.getSummary() != null)
if (path.getSummary() != null)
pathItem.setSummary(path.getSummary());
pathItem.setSummary(path.getSummary());
if (path.getDescription() != null)
if (path.getDescription() != null)
pathItem.setDescription(path.getDescription());
pathItem.setDescription(path.getDescription());
if (path.getGet() != null) {
if (path.getGet() != null) {
Get get = new Get();
Get get = new Get();
get.set
OperationObject
(OperationObject.parseOperation(path.getGet()
, context, map
));
get.set
_impl_o
(OperationObject.parseOperation(path.getGet()));
pathItem.setG
et
(get);
pathItem.setG(get);
}
}
if (path.getPut() != null) {
if (path.getPut() != null) {
Put put = new Put();
Put put = new Put();
put.set
OperationObject
(OperationObject.parseOperation(path.getPut()
, context, map
));
put.set
_impl_o
(OperationObject.parseOperation(path.getPut()));
pathItem.setPut(put);
pathItem.setPut(put);
}
}
if (path.getPost() != null) {
if (path.getPost() != null) {
Post post = new Post();
Post post = new Post();
post.set
OperationObject
(OperationObject.parseOperation(path.getPost()
, context, map
));
post.set
_impl_o
(OperationObject.parseOperation(path.getPost()));
pathItem.setPost(post);
pathItem.setPost(post);
}
}
if (path.getDelete() != null) {
if (path.getDelete() != null) {
Delete delete = new Delete();
Delete delete = new Delete();
delete.set
OperationObject
(OperationObject.parseOperation(path.getDelete()
, context, map
));
delete.set
_impl_o
(OperationObject.parseOperation(path.getDelete()));
pathItem.set
Delete
(delete);
pathItem.set
_impl_d
(delete);
}
}
if (path.getOptions() != null) {
if (path.getOptions() != null) {
Options options = new Options();
Options options = new Options();
options.set
OperationObject
(OperationObject.parseOperation(path.getOptions()
, context, map
));
options.set
_impl_o
(OperationObject.parseOperation(path.getOptions()));
pathItem.set
Options
(options);
pathItem.set
_impl_o
(options);
}
}
if (path.getHead() != null) {
if (path.getHead() != null) {
Head head = new Head();
Head head = new Head();
head.set
OperationObject
(OperationObject.parseOperation(path.getHead()
, context, map
));
head.set
_impl_o
(OperationObject.parseOperation(path.getHead()));
pathItem.setH
ead
(head);
pathItem.setH(head);
}
}
if (path.getPatch() != null) {
if (path.getPatch() != null) {
Patch patch = new Patch();
Patch patch = new Patch();
patch.set
OperationObject
(OperationObject.parseOperation(path.getPatch()
, context, map
));
patch.set
_impl_o
(OperationObject.parseOperation(path.getPatch()));
pathItem.setP
atch
(patch);
pathItem.setP(patch);
}
}
if (path.getTrace() != null) {
if (path.getTrace() != null) {
Trace trace = new Trace();
Trace trace = new Trace();
trace.set
OperationObject
(OperationObject.parseOperation(path.getTrace()
, context, map
));
trace.set
_impl_o
(OperationObject.parseOperation(path.getTrace()));
pathItem.setT
race
(trace);
pathItem.setT(trace);
}
}
if (path.getServers() != null) {
if (path.getServers() != null) {
for (Server s : path.getServers())
for (Server s : path.getServers())
pathItem.addS
erverObject
(ServerObject.parseServer(s
, map
));
pathItem.addS(ServerObject.parseServer(s));
}
}
if (path.getParameters() != null) {
if (path.getParameters() != null) {
for (Parameter p : path.getParameters())
for (Parameter p : path.getParameters())
pathItem.addP
arameterOb
(ParameterOb.parseParameter(p
, context, map
));
pathItem.addP
o
(ParameterOb.parseParameter(p));
}
}
if (path.getExtensions() != null) {
if (path.getExtensions() != null) {
for (String key : path.getExtensions().keySet())
for (String key : path.getExtensions().keySet())
pathItem.addEx
tension
(new Extension(key, path.getExtensions().get(key)));
pathItem.addEx(new Extension(key, path.getExtensions().get(key)));
}
}
map.put(path, pathItem);
return pathItem;
return pathItem;
}
}
public static OperationObject OperationObject.parseOperation(Operation operation
, OAIContext context, Map<Object, ASTNode> map) throws DecodeException
{
public static OperationObject OperationObject.parseOperation(Operation operation
)
{
OperationObject operationObject = new OperationObject();
OperationObject operationObject = new OperationObject();
if (operation.getDeprecated() != null)
if (operation.getDeprecated() != null)
...
@@ -265,7 +291,7 @@ aspect Parser {
...
@@ -265,7 +291,7 @@ aspect Parser {
for (String t : operation.getTags()) {
for (String t : operation.getTags()) {
de.tudresden.inf.st.openapi.ast.Tag tag = new de.tudresden.inf.st.openapi.ast.Tag();
de.tudresden.inf.st.openapi.ast.Tag tag = new de.tudresden.inf.st.openapi.ast.Tag();
tag.setTag(t);
tag.setTag(t);
operationObject.addT
ag
(tag);
operationObject.addT(tag);
}
}
}
}
if (operation.getSummary() != null)
if (operation.getSummary() != null)
...
@@ -273,54 +299,53 @@ aspect Parser {
...
@@ -273,54 +299,53 @@ aspect Parser {
if (operation.getDescription() != null)
if (operation.getDescription() != null)
operationObject.setDescription(operation.getDescription());
operationObject.setDescription(operation.getDescription());
if (operation.getExternalDocs() != null)
if (operation.getExternalDocs() != null)
operationObject.set
ExternalDocObject
(ExternalDocObject.parseExternalDocs(operation.getExternalDocs()
, map
));
operationObject.set
_impl_ed
(ExternalDocObject.parseExternalDocs(operation.getExternalDocs()));
if (operation.getOperationId() != null)
if (operation.getOperationId() != null)
operationObject.setOperationID(operation.getOperationId());
operationObject.setOperationID(operation.getOperationId());
if (operation.getParameters() != null) {
if (operation.getParameters() != null) {
for (Parameter p : operation.getParameters())
for (Parameter p : operation.getParameters())
operationObject.addP
arameterOb
(ParameterOb.parseParameter(p
, context, map
));
operationObject.addP(ParameterOb.parseParameter(p));
}
}
if (operation.getRequestBody() != null)
if (operation.getRequestBody() != null)
operationObject.setRequestBodyOb(RequestBodyOb.parseRequestBody(operation.getRequestBody(), context, map));
operationObject.set_impl_rb(RequestBodyOb.parseRequestBody(operation.getRequestBody()));
if (operation.getResponses() != null) {
if (operation.getResponses().size() != 0) {
ResponsesObject r = new ResponsesObject();
for (String key : operation.getResponses().keySet())
for (String key : operation.getResponses().keySet())
operationObject.addResponseTuple(new ResponseTuple(key, ResponseObject.parseResponse(operation.getResponse(key), context, map)));
r.addR(new ResponseTuple(key, ResponseObject.parseResponse(operation.getResponses().get(key))));
operationObject.set_impl_r(r);
}
}
if (operation.getCallbacks()
!= null
) {
if (operation.getCallbacks()
.size() != 0
) {
for (String key : operation.getCallbacks().keySet())
for (String key : operation.getCallbacks().keySet())
operationObject.addC
allbackTuple
(new CallbackTuple(key, CallbackObject.parseCallback(operation.getCallback
(key), context, map
)));
operationObject.addC(new CallbackTuple(key, CallbackObject.parseCallback(operation.getCallback
s().get(key)
)));
}
}
if (operation.getSecurity
Requirements
() !=
null
) {
if (operation.getSecurity
().size
() !=
0
) {
for (SecurityRequirement s : operation.getSecurity
Requirements
())
for (SecurityRequirement s : operation.getSecurity())
operationObject.addS
ecurityRequirementObject
(SecurityRequirementObject.parseSecurityRequirement(s
, map
));
operationObject.addS
r
(SecurityRequirementObject.parseSecurityRequirement(s));
}
}
if (operation.getServers() != null) {
if (operation.getServers() != null) {
for (Server s : operation.getServers())
for (Server s : operation.getServers())
operationObject.addS
erverObject
(ServerObject.parseServer(s
, map
));
operationObject.addS(ServerObject.parseServer(s));
}
}
if (operation.getExtensions() != null) {
if (operation.getExtensions() != null) {
for (String key : operation.getExtensions().keySet())
for (String key : operation.getExtensions().keySet())
operationObject.addEx
tension
(new Extension(key, operation.getExtensions().get(key)));
operationObject.addEx(new Extension(key, operation.getExtensions().get(key)));
}
}
map.put(operation, operationObject);
return operationObject;
return operationObject;
}
}
public static ExternalDocObject ExternalDocObject.parseExternalDocs(ExternalDocs externalDocs
, Map<Object, ASTNode> map
){
public static ExternalDocObject ExternalDocObject.parseExternalDocs(ExternalDocs externalDocs){
ExternalDocObject externalDocObject = new ExternalDocObject();
ExternalDocObject externalDocObject = new ExternalDocObject();
if (externalDocs.getDescription() != null)
if (externalDocs.getDescription() != null)
externalDocObject.setDescription(externalDocs.getDescription());
externalDocObject.setDescription(externalDocs.getDescription());
if (externalDocs.getUrl() != null)
if (externalDocs.getUrl() != null)
externalDocObject.setUrl(externalDocs.getUrl());
externalDocObject.setUrl(externalDocs.getUrl());
if (externalDocs.getExtensions() != null) {
if (externalDocs.get
Vendor
Extensions() != null) {
for (String key : externalDocs.getExtensions().keySet())
for (String key : externalDocs.get
Vendor
Extensions().keySet())
externalDocObject.addEx
tension
(new Extension(key, externalDocs.getExtensions().get(key)));
externalDocObject.addEx(new Extension(key, externalDocs.get
Vendor
Extensions().get(key)));
}
}
map.put(externalDocs, externalDocObject);
return externalDocObject;
return externalDocObject;
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment