Skip to content

Commit 770c1cb

Browse files
authored
[Kotlin-spring] add springdoc config (#12377)
* Adding Springdoc config to Kotlin-Spring * Updating relevant samples * Updating unrelated samples
1 parent 2ecbf32 commit 770c1cb

File tree

9 files changed

+152
-83
lines changed

9 files changed

+152
-83
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -583,10 +583,16 @@ public void processOpts() {
583583
}
584584
}
585585

586-
if (DocumentationProvider.SPRINGFOX.equals(getDocumentationProvider()) && !reactive) {
587-
supportingFiles.add(new SupportingFile("openapiDocumentationConfig.mustache",
588-
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator),
589-
"SpringFoxConfiguration.kt"));
586+
if (!reactive) {
587+
if (DocumentationProvider.SPRINGFOX.equals(getDocumentationProvider())) {
588+
supportingFiles.add(new SupportingFile("springfoxDocumentationConfig.mustache",
589+
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator),
590+
"SpringFoxConfiguration.kt"));
591+
} else if (DocumentationProvider.SPRINGDOC.equals(getDocumentationProvider())) {
592+
supportingFiles.add(new SupportingFile("springdocDocumentationConfig.mustache",
593+
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator),
594+
"SpringDocConfiguration.kt"));
595+
}
590596
}
591597

592598
// spring uses the jackson lib, and we disallow configuration.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package {{basePackage}}
2+
3+
import org.springframework.context.annotation.Bean
4+
import org.springframework.context.annotation.Configuration
5+
6+
import io.swagger.v3.oas.models.OpenAPI
7+
import io.swagger.v3.oas.models.info.Info
8+
import io.swagger.v3.oas.models.info.Contact
9+
import io.swagger.v3.oas.models.info.License
10+
import io.swagger.v3.oas.models.Components
11+
import io.swagger.v3.oas.models.security.SecurityScheme
12+
13+
{{>generatedAnnotation}}
14+
@Configuration
15+
class SpringDocConfiguration {
16+
17+
@Bean
18+
fun apiInfo(): OpenAPI {
19+
return OpenAPI()
20+
.info(
21+
Info(){{#appName}}
22+
.title("{{appName}}"){{/appName}}
23+
.description("{{{appDescription}}}"){{#termsOfService}}
24+
.termsOfService("{{termsOfService}}"){{/termsOfService}}{{#openAPI}}{{#info}}{{#contact}}
25+
.contact(
26+
Contact(){{#infoName}}
27+
.name("{{infoName}}"){{/infoName}}{{#infoUrl}}
28+
.url("{{infoUrl}}"){{/infoUrl}}{{#infoEmail}}
29+
.email("{{infoEmail}}"){{/infoEmail}}
30+
){{/contact}}{{#license}}
31+
.license(
32+
License()
33+
{{#licenseInfo}}.name("{{licenseInfo}}")
34+
{{/licenseInfo}}{{#licenseUrl}}.url("{{licenseUrl}}")
35+
{{/licenseUrl}}
36+
){{/license}}{{/info}}{{/openAPI}}
37+
.version("{{appVersion}}")
38+
){{#hasAuthMethods}}
39+
.components(
40+
Components(){{#authMethods}}
41+
.addSecuritySchemes("{{name}}", SecurityScheme(){{#isBasic}}
42+
.type(SecurityScheme.Type.HTTP)
43+
.scheme("{{scheme}}"){{#bearerFormat}}
44+
.bearerFormat("{{bearerFormat}}"){{/bearerFormat}}{{/isBasic}}{{#isApiKey}}
45+
.type(SecurityScheme.Type.APIKEY){{#isKeyInHeader}}
46+
.`in`(SecurityScheme.In.HEADER){{/isKeyInHeader}}{{#isKeyInQuery}}
47+
.`in`(SecurityScheme.In.QUERY){{/isKeyInQuery}}{{#isKeyInCookie}}
48+
.`in`(SecurityScheme.In.COOKIE){{/isKeyInCookie}}
49+
.name("{{keyParamName}}"){{/isApiKey}}{{#isOAuth}}
50+
.type(SecurityScheme.Type.OAUTH2){{/isOAuth}}
51+
){{/authMethods}}
52+
){{/hasAuthMethods}}
53+
}
54+
}

samples/server/petstore/kotlin-server/jaxrs-spec/src/main/kotlin/org/openapitools/server/models/ApiResponse.kt

Lines changed: 0 additions & 33 deletions
This file was deleted.

samples/server/petstore/kotlin-server/ktor/pom.xml

Lines changed: 0 additions & 46 deletions
This file was deleted.

samples/server/petstore/kotlin-springboot-delegate/.openapi-generator/FILES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ pom.xml
44
settings.gradle
55
src/main/kotlin/org/openapitools/Application.kt
66
src/main/kotlin/org/openapitools/HomeController.kt
7+
src/main/kotlin/org/openapitools/SpringDocConfiguration.kt
78
src/main/kotlin/org/openapitools/api/ApiUtil.kt
89
src/main/kotlin/org/openapitools/api/Exceptions.kt
910
src/main/kotlin/org/openapitools/api/PetApi.kt
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.openapitools
2+
3+
import org.springframework.context.annotation.Bean
4+
import org.springframework.context.annotation.Configuration
5+
6+
import io.swagger.v3.oas.models.OpenAPI
7+
import io.swagger.v3.oas.models.info.Info
8+
import io.swagger.v3.oas.models.info.Contact
9+
import io.swagger.v3.oas.models.info.License
10+
import io.swagger.v3.oas.models.Components
11+
import io.swagger.v3.oas.models.security.SecurityScheme
12+
13+
@jakarta.annotation.Generated(value = ["org.openapitools.codegen.languages.KotlinSpringServerCodegen"])
14+
@Configuration
15+
class SpringDocConfiguration {
16+
17+
@Bean
18+
fun apiInfo(): OpenAPI {
19+
return OpenAPI()
20+
.info(
21+
Info()
22+
.title("OpenAPI Petstore")
23+
.description("This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.")
24+
.license(
25+
License()
26+
.name("Apache-2.0")
27+
.url("https://www.apache.org/licenses/LICENSE-2.0.html")
28+
)
29+
.version("1.0.0")
30+
)
31+
.components(
32+
Components()
33+
.addSecuritySchemes("api_key", SecurityScheme()
34+
.type(SecurityScheme.Type.APIKEY)
35+
.`in`(SecurityScheme.In.HEADER)
36+
.name("api_key")
37+
)
38+
.addSecuritySchemes("petstore_auth", SecurityScheme()
39+
.type(SecurityScheme.Type.OAUTH2)
40+
)
41+
)
42+
}
43+
}

samples/server/petstore/kotlin-springboot-modelMutable/.openapi-generator/FILES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ pom.xml
44
settings.gradle
55
src/main/kotlin/org/openapitools/Application.kt
66
src/main/kotlin/org/openapitools/HomeController.kt
7+
src/main/kotlin/org/openapitools/SpringDocConfiguration.kt
78
src/main/kotlin/org/openapitools/api/ApiUtil.kt
89
src/main/kotlin/org/openapitools/api/Exceptions.kt
910
src/main/kotlin/org/openapitools/api/PetApiController.kt
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.openapitools
2+
3+
import org.springframework.context.annotation.Bean
4+
import org.springframework.context.annotation.Configuration
5+
6+
import io.swagger.v3.oas.models.OpenAPI
7+
import io.swagger.v3.oas.models.info.Info
8+
import io.swagger.v3.oas.models.info.Contact
9+
import io.swagger.v3.oas.models.info.License
10+
import io.swagger.v3.oas.models.Components
11+
import io.swagger.v3.oas.models.security.SecurityScheme
12+
13+
@jakarta.annotation.Generated(value = ["org.openapitools.codegen.languages.KotlinSpringServerCodegen"])
14+
@Configuration
15+
class SpringDocConfiguration {
16+
17+
@Bean
18+
fun apiInfo(): OpenAPI {
19+
return OpenAPI()
20+
.info(
21+
Info()
22+
.title("OpenAPI Petstore")
23+
.description("This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.")
24+
.license(
25+
License()
26+
.name("Apache-2.0")
27+
.url("https://www.apache.org/licenses/LICENSE-2.0.html")
28+
)
29+
.version("1.0.0")
30+
)
31+
.components(
32+
Components()
33+
.addSecuritySchemes("api_key", SecurityScheme()
34+
.type(SecurityScheme.Type.APIKEY)
35+
.`in`(SecurityScheme.In.HEADER)
36+
.name("api_key")
37+
)
38+
.addSecuritySchemes("petstore_auth", SecurityScheme()
39+
.type(SecurityScheme.Type.OAUTH2)
40+
)
41+
)
42+
}
43+
}

0 commit comments

Comments
 (0)