diff --git a/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml b/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml index 8dc08e4a4bb2..40500d64508e 100644 --- a/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml +++ b/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml @@ -3,10 +3,10 @@ outputDir: samples/client/petstore/java/microprofile-rest-client-3.0-jackson-wit library: microprofile inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml templateDir: modules/openapi-generator/src/main/resources/Java -withXml: true additionalProperties: serializationLibrary: jackson artifactId: microprofile-rest-client-3-jackson-with-xml configKey: petstore microprofileRestClientVersion: "3.0" hideGenerationTimestamp: true + withXml: true diff --git a/docs/global-properties.md b/docs/global-properties.md index 1fe76f580136..445b7f21ce5a 100644 --- a/docs/global-properties.md +++ b/docs/global-properties.md @@ -5,23 +5,22 @@ title: Global Properties ## Available Global Properties -| Property | Description | Acceptable value | -| -------- | ------------| ---------------- | -| debugOpenAPI | Dumps JSON formatted and fully parsed OpenAPI document during generation | none | -| debugModels | Dumps JSON formatted template-bound model information during generation | none | -| debugOperations | Dumps JSON formatted template-bound operation information during generation | none | -| debugSupportingFiles | Dumps JSON formatted Supporting File information during generation | none | -| verbose | Defines the verbosity | `true` or `false` | -| generateAliasAsModel | Defines whether primitive types defined at the model/schema level will be wrapped in a model | `true` or `false` | -| org.openapitools.codegen.utils.oncelogger.enabled | Enable/disable the "OnceLogger" which reduces noise for select repeated logs | `true` or `false` | -| supportingFiles | Allows the user to define which supporting files will be generated. Prefer using the more robust `.openapi-generator-ignore`. | no value, or a colon-separated string of file names | -| models | Allows the user to define which models will be generated. Prefer using the more robust `.openapi-generator-ignore`. | no value, or a colon-separated string of model names | -| apis | Allows the user to define which apis will be generated. Prefer using the more robust `.openapi-generator-ignore`. | no value, or a colon-separated string of api names | -| apiDocs | Allows the user to define if api docs will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | -| modelDocs | Allows the user to define if model docs will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | -| apiTests | Allows the user to define if api tests will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | -| modelTests | Allows the user to define if model tests will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | -| withXml | Allows the user to control support of XML generated constructs, where supported | none | +| Property | Description | Acceptable value | +|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------| +| debugOpenAPI | Dumps JSON formatted and fully parsed OpenAPI document during generation | none | +| debugModels | Dumps JSON formatted template-bound model information during generation | none | +| debugOperations | Dumps JSON formatted template-bound operation information during generation | none | +| debugSupportingFiles | Dumps JSON formatted Supporting File information during generation | none | +| verbose | Defines the verbosity | `true` or `false` | +| generateAliasAsModel | Defines whether primitive types defined at the model/schema level will be wrapped in a model | `true` or `false` | +| org.openapitools.codegen.utils.oncelogger.enabled | Enable/disable the "OnceLogger" which reduces noise for select repeated logs | `true` or `false` | +| supportingFiles | Allows the user to define which supporting files will be generated. Prefer using the more robust `.openapi-generator-ignore`. | no value, or a colon-separated string of file names | +| models | Allows the user to define which models will be generated. Prefer using the more robust `.openapi-generator-ignore`. | no value, or a colon-separated string of model names | +| apis | Allows the user to define which apis will be generated. Prefer using the more robust `.openapi-generator-ignore`. | no value, or a colon-separated string of api names | +| apiDocs | Allows the user to define if api docs will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | +| modelDocs | Allows the user to define if model docs will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | +| apiTests | Allows the user to define if api tests will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | +| modelTests | Allows the user to define if model tests will be generated. Prefer using the more robust `.openapi-generator-ignore`. | `true` or `false` | ## Note on Global Property declaration diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 1dbc35ad84c2..804d41c4a693 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -389,11 +389,6 @@ apply plugin: 'org.openapi.generator' |true |Defines whether or not api-related _documentation_ files should be generated. -|withXml -|Boolean -|false -|A special-case setting which configures some generators with XML support. In some cases, this forces json OR xml, so the default here is false. - |configOptions |Map(String,String) |None diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt index cf3552d38fb5..46d6cfcc6905 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt @@ -144,7 +144,6 @@ class OpenApiGeneratorPlugin : Plugin { generateModelDocumentation.set(generate.generateModelDocumentation) generateApiTests.set(generate.generateApiTests) generateApiDocumentation.set(generate.generateApiDocumentation) - withXml.set(generate.withXml) configOptions.set(generate.configOptions) logToStderr.set(generate.logToStderr) enablePostProcessFile.set(generate.enablePostProcessFile) diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt index 236453a87094..b80ffbcdd69e 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt @@ -342,12 +342,6 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { */ val generateApiDocumentation = project.objects.property() - /** - * A special-case setting which configures some generators with XML support. In some cases, - * this forces json OR xml, so the default here is false. - */ - val withXml = project.objects.property() - /** * To write all log messages (not just errors) to STDOUT */ @@ -408,7 +402,6 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { generateModelDocumentation.set(true) generateApiTests.set(true) generateApiDocumentation.set(true) - withXml.set(false) configOptions.set(mapOf()) validateSpec.set(true) logToStderr.set(false) diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt index d9473159a87e..193cdbed15d8 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt @@ -506,14 +506,6 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac @Input val generateApiDocumentation = project.objects.property() - /** - * A special-case setting which configures some generators with XML support. In some cases, - * this forces json OR xml, so the default here is false. - */ - @Optional - @Input - val withXml = project.objects.property() - /** * To write all log messages (not just errors) to STDOUT */ @@ -680,10 +672,6 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac GlobalSettings.setProperty(CodegenConstants.API_TESTS, generateApiTests.get().toString()) } - if (withXml.isPresent) { - GlobalSettings.setProperty(CodegenConstants.WITH_XML, withXml.get().toString()) - } - if (inputSpec.isPresent && remoteInputSpec.isPresent) { logger.warn("Both inputSpec and remoteInputSpec is specified. The remoteInputSpec will take priority over inputSpec.") } diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md index cc8500ceb95c..a3d45bd2c386 100644 --- a/modules/openapi-generator-maven-plugin/README.md +++ b/modules/openapi-generator-maven-plugin/README.md @@ -107,7 +107,6 @@ mvn clean compile | `generateModelDocumentation` | `openapi.generator.maven.plugin.generateModelDocumentation` | generate the model documentation (`true` by default. Only available if `generateModels` is `true`) | `generateApiTests` | `openapi.generator.maven.plugin.generateApiTests` | generate the api tests (`true` by default. Only available if `generateApis` is `true`) | `generateApiDocumentation` | `openapi.generator.maven.plugin.generateApiDocumentation` | generate the api documentation (`true` by default. Only available if `generateApis` is `true`) -| `withXml` | `openapi.generator.maven.plugin.withXml` | enable XML annotations inside the generated models and API (only works with Java `language` and libraries that provide support for JSON and XML) | `skip` | `codegen.skip` | skip code generation (`false` by default. Can also be set globally through the `codegen.skip` property) | `skipIfSpecIsUnchanged` | `codegen.skipIfSpecIsUnchanged` | Skip the execution if the source file is older than the output folder (`false` by default. Can also be set globally through the `codegen.skipIfSpecIsUnchanged` property) | `addCompileSourceRoot` | `openapi.generator.maven.plugin.addCompileSourceRoot` | Add the output directory to the project as a source root, so that the generated java types are compiled and included in the project artifact (`true` by default). Mutually exclusive with `addTestCompileSourceRoot`. diff --git a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java index fc9eab015103..372b9aeb47e9 100644 --- a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java +++ b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java @@ -496,12 +496,6 @@ public class CodeGenMojo extends AbstractMojo { @Parameter(name = "generateApiDocumentation", property = "openapi.generator.maven.plugin.generateApiDocumentation") private Boolean generateApiDocumentation = true; - /** - * Generate the api documentation - */ - @Parameter(name = "withXml", property = "openapi.generator.maven.plugin.withXml") - private Boolean withXml = false; - /** * Skip the execution. */ @@ -811,7 +805,6 @@ public void execute() throws MojoExecutionException { GlobalSettings.setProperty(CodegenConstants.MODEL_DOCS, generateModelDocumentation.toString()); GlobalSettings.setProperty(CodegenConstants.API_TESTS, generateApiTests.toString()); GlobalSettings.setProperty(CodegenConstants.API_DOCS, generateApiDocumentation.toString()); - GlobalSettings.setProperty(CodegenConstants.WITH_XML, withXml.toString()); GlobalSettings.setProperty(CodegenConstants.GENERATE_RECURSIVE_DEPENDENT_MODELS, generateRecursiveDependentModels.toString()); if (configOptions != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index c9ea2be1a178..33f8e754f676 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -33,7 +33,6 @@ public class CodegenConstants { public static final String API_TESTS = "apiTests"; public static final String API_DOCS = "apiDocs"; - public static final String WITH_XML = "withXml"; public static final String SKIP_FORM_MODEL = "skipFormModel"; /* /end System Properties */ @@ -438,6 +437,8 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case, public static final String FASTAPI_IMPLEMENTATION_PACKAGE = "fastapiImplementationPackage"; + public static final String WITH_XML = "withXml"; + public static final String WITH_GO_MOD = "withGoMod"; public static final String GENERATE_MARSHAL_JSON = "generateMarshalJSON"; diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache index 896235fe70a7..371b9daa9211 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache @@ -200,7 +200,6 @@ Class | Method | HTTP request | Description - modelDocs: {{generateModelDocs}} - apiTests: {{generateApiTests}} - modelTests: {{generateModelTests}} -- withXml: {{withXml}} ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: {{allowUnicodeIdentifiers}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 4d5d68090cb3..48fef733c943 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -129,7 +129,7 @@ public void doAnnotateDatesOnModelParameters() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ZebrasApi.java")) @@ -207,7 +207,7 @@ public void doAnnotateDatesOnModelParametersWithOptionalAndJsonNullable() throws generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ZebrasApi.java")) @@ -279,11 +279,10 @@ public void doGenerateCookieParams() throws IOException { DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ElephantsApi.java")) @@ -323,11 +322,10 @@ public void doGenerateRequestParamForSimpleParam() throws IOException { DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); @@ -360,11 +358,10 @@ public void doNotGenerateRequestParamForObjectQueryParam() throws IOException { DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); @@ -389,11 +386,10 @@ public void generateFormatForDateAndDateTimeQueryParam() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ElephantsApi.java")) @@ -418,7 +414,7 @@ public void interfaceDefaultImplDisableWithResponseWrapper() { codegen.processOpts(); // jdk8 tag has been removed - Assert.assertEquals(codegen.additionalProperties().get("jdk8"), null); + Assert.assertNull(codegen.additionalProperties().get("jdk8")); } @Test(expectedExceptions = IllegalArgumentException.class) @@ -448,11 +444,10 @@ public void shouldGenerateRequestParamForRefParams_3248_Regression() throws IOEx DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); @@ -486,11 +481,10 @@ public void shouldGenerateRequestParamForRefParams_3248_RegressionDates() throws DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); @@ -519,6 +513,8 @@ public void testJavaClientCorrectConstructorOrderForRequiredFields_issue15825() final ClientOptInput clientOptInput = configurator.toClientOptInput(); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(clientOptInput).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -550,7 +546,6 @@ public void springcloudWithAsyncAndJava8HasResponseWrapperCompletableFuture() th additionalProperties.put(CodegenConstants.MODEL_TESTS, "false"); additionalProperties.put(CodegenConstants.MODEL_DOCS, "false"); additionalProperties.put(CodegenConstants.APIS, "true"); - additionalProperties.put(CodegenConstants.SUPPORTING_FILES, "false"); Map files = generateFromContract("src/test/resources/3_0/petstore.yaml", SPRING_BOOT, additionalProperties); @@ -586,7 +581,7 @@ public void testAdditionalPropertiesPutForConfigValues() throws Exception { codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xyz.yyyyy.mmmmm.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xyz.yyyyy.mmmmm.model"); Assert.assertEquals(codegen.apiPackage(), "xyz.yyyyy.aaaaa.api"); @@ -660,22 +655,19 @@ public void testDoGenerateRequestBodyRequiredAttribute_3134_Regression() throws DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); generator.opts(input).generate(); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ExampleApi.java")) + .fileContains("@RequestBody(required = false") .assertMethod("exampleApiPost", "ExampleApiPostRequest") .hasParameter("exampleApiPostRequest") .assertParameterAnnotations() .containsWithNameAndAttributes("RequestBody", ImmutableMap.of("required", "false")); - - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ExampleApi.java"), - "@RequestBody(required = false"); } @Test @@ -689,7 +681,7 @@ public void testInitialConfigValues() throws Exception { codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), false); + Assert.assertFalse(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "org.openapitools.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "org.openapitools.model"); Assert.assertEquals(codegen.apiPackage(), "org.openapitools.api"); @@ -814,6 +806,7 @@ public void shouldAddParameterWithInHeaderWhenImplicitHeadersIsTrue_issue14418() .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -838,6 +831,7 @@ public void shouldApiNameSuffixForApiClassname() throws IOException { SpringCodegen codegen = new SpringCodegen(); codegen.setLibrary(SPRING_CLOUD_LIBRARY); codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put(INTERFACE_ONLY, "true"); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.model"); codegen.additionalProperties().put(CodegenConstants.API_NAME_SUFFIX, "Controller"); codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.controller"); @@ -849,6 +843,7 @@ public void shouldApiNameSuffixForApiClassname() throws IOException { .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -857,8 +852,8 @@ public void shouldApiNameSuffixForApiClassname() throws IOException { File notExisting = files.get("PetApi.java"); assertThat(notExisting).isNull(); - } + @Test public void shouldUseTagsForClassname() throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); @@ -869,6 +864,7 @@ public void shouldUseTagsForClassname() throws IOException { SpringCodegen codegen = new SpringCodegen(); codegen.setLibrary(SPRING_CLOUD_LIBRARY); codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put(INTERFACE_ONLY, "true"); codegen.additionalProperties().put(USE_TAGS, "true"); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.model"); codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.controller"); @@ -880,6 +876,8 @@ public void shouldUseTagsForClassname() throws IOException { .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); + Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -888,7 +886,6 @@ public void shouldUseTagsForClassname() throws IOException { File notExisting = files.get("PetApi.java"); assertThat(notExisting).isNull(); - } @Test @@ -901,18 +898,19 @@ public void shouldNotUseTagsForClassname() throws IOException { SpringCodegen codegen = new SpringCodegen(); codegen.setLibrary(SPRING_CLOUD_LIBRARY); codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put(INTERFACE_ONLY, "true"); codegen.additionalProperties().put(USE_TAGS, "false"); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.model"); codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.controller"); codegen.additionalProperties().put(CodegenConstants.MODEL_NAME_SUFFIX, "Dto"); - ClientOptInput input = new ClientOptInput() .openAPI(openAPI) .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -943,6 +941,8 @@ public void shouldAddValidAnnotationIntoCollectionWhenBeanValidationIsEnabled_is .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -1001,6 +1001,8 @@ public void shouldAddValidAnnotationIntoCollectionWhenBeanValidationIsEnabled_is .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -1087,6 +1089,7 @@ private Map generateFiles(SpringCodegen codegen, String filePath) input.config(codegen); final DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation List files = generator.opts(input).generate(); return files.stream().collect(Collectors.toMap(e -> e.getName().replace(outputPath, ""), i -> i)); @@ -1178,7 +1181,7 @@ public void testSettersForConfigValues() throws Exception { codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); - Assert.assertEquals(codegen.isHideGenerationTimestamp(), true); + Assert.assertTrue(codegen.isHideGenerationTimestamp()); Assert.assertEquals(codegen.modelPackage(), "xx.yyyyyyyy.model"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.MODEL_PACKAGE), "xx.yyyyyyyy.model"); Assert.assertEquals(codegen.apiPackage(), "xx.yyyyyyyy.api"); @@ -1189,7 +1192,7 @@ public void testSettersForConfigValues() throws Exception { Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.BASE_PACKAGE), "xx.yyyyyyyy.base"); Assert.assertEquals(codegen.getConfigPackage(), "xx.yyyyyyyy.config"); Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.CONFIG_PACKAGE), "xx.yyyyyyyy.config"); - Assert.assertEquals(codegen.isUnhandledException(), true); + Assert.assertTrue(codegen.isUnhandledException()); Assert.assertEquals(codegen.additionalProperties().get(SpringCodegen.UNHANDLED_EXCEPTION_HANDLING), true); } @@ -1217,11 +1220,10 @@ public void testGenerationOfClientPropertiesConfigurationForOAuth() throws Excep DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "true"); + generator.setGenerateMetadata(false); // skip metadata generation generator.opts(input).generate(); @@ -1247,26 +1249,26 @@ public void testGenerationOfClientPropertiesConfigurationForOAuth() throws Excep } @Test - public void useBeanValidationTruePerformBeanValidationFalseJava8TrueForFormatEmail() throws IOException { - beanValidationForFormatEmail(true, false, true, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email"); + public void useBeanValidationTruePerformBeanValidationFalseForFormatEmail() throws IOException { + beanValidationForFormatEmail(true, false, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email"); } @Test - public void useBeanValidationTruePerformBeanValidationTrueJava8FalseForFormatEmail() throws IOException { - beanValidationForFormatEmail(true, true, false, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email"); + public void useBeanValidationTruePerformBeanValidationTrueForFormatEmail() throws IOException { + beanValidationForFormatEmail(true, true, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email"); } @Test - public void useBeanValidationTruePerformBeanValidationFalseJava8TrueJakartaeeTrueForFormatEmail() throws IOException { - beanValidationForFormatEmail(true, false, true, true,"@jakarta.validation.constraints.Email", "@javax.validation.constraints.Email"); + public void useBeanValidationTruePerformBeanValidationFalseJakartaeeTrueForFormatEmail() throws IOException { + beanValidationForFormatEmail(true, false, true,"@jakarta.validation.constraints.Email", "@javax.validation.constraints.Email"); } // note: java8 option/mustache tag has been removed and default to true - private void beanValidationForFormatEmail(boolean useBeanValidation, boolean performBeanValidation, boolean java8, String contains, String notContains) throws IOException { - this.beanValidationForFormatEmail(useBeanValidation, performBeanValidation, java8, false, contains, notContains); + private void beanValidationForFormatEmail(boolean useBeanValidation, boolean performBeanValidation, String contains, String notContains) throws IOException { + this.beanValidationForFormatEmail(useBeanValidation, performBeanValidation, false, contains, notContains); } - private void beanValidationForFormatEmail(boolean useBeanValidation, boolean performBeanValidation, boolean java8, boolean useJakarta, String contains, String notContains) throws IOException { + private void beanValidationForFormatEmail(boolean useBeanValidation, boolean performBeanValidation, boolean useJakarta, String contains, String notContains) throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); output.deleteOnExit(); String outputPath = output.getAbsolutePath().replace('\\', '/'); @@ -1285,12 +1287,10 @@ private void beanValidationForFormatEmail(boolean useBeanValidation, boolean per input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -1298,13 +1298,9 @@ private void beanValidationForFormatEmail(boolean useBeanValidation, boolean per JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("PersonWithEmail.java")); if (useBeanValidation) javaFileAssert.hasImports((useJakarta? "jakarta" : "javax") + ".validation.constraints"); if (performBeanValidation) javaFileAssert.hasImports("org.hibernate.validator.constraints"); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/PersonWithEmail.java"), contains); - assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/PersonWithEmail.java"), notContains); - } - - @Test - public void useBeanValidationTruePerformBeanValidationTrueJava8TrueForFormatEmail() throws IOException { - beanValidationForFormatEmail(true, true, true, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/PersonWithEmail.java")) + .fileContains(contains) + .fileDoesNotContains(notContains); } @Test @@ -1326,19 +1322,19 @@ public void reactiveMapTypeRequestMonoTest() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate API files generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/SomeApi.java"), "Mono>"); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/SomeApiDelegate.java"), "Mono>"); - assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/SomeApi.java"), "Mono"); - assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/SomeApiDelegate.java"), "Mono"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/SomeApi.java")) + .fileContains("Mono>") + .fileDoesNotContains("Mono"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/SomeApiDelegate.java")) + .fileContains("Mono>") + .fileDoesNotContains("Mono"); } @Test @@ -1348,10 +1344,7 @@ public void reactiveArrayShouldBeWrappedInFluxWithoutMono() throws IOException { additionalProperties.put(SpringCodegen.REACTIVE, "true"); additionalProperties.put(SpringCodegen.USE_RESPONSE_ENTITY, "false"); additionalProperties.put(SpringCodegen.USE_SPRING_BOOT3, "true"); - additionalProperties.put(CodegenConstants.MODEL_TESTS, "false"); - additionalProperties.put(CodegenConstants.MODEL_DOCS, "false"); additionalProperties.put(CodegenConstants.APIS, "true"); - additionalProperties.put(CodegenConstants.SUPPORTING_FILES, "false"); Map files = generateFromContract("src/test/resources/3_0/petstore.yaml", SPRING_BOOT, additionalProperties); JavaFileAssert @@ -1408,6 +1401,7 @@ public void shouldGenerateValidCodeForReactiveControllerWithoutParams_issue14907 input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -1439,6 +1433,7 @@ public void shouldGenerateValidCodeWithPaginated_reactive_issue15265() throws IO input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -1471,6 +1466,7 @@ public void shouldGenerateValidCodeWithPaginated_nonReactive_issue15265() throws input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -1513,23 +1509,21 @@ public void doGeneratePathVariableForSimpleParam() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate API generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ZebrasApi.java"), "allowableValues = \"0, 1\""); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ZebrasApi.java"), "@PathVariable"); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/BearsApi.java"), "allowableValues = \"sleeping, awake\""); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/BearsApi.java"), "@PathVariable"); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/CamelsApi.java"), "allowableValues = \"sleeping, awake\""); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/CamelsApi.java"), "@PathVariable"); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/GiraffesApi.java"), "allowableValues = \"0, 1\""); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/GiraffesApi.java"), "@PathVariable"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/ZebrasApi.java")) + .fileContains( "allowableValues = \"0, 1\"", "@PathVariable"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/BearsApi.java")) + .fileContains( "allowableValues = \"sleeping, awake\"", "@PathVariable"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/CamelsApi.java")) + .fileContains( "allowableValues = \"sleeping, awake\"", "@PathVariable"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/GiraffesApi.java")) + .fileContains( "allowableValues = \"0, 1\"", "@PathVariable"); } @Test @@ -1551,12 +1545,10 @@ public void shouldGenerateDefaultValueForEnumRequestParameter() throws IOExcepti input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate API generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); @@ -1638,19 +1630,15 @@ public void shouldAddNotNullOnRequiredAttributes() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.opts(input).generate(); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java"), "status"); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java"), "@NotNull"); - Files.readAllLines(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java")).forEach(System.out::println); - + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java")) + .fileContains( "status", "@NotNull"); } @Test @@ -1669,19 +1657,16 @@ public void shouldNotAddNotNullOnReadOnlyAttributes() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); - assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java"), "status"); - assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java"), "@NotNull"); - Files.readAllLines(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java")).forEach(System.out::println); - + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Dummy.java")) + .fileContains( "status") + .fileDoesNotContains("@NotNull"); } @Test @@ -1703,18 +1688,15 @@ public void testOneOf5381() throws IOException { DefaultGenerator generator = new DefaultGenerator(); codegen.setHateoas(true); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); - //generator.setGeneratorPropertyDefault(CodegenConstants.USE_ONEOF_DISCRIMINATOR_LOOKUP, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "false"); - + codegen.setUseOneOfInterfaces(true); codegen.setLegacyDiscriminatorBehavior(false); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); - generator.opts(input).generate(); assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Foo.java"), "public class Foo implements FooRefOrValue"); @@ -1741,26 +1723,23 @@ public void testOneOfAndAllOf() throws IOException { DefaultGenerator generator = new DefaultGenerator(); codegen.setHateoas(true); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); - //generator.setGeneratorPropertyDefault(CodegenConstants.USE_ONEOF_DISCRIMINATOR_LOOKUP, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "false"); codegen.setUseOneOfInterfaces(true); codegen.setLegacyDiscriminatorBehavior(false); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); - generator.opts(input).generate(); assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Foo.java"), "public class Foo extends Entity implements FooRefOrValue"); assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/FooRef.java"), "public class FooRef extends EntityRef implements FooRefOrValue"); assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/FooRefOrValue.java"), "public interface FooRefOrValue"); // previous bugs - assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/BarRef.java"), "atTypesuper.hashCode"); - assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/BarRef.java"), "private String atBaseType"); + JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/BarRef.java")) + .fileDoesNotContains( "atTypesuper.hashCode", "private String atBaseType"); // imports for inherited properties assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/PizzaSpeziale.java"), "import java.math.BigDecimal"); } @@ -1784,6 +1763,9 @@ public void testDiscriminatorWithMappingIssue14731() throws IOException { DefaultGenerator generator = new DefaultGenerator(); codegen.setHateoas(true); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.setGeneratorPropertyDefault(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "false"); @@ -1793,11 +1775,6 @@ public void testDiscriminatorWithMappingIssue14731() throws IOException { codegen.setUseSpringBoot3(true); codegen.setModelNameSuffix("DTO"); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); - generator.opts(input).generate(); assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/ChildWithMappingADTO.java"), "@JsonTypeName"); @@ -1823,7 +1800,10 @@ public void testDiscriminatorWithoutMappingIssue14731() throws IOException { DefaultGenerator generator = new DefaultGenerator(); codegen.setHateoas(true); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "false"); @@ -1832,11 +1812,6 @@ public void testDiscriminatorWithoutMappingIssue14731() throws IOException { codegen.setUseSpringBoot3(true); codegen.setModelNameSuffix("DTO"); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); - generator.opts(input).generate(); @@ -1863,18 +1838,15 @@ void testOneOfWithEnumDiscriminator() throws IOException { DefaultGenerator generator = new DefaultGenerator(); codegen.setHateoas(true); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); - //generator.setGeneratorPropertyDefault(CodegenConstants.USE_ONEOF_DISCRIMINATOR_LOOKUP, "true"); generator.setGeneratorPropertyDefault(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "false"); codegen.setUseOneOfInterfaces(true); codegen.setLegacyDiscriminatorBehavior(false); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); - generator.opts(input).generate(); assertFileContains( @@ -1927,12 +1899,10 @@ public void shouldGenerateOneTagAttributeForMultipleTags_Regression11464(String input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate API generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); @@ -1988,12 +1958,10 @@ public void testIssue11323() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.opts(input).generate(); assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Address.java"), @@ -2018,12 +1986,10 @@ public void shouldPurAdditionalModelTypesOverAllModels() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.opts(input).generate(); File[] generatedModels = new File(outputPath + "/src/main/java/org/openapitools/model").listFiles(); @@ -2056,11 +2022,10 @@ public void shouldGenerateExternalDocs() throws IOException { .config(codegen); DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate API generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2156,12 +2121,10 @@ public void testExtraAnnotations() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.opts(input).generate(); TestUtils.assertExtraAnnotationFiles(outputPath + "/src/main/java/org/openapitools/model"); @@ -2415,6 +2378,7 @@ public void shouldGenerateBeanValidationOnHeaderParams() throws IOException { SpringCodegen codegen = new SpringCodegen(); codegen.setLibrary(SPRING_BOOT); codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put(INTERFACE_ONLY, "true"); codegen.additionalProperties().put(SpringCodegen.USE_TAGS, "true"); codegen.additionalProperties().put(BeanValidationFeatures.USE_BEANVALIDATION, "true"); @@ -2423,6 +2387,9 @@ public void shouldGenerateBeanValidationOnHeaderParams() throws IOException { .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); + generator.setGenerateMetadata(false); + Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2463,7 +2430,6 @@ public void requiredFieldShouldIncludeNotNullAnnotation_issue13365() throws IOEx codegen.additionalProperties().put(CodegenConstants.ENUM_PROPERTY_NAMING, "PascalCase"); codegen.additionalProperties().put(SpringCodegen.USE_TAGS, "true"); - DefaultGenerator generator = new DefaultGenerator(); Map files = generateFiles(codegen, "src/test/resources/bugs/issue_13365.yml"); //Assert that NotNull annotation exists alone with no other BeanValidation annotations @@ -2494,7 +2460,6 @@ public void requiredFieldShouldIncludeNotNullAnnotationJakarta_issue13365_issue1 codegen.additionalProperties().put(CodegenConstants.ENUM_PROPERTY_NAMING, "PascalCase"); codegen.additionalProperties().put(SpringCodegen.USE_TAGS, "true"); - DefaultGenerator generator = new DefaultGenerator(); Map files = generateFiles(codegen, "src/test/resources/bugs/issue_13365.yml"); //Assert that NotNull annotation exists alone with no other BeanValidation annotations @@ -2597,6 +2562,11 @@ public void shouldUseEqualsNullableForArrayWhenSetInConfig_issue13385() throws I .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2627,6 +2597,8 @@ public void shouldNotUseEqualsNullableForArrayWhenNotSetInConfig_issue13385() th .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2635,7 +2607,6 @@ public void shouldNotUseEqualsNullableForArrayWhenNotSetInConfig_issue13385() th .bodyContainsLines("return Arrays.equals(this.picture, testObject.picture);"); } - @Test public void useBeanValidationGenerateAnnotationsForRequestBody_issue13932() throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); @@ -2656,6 +2627,7 @@ public void useBeanValidationGenerateAnnotationsForRequestBody_issue13932() thro .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2689,6 +2661,8 @@ public void shouldHandleSeparatelyInterfaceAndModelAdditionalAnnotations() throw .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2734,6 +2708,8 @@ public void contractWithResolvedInnerEnumContainsEnumConverter() throws IOExcept final ClientOptInput clientOptInput = configurator.toClientOptInput(); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); + Map files = generator.opts(clientOptInput).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2743,7 +2719,9 @@ public void contractWithResolvedInnerEnumContainsEnumConverter() throws IOExcept @Test public void shouldUseTheSameTagNameForTheInterfaceAndTheMethod_issue11570() throws IOException { - final Map output = generateFromContract("src/test/resources/bugs/issue_11570.yml", SPRING_BOOT); + final Map output = generateFromContract( + "src/test/resources/bugs/issue_11570.yml", SPRING_BOOT, Map.of(INTERFACE_ONLY, "true") + ); final String expectedTagName = "\"personTagWithExclamation!\""; final String expectedTagDescription = "\"the personTagWithExclamation! API\""; @@ -2755,8 +2733,11 @@ public void shouldUseTheSameTagNameForTheInterfaceAndTheMethod_issue11570() thro @Test public void shouldGenerateConstructorWithOnlyRequiredParameters() throws IOException { - final Map output = generateFromContract("src/test/resources/3_0/spring/issue_9789.yml", SPRING_BOOT, - Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, "false")); + final Map output = generateFromContract( + "src/test/resources/3_0/spring/issue_9789.yml", + SPRING_BOOT, + Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, "false") + ); JavaFileAssert.assertThat(output.get("ObjectWithNoRequiredParameter.java")).assertNoConstructor("String"); @@ -2805,12 +2786,12 @@ private Map generateFromContract(String url, String library, Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2931,6 +2911,8 @@ public void testReturnTypeVoidWithResponseEntity_issue12341() throws IOException input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -2974,6 +2956,8 @@ public void testReturnTypeVoidWithoutResponseEntityWithDelegate_issue12341() thr input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3019,6 +3003,8 @@ public void testReturnTypeVoidWithoutResponseEntityWithoutDelegateWithAsync_issu input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3056,6 +3042,8 @@ public void testReturnTypeVoidWithoutResponseEntityWithoutDelegateWithoutAsync_i input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3093,6 +3081,8 @@ public void testHasRestControllerDoesNotHaveController_issue15264() throws IOExc input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3129,6 +3119,8 @@ public void testDoesNotHasRestControllerHaveController_issue15264() throws IOExc input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3163,6 +3155,8 @@ public void testXPatternMessage_issue5857() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3204,6 +3198,8 @@ public void testEnumCaseInsensitive_issue8084() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3235,6 +3231,8 @@ public void testEnumCaseSensitive_issue8084() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3245,7 +3243,6 @@ public void testEnumCaseSensitive_issue8084() throws IOException { .bodyContainsLines("if (b.value.equals(value)) {"); } - @Test public void testHasOperationExtraAnnotation_issue15822() throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); @@ -3268,6 +3265,8 @@ public void testHasOperationExtraAnnotation_issue15822() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3301,6 +3300,8 @@ public void testHasOperationExtraAnnotation_issue12219() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3336,6 +3337,8 @@ public void testHasOperationExtraAnnotation_issue12219_array() throws IOExceptio input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata generation + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -3369,11 +3372,10 @@ public void doCallFluentParentSettersFromChildModel() throws IOException { DefaultGenerator generator = new DefaultGenerator(); - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGenerateMetadata(false); // skip metadata generation generator.opts(input).generate(); @@ -3407,8 +3409,6 @@ public void doCallFluentParentSettersFromChildModel() throws IOException { .assertNoMethod("setAlias"); } - - @Test public void testModelsWithNoneOptionalAndJsonNullable() throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); @@ -3433,8 +3433,6 @@ public void testModelsWithNoneOptionalAndJsonNullable() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); @@ -3647,12 +3645,10 @@ public void testModelsWithOptionalAndJsonNullable() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - + generator.setGenerateMetadata(false); generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); @@ -3865,12 +3861,10 @@ public void testModelsWithOptionalAndNoneJsonNullable() throws IOException { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - + generator.setGenerateMetadata(false); generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); @@ -4102,12 +4096,10 @@ public void testModelsWithNoneOptionalAndNoneOpenApiNullable() throws IOExceptio input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + generator.setGenerateMetadata(false); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); - generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); generator.opts(input).generate(); @@ -4390,6 +4382,7 @@ private void assertMethod(JavaFileAssert javaFileAssert, Class type, String e public void multiLineOperationDescription() throws IOException { Map additionalProperties = new HashMap<>(); additionalProperties.put(SpringCodegen.USE_TAGS, "true"); + additionalProperties.put(INTERFACE_ONLY, "true"); additionalProperties.put(DOCUMENTATION_PROVIDER, DocumentationProvider.SPRINGDOC.name()); Map files = generateFromContract("src/test/resources/3_0/spring/issue12474-multiline-description.yaml", SPRING_BOOT, additionalProperties); @@ -4403,6 +4396,7 @@ public void multiLineOperationDescription() throws IOException { public void multiLineTagDescription() throws IOException { Map additionalProperties = new HashMap<>(); additionalProperties.put(SpringCodegen.USE_TAGS, "true"); + additionalProperties.put(INTERFACE_ONLY, "true"); additionalProperties.put(DOCUMENTATION_PROVIDER, DocumentationProvider.SPRINGDOC.name()); Map files = generateFromContract("src/test/resources/3_0/spring/issue12474-multiline-description.yaml", SPRING_BOOT, additionalProperties); @@ -4432,6 +4426,8 @@ public void testSSEOperationSupport() throws Exception { input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); + generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -4482,7 +4478,7 @@ public void givenMultipartForm_whenGenerateReactiveServer_thenParameterAreCreate final SpringCodegen codegen = new SpringCodegen(); codegen.setOpenAPI(openAPI); codegen.setOutputDir(output.getAbsolutePath()); - + codegen.additionalProperties().put(INTERFACE_ONLY, "true"); codegen.additionalProperties().put(SpringCodegen.REACTIVE, "true"); ClientOptInput input = new ClientOptInput(); @@ -4490,12 +4486,10 @@ public void givenMultipartForm_whenGenerateReactiveServer_thenParameterAreCreate input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); + generator.setGenerateMetadata(false); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); @@ -4511,6 +4505,7 @@ public void givenMultipartForm_whenGenerateBlockedServer_thenParameterAreCreated final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/petstore-with-tags.yaml"); final SpringCodegen codegen = new SpringCodegen(); + codegen.additionalProperties().put(INTERFACE_ONLY, "true"); codegen.setOpenAPI(openAPI); codegen.setOutputDir(output.getAbsolutePath()); @@ -4519,12 +4514,10 @@ public void givenMultipartForm_whenGenerateBlockedServer_thenParameterAreCreated input.config(codegen); DefaultGenerator generator = new DefaultGenerator(); - - generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false"); + generator.setGenerateMetadata(false); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); - generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.opts(input).generate(); @@ -4535,7 +4528,7 @@ public void givenMultipartForm_whenGenerateBlockedServer_thenParameterAreCreated @Test public void testAllArgsConstructor_16797() throws IOException { final Map output = generateFromContract("src/test/resources/3_0/spring/issue_16797.yaml", SPRING_BOOT, - Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE), + Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE, INTERFACE_ONLY, "true"), codegen -> codegen.addOpenapiNormalizer("REFACTOR_ALLOF_WITH_PROPERTIES_ONLY", "false")); JavaFileAssert.assertThat(output.get("Object4.java")) .assertConstructor("String", "Type1", "String", "String", "Boolean") @@ -4550,7 +4543,7 @@ public void testAllArgsConstructor_16797() throws IOException { @Test public void testAllArgsConstructor_16797_REFACTOR_ALLOF_WITH_PROPERTIES_ONLY() throws IOException { final Map output = generateFromContract("src/test/resources/3_0/spring/issue_16797.yaml", SPRING_BOOT, - Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE), + Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE, INTERFACE_ONLY, "true"), codegen -> codegen.addOpenapiNormalizer("REFACTOR_ALLOF_WITH_PROPERTIES_ONLY", "true")); JavaFileAssert.assertThat(output.get("Object4.java")) .assertConstructor("String", "Type1", "String", "String", "Boolean") @@ -4563,7 +4556,9 @@ public void testAllArgsConstructor_16797_REFACTOR_ALLOF_WITH_PROPERTIES_ONLY() t @Test public void testMultiInheritanceParentRequiredParams_issue16797() throws IOException { - final Map output = generateFromContract("src/test/resources/3_0/spring/issue_16797.yaml", SPRING_BOOT); + final Map output = generateFromContract( + "src/test/resources/3_0/spring/issue_16797.yaml", SPRING_BOOT, Map.of(INTERFACE_ONLY, "true") + ); // constructor should as // public Object4(Type1 pageInfo, String responseType, String requestId, Boolean success) { // super(responseType, requestId, success, pageInfo); @@ -4579,7 +4574,9 @@ public void testMultiInheritanceParentRequiredParams_issue16797() throws IOExcep @Test public void testMultiInheritanceParentRequiredParams_issue15796() throws IOException { - final Map output = generateFromContract("src/test/resources/3_0/spring/issue_15796.yaml", SPRING_BOOT); + final Map output = generateFromContract( + "src/test/resources/3_0/spring/issue_15796.yaml", SPRING_BOOT, Map.of(INTERFACE_ONLY, "true") + ); // constructor should as this //public Poodle(String race, String type) { // super(race, type); @@ -4594,7 +4591,7 @@ public void testMultiInheritanceParentRequiredParams_issue15796() throws IOExcep @Test public void testAllArgsConstructor_defaultOrder_15796() throws IOException { final Map output = generateFromContract("src/test/resources/3_0/spring/issue_15796.yaml", SPRING_BOOT, - Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE), + Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE, INTERFACE_ONLY, "true"), config -> config.addOpenapiNormalizer("REFACTOR_ALLOF_WITH_PROPERTIES_ONLY", " true")); // constructors should as this //public Poodle(String race, String type) { @@ -4622,7 +4619,7 @@ public void testAllArgsConstructor_defaultOrder_15796() throws IOException { @Test public void generateAllArgsConstructor() throws IOException { Map files = generateFromContract("src/test/resources/3_0/java/all_args_constructor.yaml", null, - Map.of(AbstractJavaCodegen.GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE), + Map.of(AbstractJavaCodegen.GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, Boolean.TRUE, INTERFACE_ONLY, "true"), codegenConfig -> codegenConfig.addOpenapiNormalizer("REFACTOR_ALLOF_WITH_PROPERTIES_ONLY", " true")); JavaFileAssert.assertThat(files.get("Pet.java")) .assertConstructor("String") @@ -4652,17 +4649,21 @@ public void generateAllArgsConstructor() throws IOException { @Test public void allOfDuplicatedProperties() throws IOException { - final Map additionalProperties = new HashMap<>(); + Map output = generateFromContract( + "src/test/resources/3_0/allOfDuplicatedProperties.yaml", + SPRING_BOOT, + Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, true, INTERFACE_ONLY, "true") + ); - Map output = generateFromContract("src/test/resources/3_0/allOfDuplicatedProperties.yaml", SPRING_BOOT, Map.of(GENERATE_CONSTRUCTOR_WITH_ALL_ARGS, true)); JavaFileAssert.assertThat(output.get("ModelC.java")) .assertConstructor("String", "Integer", "Integer", "String", "String"); - } + @Test public void testLombokAnnotations() throws IOException { final Map additionalProperties = new HashMap<>(); additionalProperties.put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@lombok.Data;@lombok.NoArgsConstructor;@lombok.AllArgsConstructor"); + additionalProperties.put(INTERFACE_ONLY, "true"); Map output = generateFromContract("src/test/resources/3_0/petstore.yaml", SPRING_BOOT, additionalProperties); JavaFileAssert.assertThat(output.get("Pet.java")) .assertNoConstructor() @@ -4705,10 +4706,16 @@ public void testLombokAnnotations() throws IOException { @Test void testBuilderJavaSpring_noOptional() throws IOException { - Map files = generateFromContract("src/test/resources/3_0/java/builder.yaml", SPRING_BOOT, - Map.of(GENERATE_BUILDERS, true, - SpringCodegen.OPENAPI_NULLABLE, false, - SpringCodegen.USE_OPTIONAL, false)); + Map files = generateFromContract( + "src/test/resources/3_0/java/builder.yaml", + SPRING_BOOT, + Map.of( + GENERATE_BUILDERS, true, + SpringCodegen.OPENAPI_NULLABLE, false, + SpringCodegen.USE_OPTIONAL, false, + INTERFACE_ONLY, "true" + ) + ); JavaFileAssert.assertThat(files.get("Pet.java")) .fileContains("toBuilder()", @@ -4728,10 +4735,16 @@ void testBuilderJavaSpring_noOptional() throws IOException { @Test void testBuilderJavaSpring_useOptional() throws IOException { - Map files = generateFromContract("src/test/resources/3_0/java/builder.yaml", SPRING_BOOT, - Map.of(GENERATE_BUILDERS, true, - SpringCodegen.OPENAPI_NULLABLE, true, - SpringCodegen.USE_OPTIONAL, true)); + Map files = generateFromContract( + "src/test/resources/3_0/java/builder.yaml", + SPRING_BOOT, + Map.of( + GENERATE_BUILDERS, true, + SpringCodegen.OPENAPI_NULLABLE, true, + SpringCodegen.USE_OPTIONAL, true, + INTERFACE_ONLY, "true" + ) + ); JavaFileAssert.assertThat(files.get("Pet.java")) .fileContains("toBuilder()", @@ -4759,6 +4772,7 @@ public void optionalListShouldBeEmpty() throws IOException { SpringCodegen codegen = new SpringCodegen(); codegen.setLibrary(SPRING_CLOUD_LIBRARY); codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put(INTERFACE_ONLY, "true"); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.model"); codegen.additionalProperties().put(CodegenConstants.API_NAME_SUFFIX, "Controller"); codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.controller"); @@ -4770,6 +4784,9 @@ public void optionalListShouldBeEmpty() throws IOException { .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); @@ -4801,6 +4818,9 @@ public void testCollectionTypesWithDefaults_issue_18102() throws IOException { .config(codegen); DefaultGenerator generator = new DefaultGenerator(); + generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models + generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); + Map files = generator.opts(input).generate().stream() .collect(Collectors.toMap(File::getName, Function.identity())); diff --git a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/README.md index 0fa6fa898767..59da939fb1a9 100644 --- a/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/AllOf/src/Org.OpenAPITools/README.md @@ -133,7 +133,6 @@ Endpoints do not require authorization. - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/README.md index 08a6a9c3ee99..b48fe8892e85 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/AnyOf/src/Org.OpenAPITools/README.md @@ -133,7 +133,6 @@ Endpoints do not require authorization. - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/README.md index 0ddadf651182..54d6b362cc1d 100644 --- a/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/README.md @@ -132,7 +132,6 @@ Endpoints do not require authorization. - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/README.md index 643955d31593..74134aa2e1fd 100644 --- a/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/FormModels/src/Org.OpenAPITools/README.md @@ -179,7 +179,6 @@ Authentication schemes defined for the API: - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/README.md index b262632e41fe..c80e0dac5c0e 100644 --- a/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools/README.md @@ -179,7 +179,6 @@ Authentication schemes defined for the API: - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/README.md index 08a6a9c3ee99..b48fe8892e85 100644 --- a/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/OneOf/src/Org.OpenAPITools/README.md @@ -133,7 +133,6 @@ Endpoints do not require authorization. - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/README.md index 643955d31593..74134aa2e1fd 100644 --- a/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools/README.md @@ -179,7 +179,6 @@ Authentication schemes defined for the API: - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/README.md index b262632e41fe..c80e0dac5c0e 100644 --- a/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/SourceGeneration/src/Org.OpenAPITools/README.md @@ -179,7 +179,6 @@ Authentication schemes defined for the API: - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/README.md index 5b747266a9d5..f955a222e761 100644 --- a/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate/src/Org.OpenAPITools/README.md @@ -132,7 +132,6 @@ Endpoints do not require authorization. - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: diff --git a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/README.md index 2aac95d22ad0..06cd0def860b 100644 --- a/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools/README.md @@ -179,7 +179,6 @@ Authentication schemes defined for the API: - modelDocs: true - apiTests: true - modelTests: true -- withXml: ## [OpenApi Generator Parameters](https://openapi-generator.tech/docs/generators/csharp-netcore) - allowUnicodeIdentifiers: