OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
[main] INFO o.o.codegen.DefaultGenerator - OpenAPI Generator: csharp (client)
[main] INFO o.o.codegen.DefaultGenerator - Generator 'csharp' is considered stable.
[main] INFO o.o.c.l.AbstractCSharpCodegen - Environment variable CSHARP_POST_PROCESS_FILE not defined so the C# code may not be properly formatted by uncrustify (0.66 or later) or other code formatter. To define it, try `export CSHARP_POST_PROCESS_FILE="/usr/local/bin/uncrustify --no-backup" && export UNCRUSTIFY_CONFIG=/path/to/uncrustify-rules.cfg` (Linux/Mac). Note: replace /path/to with the location of uncrustify-rules.cfg
[main] INFO o.o.c.l.AbstractCSharpCodegen - NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI).
[main] INFO o.o.c.languages.CSharpClientCodegen - Generating code for .NET Framework v4.5
[main] WARN o.o.codegen.utils.URLPathUtils - 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[main] WARN o.o.codegen.utils.URLPathUtils - 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
Exception in thread "main" java.lang.RuntimeException: Could not process model 'ErrorMessage'.Please make sure that your schema is correct!
at org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:472)
at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:923)
at org.openapitools.codegen.cmd.Generate.run(Generate.java:416)
at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:61)
Caused by: java.lang.IllegalArgumentException: character to be escaped is missing
at java.base/java.util.regex.Matcher.appendExpandedReplacement(Matcher.java:1020)
at java.base/java.util.regex.Matcher.appendReplacement(Matcher.java:998)
at java.base/java.util.regex.Matcher.replaceAll(Matcher.java:1182)
at org.openapitools.codegen.utils.StringUtils.camelize(StringUtils.java:96)
at org.openapitools.codegen.utils.StringUtils.camelize(StringUtils.java:55)
at org.openapitools.codegen.languages.CSharpClientCodegen.toEnumVarName(CSharpClientCodegen.java:757)
at org.openapitools.codegen.DefaultCodegen.postProcessModelsEnum(DefaultCodegen.java:438)
at org.openapitools.codegen.languages.AbstractCSharpCodegen.postProcessModels(AbstractCSharpCodegen.java:405)
at org.openapitools.codegen.DefaultGenerator.processModels(DefaultGenerator.java:1199)
at org.openapitools.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:467)
... 3 more
Bug Report Checklist
Description
If a string enum value ends with a backslash, openapi-generator fails to generate code for csharp due to
java.lang.IllegalArgumentException
.openapi-generator version
Tested with 4.2.2 and current
master
(2d24d42e65).OpenAPI declaration file content or url
Example OpenAPI document
```json { "swagger": "2.0", "info": { "title": "Problematic enum strings example", "version": "1.0.0" }, "definitions": { "ErrorMessage": { "type": "string", "enum": [ "Error: Invalid character: \\", "RangeError: Too many items." ] } }, "paths": { "/count": { "get": { "operationId": "getCount", "responses": { "200": { "description": "Success", "schema": { "type": "integer" } }, "default": { "description": "Error", "schema": { "$ref": "#/definitions/ErrorMessage" } } } } } } } ```Command line used for generation
Steps to reproduce
openapi.json
.Observe output similar to the following:
Related issues/PRs
None that I could find.
Suggest a fix
StringUtils.camelize
could useMatcher.quoteReplacement
on the replacement string.Thanks for considering, Kevin