Skip to content

Commit

Permalink
[Kotlin-spring] add springdoc config (#12377)
Browse files Browse the repository at this point in the history
* Adding Springdoc config to Kotlin-Spring

* Updating relevant samples

* Updating unrelated samples
  • Loading branch information
sjoblomj committed May 26, 2022
1 parent 2ecbf32 commit 770c1cb
Show file tree
Hide file tree
Showing 9 changed files with 152 additions and 83 deletions.
Expand Up @@ -583,10 +583,16 @@ public void processOpts() {
}
}

if (DocumentationProvider.SPRINGFOX.equals(getDocumentationProvider()) && !reactive) {
supportingFiles.add(new SupportingFile("openapiDocumentationConfig.mustache",
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator),
"SpringFoxConfiguration.kt"));
if (!reactive) {
if (DocumentationProvider.SPRINGFOX.equals(getDocumentationProvider())) {
supportingFiles.add(new SupportingFile("springfoxDocumentationConfig.mustache",
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator),
"SpringFoxConfiguration.kt"));
} else if (DocumentationProvider.SPRINGDOC.equals(getDocumentationProvider())) {
supportingFiles.add(new SupportingFile("springdocDocumentationConfig.mustache",
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator),
"SpringDocConfiguration.kt"));
}
}

// spring uses the jackson lib, and we disallow configuration.
Expand Down
@@ -0,0 +1,54 @@
package {{basePackage}}

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.info.Info
import io.swagger.v3.oas.models.info.Contact
import io.swagger.v3.oas.models.info.License
import io.swagger.v3.oas.models.Components
import io.swagger.v3.oas.models.security.SecurityScheme

{{>generatedAnnotation}}
@Configuration
class SpringDocConfiguration {
@Bean
fun apiInfo(): OpenAPI {
return OpenAPI()
.info(
Info(){{#appName}}
.title("{{appName}}"){{/appName}}
.description("{{{appDescription}}}"){{#termsOfService}}
.termsOfService("{{termsOfService}}"){{/termsOfService}}{{#openAPI}}{{#info}}{{#contact}}
.contact(
Contact(){{#infoName}}
.name("{{infoName}}"){{/infoName}}{{#infoUrl}}
.url("{{infoUrl}}"){{/infoUrl}}{{#infoEmail}}
.email("{{infoEmail}}"){{/infoEmail}}
){{/contact}}{{#license}}
.license(
License()
{{#licenseInfo}}.name("{{licenseInfo}}")
{{/licenseInfo}}{{#licenseUrl}}.url("{{licenseUrl}}")
{{/licenseUrl}}
){{/license}}{{/info}}{{/openAPI}}
.version("{{appVersion}}")
){{#hasAuthMethods}}
.components(
Components(){{#authMethods}}
.addSecuritySchemes("{{name}}", SecurityScheme(){{#isBasic}}
.type(SecurityScheme.Type.HTTP)
.scheme("{{scheme}}"){{#bearerFormat}}
.bearerFormat("{{bearerFormat}}"){{/bearerFormat}}{{/isBasic}}{{#isApiKey}}
.type(SecurityScheme.Type.APIKEY){{#isKeyInHeader}}
.`in`(SecurityScheme.In.HEADER){{/isKeyInHeader}}{{#isKeyInQuery}}
.`in`(SecurityScheme.In.QUERY){{/isKeyInQuery}}{{#isKeyInCookie}}
.`in`(SecurityScheme.In.COOKIE){{/isKeyInCookie}}
.name("{{keyParamName}}"){{/isApiKey}}{{#isOAuth}}
.type(SecurityScheme.Type.OAUTH2){{/isOAuth}}
){{/authMethods}}
){{/hasAuthMethods}}
}
}

This file was deleted.

46 changes: 0 additions & 46 deletions samples/server/petstore/kotlin-server/ktor/pom.xml

This file was deleted.

Expand Up @@ -4,6 +4,7 @@ pom.xml
settings.gradle
src/main/kotlin/org/openapitools/Application.kt
src/main/kotlin/org/openapitools/HomeController.kt
src/main/kotlin/org/openapitools/SpringDocConfiguration.kt
src/main/kotlin/org/openapitools/api/ApiUtil.kt
src/main/kotlin/org/openapitools/api/Exceptions.kt
src/main/kotlin/org/openapitools/api/PetApi.kt
Expand Down
@@ -0,0 +1,43 @@
package org.openapitools

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.info.Info
import io.swagger.v3.oas.models.info.Contact
import io.swagger.v3.oas.models.info.License
import io.swagger.v3.oas.models.Components
import io.swagger.v3.oas.models.security.SecurityScheme

@jakarta.annotation.Generated(value = ["org.openapitools.codegen.languages.KotlinSpringServerCodegen"])
@Configuration
class SpringDocConfiguration {

@Bean
fun apiInfo(): OpenAPI {
return OpenAPI()
.info(
Info()
.title("OpenAPI Petstore")
.description("This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.")
.license(
License()
.name("Apache-2.0")
.url("https://www.apache.org/licenses/LICENSE-2.0.html")
)
.version("1.0.0")
)
.components(
Components()
.addSecuritySchemes("api_key", SecurityScheme()
.type(SecurityScheme.Type.APIKEY)
.`in`(SecurityScheme.In.HEADER)
.name("api_key")
)
.addSecuritySchemes("petstore_auth", SecurityScheme()
.type(SecurityScheme.Type.OAUTH2)
)
)
}
}
Expand Up @@ -4,6 +4,7 @@ pom.xml
settings.gradle
src/main/kotlin/org/openapitools/Application.kt
src/main/kotlin/org/openapitools/HomeController.kt
src/main/kotlin/org/openapitools/SpringDocConfiguration.kt
src/main/kotlin/org/openapitools/api/ApiUtil.kt
src/main/kotlin/org/openapitools/api/Exceptions.kt
src/main/kotlin/org/openapitools/api/PetApiController.kt
Expand Down
@@ -0,0 +1,43 @@
package org.openapitools

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.info.Info
import io.swagger.v3.oas.models.info.Contact
import io.swagger.v3.oas.models.info.License
import io.swagger.v3.oas.models.Components
import io.swagger.v3.oas.models.security.SecurityScheme

@jakarta.annotation.Generated(value = ["org.openapitools.codegen.languages.KotlinSpringServerCodegen"])
@Configuration
class SpringDocConfiguration {

@Bean
fun apiInfo(): OpenAPI {
return OpenAPI()
.info(
Info()
.title("OpenAPI Petstore")
.description("This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.")
.license(
License()
.name("Apache-2.0")
.url("https://www.apache.org/licenses/LICENSE-2.0.html")
)
.version("1.0.0")
)
.components(
Components()
.addSecuritySchemes("api_key", SecurityScheme()
.type(SecurityScheme.Type.APIKEY)
.`in`(SecurityScheme.In.HEADER)
.name("api_key")
)
.addSecuritySchemes("petstore_auth", SecurityScheme()
.type(SecurityScheme.Type.OAUTH2)
)
)
}
}

0 comments on commit 770c1cb

Please sign in to comment.