forked from loafle/openapi-generator-original
Add support for a token supplier to OAuth based RestClient clients. (#19944)
Fixes OpenAPITools#19943
This commit is contained in:
parent
acb16410c4
commit
c70b07808e
@ -2,25 +2,49 @@
|
||||
|
||||
package {{invokerPackage}}.auth;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Supplier;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
/**
|
||||
* Provides support for RFC 6750 - Bearer Token usage for OAUTH 2.0 Authorization.
|
||||
*/
|
||||
{{>generatedAnnotation}}
|
||||
public class OAuth implements Authentication {
|
||||
private String accessToken;
|
||||
private Supplier<String> tokenSupplier;
|
||||
|
||||
/**
|
||||
* Returns the bearer token used for Authorization.
|
||||
*
|
||||
* @return The bearer token
|
||||
*/
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
return tokenSupplier.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the bearer access token used for Authorization.
|
||||
*
|
||||
* @param accessToken The bearer token to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
setAccessToken(() -> accessToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the supplier of bearer tokens used for Authorization.
|
||||
*
|
||||
* @param tokenSupplier The supplier of bearer tokens to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(Supplier<String> tokenSupplier) {
|
||||
this.tokenSupplier = tokenSupplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {
|
||||
if (accessToken != null) {
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
}
|
||||
Optional.ofNullable(tokenSupplier).map(Supplier::get).ifPresent(accessToken ->
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -2963,7 +2963,7 @@ public class JavaClientCodegenTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void shouldGenerateOAuthTokenSuppliers() {
|
||||
public void testRestTemplateWithGeneratedOAuthTokenSuppliers() {
|
||||
|
||||
final Map<String, File> files = generateFromContract(
|
||||
"src/test/resources/3_0/java/oauth.yaml",
|
||||
@ -2994,6 +2994,27 @@ public class JavaClientCodegenTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRestClientWithGeneratedOAuthTokenSuppliers() {
|
||||
final Map<String, File> files = generateFromContract(
|
||||
"src/test/resources/3_0/java/oauth.yaml",
|
||||
JavaClientCodegen.RESTCLIENT
|
||||
);
|
||||
|
||||
final JavaFileAssert oAuth = JavaFileAssert.assertThat(files.get("OAuth.java"))
|
||||
.printFileContent();
|
||||
oAuth
|
||||
.assertMethod("setAccessToken", "String")
|
||||
.bodyContainsLines("setAccessToken(() -> accessToken);");
|
||||
oAuth
|
||||
.assertMethod("setAccessToken", "Supplier<String>")
|
||||
.bodyContainsLines("this.tokenSupplier = tokenSupplier;");
|
||||
oAuth
|
||||
.assertMethod("applyToParams")
|
||||
.bodyContainsLines("Optional.ofNullable(tokenSupplier).map(Supplier::get).ifPresent(accessToken ->")
|
||||
.bodyContainsLines("headerParams.add(HttpHeaders.AUTHORIZATION, \"Bearer \" + accessToken)");
|
||||
}
|
||||
|
||||
@Test public void testRestClientWithXML_issue_19137() {
|
||||
final Path output = newTempFolder();
|
||||
final CodegenConfigurator configurator = new CodegenConfigurator()
|
||||
|
@ -13,25 +13,49 @@
|
||||
|
||||
package org.openapitools.client.auth;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Supplier;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
/**
|
||||
* Provides support for RFC 6750 - Bearer Token usage for OAUTH 2.0 Authorization.
|
||||
*/
|
||||
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.10.0-SNAPSHOT")
|
||||
public class OAuth implements Authentication {
|
||||
private String accessToken;
|
||||
private Supplier<String> tokenSupplier;
|
||||
|
||||
/**
|
||||
* Returns the bearer token used for Authorization.
|
||||
*
|
||||
* @return The bearer token
|
||||
*/
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
return tokenSupplier.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the bearer access token used for Authorization.
|
||||
*
|
||||
* @param accessToken The bearer token to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
setAccessToken(() -> accessToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the supplier of bearer tokens used for Authorization.
|
||||
*
|
||||
* @param tokenSupplier The supplier of bearer tokens to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(Supplier<String> tokenSupplier) {
|
||||
this.tokenSupplier = tokenSupplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {
|
||||
if (accessToken != null) {
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
}
|
||||
Optional.ofNullable(tokenSupplier).map(Supplier::get).ifPresent(accessToken ->
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -13,25 +13,49 @@
|
||||
|
||||
package org.openapitools.client.auth;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Supplier;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
/**
|
||||
* Provides support for RFC 6750 - Bearer Token usage for OAUTH 2.0 Authorization.
|
||||
*/
|
||||
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.10.0-SNAPSHOT")
|
||||
public class OAuth implements Authentication {
|
||||
private String accessToken;
|
||||
private Supplier<String> tokenSupplier;
|
||||
|
||||
/**
|
||||
* Returns the bearer token used for Authorization.
|
||||
*
|
||||
* @return The bearer token
|
||||
*/
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
return tokenSupplier.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the bearer access token used for Authorization.
|
||||
*
|
||||
* @param accessToken The bearer token to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
setAccessToken(() -> accessToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the supplier of bearer tokens used for Authorization.
|
||||
*
|
||||
* @param tokenSupplier The supplier of bearer tokens to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(Supplier<String> tokenSupplier) {
|
||||
this.tokenSupplier = tokenSupplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {
|
||||
if (accessToken != null) {
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
}
|
||||
Optional.ofNullable(tokenSupplier).map(Supplier::get).ifPresent(accessToken ->
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -13,25 +13,49 @@
|
||||
|
||||
package org.openapitools.client.auth;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Supplier;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
/**
|
||||
* Provides support for RFC 6750 - Bearer Token usage for OAUTH 2.0 Authorization.
|
||||
*/
|
||||
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.10.0-SNAPSHOT")
|
||||
public class OAuth implements Authentication {
|
||||
private String accessToken;
|
||||
private Supplier<String> tokenSupplier;
|
||||
|
||||
/**
|
||||
* Returns the bearer token used for Authorization.
|
||||
*
|
||||
* @return The bearer token
|
||||
*/
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
return tokenSupplier.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the bearer access token used for Authorization.
|
||||
*
|
||||
* @param accessToken The bearer token to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
setAccessToken(() -> accessToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the supplier of bearer tokens used for Authorization.
|
||||
*
|
||||
* @param tokenSupplier The supplier of bearer tokens to send in the Authorization header
|
||||
*/
|
||||
public void setAccessToken(Supplier<String> tokenSupplier) {
|
||||
this.tokenSupplier = tokenSupplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyToParams(MultiValueMap<String, String> queryParams, HttpHeaders headerParams, MultiValueMap<String, String> cookieParams) {
|
||||
if (accessToken != null) {
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
}
|
||||
Optional.ofNullable(tokenSupplier).map(Supplier::get).ifPresent(accessToken ->
|
||||
headerParams.add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user