diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java index 8b7736fce321..42251432c293 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java @@ -239,6 +239,9 @@ public String getHelp() { public String toApiName(final String name) { String computed = name; if (computed.length() == 0) { + if (primaryResourceName == null) { + return "DefaultApi"; + } return primaryResourceName + "Api"; } computed = sanitizeName(computed); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java index 7a659422dbe3..7b26cd3bfdfe 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java @@ -286,4 +286,30 @@ public void testGeneratePingAlternativeLocation2() throws Exception { output.deleteOnExit(); } + + @Test + public void testGenerateApiWithPreceedingPathParameter_issue1347() throws Exception { + Map properties = new HashMap<>(); + properties.put(JavaClientCodegen.JAVA8_MODE, true); + properties.put(JavaJAXRSSpecServerCodegen.OPEN_API_SPEC_FILE_LOCATION, "openapi.yml"); + + File output = Files.createTempDirectory("test").toFile(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("jaxrs-spec") + .setAdditionalProperties(properties) + .setInputSpec("src/test/resources/3_0/issue_1347.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + MockDefaultGenerator generator = new MockDefaultGenerator(); + generator.opts(clientOptInput).generate(); + + Map generatedFiles = generator.getFiles(); + validateJavaSourceFiles(generatedFiles); + TestUtils.ensureContainsFile(generatedFiles, output, "openapi.yml"); + TestUtils.ensureContainsFile(generatedFiles, output, "src/gen/java/org/openapitools/api/DefaultApi.java"); + + output.deleteOnExit(); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_1347.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_1347.yaml new file mode 100644 index 000000000000..01d2ce6a025b --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue_1347.yaml @@ -0,0 +1,25 @@ +openapi: 3.0.2 +info: + title: Name demo + version: 1.0 +paths: + /{country}/document: + get: + summary: Get a document + tags: + - document + operationId: getDocument + parameters: + - name: country + in: path + required: true + schema: + type: string + responses: + "201": + description: The document + "500": + description: Server error +tags: +- name: document + description: Document tag \ No newline at end of file