Skip to content
Snippets Groups Projects
Commit 049296ec authored by Jueun Park's avatar Jueun Park
Browse files

fixed a bug by manual debug (An ASTNode(ExampleElement) is saved in SchemaNode...

fixed a bug by manual debug (An ASTNode(ExampleElement) is saved in SchemaNode after reverse-function )
parent 95c8505f
No related branches found
No related tags found
1 merge request!1Tests/openapi generator
......@@ -13,6 +13,10 @@ sourceCompatibility = 1.8
repositories {
mavenCentral()
mavenLocal()
maven {
name "gitlab-maven"
url "https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven"
}
}
dependencies {
......@@ -26,6 +30,7 @@ dependencies {
implementation group: 'com.flipkart.zjsonpatch', name: 'zjsonpatch', version: '0.4.11'
implementation group: 'io.swagger.parser.v3', name: 'swagger-parser', version: '2.0.30'
testImplementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.6'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.7.0'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.7.0'
testImplementation group: 'com.jayway.jsonpath', name: 'json-path', version: '2.6.0'
......
......@@ -50,7 +50,6 @@ public static OpenAPI OpenAPIObject.reverseOpenAPI(OpenAPIObject openapi){
if (openapi.getWebhook != null) ...
if (openapi.getJsonSchemaDialect != null) ...
*/
return api;
}
......@@ -403,13 +402,27 @@ public static io.swagger.v3.oas.models.ExternalDocumentation ExternalDocObject.r
if (p.getDeprecatedBoolean() != null)
parameter.setDeprecated(p.getDeprecatedBoolean());
switch (p.getStyle()) {
case "matrix": parameter.setStyle(Parameter.StyleEnum.MATRIX); break;
case "label": parameter.setStyle(Parameter.StyleEnum.LABEL); break;
case "form": parameter.setStyle(Parameter.StyleEnum.FORM); break;
case "simple": parameter.setStyle(Parameter.StyleEnum.SIMPLE); break;
case "spaceDelimited": parameter.setStyle(Parameter.StyleEnum.SPACEDELIMITED); break;
case "pipeDelimited": parameter.setStyle(Parameter.StyleEnum.PIPEDELIMITED); break;
case "deepObject": parameter.setStyle(Parameter.StyleEnum.DEEPOBJECT); break;
case "matrix":
parameter.setStyle(Parameter.StyleEnum.MATRIX);
break;
case "label":
parameter.setStyle(Parameter.StyleEnum.LABEL);
break;
case "form":
parameter.setStyle(Parameter.StyleEnum.FORM);
break;
case "simple":
parameter.setStyle(Parameter.StyleEnum.SIMPLE);
break;
case "spaceDelimited":
parameter.setStyle(Parameter.StyleEnum.SPACEDELIMITED);
break;
case "pipeDelimited":
parameter.setStyle(Parameter.StyleEnum.PIPEDELIMITED);
break;
case "deepObject":
parameter.setStyle(Parameter.StyleEnum.DEEPOBJECT);
break;
}
if (p.getAllowReserved() != null)
parameter.setAllowReserved(p.getAllowReserved());
......@@ -667,7 +680,9 @@ public static Example ExampleObject.reverseExample(ExampleObject exampleObject){
if (!h.getDescription().isEmpty())
header.setDescription(h.getDescription());
switch (h.getStyle()) {
case "simple": header.setStyle(Header.StyleEnum.SIMPLE); break;
case "simple":
header.setStyle(Header.StyleEnum.SIMPLE);
break;
}
if (h.getExplode() != null)
header.setExplode(h.getExplode());
......@@ -725,7 +740,7 @@ public static io.swagger.v3.oas.models.tags.Tag TagObject.reverseTag(TagObject t
return schema;
}
eq SchemaObject.reverseSchema(SchemaOb schemaOb){
io.swagger.v3.oas.models.media.Schema<Object> schema=new io.swagger.v3.oas.models.media.Schema<Object>();
io.swagger.v3.oas.models.media.Schema<Object> schema = new io.swagger.v3.oas.models.media.Schema<>();
SchemaObject s = (SchemaObject) schemaOb;
if (s.hasI()) {
......@@ -758,12 +773,13 @@ public static io.swagger.v3.oas.models.tags.Tag TagObject.reverseTag(TagObject t
schema.setDeprecated(s.getDeprecatedBoolean());
if (s.hasD())
schema.setDiscriminator(DiscriminatorObject.reverseDiscriminator(s.getD()));
if(s.getNumEl()!=0){
if (s.getNumE() != 0) {
for (EnumObj e : s.getEList())
schema.addEnumItemObject(e.getEnumOb());
}
if(s.getElList()!=null)
schema.setExample(s.getEl(0));
// in ver 3.0, only one example is provided. In ver 3.1, optionally multiple
if (s.getNumEl()!=0)
schema.setExample(s.getEl(0).getExample());
if (s.getExclusiveMaximum() != null)
schema.setExclusiveMaximum(s.getExclusiveMaximum());
if (s.getExclusiveMinimum() != null)
......@@ -866,7 +882,8 @@ public static io.swagger.v3.oas.models.media.XML XmlObject.reverseXml(XmlObject
io.swagger.v3.oas.models.security.SecurityScheme securityScheme = new io.swagger.v3.oas.models.security.SecurityScheme();
SecuritySchemeReference s = (SecuritySchemeReference) securitySchemeOb;
if(!s.getRef().isEmpty()){securityScheme.set$ref(s.getRef());
if (!s.getRef().isEmpty()) {
securityScheme.set$ref(s.getRef());
}
return securityScheme;
......@@ -876,17 +893,31 @@ public static io.swagger.v3.oas.models.media.XML XmlObject.reverseXml(XmlObject
SecuritySchemeObject s = (SecuritySchemeObject) securitySchemeOb;
switch (s.getType()) {
case "apiKey": securityScheme.setType(SecurityScheme.Type.APIKEY); break;
case "http": securityScheme.setType(SecurityScheme.Type.HTTP); break;
case "oauth2": securityScheme.setType(SecurityScheme.Type.OAUTH2); break;
case "openIdConnect": securityScheme.setType(SecurityScheme.Type.OPENIDCONNECT); break;
case "apiKey":
securityScheme.setType(SecurityScheme.Type.APIKEY);
break;
case "http":
securityScheme.setType(SecurityScheme.Type.HTTP);
break;
case "oauth2":
securityScheme.setType(SecurityScheme.Type.OAUTH2);
break;
case "openIdConnect":
securityScheme.setType(SecurityScheme.Type.OPENIDCONNECT);
break;
}
if (!s.getName().isEmpty())
securityScheme.setName(s.getName());
switch (s.getIn()) {
case "cookie": securityScheme.setIn(SecurityScheme.In.COOKIE); break;
case "header": securityScheme.setIn(SecurityScheme.In.HEADER); break;
case "query": securityScheme.setIn(SecurityScheme.In.QUERY); break;
case "cookie":
securityScheme.setIn(SecurityScheme.In.COOKIE);
break;
case "header":
securityScheme.setIn(SecurityScheme.In.HEADER);
break;
case "query":
securityScheme.setIn(SecurityScheme.In.QUERY);
break;
}
if (!s.getScheme().isEmpty())
securityScheme.setScheme(s.getScheme());
......
......@@ -16,6 +16,7 @@ import io.swagger.v3.parser.core.models.SwaggerParseResult;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import de.tudresden.inf.st.jastadd.dumpAst.ast.Dumper;
import java.awt.*;
import java.io.File;
......@@ -57,13 +58,11 @@ public class OpenAPIMain_test {
for (String file : filenames) {
String writerName = genDir + file;
System.out.println(writerName);
FileWriter expectedWriter = new FileWriter((writerName.substring(0, writerName.length() - 5) + "-expected.json"));
FileWriter actualWriter = new FileWriter((writerName.substring(0, writerName.length() - 5) + "-actual.json"));
writerName = writerName.substring(0, writerName.length() - 5);
FileWriter expectedWriter = new FileWriter(writerName + "-expected.json");
FileWriter actualWriter = new FileWriter(writerName + "-actual.json");
// parsed openAPI object with swagger-parser
ParseOptions options = new ParseOptions();
options.setResolve(true);
SwaggerParseResult result = new OpenAPIParser().readLocation(resource.getPath() + "/" + file, null, null);
POJOOpenAPI = result.getOpenAPI();
System.out.println("Loading expression DSL file '" + file + "'.");
......@@ -78,11 +77,12 @@ public class OpenAPIMain_test {
System.out.println("validated!");
// save expected object
expectedWriter.write(POJOOpenAPI.toString());
expectedWriter.write(expectedNode.toPrettyString());
expectedWriter.close();
// OpenAPI in POJO to OpenAPI in JastAdd
jastAddObject = OpenAPIObject.parseOpenAPI(POJOOpenAPI);
Dumper.read(jastAddObject).dumpAsPNG(Paths.get(writerName + ".png"));
// OpenAPI in JastAdd to OpenAPI in POJO
OpenAPI transformedAPI = OpenAPIObject.reverseOpenAPI(jastAddObject);
......@@ -96,7 +96,7 @@ public class OpenAPIMain_test {
System.out.println("validated");
// save generated object
actualWriter.write(transformedAPI.toString());
actualWriter.write(actualNode.toPrettyString());
actualWriter.close();
// compare if api (source object) is equivalent to api3 (generated object)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment