diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index f99a6c2d2e22..47d3540b1112 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -892,7 +892,7 @@ public List generate() { sb.append(System.lineSeparator()); - System.err.println(sb.toString()); + LOGGER.error(sb.toString()); } else { // This exists here rather than in the method which generates supporting files to avoid accidentally adding files after this metadata. if (generateSupportingFiles) { @@ -924,6 +924,10 @@ protected File processTemplateToFile(Map templateData, String te public Map> processPaths(Paths paths) { Map> ops = new TreeMap<>(); + // when input file is not valid and doesn't contain any paths + if(paths == null) { + return ops; + } for (String resourcePath : paths.keySet()) { PathItem path = paths.get(resourcePath); processOperation(resourcePath, "get", path.getGet(), ops, path); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index c9a7ae05cc32..0a9bae81ed67 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -29,6 +29,7 @@ import org.openapitools.codegen.MockDefaultGenerator.WrittenTemplateBasedFile; import org.openapitools.codegen.config.CodegenConfigurator; import org.openapitools.codegen.languages.AbstractJavaCodegen; +import org.openapitools.codegen.languages.DartClientCodegen; import org.openapitools.codegen.languages.JavaClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; @@ -507,6 +508,34 @@ public void testAuthorizationScopeValues_Issue392() { assertEquals(postScopes.size(), 2, "POST scopes don't match. actual:" + postScopes); } + @Test + public void testAuthorizationScopeValues_Issue6733() throws IOException { + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("java") + .setLibrary(JavaClientCodegen.RESTEASY) + .setValidateSpec(false) + .setInputSpec("src/test/resources/3_0/regression-6734.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + + 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"); + // tests if NPE will crash generation when path in yaml arent provided + generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); + generator.setGenerateMetadata(false); + List files = generator.opts(clientOptInput).generate(); + + Assert.assertEquals(files.size(), 1); + files.forEach(File::deleteOnExit); + } + @Test public void testAuthorizationsHasMoreWhenFiltered() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue4584.yaml"); @@ -574,6 +603,7 @@ public void testImportMapping() throws IOException { importMappings.put("TypeAlias", "foo.bar.TypeAlias"); File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); final CodegenConfigurator configurator = new CodegenConfigurator() .setGeneratorName("java") @@ -594,6 +624,7 @@ public void testImportMapping() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false"); generator.setGenerateMetadata(false); List files = generator.opts(clientOptInput).generate(); + files.forEach(File::deleteOnExit); Assert.assertEquals(files.size(), 1); TestUtils.ensureContainsFile(files, output, "src/main/java/org/openapitools/client/model/ParentType.java"); diff --git a/modules/openapi-generator/src/test/resources/3_0/regression-6734.yaml b/modules/openapi-generator/src/test/resources/3_0/regression-6734.yaml new file mode 100644 index 000000000000..bc12a06da2ec --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/regression-6734.yaml @@ -0,0 +1,21 @@ +openapi: 3.0.0 +info: + version: 1.0.0 + title: Whatever this is + description: whatever this description is + +servers: + - url: http://127.0.0.1:8080/{basePath} + variables: + basePath: + default: v1 + +components: + schemas: + MyModel: + type: object + description: Description of a model + properties: + sortOrder: + type: string + enum: [asc, desc]