diff --git a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java
index 67840a7763..34c3a5ea03 100644
--- a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java
+++ b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java
@@ -171,6 +171,7 @@ public abstract class DefaultCodegenConfig implements CodegenConfig {
protected String ignoreFilePathOverride;
protected boolean useOas2 = false;
protected boolean copyFistAllOfProperties = false;
+ protected boolean ignoreImportMapping;
public List cliOptions() {
return cliOptions;
@@ -181,6 +182,12 @@ public void processOpts() {
this.setTemplateDir((String) additionalProperties.get(CodegenConstants.TEMPLATE_DIR));
}
+ if (additionalProperties.get(CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION) != null) {
+ setIgnoreImportMapping(Boolean.parseBoolean( additionalProperties.get(CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION).toString()));
+ } else {
+ setIgnoreImportMapping(defaultIgnoreImportMappingOption());
+ }
+
if (additionalProperties.containsKey(CodegenConstants.TEMPLATE_VERSION)) {
this.setTemplateVersion((String) additionalProperties.get(CodegenConstants.TEMPLATE_VERSION));
}
@@ -1717,6 +1724,9 @@ public CodegenProperty fromProperty(String name, Schema propertySchema) {
CodegenProperty cp = fromProperty("inner", new ObjectSchema());
updatePropertyForMap(codegenProperty, cp);
} else {
+ if (isObjectSchema(propertySchema)) {
+ codegenProperty.getVendorExtensions().put("x-is-object", Boolean.TRUE);
+ }
setNonArrayMapProperty(codegenProperty, type);
}
return codegenProperty;
@@ -3147,6 +3157,29 @@ private void addVars(CodegenModel codegenModel, List vars, Map<
codegenModel.readWriteVars.add(codegenProperty);
}
}
+ // check if one of the property is a object and has import mapping.
+ List modelProperties = vars.stream()
+ .filter(codegenProperty -> getBooleanValue(codegenProperty, "x-is-object") && importMapping.containsKey(codegenProperty.baseType))
+ .collect(Collectors.toList());
+ if (modelProperties == null || modelProperties.isEmpty()) {
+ return;
+ }
+
+ for (CodegenProperty modelProperty : modelProperties) {
+ List codegenProperties = vars.stream()
+ .filter(codegenProperty -> !getBooleanValue(codegenProperty, "x-is-object")
+ && importMapping.containsKey(codegenProperty.baseType)
+ && codegenProperty.baseType.equals(modelProperty.baseType))
+ .collect(Collectors.toList());
+ if (codegenProperties == null || codegenProperties.isEmpty()) {
+ continue;
+ }
+ for (CodegenProperty codegenProperty : codegenProperties) {
+ codegenModel.imports.remove(codegenProperty.baseType);
+ codegenProperty.datatype = importMapping.get(codegenProperty.baseType);
+ codegenProperty.datatypeWithEnum = codegenProperty.datatype;
+ }
+ }
}
/**
@@ -4146,7 +4179,10 @@ else if (Parameter.StyleEnum.SPACEDELIMITED.equals(parameter.getStyle())) {
}
public boolean isObjectSchema (Schema schema) {
- if (schema instanceof ObjectSchema ||schema instanceof ComposedSchema) {
+ if (schema == null) {
+ return false;
+ }
+ if (schema instanceof ObjectSchema || schema instanceof ComposedSchema) {
return true;
}
if (SchemaTypeUtil.OBJECT_TYPE.equalsIgnoreCase(schema.getType()) && !(schema instanceof MapSchema)) {
@@ -4241,7 +4277,15 @@ public void setUnflattenedOpenAPI(OpenAPI unflattenedOpenAPI) {
this.unflattenedOpenAPI = unflattenedOpenAPI;
}
- public boolean ignoreImportMapping() {
+ public boolean getIgnoreImportMapping() {
+ return ignoreImportMapping;
+ }
+
+ public void setIgnoreImportMapping(boolean ignoreImportMapping) {
+ this.ignoreImportMapping = ignoreImportMapping;
+ }
+
+ public boolean defaultIgnoreImportMappingOption() {
return false;
}
}
diff --git a/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java b/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java
index 6cc4fb1d0e..10f1364ff5 100644
--- a/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java
+++ b/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java
@@ -600,10 +600,10 @@ public String toParamName(String name) {
public String toModelName(final String name) {
// We need to check if import-mapping has a different model for this class, so we use it
// instead of the auto-generated one.
- if (importMapping.containsKey(name)) {
+
+ if (!getIgnoreImportMapping() && importMapping.containsKey(name)) {
return importMapping.get(name);
}
-
final String sanitizedName = sanitizeName(name);
String nameWithPrefixSuffix = sanitizedName;
@@ -1449,4 +1449,9 @@ public void setLanguageArguments(List languageArguments) {
super.setLanguageArguments(languageArguments);
}
+
+ @Override
+ public boolean defaultIgnoreImportMappingOption() {
+ return true;
+ }
}
diff --git a/src/test/java/io/swagger/codegen/v3/generators/AbstractCodegenTest.java b/src/test/java/io/swagger/codegen/v3/generators/AbstractCodegenTest.java
new file mode 100644
index 0000000000..7d52230a59
--- /dev/null
+++ b/src/test/java/io/swagger/codegen/v3/generators/AbstractCodegenTest.java
@@ -0,0 +1,19 @@
+package io.swagger.codegen.v3.generators;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.parser.OpenAPIV3Parser;
+import io.swagger.v3.parser.core.models.ParseOptions;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
+
+public abstract class AbstractCodegenTest {
+
+ protected OpenAPI getOpenAPI(String filePath) {
+ OpenAPIV3Parser openApiParser = new OpenAPIV3Parser();
+ ParseOptions options = new ParseOptions();
+ options.setResolve(true);
+ options.setFlatten(true);
+ SwaggerParseResult parseResult = openApiParser.readLocation(filePath, null, options);
+
+ return parseResult.getOpenAPI();
+ }
+}
diff --git a/src/test/java/io/swagger/codegen/v3/generators/java/JavaCXFClientCodegenTest.java b/src/test/java/io/swagger/codegen/v3/generators/java/JavaCXFClientCodegenTest.java
index 4779aca84e..31b9f8f61c 100644
--- a/src/test/java/io/swagger/codegen/v3/generators/java/JavaCXFClientCodegenTest.java
+++ b/src/test/java/io/swagger/codegen/v3/generators/java/JavaCXFClientCodegenTest.java
@@ -2,14 +2,9 @@
import io.swagger.codegen.v3.CodegenOperation;
import io.swagger.codegen.v3.CodegenResponse;
+import io.swagger.codegen.v3.generators.AbstractCodegenTest;
+import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
-import io.swagger.v3.oas.models.media.ArraySchema;
-import io.swagger.v3.oas.models.media.Content;
-import io.swagger.v3.oas.models.media.MediaType;
-import io.swagger.v3.oas.models.media.ObjectSchema;
-import io.swagger.v3.oas.models.media.Schema;
-import io.swagger.v3.oas.models.responses.ApiResponse;
-import io.swagger.v3.oas.models.responses.ApiResponses;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -17,23 +12,16 @@
import java.util.HashMap;
import java.util.Map;
-public class JavaCXFClientCodegenTest {
+public class JavaCXFClientCodegenTest extends AbstractCodegenTest {
@Test
public void responseWithoutContent() throws Exception {
- final Schema listOfPets = new ArraySchema()
- .items(new Schema<>().$ref("#/components/schemas/Pet"));
- Operation operation = new Operation().responses(new ApiResponses()
- .addApiResponse("200", new ApiResponse()
- .description("Return a list of pets")
- .content(new Content().addMediaType("application/json",
- new MediaType().schema(listOfPets))))
- .addApiResponse("400", new ApiResponse()
- .description("Error")));
- final Map allDefinitions = Collections.singletonMap("Pet", new ObjectSchema());
+ final OpenAPI openAPI = getOpenAPI("3_0_0/response_without_content.yaml");
+ final Operation operation = openAPI.getPaths().get("/pets").getGet();
final JavaCXFClientCodegen codegen = new JavaCXFClientCodegen();
- final CodegenOperation co = codegen.fromOperation("getAllPets", "GET", operation, allDefinitions);
+ codegen.preprocessOpenAPI(openAPI);
+ final CodegenOperation co = codegen.fromOperation("getAllPets", "GET", operation, openAPI.getComponents().getSchemas(), openAPI);
Map objs = new HashMap<>();
objs.put("operations", Collections.singletonMap("operation", Collections.singletonList(co)));
diff --git a/src/test/java/io/swagger/codegen/v3/generators/java/JavaClientCodegenTest.java b/src/test/java/io/swagger/codegen/v3/generators/java/JavaClientCodegenTest.java
index ef89567049..253e2b37e2 100644
--- a/src/test/java/io/swagger/codegen/v3/generators/java/JavaClientCodegenTest.java
+++ b/src/test/java/io/swagger/codegen/v3/generators/java/JavaClientCodegenTest.java
@@ -1,10 +1,15 @@
package io.swagger.codegen.v3.generators.java;
+import io.swagger.codegen.v3.CodegenConfig;
import io.swagger.codegen.v3.CodegenConstants;
import io.swagger.codegen.v3.CodegenModel;
import io.swagger.codegen.v3.CodegenModelFactory;
import io.swagger.codegen.v3.CodegenModelType;
import io.swagger.codegen.v3.CodegenParameter;
+import io.swagger.codegen.v3.CodegenProperty;
+import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
+import io.swagger.util.Json;
+import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.Content;
@@ -14,6 +19,9 @@
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.parameters.RequestBody;
+import io.swagger.v3.parser.OpenAPIV3Parser;
+import io.swagger.v3.parser.core.models.ParseOptions;
+import io.swagger.v3.parser.core.models.SwaggerParseResult;
import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -154,7 +162,7 @@ public void arraysInRequestBody() throws Exception {
Assert.assertEquals(codegenParameter2.description, "A list of list of values");
Assert.assertEquals(codegenParameter2.dataType, "List>");
Assert.assertEquals(codegenParameter2.baseType, "List");
-
+
RequestBody body3 = new RequestBody();
body3.setDescription("A list of points");
body3.setContent(new Content().addMediaType("application/json", new MediaType().schema(new ArraySchema().items(new ObjectSchema().$ref("#/components/schemas/Point")))));
@@ -260,4 +268,100 @@ public void customTemplates() throws Exception {
codegen.processOpts();
Assert.assertEquals(codegen.templateDir(), String.join(File.separator,"user", "custom", "location"));
}
+
+ @Test
+ public void testModelNamedFile() {
+ final OpenAPI openAPI = getOpenAPI("3_0_0/model_named_file.yaml");
+ final DefaultCodegenConfig config = new JavaClientCodegen();
+ config.setIgnoreImportMapping(true);
+ config.preprocessOpenAPI(openAPI);
+
+ final Schema modelFile = openAPI.getComponents().getSchemas().get("File");
+ final Schema modelSetting = openAPI.getComponents().getSchemas().get("Setting");
+
+ final CodegenModel codegenModelFile = config.fromModel("File", modelFile, openAPI.getComponents().getSchemas());
+ final CodegenModel codegenModelSetting = config.fromModel("Setting", modelSetting, openAPI.getComponents().getSchemas());
+
+ Assert.assertEquals(codegenModelFile.name, "File");
+ Assert.assertEquals(codegenModelSetting.name, "Setting");
+
+ final List codegenProperties = codegenModelSetting.getVars();
+
+ Assert.assertEquals(codegenProperties.size(), 4);
+
+ CodegenProperty fileProperty = codegenProperties.stream().filter(property -> property.name.equals("file")).findAny().get();
+
+ Assert.assertEquals(fileProperty.name, "file");
+ Assert.assertEquals(fileProperty.baseType, "File");
+ Assert.assertEquals(fileProperty.datatype, "File");
+
+ CodegenProperty documentProperty = codegenProperties.stream().filter(property -> property.name.equals("document")).findAny().get();
+
+ Assert.assertEquals(documentProperty.name, "document");
+ Assert.assertEquals(documentProperty.baseType, "File");
+ Assert.assertEquals(documentProperty.datatype, "java.io.File");
+
+ Assert.assertFalse(codegenModelSetting.imports.stream().anyMatch(_import -> _import.equals("java.io.File")));
+ }
+
+ private OpenAPI getOpenAPI(String filePath) {
+ OpenAPIV3Parser openApiParser = new OpenAPIV3Parser();
+ ParseOptions options = new ParseOptions();
+ options.setResolve(true);
+ options.setFlatten(true);
+ SwaggerParseResult parseResult = openApiParser.readLocation(filePath, null, options);
+
+ return parseResult.getOpenAPI();
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
}
diff --git a/src/test/java/io/swagger/codegen/v3/generators/java/JavaModelTest.java b/src/test/java/io/swagger/codegen/v3/generators/java/JavaModelTest.java
index 934759f128..77d9aeea27 100644
--- a/src/test/java/io/swagger/codegen/v3/generators/java/JavaModelTest.java
+++ b/src/test/java/io/swagger/codegen/v3/generators/java/JavaModelTest.java
@@ -10,7 +10,10 @@
import io.swagger.codegen.v3.CodegenResponse;
import io.swagger.codegen.v3.DefaultGenerator;
import io.swagger.codegen.v3.config.CodegenConfigurator;
+import io.swagger.codegen.v3.generators.AbstractCodegenTest;
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.BooleanSchema;
@@ -43,7 +46,7 @@
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
-public class JavaModelTest {
+public class JavaModelTest extends AbstractCodegenTest {
private TemporaryFolder folder = new TemporaryFolder();
@Test(description = "convert a simple java model")
@@ -57,6 +60,7 @@ public void simpleModelTest() {
.addRequiredItem("id")
.addRequiredItem("name");
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", model);
Assert.assertEquals(cm.name, "sample");
@@ -169,6 +173,7 @@ public void mapWithListPropertyTest() {
.additionalProperties(new ArraySchema().items(new Schema().$ref("Pet"))))
.addRequiredItem("id");
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -196,6 +201,7 @@ public void list2DPropertyTest() {
.addProperties("list2D", new ArraySchema().items(
new ArraySchema().items(new Schema().$ref("Pet"))));
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", model);
Assert.assertEquals(cm.vars.size(), 1);
@@ -219,6 +225,7 @@ public void complexPropertiesTest() {
.description("a sample model")
.addProperties("children", new Schema().$ref("#/components/schemas/Children"));
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -245,6 +252,7 @@ public void complexListPropertyTest() {
.addProperties("children", new ArraySchema()
.items(new Schema().$ref("#/components/schemas/Children")));
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -273,6 +281,7 @@ public void complexMapPropertyTest() {
.addProperties("children", new MapSchema()
.additionalProperties(new Schema().$ref("#/components/schemas/Children")));
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -310,6 +319,7 @@ public void arrayModelWithItemNameTest() {
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -344,6 +354,7 @@ public void arrayModelTest() {
.name("arraySchema")
.description("an array model");
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -354,7 +365,7 @@ public void arrayModelTest() {
Assert.assertEquals(cm.imports.size(), 4);
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Schema", "List", "ArrayList", "Children")).size(), 4);
}
-
+
@Test(description = "convert an array model")
public void arrayModelTestUsingOas2() {
final Schema schema = new ArraySchema()
@@ -362,6 +373,7 @@ public void arrayModelTestUsingOas2() {
.name("arraySchema")
.description("an array model");
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
codegen.setUseOas2(true);
final CodegenModel cm = codegen.fromModel("sample", schema);
@@ -380,6 +392,7 @@ public void mapModelTest() {
.description("an map model")
.additionalProperties(new Schema().$ref("#/components/schemas/Children"));
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -390,13 +403,14 @@ public void mapModelTest() {
Assert.assertEquals(cm.imports.size(), 4);
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Schema", "Map", "HashMap", "Children")).size(), 4);
}
-
+
@Test(description = "convert an map model")
public void mapModelTestUsingOas2() {
final Schema schema = new MapSchema()
.description("an map model")
.additionalProperties(new Schema().$ref("#/components/schemas/Children"));
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
codegen.setUseOas2(true);
final CodegenModel cm = codegen.fromModel("sample", schema);
@@ -408,7 +422,7 @@ public void mapModelTestUsingOas2() {
Assert.assertEquals(cm.imports.size(), 4);
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("ApiModel", "Map", "HashMap", "Children")).size(), 4);
}
-
+
@Test(description = "convert a model with upper-case property names")
public void upperCaseNamesTest() {
final Schema schema = new Schema()
@@ -823,6 +837,7 @@ public void longPropertyInReferencedSchemaTest() {
.addProperties("Long1", new Schema<>().$ref("#/components/schemas/LongProperty"))
.addProperties("Long2", new IntegerSchema().format("int64"));
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final Map allDefinitions = Collections.singletonMap("LongProperty", longProperty);
final CodegenModel cm = codegen.fromModel("test", TestSchema, allDefinitions);
@@ -851,6 +866,7 @@ public void integerPropertyInReferencedSchemaTest() {
.addProperties("Integer2", new IntegerSchema().format("int32"));
final Map allDefinitions = Collections.singletonMap("IntegerProperty", longProperty);
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("test", testSchema, allDefinitions);
Assert.assertEquals(cm.vars.size(), 2);
@@ -877,6 +893,7 @@ public void arraySchemaTest() {
.items(new Schema<>().$ref("#/components/schemas/Pet")));
final Map allDefinitions = Collections.singletonMap("Pet", new ObjectSchema());
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("test", testSchema, allDefinitions);
Assert.assertEquals(cm.vars.size(), 1);
@@ -897,13 +914,14 @@ public void arraySchemaTestInRequestBody() {
.items(new Schema<>().$ref("#/components/schemas/Pet"));
Operation operation = new Operation()
.requestBody(new RequestBody()
- .content(new Content().addMediaType("application/json",
+ .content(new Content().addMediaType("application/json",
new MediaType().schema(testSchema))))
.responses(
new ApiResponses().addApiResponse("204", new ApiResponse()
.description("Ok response")));
final Map allDefinitions = Collections.singletonMap("Pet", new ObjectSchema());
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenOperation co = codegen.fromOperation("testSchema", "GET", operation, allDefinitions);
Assert.assertEquals(co.bodyParams.size(), 1);
@@ -926,10 +944,11 @@ public void arraySchemaTestInOperationResponse() {
Operation operation = new Operation().responses(
new ApiResponses().addApiResponse("200", new ApiResponse()
.description("Ok response")
- .content(new Content().addMediaType("application/json",
+ .content(new Content().addMediaType("application/json",
new MediaType().schema(testSchema)))));
final Map allDefinitions = Collections.singletonMap("Pet", new ObjectSchema());
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenOperation co = codegen.fromOperation("testSchema", "GET", operation, allDefinitions);
Assert.assertEquals(co.responses.size(), 1);
@@ -949,6 +968,7 @@ public void arrayOfArraySchemaTest() {
.items(new Schema<>().$ref("#/components/schemas/Pet"))));
final Map allDefinitions = Collections.singletonMap("Pet", new ObjectSchema());
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("test", testSchema, allDefinitions);
Assert.assertEquals(cm.vars.size(), 1);
@@ -970,13 +990,14 @@ public void arrayOfArraySchemaTestInRequestBody() {
.items(new Schema<>().$ref("#/components/schemas/Pet")));
Operation operation = new Operation()
.requestBody(new RequestBody()
- .content(new Content().addMediaType("application/json",
+ .content(new Content().addMediaType("application/json",
new MediaType().schema(testSchema))))
.responses(
new ApiResponses().addApiResponse("204", new ApiResponse()
.description("Ok response")));
final Map allDefinitions = Collections.singletonMap("Pet", new ObjectSchema());
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenOperation co = codegen.fromOperation("testSchema", "GET", operation, allDefinitions);
Assert.assertEquals(co.bodyParams.size(), 1);
@@ -1000,10 +1021,11 @@ public void arrayOfArraySchemaTestInOperationResponse() {
Operation operation = new Operation().responses(
new ApiResponses().addApiResponse("200", new ApiResponse()
.description("Ok response")
- .content(new Content().addMediaType("application/json",
+ .content(new Content().addMediaType("application/json",
new MediaType().schema(testSchema)))));
final Map allDefinitions = Collections.singletonMap("Pet", new ObjectSchema());
final DefaultCodegenConfig codegen = new JavaClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenOperation co = codegen.fromOperation("testSchema", "GET", operation, allDefinitions);
Assert.assertEquals(co.responses.size(), 1);
diff --git a/src/test/java/io/swagger/codegen/v3/generators/kotlin/KotlinClientCodegenModelTest.java b/src/test/java/io/swagger/codegen/v3/generators/kotlin/KotlinClientCodegenModelTest.java
index 822d3f907f..6e01e2402b 100644
--- a/src/test/java/io/swagger/codegen/v3/generators/kotlin/KotlinClientCodegenModelTest.java
+++ b/src/test/java/io/swagger/codegen/v3/generators/kotlin/KotlinClientCodegenModelTest.java
@@ -4,6 +4,9 @@
import io.swagger.codegen.v3.CodegenConstants;
import io.swagger.codegen.v3.CodegenModel;
import io.swagger.codegen.v3.CodegenProperty;
+import io.swagger.codegen.v3.generators.AbstractCodegenTest;
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.DateTimeSchema;
import io.swagger.v3.oas.models.media.IntegerSchema;
@@ -17,6 +20,8 @@
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
+import java.util.HashMap;
+
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
@SuppressWarnings("static-method")
@@ -24,12 +29,12 @@ public class KotlinClientCodegenModelTest {
protected static final Logger LOGGER = LoggerFactory.getLogger(KotlinClientCodegenModelTest.class);
- private Schema getArrayTestSchema() {
+ private Schema getArrayTestSchema() {
final Schema propertySchema = new ArraySchema()
.items(new StringSchema())
- .description("an array property");
+ .description("an array property");
return new Schema()
- .type("object")
+ .type("object")
.description("a sample model")
.addProperties("examples", propertySchema);
}
@@ -64,7 +69,7 @@ private Schema getComplexSchema() {
}
@Test(description = "convert a simple model")
- public void simpleModelTest() {
+ public void simpleModelTest() {
final Schema schema = getSimpleSchema();
final KotlinClientCodegen codegen = new KotlinClientCodegen();
final CodegenModel cm = codegen.fromModel("sample", schema);
@@ -91,7 +96,7 @@ public void simpleModelTest() {
Assert.assertEquals(property2.name, "firstName");
Assert.assertEquals(property2.defaultValue, "null");
Assert.assertEquals(property2.baseType, "kotlin.String");
- Assert.assertTrue(getBooleanValue(property2, CodegenConstants.HAS_MORE_EXT_NAME));
+ Assert.assertTrue(getBooleanValue(property2, CodegenConstants.HAS_MORE_EXT_NAME));
Assert.assertTrue(property2.required);
Assert.assertTrue(getBooleanValue(property2, CodegenConstants.IS_PRIMITIVE_TYPE_EXT_NAME));
Assert.assertTrue(getBooleanValue(property2, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
@@ -102,9 +107,9 @@ public void simpleModelTest() {
Assert.assertEquals(property3.name, "createdAt");
Assert.assertEquals(property3.defaultValue, "null");
Assert.assertEquals(property3.baseType, "java.time.LocalDateTime");
- Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
+ Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
Assert.assertFalse(property3.required);
- Assert.assertTrue(getBooleanValue(property3, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
+ Assert.assertTrue(getBooleanValue(property3, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
}
@Test(description = "convert a simple model: threetenbp")
@@ -122,7 +127,7 @@ public void selectDateLibraryAsThreetenbp() {
Assert.assertEquals(property3.name, "createdAt");
Assert.assertEquals(property3.defaultValue, "null");
Assert.assertEquals(property3.baseType, "org.threeten.bp.LocalDateTime");
- Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
+ Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
Assert.assertFalse(property3.required);
Assert.assertTrue(getBooleanValue(property3, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
}
@@ -142,7 +147,7 @@ public void selectDateLibraryAsString() {
Assert.assertEquals(property3.name, "createdAt");
Assert.assertEquals(property3.defaultValue, "null");
Assert.assertEquals(property3.baseType, "kotlin.String");
- Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
+ Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
Assert.assertFalse(property3.required);
Assert.assertTrue(getBooleanValue(property3, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
}
@@ -162,7 +167,7 @@ public void selectDateLibraryAsJava8() {
Assert.assertEquals(property3.name, "createdAt");
Assert.assertEquals(property3.defaultValue, "null");
Assert.assertEquals(property3.baseType, "java.time.LocalDateTime");
- Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
+ Assert.assertFalse(getBooleanValue(property3, CodegenConstants.HAS_MORE_EXT_NAME));
Assert.assertFalse(property3.required);
Assert.assertTrue(getBooleanValue(property3, CodegenConstants.IS_NOT_CONTAINER_EXT_NAME));
}
@@ -218,6 +223,7 @@ public void mapPropertyTest() {
public void complexPropertyTest() {
final Schema schema = getComplexSchema();
final CodegenConfig codegen = new KotlinClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", schema);
Assert.assertEquals(cm.name, "sample");
@@ -249,6 +255,8 @@ public static Object[][] modelNames() {
public void sanitizeModelNames(final String name, final ModelNameTest testCase) {
final Schema schema = getComplexSchema();
final CodegenConfig codegen = new KotlinClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
+
final CodegenModel cm = codegen.fromModel(name, schema);
Assert.assertEquals(cm.name, testCase.expectedName);
diff --git a/src/test/java/io/swagger/codegen/v3/generators/typescript/angular/TypeScriptAngularModelTest.java b/src/test/java/io/swagger/codegen/v3/generators/typescript/angular/TypeScriptAngularModelTest.java
index 589d9f840f..57424fb3dd 100644
--- a/src/test/java/io/swagger/codegen/v3/generators/typescript/angular/TypeScriptAngularModelTest.java
+++ b/src/test/java/io/swagger/codegen/v3/generators/typescript/angular/TypeScriptAngularModelTest.java
@@ -4,8 +4,11 @@
import io.swagger.codegen.v3.CodegenConstants;
import io.swagger.codegen.v3.CodegenModel;
import io.swagger.codegen.v3.CodegenProperty;
+import io.swagger.codegen.v3.generators.AbstractCodegenTest;
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
import io.swagger.codegen.v3.generators.typescript.TypeScriptAngularClientCodegen;
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.DateSchema;
import io.swagger.v3.oas.models.media.DateTimeSchema;
@@ -20,7 +23,7 @@
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
@SuppressWarnings("static-method")
-public class TypeScriptAngularModelTest {
+public class TypeScriptAngularModelTest /**extends AbstractCodegenTest*/ {
@Test(description = "convert a simple TypeScript Angular model")
public void simpleModelTest() {
@@ -125,6 +128,7 @@ public void complexPropertyTest() {
.description("a sample model")
.addProperties("children", new Schema().$ref("#/components/schemas/Children"));
final DefaultCodegenConfig codegen = new TypeScriptAngularClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", model);
Assert.assertEquals(cm.name, "sample");
@@ -149,6 +153,7 @@ public void complexListPropertyTest() {
.addProperties("children", new ArraySchema()
.items(new Schema().$ref("#/components/schemas/Children")));
final DefaultCodegenConfig codegen = new TypeScriptAngularClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", model);
Assert.assertEquals(cm.name, "sample");
@@ -172,6 +177,8 @@ public void arrayModelTest() {
.items(new Schema().$ref("#/components/schemas/Children"))
.description("an array model");
final DefaultCodegenConfig codegen = new TypeScriptAngularClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
+
final CodegenModel cm = codegen.fromModel("sample", model);
Assert.assertEquals(cm.name, "sample");
@@ -186,6 +193,7 @@ public void mapModelTest() {
.description("a map model")
.additionalProperties(new Schema().$ref("#/components/schemas/Children"));
final DefaultCodegenConfig codegen = new TypeScriptAngularClientCodegen();
+ codegen.preprocessOpenAPI(new OpenAPI().components(new Components()));
final CodegenModel cm = codegen.fromModel("sample", model);
Assert.assertEquals(cm.name, "sample");
diff --git a/src/test/resources/3_0_0/model_named_file.yaml b/src/test/resources/3_0_0/model_named_file.yaml
new file mode 100644
index 0000000000..de35d6d78f
--- /dev/null
+++ b/src/test/resources/3_0_0/model_named_file.yaml
@@ -0,0 +1,62 @@
+openapi: 3.0.0
+servers:
+ - description: test definition
+ url: /
+info:
+ description: This is a simple API
+ version: "1.0.0"
+ title: Simple Inventory API
+
+paths:
+ /inventory:
+ post:
+ tags:
+ - Inventory
+ summary: adds an inventory item
+ operationId: addInventory
+ description: Adds an item to the system
+ responses:
+ '201':
+ description: item created
+ '400':
+ description: 'invalid input, object invalid'
+ '409':
+ description: an existing item already exists
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Setting'
+ description: Inventory item to add
+components:
+ schemas:
+ Archive:
+ type: string
+ format: binary
+
+ File:
+ description: File.
+ type: object
+ properties:
+ prop1:
+ type: string
+
+ Date:
+ type: object
+ properties:
+ place:
+ type: string
+
+ Setting:
+ description: Setting.
+ properties:
+ file:
+ $ref: '#/components/schemas/File'
+ date:
+ $ref: '#/components/schemas/Date'
+ document:
+ type: string
+ format: binary
+ time:
+ type: string
+ format: date-time
diff --git a/src/test/resources/3_0_0/response_without_content.yaml b/src/test/resources/3_0_0/response_without_content.yaml
new file mode 100644
index 0000000000..fe79c5890a
--- /dev/null
+++ b/src/test/resources/3_0_0/response_without_content.yaml
@@ -0,0 +1,33 @@
+openapi: 3.0.0
+servers:
+ - description: test definition
+ url: /
+info:
+ description: This is a simple API
+ version: "1.0.0"
+ title: Simple API
+
+paths:
+ /pets:
+ get:
+ tags:
+ - Pet
+ summary: get all pets
+ operationId: getAllPets
+ description: get all existing pets
+ responses:
+ 200:
+ description: 'Return a list of pets'
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ 400:
+ description: 'Error'
+
+components:
+ schemas:
+ Pet:
+ type: 'object'
\ No newline at end of file