From 5e7cf31a56806b773471516e89a335dc26a018f3 Mon Sep 17 00:00:00 2001 From: agilob Date: Sun, 21 Jun 2020 15:32:55 +0100 Subject: [PATCH 1/3] Protect from NPE when paths aren't provided --- .../main/java/org/openapitools/codegen/DefaultGenerator.java | 4 ++++ 1 file changed, 4 insertions(+) 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..848bb0e4a8e9 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 @@ -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); From 98f11570142d3a9dce686efac0e9732915657782 Mon Sep 17 00:00:00 2001 From: agilob Date: Sun, 21 Jun 2020 15:51:17 +0100 Subject: [PATCH 2/3] Add regression test for NPE when paths aren't provided --- .../codegen/DefaultGenerator.java | 2 +- .../codegen/java/JavaClientCodegenTest.java | 31 +++++++++++++++++++ .../test/resources/3_0/regression-6734.yaml | 21 +++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/regression-6734.yaml 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 848bb0e4a8e9..eaef0323a1e4 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.debug(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) { 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 be2c3022d141..67bebd1145c5 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] From 9adf17afe270175901bd8003a24171013146d755 Mon Sep 17 00:00:00 2001 From: agilob Date: Thu, 25 Jun 2020 08:13:45 +0100 Subject: [PATCH 3/3] Replace logger.debug with logger.error --- .../main/java/org/openapitools/codegen/DefaultGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 eaef0323a1e4..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()); - LOGGER.debug(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) {