From 309918d03eb2b1c1e93b20a67260a5b7cb4f59dd Mon Sep 17 00:00:00 2001 From: Dennis Melzer Date: Tue, 26 Mar 2024 15:02:19 +0100 Subject: [PATCH] Fix compile error in client properties configuration (#18232) * Fix config * Add tests * Remove unused import * Sort imports * Add new workflow --- .github/workflows/samples-spring.yaml | 1 + bin/configs/spring-cloud-auth.yaml | 9 ++ .../openapitools/codegen/CodegenSecurity.java | 2 + .../openapitools/codegen/DefaultCodegen.java | 1 + .../clientPropertiesConfiguration.mustache | 40 +++++---- .../java/spring/SpringCodegenTest.java | 23 +++-- .../src/test/resources/3_0/issue_18090.yaml | 29 ------- .../resources/3_0/spring/petstore-auth.yaml | 37 ++++++++ .../.openapi-generator-ignore | 23 +++++ .../.openapi-generator/FILES | 7 ++ .../.openapi-generator/VERSION | 1 + .../petstore/spring-cloud-auth/README.md | 53 ++++++++++++ .../client/petstore/spring-cloud-auth/pom.xml | 75 ++++++++++++++++ .../java/org/openapitools/api/SomeApi.java | 41 +++++++++ .../org/openapitools/api/SomeApiClient.java | 8 ++ .../ApiKeyRequestInterceptor.java | 31 +++++++ .../configuration/ClientConfiguration.java | 86 +++++++++++++++++++ .../ClientPropertiesConfiguration.java | 28 ++++++ .../ClientPropertiesConfiguration.java | 14 +-- .../ClientPropertiesConfiguration.java | 14 +-- .../ClientPropertiesConfiguration.java | 14 +-- .../ClientPropertiesConfiguration.java | 14 +-- .../ClientPropertiesConfiguration.java | 14 +-- .../ClientPropertiesConfiguration.java | 14 +-- 24 files changed, 484 insertions(+), 95 deletions(-) create mode 100644 bin/configs/spring-cloud-auth.yaml delete mode 100644 modules/openapi-generator/src/test/resources/3_0/issue_18090.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/spring/petstore-auth.yaml create mode 100644 samples/client/petstore/spring-cloud-auth/.openapi-generator-ignore create mode 100644 samples/client/petstore/spring-cloud-auth/.openapi-generator/FILES create mode 100644 samples/client/petstore/spring-cloud-auth/.openapi-generator/VERSION create mode 100644 samples/client/petstore/spring-cloud-auth/README.md create mode 100644 samples/client/petstore/spring-cloud-auth/pom.xml create mode 100644 samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApi.java create mode 100644 samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApiClient.java create mode 100644 samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ApiKeyRequestInterceptor.java create mode 100644 samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientConfiguration.java create mode 100644 samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java diff --git a/.github/workflows/samples-spring.yaml b/.github/workflows/samples-spring.yaml index 42c29b3eaaf0..598b59b163d3 100644 --- a/.github/workflows/samples-spring.yaml +++ b/.github/workflows/samples-spring.yaml @@ -34,6 +34,7 @@ jobs: - samples/openapi3/client/petstore/spring-cloud-async - samples/openapi3/client/petstore/spring-cloud-spring-pageable - samples/client/petstore/spring-cloud-tags + - samples/client/petstore/spring-cloud-auth - samples/client/petstore/spring-cloud-deprecated # servers - samples/server/petstore/springboot diff --git a/bin/configs/spring-cloud-auth.yaml b/bin/configs/spring-cloud-auth.yaml new file mode 100644 index 000000000000..88c2e399b892 --- /dev/null +++ b/bin/configs/spring-cloud-auth.yaml @@ -0,0 +1,9 @@ +generatorName: spring +outputDir: samples/client/petstore/spring-cloud-auth +library: spring-cloud +inputSpec: modules/openapi-generator/src/test/resources/3_0/spring/petstore-auth.yaml +templateDir: modules/openapi-generator/src/main/resources/JavaSpring +additionalProperties: + documentationProvider: none + artifactId: petstore-spring-cloud-auth + hideGenerationTimestamp: "true" diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java index 671585bc70b6..f165639ad18d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenSecurity.java @@ -43,6 +43,8 @@ public class CodegenSecurity { // Oauth specific public String flow, authorizationUrl, tokenUrl, refreshUrl; public List> scopes; + public Boolean hasScopes; + public Boolean isCode, isPassword, isApplication, isImplicit; // OpenId specific public String openIdConnectUrl; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index ef481ce11069..6bcb112fe93c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -6940,6 +6940,7 @@ private void setOauth2Info(CodegenSecurity codegenSecurity, OAuthFlow flow) { scopes.add(scope); } codegenSecurity.scopes = scopes; + codegenSecurity.hasScopes = true; } } diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/clientPropertiesConfiguration.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/clientPropertiesConfiguration.mustache index 2bdc55c15ca3..cb855cb5cce5 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/clientPropertiesConfiguration.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-cloud/clientPropertiesConfiguration.mustache @@ -1,7 +1,6 @@ package {{configPackage}}; -{{#authMethods}} - {{#isOAuth}} + import java.util.Properties; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -11,31 +10,34 @@ import org.springframework.core.env.PropertiesPropertySource; public class ClientPropertiesConfiguration { public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { - final Properties properties = new Properties(); - properties.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.client-id", "set-{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}-client-id" ); - properties.put("{{#scopes}}{{#-first}}spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.scope", "{{/-first}}{{scope}}{{^-last}},{{/-last}}{{/scopes}}" ); +{{#authMethods}} + {{#isOAuth}} + final Properties {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}} = new Properties(); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.client-id", "set-{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}-client-id" ); + {{#hasScopes}} + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("{{#scopes}}{{#-first}}spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.scope", "{{/-first}}{{scope}}{{^-last}},{{/-last}}{{/scopes}}" ); + {{/hasScopes}} {{#isCode}} - properties.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "authorization_code" ); - properties.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.redirect-uri", "set-{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}-redirect-uri" ); - properties.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.token-uri", "{{{tokenUrl}}}" ); - properties.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-uri", "{{{authorizationUrl}}}" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "authorization_code" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.redirect-uri", "set-{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}-redirect-uri" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.token-uri", "{{{tokenUrl}}}" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-uri", "{{{authorizationUrl}}}" ); {{/isCode}} {{#isPassword}} - properties.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "password" ); - properties.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.token-uri", "{{{tokenUrl}}}" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "password" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.token-uri", "{{{tokenUrl}}}" ); {{/isPassword}} {{#isApplication}} - properties.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "client_credentials" ); - properties.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.token-uri", "{{{tokenUrl}}}" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "client_credentials" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.token-uri", "{{{tokenUrl}}}" ); {{/isApplication}} {{#isImplicit}} - properties.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "implicit" ); - properties.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-uri", "{{{authorizationUrl}}}" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.registration.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-grant-type", "implicit" ); + {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.put("spring.security.oauth2.client.provider.{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}.authorization-uri", "{{{authorizationUrl}}}" ); {{/isImplicit}} - final PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}", properties ); - configurableEnvironment.getPropertySources().addLast( propertiesPropertySource ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("{{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}}", {{{name}}}{{#lambda.pascalcase}}{{{flow}}}{{/lambda.pascalcase}} ) ); + {{/isOAuth}} +{{/authMethods}} } } - {{/isOAuth}} -{{/authMethods}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 5cab43483512..467652c26570 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -57,7 +57,6 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; - import org.apache.commons.lang3.StringUtils; import org.assertj.core.api.MapAssert; import org.openapitools.codegen.CliOption; @@ -1198,7 +1197,7 @@ public void testGenerationOfClientPropertiesConfigurationForOAuth() throws Excep output.deleteOnExit(); OpenAPI openAPI = new OpenAPIParser() - .readLocation("src/test/resources/3_0/issue_18090.yaml", null, new ParseOptions()).getOpenAPI(); + .readLocation("src/test/resources/3_0/spring/petstore-auth.yaml", null, new ParseOptions()).getOpenAPI(); final SpringCodegen codegen = new SpringCodegen(); codegen.setOpenAPI(openAPI); @@ -1226,9 +1225,23 @@ public void testGenerationOfClientPropertiesConfigurationForOAuth() throws Excep Path filePath = Paths.get(output.getAbsolutePath(), "src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java"); - String content = new String(Files.readAllBytes(filePath), "UTF-8"); - Assert.assertTrue(content.contains("properties.put(\"spring.security.oauth2.client.provider.oAuth2AccessCode.token-uri\", \"${tokenUrl}\" );")); - Assert.assertTrue(content.contains("properties.put(\"spring.security.oauth2.client.provider.oAuth2AccessCode.authorization-uri\", \"${authorizationUrl}\" );")); + + assertFileContains(filePath, + "oAuth2AccessCode.put(\"spring.security.oauth2.client.registration.oAuth2AccessCode.redirect-uri\", \"set-oAuth2AccessCode-redirect-uri\" );", + "oAuth2AccessCode.put(\"spring.security.oauth2.client.registration.oAuth2AccessCode.authorization-grant-type\", \"authorization_code\" );", + "oAuth2AccessCode.put(\"spring.security.oauth2.client.registration.oAuth2AccessCode.client-id\", \"set-oAuth2AccessCode-client-id\" );", + "oAuth2AccessCode.put(\"spring.security.oauth2.client.registration.oAuth2AccessCode.scope\", \"openid,profile,aud\" );", + "oAuth2AccessCode.put(\"spring.security.oauth2.client.provider.oAuth2AccessCode.token-uri\", \"${tokenUrl}\" );", + "oAuth2AccessCode.put(\"spring.security.oauth2.client.provider.oAuth2AccessCode.authorization-uri\", \"${authorizationUrl}\" );", + + + "oAuth2Application.put(\"spring.security.oauth2.client.registration.oAuth2Application.client-id\", \"set-oAuth2Application-client-id\" );", + "oAuth2Application.put(\"spring.security.oauth2.client.registration.oAuth2Application.authorization-grant-type\", \"client_credentials\" );", + "oAuth2Application.put(\"spring.security.oauth2.client.provider.oAuth2Application.token-uri\", \"/openid-connect/token\" );" + + ); + + assertFileNotContains(filePath,"spring.security.oauth2.client.registration.oAuth2Application.scope"); } @Test diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_18090.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_18090.yaml deleted file mode 100644 index 6d6792141677..000000000000 --- a/modules/openapi-generator/src/test/resources/3_0/issue_18090.yaml +++ /dev/null @@ -1,29 +0,0 @@ -openapi: "3.0.3" -info: - title: Test for OAuth2 provider - version: 1.0.0 - -security: - - OAuth2: - - openid - - profile - -paths: - /some/endpoint: - get: - responses: - "200": - description: OK - -components: - securitySchemes: - OAuth2: - type: oauth2 - x-tokenName: id_token - flows: - authorizationCode: - authorizationUrl: "${authorizationUrl}" - tokenUrl: "${tokenUrl}" - scopes: - openid: Access OpenId Connect info - profile: Profile info diff --git a/modules/openapi-generator/src/test/resources/3_0/spring/petstore-auth.yaml b/modules/openapi-generator/src/test/resources/3_0/spring/petstore-auth.yaml new file mode 100644 index 000000000000..f425910a9516 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/spring/petstore-auth.yaml @@ -0,0 +1,37 @@ +openapi: "3.0.3" +info: + description: 'This spec is mainly for testing Petstore server and contains fake + endpoints, models. Please do not use this for any other purpose. Special + characters: " \' + version: 1.0.0 + title: OpenAPI Petstore Auth + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + +security: + - OAuth2: [openid, profile, aud] + +paths: + /some/endpoint: + get: + responses: + "200": + description: OK + +components: + securitySchemes: + OAuth2: + type: oauth2 + x-tokenName: id_token + flows: + authorizationCode: + authorizationUrl: "${authorizationUrl}" + tokenUrl: "${tokenUrl}" + scopes: + openid: Access OpenId Connect info + profile: Profile info + aud: Audience info + clientCredentials: + tokenUrl: '/openid-connect/token' + scopes: { } diff --git a/samples/client/petstore/spring-cloud-auth/.openapi-generator-ignore b/samples/client/petstore/spring-cloud-auth/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/petstore/spring-cloud-auth/.openapi-generator/FILES b/samples/client/petstore/spring-cloud-auth/.openapi-generator/FILES new file mode 100644 index 000000000000..a75205774e7f --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/.openapi-generator/FILES @@ -0,0 +1,7 @@ +README.md +pom.xml +src/main/java/org/openapitools/api/SomeApi.java +src/main/java/org/openapitools/api/SomeApiClient.java +src/main/java/org/openapitools/configuration/ApiKeyRequestInterceptor.java +src/main/java/org/openapitools/configuration/ClientConfiguration.java +src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java diff --git a/samples/client/petstore/spring-cloud-auth/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud-auth/.openapi-generator/VERSION new file mode 100644 index 000000000000..08bfd0643b8c --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.5.0-SNAPSHOT diff --git a/samples/client/petstore/spring-cloud-auth/README.md b/samples/client/petstore/spring-cloud-auth/README.md new file mode 100644 index 000000000000..7143b403ce3a --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/README.md @@ -0,0 +1,53 @@ +# petstore-spring-cloud-auth + +## Requirements + +Building the API client library requires [Maven](https://maven.apache.org/) to be installed. + +## Installation + +To install the API client library to your local Maven repository, simply execute: + +```shell +mvn install +``` + +To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: + +```shell +mvn deploy +``` + +Refer to the [official documentation](https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) for more information. + +### Maven users + +Add this dependency to your project's POM: + +```xml + + org.openapitools + petstore-spring-cloud-auth + 1.0.0 + compile + +``` + +### Gradle users + +Add this dependency to your project's build file: + +```groovy +compile "org.openapitools:petstore-spring-cloud-auth:1.0.0" +``` + +### Others + +At first generate the JAR by executing: + +mvn package + +Then manually install the following JARs: + +* target/petstore-spring-cloud-auth-1.0.0.jar +* target/lib/*.jar diff --git a/samples/client/petstore/spring-cloud-auth/pom.xml b/samples/client/petstore/spring-cloud-auth/pom.xml new file mode 100644 index 000000000000..e9ecbf6d8a29 --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/pom.xml @@ -0,0 +1,75 @@ + + 4.0.0 + org.openapitools + petstore-spring-cloud-auth + jar + petstore-spring-cloud-auth + 1.0.0 + + 1.8 + ${java.version} + ${java.version} + UTF-8 + + + org.springframework.boot + spring-boot-starter-parent + 2.7.15 + + + + src/main/java + + + + + + org.springframework.cloud + spring-cloud-starter-parent + 2021.0.5 + pom + import + + + + + + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.security + spring-security-oauth2-client + 5.7.8 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.openapitools + jackson-databind-nullable + 0.2.6 + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.data + spring-data-commons + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApi.java b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApi.java new file mode 100644 index 000000000000..a83a31fb6ba1 --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApi.java @@ -0,0 +1,41 @@ +/** + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.5.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import javax.validation.constraints.*; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import javax.annotation.Generated; + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@Validated +public interface SomeApi { + + /** + * GET /some/endpoint + * + * @return OK (status code 200) + */ + @RequestMapping( + method = RequestMethod.GET, + value = "/some/endpoint" + ) + + ResponseEntity someEndpointGet( + + ); + +} diff --git a/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApiClient.java b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApiClient.java new file mode 100644 index 000000000000..a02c1ed8c8b8 --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/api/SomeApiClient.java @@ -0,0 +1,8 @@ +package org.openapitools.api; + +import org.springframework.cloud.openfeign.FeignClient; +import org.openapitools.configuration.ClientConfiguration; + +@FeignClient(name="${some.name:some}", url="${some.url:http://localhost}", configuration = ClientConfiguration.class) +public interface SomeApiClient extends SomeApi { +} diff --git a/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ApiKeyRequestInterceptor.java b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ApiKeyRequestInterceptor.java new file mode 100644 index 000000000000..199278dcb539 --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ApiKeyRequestInterceptor.java @@ -0,0 +1,31 @@ +package org.openapitools.configuration; + +import feign.RequestInterceptor; +import feign.RequestTemplate; +import feign.Util; + + +public class ApiKeyRequestInterceptor implements RequestInterceptor { + private final String location; + private final String name; + private String value; + + public ApiKeyRequestInterceptor(String location, String name, String value) { + Util.checkNotNull(location, "location", new Object[0]); + Util.checkNotNull(name, "name", new Object[0]); + Util.checkNotNull(value, "value", new Object[0]); + this.location = location; + this.name = name; + this.value = value; + } + + @Override + public void apply(RequestTemplate requestTemplate) { + if(location.equals("header")) { + requestTemplate.header(name, value); + } else if(location.equals("query")) { + requestTemplate.query(name, value); + } + } + +} diff --git a/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientConfiguration.java b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientConfiguration.java new file mode 100644 index 000000000000..205cab406042 --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientConfiguration.java @@ -0,0 +1,86 @@ +package org.openapitools.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.oauth2.client.AuthorizedClientServiceOAuth2AuthorizedClientManager; +import org.springframework.security.oauth2.client.OAuth2AuthorizeRequest; +import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; +import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; +import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService; +import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; +import org.springframework.security.oauth2.core.OAuth2AuthenticationException; +import org.springframework.security.oauth2.core.OAuth2AccessToken; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.http.HttpHeaders; + +import feign.RequestInterceptor; +import feign.RequestTemplate; + +import org.springframework.context.annotation.Configuration; + + +public class ClientConfiguration { + + private static final String CLIENT_PRINCIPAL_APPLICATION = "oauth2FeignClient"; + + @Bean + @ConditionalOnProperty( prefix = "spring.security.oauth2.client.registration.oAuth2Application", name = "enabled", havingValue = "true" ) + public OAuth2RequestInterceptor applicationOAuth2RequestInterceptor(final OAuth2AuthorizedClientManager applicationAuthorizedClientManager ) { + return new OAuth2RequestInterceptor(OAuth2AuthorizeRequest.withClientRegistrationId("oAuth2Application") + .principal( new AnonymousAuthenticationToken( CLIENT_PRINCIPAL_APPLICATION, CLIENT_PRINCIPAL_APPLICATION, AuthorityUtils.createAuthorityList( "ROLE_ANONYMOUS" ) ) ) + .build(), applicationAuthorizedClientManager ); + } + + @Bean + @ConditionalOnProperty( prefix = "spring.security.oauth2.client.registration.oAuth2Application", name = "enabled", havingValue = "true" ) + public OAuth2AuthorizedClientManager applicationAuthorizedClientManager(ClientRegistrationRepository clientRegistrationRepository, + OAuth2AuthorizedClientService authorizedClientService ) { + return new AuthorizedClientServiceOAuth2AuthorizedClientManager( clientRegistrationRepository, authorizedClientService ); + } + private static final String CLIENT_PRINCIPAL_ACCESSCODE = "oauth2FeignClient"; + + @Bean + @ConditionalOnProperty( prefix = "spring.security.oauth2.client.registration.oAuth2AccessCode", name = "enabled", havingValue = "true" ) + public OAuth2RequestInterceptor accessCodeOAuth2RequestInterceptor(final OAuth2AuthorizedClientManager accessCodeAuthorizedClientManager ) { + return new OAuth2RequestInterceptor(OAuth2AuthorizeRequest.withClientRegistrationId("oAuth2AccessCode") + .principal( new AnonymousAuthenticationToken( CLIENT_PRINCIPAL_ACCESSCODE, CLIENT_PRINCIPAL_ACCESSCODE, AuthorityUtils.createAuthorityList( "ROLE_ANONYMOUS" ) ) ) + .build(), accessCodeAuthorizedClientManager ); + } + + @Bean + @ConditionalOnProperty( prefix = "spring.security.oauth2.client.registration.oAuth2AccessCode", name = "enabled", havingValue = "true" ) + public OAuth2AuthorizedClientManager accessCodeAuthorizedClientManager(ClientRegistrationRepository clientRegistrationRepository, + OAuth2AuthorizedClientService authorizedClientService ) { + return new AuthorizedClientServiceOAuth2AuthorizedClientManager( clientRegistrationRepository, authorizedClientService ); + } + public static class OAuth2RequestInterceptor implements RequestInterceptor { + + private final OAuth2AuthorizedClientManager oAuth2AuthorizedClientManager; + private final OAuth2AuthorizeRequest oAuth2AuthorizeRequest; + + public OAuth2RequestInterceptor(OAuth2AuthorizeRequest oAuth2AuthorizeRequest,OAuth2AuthorizedClientManager oAuth2AuthorizedClientManager){ + this.oAuth2AuthorizeRequest = oAuth2AuthorizeRequest; + this.oAuth2AuthorizedClientManager = oAuth2AuthorizedClientManager; + } + + @Override + public void apply( final RequestTemplate template ) { + template.header( HttpHeaders.AUTHORIZATION, getBearerToken() ); + } + + public OAuth2AccessToken getAccessToken() { + final OAuth2AuthorizedClient authorizedClient = oAuth2AuthorizedClientManager.authorize(oAuth2AuthorizeRequest); + if (authorizedClient == null) { + throw new OAuth2AuthenticationException( "Client failed to authenticate"); + } + return authorizedClient.getAccessToken(); + } + + public String getBearerToken() { + final OAuth2AccessToken accessToken = getAccessToken(); + return String.format( "%s %s", accessToken.getTokenType().getValue(), accessToken.getTokenValue() ); + } + } + +} diff --git a/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java new file mode 100644 index 000000000000..e5cda6462170 --- /dev/null +++ b/samples/client/petstore/spring-cloud-auth/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java @@ -0,0 +1,28 @@ +package org.openapitools.configuration; + + +import java.util.Properties; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.PropertiesPropertySource; + +@Configuration(value = "org.openapitools.configuration.clientPropertiesConfiguration") +public class ClientPropertiesConfiguration { + + public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { + final Properties oAuth2Application = new Properties(); + oAuth2Application.put("spring.security.oauth2.client.registration.oAuth2Application.client-id", "set-oAuth2Application-client-id" ); + oAuth2Application.put("spring.security.oauth2.client.registration.oAuth2Application.authorization-grant-type", "client_credentials" ); + oAuth2Application.put("spring.security.oauth2.client.provider.oAuth2Application.token-uri", "/openid-connect/token" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("oAuth2Application", oAuth2Application ) ); + final Properties oAuth2AccessCode = new Properties(); + oAuth2AccessCode.put("spring.security.oauth2.client.registration.oAuth2AccessCode.client-id", "set-oAuth2AccessCode-client-id" ); + oAuth2AccessCode.put("spring.security.oauth2.client.registration.oAuth2AccessCode.scope", "openid,profile,aud" ); + oAuth2AccessCode.put("spring.security.oauth2.client.registration.oAuth2AccessCode.authorization-grant-type", "authorization_code" ); + oAuth2AccessCode.put("spring.security.oauth2.client.registration.oAuth2AccessCode.redirect-uri", "set-oAuth2AccessCode-redirect-uri" ); + oAuth2AccessCode.put("spring.security.oauth2.client.provider.oAuth2AccessCode.token-uri", "${tokenUrl}" ); + oAuth2AccessCode.put("spring.security.oauth2.client.provider.oAuth2AccessCode.authorization-uri", "${authorizationUrl}" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("oAuth2AccessCode", oAuth2AccessCode ) ); + } + +} diff --git a/samples/client/petstore/spring-cloud-feign-without-url/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java b/samples/client/petstore/spring-cloud-feign-without-url/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java index ce9f10507e8e..20feed97f253 100644 --- a/samples/client/petstore/spring-cloud-feign-without-url/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java +++ b/samples/client/petstore/spring-cloud-feign-without-url/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java @@ -1,5 +1,6 @@ package org.openapitools.configuration; + import java.util.Properties; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -9,13 +10,12 @@ public class ClientPropertiesConfiguration { public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { - final Properties properties = new Properties(); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); - properties.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); - final PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("petstoreAuthImplicit", properties ); - configurableEnvironment.getPropertySources().addLast( propertiesPropertySource ); + final Properties petstoreAuthImplicit = new Properties(); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("petstoreAuthImplicit", petstoreAuthImplicit ) ); } } diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java index ce9f10507e8e..20feed97f253 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java @@ -1,5 +1,6 @@ package org.openapitools.configuration; + import java.util.Properties; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -9,13 +10,12 @@ public class ClientPropertiesConfiguration { public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { - final Properties properties = new Properties(); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); - properties.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); - final PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("petstoreAuthImplicit", properties ); - configurableEnvironment.getPropertySources().addLast( propertiesPropertySource ); + final Properties petstoreAuthImplicit = new Properties(); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("petstoreAuthImplicit", petstoreAuthImplicit ) ); } } diff --git a/samples/openapi3/client/petstore/spring-cloud-3-with-optional/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java b/samples/openapi3/client/petstore/spring-cloud-3-with-optional/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java index ce9f10507e8e..20feed97f253 100644 --- a/samples/openapi3/client/petstore/spring-cloud-3-with-optional/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java +++ b/samples/openapi3/client/petstore/spring-cloud-3-with-optional/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java @@ -1,5 +1,6 @@ package org.openapitools.configuration; + import java.util.Properties; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -9,13 +10,12 @@ public class ClientPropertiesConfiguration { public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { - final Properties properties = new Properties(); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); - properties.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); - final PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("petstoreAuthImplicit", properties ); - configurableEnvironment.getPropertySources().addLast( propertiesPropertySource ); + final Properties petstoreAuthImplicit = new Properties(); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("petstoreAuthImplicit", petstoreAuthImplicit ) ); } } diff --git a/samples/openapi3/client/petstore/spring-cloud-3/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java b/samples/openapi3/client/petstore/spring-cloud-3/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java index ce9f10507e8e..20feed97f253 100644 --- a/samples/openapi3/client/petstore/spring-cloud-3/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java +++ b/samples/openapi3/client/petstore/spring-cloud-3/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java @@ -1,5 +1,6 @@ package org.openapitools.configuration; + import java.util.Properties; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -9,13 +10,12 @@ public class ClientPropertiesConfiguration { public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { - final Properties properties = new Properties(); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); - properties.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); - final PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("petstoreAuthImplicit", properties ); - configurableEnvironment.getPropertySources().addLast( propertiesPropertySource ); + final Properties petstoreAuthImplicit = new Properties(); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("petstoreAuthImplicit", petstoreAuthImplicit ) ); } } diff --git a/samples/openapi3/client/petstore/spring-cloud-async/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java b/samples/openapi3/client/petstore/spring-cloud-async/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java index ce9f10507e8e..20feed97f253 100644 --- a/samples/openapi3/client/petstore/spring-cloud-async/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java +++ b/samples/openapi3/client/petstore/spring-cloud-async/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java @@ -1,5 +1,6 @@ package org.openapitools.configuration; + import java.util.Properties; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -9,13 +10,12 @@ public class ClientPropertiesConfiguration { public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { - final Properties properties = new Properties(); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); - properties.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); - final PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("petstoreAuthImplicit", properties ); - configurableEnvironment.getPropertySources().addLast( propertiesPropertySource ); + final Properties petstoreAuthImplicit = new Properties(); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("petstoreAuthImplicit", petstoreAuthImplicit ) ); } } diff --git a/samples/openapi3/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java b/samples/openapi3/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java index ce9f10507e8e..20feed97f253 100644 --- a/samples/openapi3/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java +++ b/samples/openapi3/client/petstore/spring-cloud-spring-pageable/src/main/java/org/openapitools/configuration/ClientPropertiesConfiguration.java @@ -1,5 +1,6 @@ package org.openapitools.configuration; + import java.util.Properties; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -9,13 +10,12 @@ public class ClientPropertiesConfiguration { public ClientPropertiesConfiguration( final ConfigurableEnvironment configurableEnvironment ) { - final Properties properties = new Properties(); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); - properties.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); - properties.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); - final PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("petstoreAuthImplicit", properties ); - configurableEnvironment.getPropertySources().addLast( propertiesPropertySource ); + final Properties petstoreAuthImplicit = new Properties(); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.client-id", "set-petstoreAuthImplicit-client-id" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.scope", "write:pets,read:pets" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.registration.petstoreAuthImplicit.authorization-grant-type", "implicit" ); + petstoreAuthImplicit.put("spring.security.oauth2.client.provider.petstoreAuthImplicit.authorization-uri", "http://petstore.swagger.io/api/oauth/dialog" ); + configurableEnvironment.getPropertySources().addLast( new PropertiesPropertySource("petstoreAuthImplicit", petstoreAuthImplicit ) ); } }