Skip to content

Exception caused by: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3 v2\JavaSpring #8273

@thomas-worm-datev

Description

@thomas-worm-datev
Description

I tried to use swagger codegen maven plugin to generate the sources for an openapi 3.0 specification:

			<plugin>
				<groupId>io.swagger</groupId>
				<artifactId>swagger-codegen-maven-plugin</artifactId>
				<version>3.0.0-rc1</version>
				<executions>
					<execution>
						<goals>
							<goal>generate</goal>
						</goals>
						<configuration>
							<inputSpec>${project.basedir}/design/openapi.json</inputSpec>
							<language>spring</language>
							<configOptions>
								<java8>true</java8>
								<library>spring-boot</library>
							</configOptions>
						</configuration>
					</execution>
				</executions>
			</plugin>

But the generation of sources results in an exception:

[ERROR] 
java.lang.RuntimeException: Could not generate model 'user'
	at io.swagger.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:409)
	at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:728)
	at io.swagger.codegen.plugin.CodeGenMojo.execute(CodeGenMojo.java:534)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
	at java.lang.reflect.Method.invoke(Method.java:507)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3
v2\JavaSpring
   ^
	at java.util.regex.Pattern.error(Pattern.java:1966)
	at java.util.regex.Pattern.escape(Pattern.java:2482)
	at java.util.regex.Pattern.atom(Pattern.java:2209)
	at java.util.regex.Pattern.sequence(Pattern.java:2141)
	at java.util.regex.Pattern.expr(Pattern.java:2007)
	at java.util.regex.Pattern.compile(Pattern.java:1707)
	at java.util.regex.Pattern.<init>(Pattern.java:1362)
	at java.util.regex.Pattern.compile(Pattern.java:1039)
	at java.lang.String.replaceFirst(String.java:1939)
	at io.swagger.codegen.DefaultGenerator.getHandlebars(DefaultGenerator.java:1014)
	at io.swagger.codegen.DefaultGenerator.processTemplateToFile(DefaultGenerator.java:744)
	at io.swagger.codegen.DefaultGenerator.generateModels(DefaultGenerator.java:396)
	... 24 more
Swagger-codegen version

swagger-codegen-maven-plugin, 3.0.0-rc1

Swagger declaration file content or url
{
  "openapi": "3.0.1",
  "info": {
    "title": "API.",
    "description": "The backend API.",
    "contact": {
      "name": "My Team",
      "url": "http://my/teamsite",
      "email": "[email protected]"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "http://localhost:8080/api/v1",
      "description": "Local system"
    }
  ],
  "paths": {
    "/user": {
      "get": {
        "description": "Returns the current user.",
        "tags": [
          "User"
        ],
        "security": [
          {
            "basicAuthentication": []
          }
        ],
        "responses": {
          "200": {
            "description": "The user information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/user"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "user": {
        "description": "An user.",
        "type": "object",
        "required": [
          "userName"
        ],
        "properties": {
          "userName": {
            "description": "The name of the user.",
            "type": "string"
          },
          "displayName": {
            "description": "An alternative name of the user to display.",
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "basicAuthentication": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}
Command line used for generation

Used within maven.

Steps to reproduce

Create a spring boot maven project and add the plugin and swagger file to generate the source.

Related issues/PRs

Issue similar to #7509 . Seems not to be closed.

Suggest a fix/enhancement

Correct the regex.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions