From 9fa9b115e3feb9f24f8b7536be4d5ceaad5ddd03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Sun, 13 May 2018 09:22:01 +0200 Subject: [PATCH] Fix NullPointerException in getUnusedSchemas(OpenAPI) (#10) fix #9 --- .../codegen/utils/ModelUtils.java | 8 +--- .../codegen/utils/ModelUtilsTest.java | 37 +++++++++++++++++++ .../src/test/resources/3_0/ping.yaml | 13 +++++++ 3 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java create mode 100644 modules/openapi-generator/src/test/resources/3_0/ping.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 22a689fe8df..6551afa2d1f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -50,7 +50,6 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -89,14 +88,9 @@ public class ModelUtils { public static List getUnusedSchemas(OpenAPI openAPI) { List unusedSchemas = new ArrayList(); - // no model defined - if (openAPI.getComponents().getSchemas() == null) { - openAPI.getComponents().setSchemas(new HashMap()); - } - // operations Map paths = openAPI.getPaths(); - Map schemas = openAPI.getComponents().getSchemas(); + Map schemas = getSchemas(openAPI); if (paths != null) { for (String pathname : paths.keySet()) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java new file mode 100644 index 00000000000..83fd662f9fc --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java @@ -0,0 +1,37 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * Copyright 2018 SmartBear Software + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.utils; + +import io.swagger.parser.OpenAPIParser; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.parser.core.models.ParseOptions; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.List; + +public class ModelUtilsTest { + + @Test + public void testEnsureNoDuplicateProduces() { + final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/ping.yaml", null, new ParseOptions()).getOpenAPI(); + List unusedSchemas = ModelUtils.getUnusedSchemas(openAPI); + Assert.assertEquals(unusedSchemas.size(), 0); + } +} diff --git a/modules/openapi-generator/src/test/resources/3_0/ping.yaml b/modules/openapi-generator/src/test/resources/3_0/ping.yaml new file mode 100644 index 00000000000..4ce23c67b43 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/ping.yaml @@ -0,0 +1,13 @@ +openapi: 3.0.1 +info: + title: ping test + version: '1.0' +servers: + - url: 'http://localhost:8000/' +paths: + /ping: + get: + operationId: pingGet + responses: + '201': + description: OK \ No newline at end of file