From 4aedf7bae157c272f4dcba66fea347ea0509573c Mon Sep 17 00:00:00 2001 From: Justin Black Date: Thu, 25 Jan 2024 12:09:18 -0800 Subject: [PATCH 01/11] Adds SecurityScheme --- .../petstore/java/.openapi-generator/FILES | 1 + .../securityschemes/SecurityScheme.java | 19 +++++++++++++++++++ .../generators/JavaClientGenerator.java | 8 ++++++++ .../securityschemes/SecurityScheme.hbs | 19 +++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index 47f55d4319b..ddd49123e25 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -759,6 +759,7 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/UniqueItemsVa src/main/java/org/openapijsonschematools/client/schemas/validation/UnsetAnyTypeJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationData.java src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationMetadata.java +src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java src/main/java/org/openapijsonschematools/client/servers/Server.java src/main/java/org/openapijsonschematools/client/servers/Server0.java src/main/java/org/openapijsonschematools/client/servers/Server1.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java new file mode 100644 index 00000000000..a10949dd0f6 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java @@ -0,0 +1,19 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public interface SecurityScheme { + void applyAuth( + Map> headers, + String resourcePath, + String method, + HttpRequest.BodyPublisher bodyPublisher, + @Nullable String queryParamsSuffix, + List scopeNames + ); +} + diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index bf18ca47ca8..d0b34022fb2 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -19,6 +19,7 @@ import com.google.common.base.Strings; import com.google.common.collect.Sets; +import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.examples.Example; import io.swagger.v3.oas.models.media.Schema; @@ -2358,6 +2359,13 @@ public String toExampleValue(Schema p) { @Override public void setOpenAPI(OpenAPI openAPI) { super.setOpenAPI(openAPI); + Components components = openAPI.getComponents(); + if (components != null && components.getSecuritySchemes() != null) { + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/SecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "SecurityScheme.java")); + } List servers = openAPI.getServers(); if (servers != null && !servers.isEmpty()) { supportingFiles.add(new SupportingFile( diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs new file mode 100644 index 00000000000..78d57c6ce85 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/SecurityScheme.hbs @@ -0,0 +1,19 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public interface SecurityScheme { + void applyAuth( + Map> headers, + String resourcePath, + String method, + HttpRequest.BodyPublisher bodyPublisher, + @Nullable String queryParamsSuffix, + List scopeNames + ); +} + From eb5d9f6fe6e68e31b2f3d14cc4fdea27770e0c21 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Thu, 25 Jan 2024 15:00:08 -0800 Subject: [PATCH 02/11] Adds ApiKeySecurityScheme --- .../petstore/java/.openapi-generator/FILES | 2 + .../securityschemes/ApiKeyInLocation.java | 7 +++ .../securityschemes/ApiKeySecurityScheme.java | 43 +++++++++++++++++++ .../generators/JavaClientGenerator.java | 8 ++++ .../securityschemes/ApiKeyInLocation.hbs | 7 +++ .../securityschemes/ApiKeySecurityScheme.hbs | 43 +++++++++++++++++++ 6 files changed, 110 insertions(+) create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyInLocation.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyInLocation.hbs create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index ddd49123e25..cec52121d6d 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -759,6 +759,8 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/UniqueItemsVa src/main/java/org/openapijsonschematools/client/schemas/validation/UnsetAnyTypeJsonSchema.java src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationData.java src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationMetadata.java +src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyInLocation.java +src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java src/main/java/org/openapijsonschematools/client/servers/Server.java src/main/java/org/openapijsonschematools/client/servers/Server0.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyInLocation.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyInLocation.java new file mode 100644 index 00000000000..0cd2e69d617 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyInLocation.java @@ -0,0 +1,7 @@ +package org.openapijsonschematools.client.securityschemes; + +public enum ApiKeyInLocation{ + QUERY, + HEADER, + COOKIE +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java new file mode 100644 index 00000000000..5d555f175c2 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java @@ -0,0 +1,43 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ApiKeySecurityScheme implements SecurityScheme { + private final String apiKey; + private final @Nullable String name; + private final ApiKeyInLocation inLocation; + + private ApiKeySecurityScheme(String apiKey, @Nullable String name, ApiKeyInLocation inLocation) { + this.apiKey = apiKey; + this.name = name; + this.inLocation = inLocation; + } + + public static ApiKeySecurityScheme inCookie(String apiKey) { + return new ApiKeySecurityScheme(apiKey, null, ApiKeyInLocation.COOKIE); + } + + public static ApiKeySecurityScheme inHeader(String apiKey, String name) { + return new ApiKeySecurityScheme(apiKey, name, ApiKeyInLocation.HEADER); + } + + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + switch (inLocation) { + case COOKIE -> { + List cookieValue = headers.getOrDefault("Cookie", new ArrayList<>()); + cookieValue.add(apiKey); + } + case HEADER -> { + List headerValue = headers.getOrDefault(name, new ArrayList<>()); + headerValue.add(apiKey); + } + case QUERY -> throw new UnsupportedOperationException(); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index d0b34022fb2..643ce0c78d9 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -2365,6 +2365,14 @@ public void setOpenAPI(OpenAPI openAPI) { "src/main/java/packagename/securityschemes/SecurityScheme.hbs", packagePath() + File.separatorChar + "securityschemes", "SecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/ApiKeyInLocation.hbs", + packagePath() + File.separatorChar + "securityschemes", + "ApiKeyInLocation.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "ApiKeySecurityScheme.java")); } List servers = openAPI.getServers(); if (servers != null && !servers.isEmpty()) { diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyInLocation.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyInLocation.hbs new file mode 100644 index 00000000000..5b6a521161b --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeyInLocation.hbs @@ -0,0 +1,7 @@ +package {{{packageName}}}.securityschemes; + +public enum ApiKeyInLocation{ + QUERY, + HEADER, + COOKIE +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs new file mode 100644 index 00000000000..2bd3008498a --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs @@ -0,0 +1,43 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ApiKeySecurityScheme implements SecurityScheme { + private final String apiKey; + private final @Nullable String name; + private final ApiKeyInLocation inLocation; + + private ApiKeySecurityScheme(String apiKey, @Nullable String name, ApiKeyInLocation inLocation) { + this.apiKey = apiKey; + this.name = name; + this.inLocation = inLocation; + } + + public static ApiKeySecurityScheme inCookie(String apiKey) { + return new ApiKeySecurityScheme(apiKey, null, ApiKeyInLocation.COOKIE); + } + + public static ApiKeySecurityScheme inHeader(String apiKey, String name) { + return new ApiKeySecurityScheme(apiKey, name, ApiKeyInLocation.HEADER); + } + + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + switch (inLocation) { + case COOKIE -> { + List cookieValue = headers.getOrDefault("Cookie", new ArrayList<>()); + cookieValue.add(apiKey); + } + case HEADER -> { + List headerValue = headers.getOrDefault(name, new ArrayList<>()); + headerValue.add(apiKey); + } + case QUERY -> throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } + } +} \ No newline at end of file From a69cd0295fcbb6e553e65311b1daf0d25b0960e8 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Thu, 25 Jan 2024 15:50:15 -0800 Subject: [PATCH 03/11] Adds 3 security schemes --- .../petstore/java/.openapi-generator/FILES | 2 ++ .../securityschemes/ApiKeySecurityScheme.java | 2 +- .../HttpBasicSecurityScheme.java | 32 +++++++++++++++++ .../HttpBearerSecurityScheme.java | 34 +++++++++++++++++++ .../generators/JavaClientGenerator.java | 8 +++++ .../HttpBasicSecurityScheme.hbs | 32 +++++++++++++++++ .../HttpBearerSecurityScheme.hbs | 34 +++++++++++++++++++ 7 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index cec52121d6d..eaf5ba04341 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -761,6 +761,8 @@ src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationDat src/main/java/org/openapijsonschematools/client/schemas/validation/ValidationMetadata.java src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyInLocation.java src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java +src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java +src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java src/main/java/org/openapijsonschematools/client/servers/Server.java src/main/java/org/openapijsonschematools/client/servers/Server0.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java index 5d555f175c2..ebd2eb89712 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java @@ -37,7 +37,7 @@ public void applyAuth(Map> headers, String resourcePath, St List headerValue = headers.getOrDefault(name, new ArrayList<>()); headerValue.add(apiKey); } - case QUERY -> throw new UnsupportedOperationException(); + case QUERY -> throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); } } } \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java new file mode 100644 index 00000000000..58ca37133e0 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java @@ -0,0 +1,32 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.Map; + +public class HttpBasicSecurityScheme implements SecurityScheme { + private final String userId; + private final String password; + /* + scheme = BASIC, type = HTTP + https://www.rfc-editor.org/rfc/rfc7617.html + */ + + public HttpBasicSecurityScheme(String userId, String password) { + this.userId = userId; + this.password = password; + } + + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + String userPass = userId + ":" + password; + String b64UserPass = Base64.getEncoder().encodeToString(userPass.getBytes(StandardCharsets.UTF_8)); + List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); + headerValue.add("Basic " + b64UserPass); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java new file mode 100644 index 00000000000..7e3b2635402 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java @@ -0,0 +1,34 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.Map; + +public class HttpBearerSecurityScheme implements SecurityScheme { + private final String accessToken; + private final @Nullable String bearerFormat; + /* + scheme = BEARER, type = HTTP + https://www.rfc-editor.org/rfc/rfc7617.html + */ + + public HttpBearerSecurityScheme(String accessToken, @Nullable String bearerFormat) { + this.accessToken = accessToken; + this.bearerFormat = bearerFormat; + } + + public HttpBearerSecurityScheme(String accessToken) { + this.accessToken = accessToken; + this.bearerFormat = null; + } + + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); + headerValue.add("Bearer " + accessToken); + } +} \ No newline at end of file diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index 643ce0c78d9..709ffd989bf 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -2373,6 +2373,14 @@ public void setOpenAPI(OpenAPI openAPI) { "src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs", packagePath() + File.separatorChar + "securityschemes", "ApiKeySecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "HttpBasicSecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "HttpBearerSecurityScheme.java")); } List servers = openAPI.getServers(); if (servers != null && !servers.isEmpty()) { diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs new file mode 100644 index 00000000000..d8c4ca8c5e5 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBasicSecurityScheme.hbs @@ -0,0 +1,32 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.Map; + +public class HttpBasicSecurityScheme implements SecurityScheme { + private final String userId; + private final String password; + /* + scheme = BASIC, type = HTTP + https://www.rfc-editor.org/rfc/rfc7617.html + */ + + public HttpBasicSecurityScheme(String userId, String password) { + this.userId = userId; + this.password = password; + } + + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + String userPass = userId + ":" + password; + String b64UserPass = Base64.getEncoder().encodeToString(userPass.getBytes(StandardCharsets.UTF_8)); + List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); + headerValue.add("Basic " + b64UserPass); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs new file mode 100644 index 00000000000..c827d8a9120 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs @@ -0,0 +1,34 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.Map; + +public class HttpBearerSecurityScheme implements SecurityScheme { + private final String accessToken; + private final @Nullable String bearerFormat; + /* + scheme = BEARER, type = HTTP + https://www.rfc-editor.org/rfc/rfc7617.html + */ + + public HttpBearerSecurityScheme(String accessToken, @Nullable String bearerFormat) { + this.accessToken = accessToken; + this.bearerFormat = bearerFormat; + } + + public HttpBearerSecurityScheme(String accessToken) { + this.accessToken = accessToken; + this.bearerFormat = null; + } + + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + List headerValue = headers.getOrDefault("Authorization", new ArrayList<>()); + headerValue.add("Bearer " + accessToken); + } +} \ No newline at end of file From 85bf1fcb35083f916b6e9627261b9399325a62c2 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Thu, 25 Jan 2024 16:00:51 -0800 Subject: [PATCH 04/11] Adds all securityScheme class types, many unimplemented --- .../petstore/java/.openapi-generator/FILES | 5 +++++ .../HttpDigestSecurityScheme.java | 14 +++++++++++++ .../HttpSignatureSecurityScheme.java | 14 +++++++++++++ .../MutualTlsSecurityScheme.java | 14 +++++++++++++ .../securityschemes/OAuth2SecurityScheme.java | 14 +++++++++++++ .../OpenIdConnectSecurityScheme.java | 14 +++++++++++++ .../generators/JavaClientGenerator.java | 20 +++++++++++++++++++ .../HttpDigestSecurityScheme.hbs | 14 +++++++++++++ .../HttpSignatureSecurityScheme.hbs | 14 +++++++++++++ .../MutualTlsSecurityScheme.hbs | 14 +++++++++++++ .../securityschemes/OAuth2SecurityScheme.hbs | 14 +++++++++++++ .../OpenIdConnectSecurityScheme.hbs | 14 +++++++++++++ 12 files changed, 165 insertions(+) create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs create mode 100644 src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index eaf5ba04341..04f237d8a4b 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -763,6 +763,11 @@ src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeyInLocation src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java src/main/java/org/openapijsonschematools/client/securityschemes/HttpBasicSecurityScheme.java src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java +src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java +src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java +src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java +src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java +src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java src/main/java/org/openapijsonschematools/client/securityschemes/SecurityScheme.java src/main/java/org/openapijsonschematools/client/servers/Server.java src/main/java/org/openapijsonschematools/client/servers/Server0.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java new file mode 100644 index 00000000000..8e96ab0a0c0 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpDigestSecurityScheme.java @@ -0,0 +1,14 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class HttpDigestSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java new file mode 100644 index 00000000000..39374217373 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpSignatureSecurityScheme.java @@ -0,0 +1,14 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class HttpSignatureSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java new file mode 100644 index 00000000000..c5de4857e43 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/MutualTlsSecurityScheme.java @@ -0,0 +1,14 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class MutualTlsSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java new file mode 100644 index 00000000000..331a2de41d3 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OAuth2SecurityScheme.java @@ -0,0 +1,14 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class OAuth2SecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java new file mode 100644 index 00000000000..40d20af483b --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/OpenIdConnectSecurityScheme.java @@ -0,0 +1,14 @@ +package org.openapijsonschematools.client.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class OpenIdConnectSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index 709ffd989bf..9dbac3bf208 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -2381,6 +2381,26 @@ public void setOpenAPI(OpenAPI openAPI) { "src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs", packagePath() + File.separatorChar + "securityschemes", "HttpBearerSecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "HttpSignatureSecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "HttpDigestSecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "MutualTlsSecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "OAuth2SecurityScheme.java")); + supportingFiles.add(new SupportingFile( + "src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs", + packagePath() + File.separatorChar + "securityschemes", + "OpenIdConnectSecurityScheme.java")); } List servers = openAPI.getServers(); if (servers != null && !servers.isEmpty()) { diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs new file mode 100644 index 00000000000..9eb3fa4738e --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpDigestSecurityScheme.hbs @@ -0,0 +1,14 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class HttpDigestSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs new file mode 100644 index 00000000000..3df20315d38 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpSignatureSecurityScheme.hbs @@ -0,0 +1,14 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class HttpSignatureSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs new file mode 100644 index 00000000000..6d864807363 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/MutualTlsSecurityScheme.hbs @@ -0,0 +1,14 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class MutualTlsSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs new file mode 100644 index 00000000000..9b4c4501648 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/OAuth2SecurityScheme.hbs @@ -0,0 +1,14 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class OAuth2SecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs new file mode 100644 index 00000000000..9eca2e03703 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs @@ -0,0 +1,14 @@ +package {{{packageName}}}.securityschemes; + +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.net.http.HttpRequest; +import java.util.List; +import java.util.Map; + +public class OpenIdConnectSecurityScheme implements SecurityScheme { + @Override + public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { + throw new UnsupportedOperationException("If you need this, submit a PR adding this feature"); + } +} \ No newline at end of file From 0b978b0a3e09f7d12f5e14e67e452624109ee88b Mon Sep 17 00:00:00 2001 From: Justin Black Date: Thu, 25 Jan 2024 18:15:38 -0800 Subject: [PATCH 05/11] Updates security scheme files --- .../petstore/java/.openapi-generator/FILES | 7 + .../components/securityschemes/apikey.java | 13 ++ .../securityschemes/apikeyquery.java | 13 ++ .../securityschemes/bearertest.java | 12 ++ .../securityschemes/httpbasictest.java | 12 ++ .../securityschemes/httpsignaturetest.java | 9 + .../securityschemes/openidconnecttest.java | 11 ++ .../securityschemes/petstoreauth.java | 18 ++ .../securityschemes/ApiKeySecurityScheme.java | 10 +- .../HttpBearerSecurityScheme.java | 4 +- .../generators/JavaClientGenerator.java | 7 + .../securityschemes/SecurityScheme.hbs | 177 +++++++++++++++++ .../securityschemes/SecurityScheme_doc.hbs | 182 ++++++++++++++++++ .../securityschemes/ApiKeySecurityScheme.hbs | 10 +- .../HttpBearerSecurityScheme.hbs | 4 +- 15 files changed, 467 insertions(+), 22 deletions(-) create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java create mode 100644 samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java create mode 100644 src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs create mode 100644 src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index 04f237d8a4b..bff128a11d4 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -466,6 +466,13 @@ src/main/java/org/openapijsonschematools/client/components/schemas/UUIDString.ja src/main/java/org/openapijsonschematools/client/components/schemas/User.java src/main/java/org/openapijsonschematools/client/components/schemas/Whale.java src/main/java/org/openapijsonschematools/client/components/schemas/Zebra.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java src/main/java/org/openapijsonschematools/client/configurations/ApiConfiguration.java src/main/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlags.java src/main/java/org/openapijsonschematools/client/configurations/SchemaConfiguration.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java new file mode 100644 index 00000000000..f1ee84be75b --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java @@ -0,0 +1,13 @@ +package org.openapijsonschematools.client.components.securityschemes; + +import org.openapijsonschematools.client.securityschemes.ApiKeySecurityScheme; +import org.openapijsonschematools.client.securityschemes.ApiKeyInLocation; + +public class ApiKey extends ApiKeySecurityScheme { + /* + apiKey in header + */ + public ApiKey(String apiKey, String name) { + super(apiKey, "api_key", ApiKeyInLocation.HEADER); + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java new file mode 100644 index 00000000000..ce9f900264f --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java @@ -0,0 +1,13 @@ +package org.openapijsonschematools.client.components.securityschemes; + +import org.openapijsonschematools.client.securityschemes.ApiKeySecurityScheme; +import org.openapijsonschematools.client.securityschemes.ApiKeyInLocation; + +public class ApiKeyQuery extends ApiKeySecurityScheme { + /* + apiKey in query + */ + public ApiKeyQuery(String apiKey, String name) { + super(apiKey, "api_key_query", ApiKeyInLocation.QUERY); + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java new file mode 100644 index 00000000000..9ed5b4700b4 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java @@ -0,0 +1,12 @@ +package org.openapijsonschematools.client.components.securityschemes; + +import org.openapijsonschematools.client.securityschemes.HttpBearerSecurityScheme; + +public class BearerTest extends HttpBearerSecurityScheme { + /* + http bearer with JWT bearer format + */ + public BearerTest(String accessToken) { + super(accessToken, "JWT"); + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java new file mode 100644 index 00000000000..2e01c07d4a7 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java @@ -0,0 +1,12 @@ +package org.openapijsonschematools.client.components.securityschemes; + +import org.openapijsonschematools.client.securityschemes.HttpBasicSecurityScheme; + +public class HttpBasicTest extends HttpBasicSecurityScheme { + /* + http basic + */ + public HttpBasicTest(String userId, String password) { + super(userId, password); + } +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java new file mode 100644 index 00000000000..07e6c3ab676 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java @@ -0,0 +1,9 @@ +package org.openapijsonschematools.client.components.securityschemes; + +import org.openapijsonschematools.client.securityschemes.HttpSignatureSecurityScheme; + +public class HttpSignatureTest extends HttpSignatureSecurityScheme { + /* + http + signature + */ +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java new file mode 100644 index 00000000000..ddf96a7d19c --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java @@ -0,0 +1,11 @@ +package org.openapijsonschematools.client.components.securityschemes; + +import org.openapijsonschematools.client.securityschemes.OpenIdConnectSecurityScheme; + +@dataclasses.dataclass +class OpenIdConnectTest(security_schemes.OpenIdConnectSecurityScheme): + /* + openIdConnect + */ + openid_connect_url = "https://somesite.com/.well-known/openid-configuration" +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java new file mode 100644 index 00000000000..4a7dd2c299e --- /dev/null +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java @@ -0,0 +1,18 @@ +package org.openapijsonschematools.client.components.securityschemes; + +import org.openapijsonschematools.client.securityschemes.Oauth2SecurityScheme; + +public class PetstoreAuth extends OAuth2SecurityScheme { + /* + oauth2 implicit flow with two scopes + */ + flows = security_schemes.OAuthFlows( + implicit=security_schemes.ImplicitOAuthFlow( + authorization_url="http://petstore.swagger.io/api/oauth/dialog", + scopes={ + "write:pets": "modify pets in your account", + "read:pets": "read your pets", + }, + ) + ) +} diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java index ebd2eb89712..5f9f7dee73c 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/ApiKeySecurityScheme.java @@ -12,20 +12,12 @@ public class ApiKeySecurityScheme implements SecurityScheme { private final @Nullable String name; private final ApiKeyInLocation inLocation; - private ApiKeySecurityScheme(String apiKey, @Nullable String name, ApiKeyInLocation inLocation) { + protected ApiKeySecurityScheme(String apiKey, @Nullable String name, ApiKeyInLocation inLocation) { this.apiKey = apiKey; this.name = name; this.inLocation = inLocation; } - public static ApiKeySecurityScheme inCookie(String apiKey) { - return new ApiKeySecurityScheme(apiKey, null, ApiKeyInLocation.COOKIE); - } - - public static ApiKeySecurityScheme inHeader(String apiKey, String name) { - return new ApiKeySecurityScheme(apiKey, name, ApiKeyInLocation.HEADER); - } - @Override public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { switch (inLocation) { diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java index 7e3b2635402..17ff7f595a9 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/securityschemes/HttpBearerSecurityScheme.java @@ -16,12 +16,12 @@ public class HttpBearerSecurityScheme implements SecurityScheme { https://www.rfc-editor.org/rfc/rfc7617.html */ - public HttpBearerSecurityScheme(String accessToken, @Nullable String bearerFormat) { + protected HttpBearerSecurityScheme(String accessToken, @Nullable String bearerFormat) { this.accessToken = accessToken; this.bearerFormat = bearerFormat; } - public HttpBearerSecurityScheme(String accessToken) { + protected HttpBearerSecurityScheme(String accessToken) { this.accessToken = accessToken; this.bearerFormat = null; } diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index 9dbac3bf208..1ceedd5bb29 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -2401,6 +2401,13 @@ public void setOpenAPI(OpenAPI openAPI) { "src/main/java/packagename/securityschemes/OpenIdConnectSecurityScheme.hbs", packagePath() + File.separatorChar + "securityschemes", "OpenIdConnectSecurityScheme.java")); + + jsonPathTemplateFiles.put( + CodegenConstants.JSON_PATH_LOCATION_TYPE.SECURITY_SCHEME, + new HashMap<>() {{ + put("src/main/java/packagename/components/securityschemes/SecurityScheme.hbs", ".java"); + }} + ); } List servers = openAPI.getServers(); if (servers != null && !servers.isEmpty()) { diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs new file mode 100644 index 00000000000..580a580d940 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs @@ -0,0 +1,177 @@ +package {{packageName}}.components.securityschemes; + +{{#with securityScheme}} + {{#if refInfo}} + {{! todo handle this}} +// todo handle refed security schemes + + {{else}} + {{#eq type "apiKey"}} +import {{packageName}}.securityschemes.ApiKeySecurityScheme; +import {{packageName}}.securityschemes.ApiKeyInLocation; + {{else}} + {{#eq type "http"}} + {{#eq scheme "basic"}} +import {{packageName}}.securityschemes.HttpBasicSecurityScheme; + {{else}} + {{#eq scheme "bearer"}} +import {{packageName}}.securityschemes.HttpBearerSecurityScheme; + {{else}} + {{#eq scheme "signature"}} +import {{packageName}}.securityschemes.HttpSignatureSecurityScheme; + {{/eq}} + {{/eq}} + {{/eq}} + {{else}} + {{#eq type "mutualTLS"}} +import {{packageName}}.securityschemes.MutualTlsSecurityScheme; + {{else}} + {{#eq type "oauth2"}} +import {{packageName}}.securityschemes.Oauth2SecurityScheme; + {{else}} + {{#eq type "openIdConnect"}} +import {{packageName}}.securityschemes.OpenIdConnectSecurityScheme; + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} + + {{#eq type "apiKey"}} +public class {{jsonPathPiece.pascalCase}} extends ApiKeySecurityScheme { + {{#if description}} + /* + {{description.original}} + */ + {{/if}} + {{#eq in "query"}} + public {{jsonPathPiece.pascalCase}}(String apiKey, String name) { + super(apiKey, "{{{name}}}", ApiKeyInLocation.QUERY); + } + {{else}} + {{#eq in "header"}} + public {{jsonPathPiece.pascalCase}}(String apiKey, String name) { + super(apiKey, "{{{name}}}", ApiKeyInLocation.HEADER); + } + {{else}} + {{#eq in "cookie"}} + public {{jsonPathPiece.pascalCase}}(String apiKey) { + super(apiKey, null, ApiKeyInLocation.COOKIE); + } + {{/eq}} + {{/eq}} + {{/eq}} +} + {{else}} + {{#eq type "http"}} +public class {{jsonPathPiece.pascalCase}} extends Http{{#eq scheme "basic"}}Basic{{/eq}}{{#eq scheme "bearer"}}Bearer{{/eq}}{{#eq scheme "signature"}}Signature{{/eq}}{{#eq scheme "digest"}}Digest{{/eq}}SecurityScheme { + {{#if description}} + /* + {{description.original}} + */ + {{/if}} + {{#eq scheme "basic"}} + public {{jsonPathPiece.pascalCase}}(String userId, String password) { + super(userId, password); + } + {{else}} + {{#eq scheme "bearer"}} + public {{jsonPathPiece.pascalCase}}(String accessToken) { + super(accessToken, "{{{bearerFormat}}}"); + } + {{/eq}} + {{/eq}} +} + {{else}} + {{#eq type "mutualTLS"}} +public class {{jsonPathPiece.pascalCase}} extends MutualTlsSecurityScheme { + {{#if description}} + /* + {{description.original}} + */ + {{/if}} +} + {{else}} + {{#eq type "oauth2"}} +public class {{jsonPathPiece.pascalCase}} extends OAuth2SecurityScheme { + {{#if description}} + /* + {{description.original}} + */ + {{/if}} + flows = security_schemes.OAuthFlows( + {{#with flows}} + {{#with implicit}} + implicit=security_schemes.ImplicitOAuthFlow( + authorization_url="{{authorizationUrl}}", + scopes={ + {{#each scopes}} + "{{@key}}": "{{this}}", + {{/each}} + }, + {{#if refreshUrl}} + refresh_url="{{refreshUrl}}" + {{/if}} + ) + {{/with}} + {{#with password}} + password=security_schemes.TokenUrlOauthFlow( + token_url="{{tokenUrl}}", + scopes={ + {{#each scopes}} + "{{@key}}": "{{this}}", + {{/each}} + }, + {{#if refreshUrl}} + refresh_url="{{refreshUrl}}" + {{/if}} + ) + {{/with}} + {{#with clientCredentials}} + client_credentials=security_schemes.TokenUrlOauthFlow( + token_url="{{tokenUrl}}", + scopes={ + {{#each scopes}} + "{{@key}}": "{{this}}", + {{/each}} + }, + {{#if refreshUrl}} + refresh_url="{{refreshUrl}}", + {{/if}} + ) + {{/with}} + {{#with authorizationCode}} + authorization_code=security_schemes.AuthorizationCodeOauthFlow( + authorization_url="{{authorizationUrl}}", + token_url="{{tokenUrl}}", + scopes={ + {{#each scopes}} + "{{@key}}": "{{this}}", + {{/each}} + }, + {{#if refreshUrl}} + refresh_url="{{refreshUrl}}" + {{/if}} + ) + {{/with}} + {{/with}} + ) +} + {{else}} + {{#eq type "openIdConnect"}} +@dataclasses.dataclass +class {{jsonPathPiece.pascalCase}}(security_schemes.OpenIdConnectSecurityScheme): + {{#if description}} + /* + {{description.original}} + */ + {{/if}} + openid_connect_url = "{{openIdConnectUrl}}" +} + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} + {{/if}} +{{/with}} diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs new file mode 100644 index 00000000000..050c1ccbdd0 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs @@ -0,0 +1,182 @@ +{{#with securityScheme}} + {{#if componentModule}} +{{packageName}}.components.security_schemes.{{jsonPathPiece.snakeCase}} + {{/if}} + {{#eq identifierPieces.size 0}} +{{> components/_helper_header_from_identifier_pieces identifierPieces=(append identifierPieces "SecurityScheme" jsonPathPiece) }} + {{/eq}} + {{#if description}} + +{{headerSize}}# Description +{{description.originalWithBr}} + {{/if}} + {{#if refInfo}} +| Ref Class | Description | +| --------- | ----------- | +| [{{refInfo.refClass}}](../../components/security_schemes/{{refInfo.refModule}}.{{refInfo.refClass}}.md#) |{{#with getDeepestRef}}{{#if description}} {{description.originalWithBr}}{{/if}}{{/with}} + {{else}} + +{{headerSize}}# Type + {{#eq type "apiKey"}} +security_schemes.SecuritySchemeType.API_KEY + +{{headerSize}}# Name +"{{name}}" + +{{headerSize}}# api_key +Type | Notes +---- | ------ +str | Set by the developer + +{{headerSize}}# In Location + {{#eq in "query"}} +security_schemes.ApiKeyInLocation.QUERY + {{else}} + {{#eq in "header"}} +security_schemes.ApiKeyInLocation.HEADER + {{else}} + {{#eq in "cookie"}} +security_schemes.ApiKeyInLocation.COOKIE + {{/eq}} + {{/eq}} + {{/eq}} + {{else}} + {{#eq type "http"}} +security_schemes.SecuritySchemeType.HTTP + {{#eq scheme "basic"}} + +{{headerSize}}# Scheme +security_schemes.HTTPSchemeType.BASIC + +{{headerSize}}# user_id +Type | Notes +---- | ------ +str | Set by the developer + +{{headerSize}}# password +Type | Notes +---- | ------ +str | Set by the developer + {{else}} + {{#eq scheme "bearer"}} + +{{headerSize}}# Scheme +security_schemes.HTTPSchemeType.BEARER + {{#if bearerFormat}} + +{{headerSize}}# Bearer Format +"{{bearerFormat}}" + {{/if}} + +{{headerSize}}# access_token +Type | Notes +---- | ------ +str | Set by the developer + {{else}} + {{#eq scheme "digest"}} + +{{headerSize}}# Scheme +security_schemes.HTTPSchemeType.DIGEST + {{else}} + {{#eq scheme "signature"}} + +{{headerSize}}# Scheme +security_schemes.HTTPSchemeType.SIGNATURE + +{{headerSize}}# signing_info +Type | Notes +---- | ------ +{{packageName}}.signing.HttpSigningConfiguration | Set by the developer + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} + {{else}} + {{#eq type "mutualTLS"}} +security_schemes.SecuritySchemeType.MUTUAL_TLS + {{else}} + {{#eq type "oauth2"}} +security_schemes.SecuritySchemeType.OAUTH_2 + +{{headerSize}}# Flows + {{#with flows}} + {{#with implicit}} +{{headerSize}}# Implicit Flow + {{#if refreshUrl}} +{{headerSize}}## Refresh Url +"{{refreshUrl}}" + {{/if}} +{{headerSize}}## Scopes +Scope Name | Scope Description +| -------- | ---------------- | + {{#each scopes}} +"{{@key}}" | {{this}} + {{/each}} +{{headerSize}}## Authorization Url +"{{authorizationUrl}}" + {{/with}} + {{#with password}} +{{headerSize}}# Password Flow + {{#if refreshUrl}} +{{headerSize}}## Refresh Url +"{{refreshUrl}}" + {{/if}} +{{headerSize}}## Scopes +Scope Name | Scope Description +| -------- | ---------------- | + {{#each scopes}} +"{{@key}}" | {{this}} + {{/each}} +{{headerSize}}## Token Url +"{{tokenUrl}}" + {{/with}} + {{#with clientCredentials}} +{{headerSize}}# ClientCredentials Flow + {{#if refreshUrl}} +{{headerSize}}## Refresh Url +"{{refreshUrl}}" + {{/if}} +{{headerSize}}## Scopes +Scope Name | Scope Description +| -------- | ---------------- | + {{#each scopes}} +"{{@key}}" | {{this}} + {{/each}} +{{headerSize}}## Token Url +"{{tokenUrl}}" + {{/with}} + {{#with authorizationCode}} +{{headerSize}}# AuthorizationCode Flow + {{#if refreshUrl}} +{{headerSize}}## Refresh Url +"{{refreshUrl}}" + {{/if}} +{{headerSize}}## Scopes +Scope Name | Scope Description +| -------- | ---------------- | + {{#each scopes}} +"{{@key}}" | {{this}} + {{/each}} +{{headerSize}}## Authorization Url +"{{authorizationUrl}}" +{{headerSize}}## Token Url +"{{tokenUrl}}" + {{/with}} + {{/with}} + {{else}} + {{#eq type "openIdConnect"}} +security_schemes.SecuritySchemeType.OPENID_CONNECT + +{{headerSize}}# OpenIdConnect Url +"{{openIdConnectUrl}}" + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} + {{#if componentModule}} + +[[Back to top]](#top) {{> _helper_footer_links readmePath="../../../" securitySchemesLink=true}} + {{/if}} + {{/if}} +{{/with}} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs index 2bd3008498a..9cca2f661fa 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/ApiKeySecurityScheme.hbs @@ -12,20 +12,12 @@ public class ApiKeySecurityScheme implements SecurityScheme { private final @Nullable String name; private final ApiKeyInLocation inLocation; - private ApiKeySecurityScheme(String apiKey, @Nullable String name, ApiKeyInLocation inLocation) { + protected ApiKeySecurityScheme(String apiKey, @Nullable String name, ApiKeyInLocation inLocation) { this.apiKey = apiKey; this.name = name; this.inLocation = inLocation; } - public static ApiKeySecurityScheme inCookie(String apiKey) { - return new ApiKeySecurityScheme(apiKey, null, ApiKeyInLocation.COOKIE); - } - - public static ApiKeySecurityScheme inHeader(String apiKey, String name) { - return new ApiKeySecurityScheme(apiKey, name, ApiKeyInLocation.HEADER); - } - @Override public void applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) { switch (inLocation) { diff --git a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs index c827d8a9120..1144b5d2a91 100644 --- a/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/securityschemes/HttpBearerSecurityScheme.hbs @@ -16,12 +16,12 @@ public class HttpBearerSecurityScheme implements SecurityScheme { https://www.rfc-editor.org/rfc/rfc7617.html */ - public HttpBearerSecurityScheme(String accessToken, @Nullable String bearerFormat) { + protected HttpBearerSecurityScheme(String accessToken, @Nullable String bearerFormat) { this.accessToken = accessToken; this.bearerFormat = bearerFormat; } - public HttpBearerSecurityScheme(String accessToken) { + protected HttpBearerSecurityScheme(String accessToken) { this.accessToken = accessToken; this.bearerFormat = null; } From b5b8fa837f9a28ac06bd1783a9ff0edadc86a5b8 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Fri, 26 Jan 2024 11:34:48 -0800 Subject: [PATCH 06/11] Improves apikey constructor --- .../components/securityschemes/apikey.java | 2 +- .../securityschemes/apikeyquery.java | 2 +- .../securityschemes/openidconnecttest.java | 1 - .../securityschemes/petstoreauth.java | 10 +-- .../securityschemes/SecurityScheme.hbs | 63 +------------------ 5 files changed, 6 insertions(+), 72 deletions(-) diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java index f1ee84be75b..510266fdbda 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java @@ -7,7 +7,7 @@ public class ApiKey extends ApiKeySecurityScheme { /* apiKey in header */ - public ApiKey(String apiKey, String name) { + public ApiKey(String apiKey) { super(apiKey, "api_key", ApiKeyInLocation.HEADER); } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java index ce9f900264f..c75c1f59841 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java @@ -7,7 +7,7 @@ public class ApiKeyQuery extends ApiKeySecurityScheme { /* apiKey in query */ - public ApiKeyQuery(String apiKey, String name) { + public ApiKeyQuery(String apiKey) { super(apiKey, "api_key_query", ApiKeyInLocation.QUERY); } } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java index ddf96a7d19c..0b967729205 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java @@ -7,5 +7,4 @@ class OpenIdConnectTest(security_schemes.OpenIdConnectSecurityScheme): /* openIdConnect */ - openid_connect_url = "https://somesite.com/.well-known/openid-configuration" } diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java index 4a7dd2c299e..686c008d1c1 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java @@ -6,13 +6,5 @@ public class PetstoreAuth extends OAuth2SecurityScheme { /* oauth2 implicit flow with two scopes */ - flows = security_schemes.OAuthFlows( - implicit=security_schemes.ImplicitOAuthFlow( - authorization_url="http://petstore.swagger.io/api/oauth/dialog", - scopes={ - "write:pets": "modify pets in your account", - "read:pets": "read your pets", - }, - ) - ) + // todo add flows info } diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs index 580a580d940..583e1c3ccb1 100644 --- a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs @@ -45,12 +45,12 @@ public class {{jsonPathPiece.pascalCase}} extends ApiKeySecurityScheme { */ {{/if}} {{#eq in "query"}} - public {{jsonPathPiece.pascalCase}}(String apiKey, String name) { + public {{jsonPathPiece.pascalCase}}(String apiKey) { super(apiKey, "{{{name}}}", ApiKeyInLocation.QUERY); } {{else}} {{#eq in "header"}} - public {{jsonPathPiece.pascalCase}}(String apiKey, String name) { + public {{jsonPathPiece.pascalCase}}(String apiKey) { super(apiKey, "{{{name}}}", ApiKeyInLocation.HEADER); } {{else}} @@ -99,63 +99,7 @@ public class {{jsonPathPiece.pascalCase}} extends OAuth2SecurityScheme { {{description.original}} */ {{/if}} - flows = security_schemes.OAuthFlows( - {{#with flows}} - {{#with implicit}} - implicit=security_schemes.ImplicitOAuthFlow( - authorization_url="{{authorizationUrl}}", - scopes={ - {{#each scopes}} - "{{@key}}": "{{this}}", - {{/each}} - }, - {{#if refreshUrl}} - refresh_url="{{refreshUrl}}" - {{/if}} - ) - {{/with}} - {{#with password}} - password=security_schemes.TokenUrlOauthFlow( - token_url="{{tokenUrl}}", - scopes={ - {{#each scopes}} - "{{@key}}": "{{this}}", - {{/each}} - }, - {{#if refreshUrl}} - refresh_url="{{refreshUrl}}" - {{/if}} - ) - {{/with}} - {{#with clientCredentials}} - client_credentials=security_schemes.TokenUrlOauthFlow( - token_url="{{tokenUrl}}", - scopes={ - {{#each scopes}} - "{{@key}}": "{{this}}", - {{/each}} - }, - {{#if refreshUrl}} - refresh_url="{{refreshUrl}}", - {{/if}} - ) - {{/with}} - {{#with authorizationCode}} - authorization_code=security_schemes.AuthorizationCodeOauthFlow( - authorization_url="{{authorizationUrl}}", - token_url="{{tokenUrl}}", - scopes={ - {{#each scopes}} - "{{@key}}": "{{this}}", - {{/each}} - }, - {{#if refreshUrl}} - refresh_url="{{refreshUrl}}" - {{/if}} - ) - {{/with}} - {{/with}} - ) + // todo add flows info } {{else}} {{#eq type "openIdConnect"}} @@ -166,7 +110,6 @@ class {{jsonPathPiece.pascalCase}}(security_schemes.OpenIdConnectSecurityScheme) {{description.original}} */ {{/if}} - openid_connect_url = "{{openIdConnectUrl}}" } {{/eq}} {{/eq}} From 46a9b56293df09f9927490489f0316e8650ffb49 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Fri, 26 Jan 2024 17:57:14 -0800 Subject: [PATCH 07/11] Fixes component schema filenames for java --- .../client/petstore/java/.openapi-generator/FILES | 14 +++++++------- .../securityschemes/{apikey.java => ApiKey.java} | 0 .../{apikeyquery.java => ApiKeyQuery.java} | 0 .../{bearertest.java => BearerTest.java} | 0 .../{httpbasictest.java => HttpBasicTest.java} | 0 ...tpsignaturetest.java => HttpSignatureTest.java} | 0 ...enidconnecttest.java => OpenIdConnectTest.java} | 0 .../{petstoreauth.java => PetstoreAuth.java} | 0 .../codegen/generators/JavaClientGenerator.java | 5 +++++ 9 files changed, 12 insertions(+), 7 deletions(-) rename samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/{apikey.java => ApiKey.java} (100%) rename samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/{apikeyquery.java => ApiKeyQuery.java} (100%) rename samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/{bearertest.java => BearerTest.java} (100%) rename samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/{httpbasictest.java => HttpBasicTest.java} (100%) rename samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/{httpsignaturetest.java => HttpSignatureTest.java} (100%) rename samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/{openidconnecttest.java => OpenIdConnectTest.java} (100%) rename samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/{petstoreauth.java => PetstoreAuth.java} (100%) diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index bff128a11d4..529b31698f6 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -466,13 +466,13 @@ src/main/java/org/openapijsonschematools/client/components/schemas/UUIDString.ja src/main/java/org/openapijsonschematools/client/components/schemas/User.java src/main/java/org/openapijsonschematools/client/components/schemas/Whale.java src/main/java/org/openapijsonschematools/client/components/schemas/Zebra.java -src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java -src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java -src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java -src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java -src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java -src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java -src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/ApiKey.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/ApiKeyQuery.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/BearerTest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/HttpBasicTest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/HttpSignatureTest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/OpenIdConnectTest.java +src/main/java/org/openapijsonschematools/client/components/securityschemes/PetstoreAuth.java src/main/java/org/openapijsonschematools/client/configurations/ApiConfiguration.java src/main/java/org/openapijsonschematools/client/configurations/JsonSchemaKeywordFlags.java src/main/java/org/openapijsonschematools/client/configurations/SchemaConfiguration.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/ApiKey.java similarity index 100% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikey.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/ApiKey.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/ApiKeyQuery.java similarity index 100% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/apikeyquery.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/ApiKeyQuery.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/BearerTest.java similarity index 100% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/bearertest.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/BearerTest.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/HttpBasicTest.java similarity index 100% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpbasictest.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/HttpBasicTest.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/HttpSignatureTest.java similarity index 100% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/httpsignaturetest.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/HttpSignatureTest.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/OpenIdConnectTest.java similarity index 100% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/openidconnecttest.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/OpenIdConnectTest.java diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/PetstoreAuth.java similarity index 100% rename from samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/petstoreauth.java rename to samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/PetstoreAuth.java diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index 1ceedd5bb29..eab8909ab45 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -785,6 +785,11 @@ public String toModelFilename(String name, String jsonPath) { return toModelName(name, jsonPath); } + @Override + public String toSecuritySchemeFilename(String basename, String jsonPath) { + return toModelName(basename, jsonPath); + } + @Override public String toResponseModuleName(String componentName, String jsonPath) { if (jsonPath.startsWith("#/components/responses/")) { From 3bc5928e37110147efcd8ba7ba5e9e5699d7b00a Mon Sep 17 00:00:00 2001 From: Justin Black Date: Fri, 26 Jan 2024 18:08:35 -0800 Subject: [PATCH 08/11] Adds readme links to nonexistent component security scheme docs --- samples/client/petstore/java/README.md | 12 ++++++++++++ src/main/resources/java/README.hbs | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/samples/client/petstore/java/README.md b/samples/client/petstore/java/README.md index 02018cd771c..e6e116b8e7f 100644 --- a/samples/client/petstore/java/README.md +++ b/samples/client/petstore/java/README.md @@ -298,3 +298,15 @@ allowed input and output types. | [Mammal.Mammal1](docs/components/schemas/Mammal.md#mammal1) | | | [Whale.Whale1](docs/components/schemas/Whale.md#whale1) | | | [Zebra.Zebra1](docs/components/schemas/Zebra.md#zebra1) | | + +## Component SecuritySchemes + +| Class | Description | +| ----- | ----------- | +| [ApiKey](docs/components/securitysschemes/ApiKey.md) | apiKey in header | +| [ApiKeyQuery](docs/components/securitysschemes/ApiKeyQuery.md) | apiKey in query | +| [BearerTest](docs/components/securitysschemes/BearerTest.md) | http bearer with JWT bearer format | +| [HttpBasicTest](docs/components/securitysschemes/HttpBasicTest.md) | http basic | +| [HttpSignatureTest](docs/components/securitysschemes/HttpSignatureTest.md) | http + signature | +| [OpenIdConnectTest](docs/components/securitysschemes/OpenIdConnectTest.md) | openIdConnect | +| [PetstoreAuth](docs/components/securitysschemes/PetstoreAuth.md) | oauth2 implicit flow with two scopes | diff --git a/src/main/resources/java/README.hbs b/src/main/resources/java/README.hbs index 8dbee186824..cc93abcc6ff 100644 --- a/src/main/resources/java/README.hbs +++ b/src/main/resources/java/README.hbs @@ -173,6 +173,18 @@ allowed input and output types. {{/with}} {{/each}} {{/if}} +{{#if securitySchemes}} + +## Component SecuritySchemes + +| Class | Description | +| ----- | ----------- | + {{#each securitySchemes}} + {{#with this}} +| [{{jsonPathPiece.pascalCase}}](docs/components/securitysschemes/{{jsonPathPiece.snakeCase}}.md) |{{#if description}} {{description.originalWithBr}}{{/if}} | + {{/with}} + {{/each}} +{{/if}} {{#if infoEmail}} ## Author From f88b4fc47a6f295731198c73c01fc780f2226183 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Fri, 26 Jan 2024 18:28:23 -0800 Subject: [PATCH 09/11] Adds component security scheme docs --- .../petstore/java/.openapi-generator/FILES | 7 ++ samples/client/petstore/java/README.md | 12 +-- .../docs/components/securityschemes/ApiKey.md | 21 +++++ .../components/securityschemes/ApiKeyQuery.md | 21 +++++ .../components/securityschemes/BearerTest.md | 21 +++++ .../securityschemes/HttpBasicTest.md | 23 +++++ .../securityschemes/HttpSignatureTest.md | 18 ++++ .../securityschemes/OpenIdConnectTest.md | 13 +++ .../securityschemes/PetstoreAuth.md | 10 ++ .../generators/JavaClientGenerator.java | 6 ++ src/main/resources/java/README.hbs | 2 +- .../securityschemes/SecurityScheme_doc.hbs | 94 +++---------------- 12 files changed, 161 insertions(+), 87 deletions(-) create mode 100644 samples/client/petstore/java/docs/components/securityschemes/ApiKey.md create mode 100644 samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md create mode 100644 samples/client/petstore/java/docs/components/securityschemes/BearerTest.md create mode 100644 samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md create mode 100644 samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md create mode 100644 samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md create mode 100644 samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md diff --git a/samples/client/petstore/java/.openapi-generator/FILES b/samples/client/petstore/java/.openapi-generator/FILES index 529b31698f6..10c50e03123 100644 --- a/samples/client/petstore/java/.openapi-generator/FILES +++ b/samples/client/petstore/java/.openapi-generator/FILES @@ -156,6 +156,13 @@ docs/components/schemas/UUIDString.md docs/components/schemas/User.md docs/components/schemas/Whale.md docs/components/schemas/Zebra.md +docs/components/securityschemes/ApiKey.md +docs/components/securityschemes/ApiKeyQuery.md +docs/components/securityschemes/BearerTest.md +docs/components/securityschemes/HttpBasicTest.md +docs/components/securityschemes/HttpSignatureTest.md +docs/components/securityschemes/OpenIdConnectTest.md +docs/components/securityschemes/PetstoreAuth.md docs/paths/anotherfakedummy/patch/responses/response200/content/applicationjson/Schema.md docs/paths/commonparamsubdir/delete/parameters/parameter0/Schema0.md docs/paths/commonparamsubdir/delete/parameters/parameter1/Schema1.md diff --git a/samples/client/petstore/java/README.md b/samples/client/petstore/java/README.md index e6e116b8e7f..b958d4310b8 100644 --- a/samples/client/petstore/java/README.md +++ b/samples/client/petstore/java/README.md @@ -303,10 +303,10 @@ allowed input and output types. | Class | Description | | ----- | ----------- | -| [ApiKey](docs/components/securitysschemes/ApiKey.md) | apiKey in header | -| [ApiKeyQuery](docs/components/securitysschemes/ApiKeyQuery.md) | apiKey in query | -| [BearerTest](docs/components/securitysschemes/BearerTest.md) | http bearer with JWT bearer format | +| [ApiKey](docs/components/securityschemes/ApiKey.md) | apiKey in header | +| [ApiKeyQuery](docs/components/securityschemes/ApiKeyQuery.md) | apiKey in query | +| [BearerTest](docs/components/securityschemes/BearerTest.md) | http bearer with JWT bearer format | | [HttpBasicTest](docs/components/securitysschemes/HttpBasicTest.md) | http basic | -| [HttpSignatureTest](docs/components/securitysschemes/HttpSignatureTest.md) | http + signature | -| [OpenIdConnectTest](docs/components/securitysschemes/OpenIdConnectTest.md) | openIdConnect | -| [PetstoreAuth](docs/components/securitysschemes/PetstoreAuth.md) | oauth2 implicit flow with two scopes | +| [HttpSignatureTest](docs/components/securityschemes/HttpSignatureTest.md) | http + signature | +| [OpenIdConnectTest](docs/components/securityschemes/OpenIdConnectTest.md) | openIdConnect | +| [PetstoreAuth](docs/components/securityschemes/PetstoreAuth.md) | oauth2 implicit flow with two scopes | diff --git a/samples/client/petstore/java/docs/components/securityschemes/ApiKey.md b/samples/client/petstore/java/docs/components/securityschemes/ApiKey.md new file mode 100644 index 00000000000..0714bdbd978 --- /dev/null +++ b/samples/client/petstore/java/docs/components/securityschemes/ApiKey.md @@ -0,0 +1,21 @@ +org.openapijsonschematools.client.components.security_schemes.ApiKey +# SecurityScheme ApiKey + +## Description +apiKey in header + +## Type +API_KEY + +## Name +"api_key" + +## api_key +Type | Notes +---- | ------ +str | Set by the developer + +## In Location +ApiKeyInLocation.HEADER + +[[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md b/samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md new file mode 100644 index 00000000000..03ee485c4ea --- /dev/null +++ b/samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md @@ -0,0 +1,21 @@ +org.openapijsonschematools.client.components.security_schemes.ApiKeyQuery +# SecurityScheme ApiKeyQuery + +## Description +apiKey in query + +## Type +API_KEY + +## Name +"api_key_query" + +## api_key +Type | Notes +---- | ------ +str | Set by the developer + +## In Location +ApiKeyInLocation.QUERY + +[[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/BearerTest.md b/samples/client/petstore/java/docs/components/securityschemes/BearerTest.md new file mode 100644 index 00000000000..d215ba5ec2b --- /dev/null +++ b/samples/client/petstore/java/docs/components/securityschemes/BearerTest.md @@ -0,0 +1,21 @@ +org.openapijsonschematools.client.components.security_schemes.BearerTest +# SecurityScheme BearerTest + +## Description +http bearer with JWT bearer format + +## Type +HTTP + +## Scheme +BEARER + +## Bearer Format +"JWT" + +## access_token +Type | Notes +---- | ------ +str | Set by the developer + +[[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md b/samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md new file mode 100644 index 00000000000..4c3f5d621d9 --- /dev/null +++ b/samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md @@ -0,0 +1,23 @@ +org.openapijsonschematools.client.components.security_schemes.HttpBasicTest +# SecurityScheme HttpBasicTest + +## Description +http basic + +## Type +HTTP + +## Scheme +BASIC + +## user_id +Type | Notes +---- | ------ +str | Set by the developer + +## password +Type | Notes +---- | ------ +str | Set by the developer + +[[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md b/samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md new file mode 100644 index 00000000000..5f47f71eeff --- /dev/null +++ b/samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md @@ -0,0 +1,18 @@ +org.openapijsonschematools.client.components.security_schemes.HttpSignatureTest +# SecurityScheme HttpSignatureTest + +## Description +http + signature + +## Type +HTTP + +## Scheme +SIGNATURE + +## signing_info +Type | Notes +---- | ------ +org.openapijsonschematools.client.signing.HttpSigningConfiguration | Set by the developer + +[[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md b/samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md new file mode 100644 index 00000000000..d096682849c --- /dev/null +++ b/samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md @@ -0,0 +1,13 @@ +org.openapijsonschematools.client.components.security_schemes.OpenIdConnectTest +# SecurityScheme OpenIdConnectTest + +## Description +openIdConnect + +## Type +OPENID_CONNECT + +## OpenIdConnect Url +"https://somesite.com/.well-known/openid-configuration" + +[[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md b/samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md new file mode 100644 index 00000000000..f9279372c38 --- /dev/null +++ b/samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md @@ -0,0 +1,10 @@ +org.openapijsonschematools.client.components.security_schemes.PetstoreAuth +# SecurityScheme PetstoreAuth + +## Description +oauth2 implicit flow with two scopes + +## Type +OAUTH_2 + +[[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index eab8909ab45..7a6abd62029 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -2413,6 +2413,12 @@ public void setOpenAPI(OpenAPI openAPI) { put("src/main/java/packagename/components/securityschemes/SecurityScheme.hbs", ".java"); }} ); + jsonPathDocTemplateFiles.put( + CodegenConstants.JSON_PATH_LOCATION_TYPE.SECURITY_SCHEME, + new HashMap<>() {{ + put("src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs", ".md"); + }} + ); } List servers = openAPI.getServers(); if (servers != null && !servers.isEmpty()) { diff --git a/src/main/resources/java/README.hbs b/src/main/resources/java/README.hbs index cc93abcc6ff..5ecb8415274 100644 --- a/src/main/resources/java/README.hbs +++ b/src/main/resources/java/README.hbs @@ -181,7 +181,7 @@ allowed input and output types. | ----- | ----------- | {{#each securitySchemes}} {{#with this}} -| [{{jsonPathPiece.pascalCase}}](docs/components/securitysschemes/{{jsonPathPiece.snakeCase}}.md) |{{#if description}} {{description.originalWithBr}}{{/if}} | +| [{{jsonPathPiece.pascalCase}}](docs/components/securityschemes/{{jsonPathPiece.snakeCase}}.md) |{{#if description}} {{description.originalWithBr}}{{/if}} | {{/with}} {{/each}} {{/if}} diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs index 050c1ccbdd0..652e18c0b94 100644 --- a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs @@ -3,7 +3,7 @@ {{packageName}}.components.security_schemes.{{jsonPathPiece.snakeCase}} {{/if}} {{#eq identifierPieces.size 0}} -{{> components/_helper_header_from_identifier_pieces identifierPieces=(append identifierPieces "SecurityScheme" jsonPathPiece) }} +{{> src/main/java/packagename/components/_helper_header_from_identifier_pieces identifierPieces=(append identifierPieces "SecurityScheme" jsonPathPiece) }} {{/eq}} {{#if description}} @@ -18,7 +18,7 @@ {{headerSize}}# Type {{#eq type "apiKey"}} -security_schemes.SecuritySchemeType.API_KEY +API_KEY {{headerSize}}# Name "{{name}}" @@ -30,23 +30,23 @@ str | Set by the developer {{headerSize}}# In Location {{#eq in "query"}} -security_schemes.ApiKeyInLocation.QUERY +ApiKeyInLocation.QUERY {{else}} {{#eq in "header"}} -security_schemes.ApiKeyInLocation.HEADER +ApiKeyInLocation.HEADER {{else}} {{#eq in "cookie"}} -security_schemes.ApiKeyInLocation.COOKIE +ApiKeyInLocation.COOKIE {{/eq}} {{/eq}} {{/eq}} {{else}} {{#eq type "http"}} -security_schemes.SecuritySchemeType.HTTP +HTTP {{#eq scheme "basic"}} {{headerSize}}# Scheme -security_schemes.HTTPSchemeType.BASIC +BASIC {{headerSize}}# user_id Type | Notes @@ -61,7 +61,7 @@ str | Set by the developer {{#eq scheme "bearer"}} {{headerSize}}# Scheme -security_schemes.HTTPSchemeType.BEARER +BEARER {{#if bearerFormat}} {{headerSize}}# Bearer Format @@ -76,12 +76,12 @@ str | Set by the developer {{#eq scheme "digest"}} {{headerSize}}# Scheme -security_schemes.HTTPSchemeType.DIGEST +DIGEST {{else}} {{#eq scheme "signature"}} {{headerSize}}# Scheme -security_schemes.HTTPSchemeType.SIGNATURE +SIGNATURE {{headerSize}}# signing_info Type | Notes @@ -93,79 +93,13 @@ Type | Notes {{/eq}} {{else}} {{#eq type "mutualTLS"}} -security_schemes.SecuritySchemeType.MUTUAL_TLS +MUTUAL_TLS {{else}} {{#eq type "oauth2"}} -security_schemes.SecuritySchemeType.OAUTH_2 - -{{headerSize}}# Flows - {{#with flows}} - {{#with implicit}} -{{headerSize}}# Implicit Flow - {{#if refreshUrl}} -{{headerSize}}## Refresh Url -"{{refreshUrl}}" - {{/if}} -{{headerSize}}## Scopes -Scope Name | Scope Description -| -------- | ---------------- | - {{#each scopes}} -"{{@key}}" | {{this}} - {{/each}} -{{headerSize}}## Authorization Url -"{{authorizationUrl}}" - {{/with}} - {{#with password}} -{{headerSize}}# Password Flow - {{#if refreshUrl}} -{{headerSize}}## Refresh Url -"{{refreshUrl}}" - {{/if}} -{{headerSize}}## Scopes -Scope Name | Scope Description -| -------- | ---------------- | - {{#each scopes}} -"{{@key}}" | {{this}} - {{/each}} -{{headerSize}}## Token Url -"{{tokenUrl}}" - {{/with}} - {{#with clientCredentials}} -{{headerSize}}# ClientCredentials Flow - {{#if refreshUrl}} -{{headerSize}}## Refresh Url -"{{refreshUrl}}" - {{/if}} -{{headerSize}}## Scopes -Scope Name | Scope Description -| -------- | ---------------- | - {{#each scopes}} -"{{@key}}" | {{this}} - {{/each}} -{{headerSize}}## Token Url -"{{tokenUrl}}" - {{/with}} - {{#with authorizationCode}} -{{headerSize}}# AuthorizationCode Flow - {{#if refreshUrl}} -{{headerSize}}## Refresh Url -"{{refreshUrl}}" - {{/if}} -{{headerSize}}## Scopes -Scope Name | Scope Description -| -------- | ---------------- | - {{#each scopes}} -"{{@key}}" | {{this}} - {{/each}} -{{headerSize}}## Authorization Url -"{{authorizationUrl}}" -{{headerSize}}## Token Url -"{{tokenUrl}}" - {{/with}} - {{/with}} +OAUTH_2 {{else}} {{#eq type "openIdConnect"}} -security_schemes.SecuritySchemeType.OPENID_CONNECT +OPENID_CONNECT {{headerSize}}# OpenIdConnect Url "{{openIdConnectUrl}}" @@ -178,5 +112,5 @@ security_schemes.SecuritySchemeType.OPENID_CONNECT [[Back to top]](#top) {{> _helper_footer_links readmePath="../../../" securitySchemesLink=true}} {{/if}} - {{/if}} + {{/if} {{/with}} \ No newline at end of file From cc93f6fdebae2e0ae4b06585c353811f350fcdc9 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Sat, 27 Jan 2024 17:44:29 -0800 Subject: [PATCH 10/11] Samples regen --- docs/generators/java.md | 8 +- samples/client/petstore/java/README.md | 2 +- .../docs/components/securityschemes/ApiKey.md | 27 ++-- .../components/securityschemes/ApiKeyQuery.md | 27 ++-- .../components/securityschemes/BearerTest.md | 27 ++-- .../securityschemes/HttpBasicTest.md | 29 +++-- .../securityschemes/HttpSignatureTest.md | 26 ++-- .../securityschemes/OpenIdConnectTest.md | 21 +++- .../securityschemes/PetstoreAuth.md | 20 ++- .../generators/JavaClientGenerator.java | 9 +- .../securityschemes/SecurityScheme_doc.hbs | 118 +++++++++--------- .../securityschemes/_doc_descMethods.hbs | 11 ++ 12 files changed, 183 insertions(+), 142 deletions(-) create mode 100644 src/main/resources/java/src/main/java/packagename/components/securityschemes/_doc_descMethods.hbs diff --git a/docs/generators/java.md b/docs/generators/java.md index 68305bdbaa9..f89b43aea16 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -183,7 +183,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |examples|✗|OAS3 |requestBodies|✗|OAS3 |headers|✗|OAS3 -|securitySchemes|✗|OAS3 +|securitySchemes|✓|OAS3 |links|✗|OAS3 |callbacks|✗|OAS3 |pathItems|✗|OAS3 @@ -320,10 +320,10 @@ These options may be applied as additional-properties (cli) or configOptions (pl ### Security Feature | Name | Supported | Defined By | | ---- | --------- | ---------- | -|HTTP_Basic|✗|OAS2,OAS3 -|ApiKey|✗|OAS2,OAS3 +|HTTP_Basic|✓|OAS2,OAS3 +|ApiKey|✓|OAS2,OAS3 |OpenIDConnect|✗|OAS3 -|HTTP_Bearer|✗|OAS2,OAS3 +|HTTP_Bearer|✓|OAS2,OAS3 |OAuth2_Implicit|✗|OAS2,OAS3 |OAuth2_Password|✗|OAS2,OAS3 |OAuth2_ClientCredentials|✗|OAS2,OAS3 diff --git a/samples/client/petstore/java/README.md b/samples/client/petstore/java/README.md index b958d4310b8..461fa0f14fb 100644 --- a/samples/client/petstore/java/README.md +++ b/samples/client/petstore/java/README.md @@ -306,7 +306,7 @@ allowed input and output types. | [ApiKey](docs/components/securityschemes/ApiKey.md) | apiKey in header | | [ApiKeyQuery](docs/components/securityschemes/ApiKeyQuery.md) | apiKey in query | | [BearerTest](docs/components/securityschemes/BearerTest.md) | http bearer with JWT bearer format | -| [HttpBasicTest](docs/components/securitysschemes/HttpBasicTest.md) | http basic | +| [HttpBasicTest](docs/components/securityschemes/HttpBasicTest.md) | http basic | | [HttpSignatureTest](docs/components/securityschemes/HttpSignatureTest.md) | http + signature | | [OpenIdConnectTest](docs/components/securityschemes/OpenIdConnectTest.md) | openIdConnect | | [PetstoreAuth](docs/components/securityschemes/PetstoreAuth.md) | oauth2 implicit flow with two scopes | diff --git a/samples/client/petstore/java/docs/components/securityschemes/ApiKey.md b/samples/client/petstore/java/docs/components/securityschemes/ApiKey.md index 0714bdbd978..538c889758d 100644 --- a/samples/client/petstore/java/docs/components/securityschemes/ApiKey.md +++ b/samples/client/petstore/java/docs/components/securityschemes/ApiKey.md @@ -1,21 +1,22 @@ -org.openapijsonschematools.client.components.security_schemes.ApiKey +org.openapijsonschematools.client.components.securityschemes.ApiKey # SecurityScheme ApiKey -## Description -apiKey in header +public class ApiKey +extends ApiKeySecurityScheme -## Type -API_KEY +A class that is used to apply auth to a request -## Name -"api_key" +### Description +apiKey in header -## api_key -Type | Notes ----- | ------ -str | Set by the developer +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | -## In Location -ApiKeyInLocation.HEADER +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| ApiKey(String apiKey)
for header apiKey auth | [[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md b/samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md index 03ee485c4ea..84abfb73118 100644 --- a/samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md +++ b/samples/client/petstore/java/docs/components/securityschemes/ApiKeyQuery.md @@ -1,21 +1,22 @@ -org.openapijsonschematools.client.components.security_schemes.ApiKeyQuery +org.openapijsonschematools.client.components.securityschemes.ApiKeyQuery # SecurityScheme ApiKeyQuery -## Description -apiKey in query +public class ApiKeyQuery +extends ApiKeySecurityScheme -## Type -API_KEY +A class that is used to apply auth to a request -## Name -"api_key_query" +### Description +apiKey in query -## api_key -Type | Notes ----- | ------ -str | Set by the developer +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | -## In Location -ApiKeyInLocation.QUERY +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| ApiKeyQuery(String apiKey)
for query apiKey auth | [[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/BearerTest.md b/samples/client/petstore/java/docs/components/securityschemes/BearerTest.md index d215ba5ec2b..9ef82278136 100644 --- a/samples/client/petstore/java/docs/components/securityschemes/BearerTest.md +++ b/samples/client/petstore/java/docs/components/securityschemes/BearerTest.md @@ -1,21 +1,22 @@ -org.openapijsonschematools.client.components.security_schemes.BearerTest +org.openapijsonschematools.client.components.securityschemes.BearerTest # SecurityScheme BearerTest -## Description -http bearer with JWT bearer format +public class BearerTest +extends HttpBearerSecurityScheme -## Type -HTTP +A class that is used to apply auth to a request -## Scheme -BEARER +### Description +http bearer with JWT bearer format -## Bearer Format -"JWT" +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | -## access_token -Type | Notes ----- | ------ -str | Set by the developer +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| BearerTest(String accessToken) | [[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md b/samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md index 4c3f5d621d9..7e269daf174 100644 --- a/samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md +++ b/samples/client/petstore/java/docs/components/securityschemes/HttpBasicTest.md @@ -1,23 +1,22 @@ -org.openapijsonschematools.client.components.security_schemes.HttpBasicTest +org.openapijsonschematools.client.components.securityschemes.HttpBasicTest # SecurityScheme HttpBasicTest -## Description -http basic +public class HttpBasicTest +extends HttpBasicSecurityScheme -## Type -HTTP +A class that is used to apply auth to a request -## Scheme -BASIC +### Description +http basic -## user_id -Type | Notes ----- | ------ -str | Set by the developer +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | -## password -Type | Notes ----- | ------ -str | Set by the developer +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| HttpBasicTest(String userId, String password) | [[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md b/samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md index 5f47f71eeff..3cb84ab41be 100644 --- a/samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md +++ b/samples/client/petstore/java/docs/components/securityschemes/HttpSignatureTest.md @@ -1,18 +1,22 @@ -org.openapijsonschematools.client.components.security_schemes.HttpSignatureTest +org.openapijsonschematools.client.components.securityschemes.HttpSignatureTest # SecurityScheme HttpSignatureTest -## Description -http + signature +public class HttpSignatureTest +extends HttpSignatureSecurityScheme + +A class that is used to apply auth to a request -## Type -HTTP +### Description +http + signature -## Scheme -SIGNATURE +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | -## signing_info -Type | Notes ----- | ------ -org.openapijsonschematools.client.signing.HttpSigningConfiguration | Set by the developer +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| todo | [[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md b/samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md index d096682849c..4221999cfc5 100644 --- a/samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md +++ b/samples/client/petstore/java/docs/components/securityschemes/OpenIdConnectTest.md @@ -1,13 +1,22 @@ -org.openapijsonschematools.client.components.security_schemes.OpenIdConnectTest +org.openapijsonschematools.client.components.securityschemes.OpenIdConnectTest # SecurityScheme OpenIdConnectTest -## Description +public class OpenIdConnectTest +extends OpenIdConnectSecurityScheme + +A class that is used to apply auth to a request + +### Description openIdConnect -## Type -OPENID_CONNECT +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | -## OpenIdConnect Url -"https://somesite.com/.well-known/openid-configuration" +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| todo | [[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md b/samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md index f9279372c38..f50a6617361 100644 --- a/samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md +++ b/samples/client/petstore/java/docs/components/securityschemes/PetstoreAuth.md @@ -1,10 +1,22 @@ -org.openapijsonschematools.client.components.security_schemes.PetstoreAuth +org.openapijsonschematools.client.components.securityschemes.PetstoreAuth # SecurityScheme PetstoreAuth -## Description +public class PetstoreAuth +extends Oauth2SecurityScheme + +A class that is used to apply auth to a request + +### Description oauth2 implicit flow with two scopes -## Type -OAUTH_2 +### Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | + +### Constructor Summary +| Constructor and Description | +| --------------------------- | +| todo | [[Back to top]](#top) [[Back to Component Security Schemes]](../../../README.md#Component-SecuritySchemes) [[Back to README]](../../../README.md) diff --git a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java index 7a6abd62029..5e4cd6b7c23 100644 --- a/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java +++ b/src/main/java/org/openapijsonschematools/codegen/generators/JavaClientGenerator.java @@ -35,6 +35,7 @@ import org.openapijsonschematools.codegen.generators.generatormetadata.features.SchemaFeature; import org.openapijsonschematools.codegen.common.CodegenConstants; import org.openapijsonschematools.codegen.generators.generatormetadata.GeneratorType; +import org.openapijsonschematools.codegen.generators.generatormetadata.features.SecurityFeature; import org.openapijsonschematools.codegen.generators.models.CliOption; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenHeader; import org.openapijsonschematools.codegen.generators.openapimodels.CodegenKey; @@ -281,7 +282,13 @@ public JavaClientGenerator() { GlobalFeature.Servers ) .includeComponentsFeatures( - ComponentsFeature.schemas + ComponentsFeature.schemas, + ComponentsFeature.securitySchemes + ) + .includeSecurityFeatures( + SecurityFeature.ApiKey, + SecurityFeature.HTTP_Basic, + SecurityFeature.HTTP_Bearer ) .includeSchemaFeatures( SchemaFeature.AdditionalProperties, diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs index 652e18c0b94..e64665d75f8 100644 --- a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme_doc.hbs @@ -1,108 +1,104 @@ {{#with securityScheme}} {{#if componentModule}} -{{packageName}}.components.security_schemes.{{jsonPathPiece.snakeCase}} +{{packageName}}.components.securityschemes.{{jsonPathPiece.snakeCase}} {{/if}} {{#eq identifierPieces.size 0}} {{> src/main/java/packagename/components/_helper_header_from_identifier_pieces identifierPieces=(append identifierPieces "SecurityScheme" jsonPathPiece) }} {{/eq}} - {{#if description}} - -{{headerSize}}# Description -{{description.originalWithBr}} - {{/if}} {{#if refInfo}} | Ref Class | Description | | --------- | ----------- | | [{{refInfo.refClass}}](../../components/security_schemes/{{refInfo.refModule}}.{{refInfo.refClass}}.md#) |{{#with getDeepestRef}}{{#if description}} {{description.originalWithBr}}{{/if}}{{/with}} {{else}} -{{headerSize}}# Type +public class {{containerJsonPathPiece.pascalCase}} {{jsonPathPiece.pascalCase}} {{#eq type "apiKey"}} -API_KEY +extends ApiKeySecurityScheme -{{headerSize}}# Name -"{{name}}" +{{> src/main/java/packagename/components/securityschemes/_doc_descMethods }} -{{headerSize}}# api_key -Type | Notes ----- | ------ -str | Set by the developer - -{{headerSize}}# In Location +{{headerSize}}## Constructor Summary +| Constructor and Description | +| --------------------------- | {{#eq in "query"}} -ApiKeyInLocation.QUERY +| {{jsonPathPiece.pascalCase}}(String apiKey)
for query apiKey auth | {{else}} {{#eq in "header"}} -ApiKeyInLocation.HEADER +| {{jsonPathPiece.pascalCase}}(String apiKey)
for header apiKey auth | {{else}} {{#eq in "cookie"}} -ApiKeyInLocation.COOKIE +| {{jsonPathPiece.pascalCase}}(String apiKey)
for cookie apiKey auth | {{/eq}} {{/eq}} {{/eq}} {{else}} {{#eq type "http"}} -HTTP {{#eq scheme "basic"}} - -{{headerSize}}# Scheme -BASIC - -{{headerSize}}# user_id -Type | Notes ----- | ------ -str | Set by the developer - -{{headerSize}}# password -Type | Notes ----- | ------ -str | Set by the developer +extends HttpBasicSecurityScheme {{else}} {{#eq scheme "bearer"}} - -{{headerSize}}# Scheme -BEARER - {{#if bearerFormat}} - -{{headerSize}}# Bearer Format -"{{bearerFormat}}" - {{/if}} - -{{headerSize}}# access_token -Type | Notes ----- | ------ -str | Set by the developer +extends HttpBearerSecurityScheme {{else}} {{#eq scheme "digest"}} - -{{headerSize}}# Scheme -DIGEST +extends HttpDigestSecurityScheme {{else}} {{#eq scheme "signature"}} +extends HttpSignatureSecurityScheme + {{/eq}} + {{/eq}} + {{/eq}} + {{/eq}} -{{headerSize}}# Scheme -SIGNATURE +{{> src/main/java/packagename/components/securityschemes/_doc_descMethods }} -{{headerSize}}# signing_info -Type | Notes ----- | ------ -{{packageName}}.signing.HttpSigningConfiguration | Set by the developer +{{headerSize}}## Constructor Summary +| Constructor and Description | +| --------------------------- | + {{#eq scheme "basic"}} +| {{jsonPathPiece.pascalCase}}(String userId, String password) | + {{else}} + {{#eq scheme "bearer"}} +| {{jsonPathPiece.pascalCase}}(String accessToken) | + {{else}} + {{#eq scheme "digest"}} +| todo | + {{else}} + {{#eq scheme "signature"}} +| todo | {{/eq}} {{/eq}} {{/eq}} {{/eq}} {{else}} {{#eq type "mutualTLS"}} -MUTUAL_TLS +extends MutualTlsSecurityScheme + +{{> src/main/java/packagename/components/securityschemes/_doc_descMethods }} + +{{headerSize}}## Constructor Summary +| Constructor and Description | +| --------------------------- | +| todo | {{else}} {{#eq type "oauth2"}} -OAUTH_2 +extends Oauth2SecurityScheme + +{{> src/main/java/packagename/components/securityschemes/_doc_descMethods }} + +{{headerSize}}## Constructor Summary +| Constructor and Description | +| --------------------------- | +| todo | {{else}} {{#eq type "openIdConnect"}} -OPENID_CONNECT +extends OpenIdConnectSecurityScheme + +{{> src/main/java/packagename/components/securityschemes/_doc_descMethods }} -{{headerSize}}# OpenIdConnect Url -"{{openIdConnectUrl}}" +{{headerSize}}## Constructor Summary +| Constructor and Description | +| --------------------------- | +| todo | {{/eq}} {{/eq}} {{/eq}} @@ -112,5 +108,5 @@ OPENID_CONNECT [[Back to top]](#top) {{> _helper_footer_links readmePath="../../../" securitySchemesLink=true}} {{/if}} - {{/if} + {{/if}} {{/with}} \ No newline at end of file diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/_doc_descMethods.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/_doc_descMethods.hbs new file mode 100644 index 00000000000..1c8e6fdae62 --- /dev/null +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/_doc_descMethods.hbs @@ -0,0 +1,11 @@ +A class that is used to apply auth to a request +{{#if description}} + +{{headerSize}}## Description +{{description.originalWithBr}} +{{/if}} + +{{headerSize}}## Method Summary +| Modifier and Type | Method and Description | +| ----------------- | ---------------------- | +| void | applyAuth(Map> headers, String resourcePath, String method, HttpRequest.BodyPublisher bodyPublisher, @Nullable String queryParamsSuffix, List scopeNames) | From 30d8205ce1c86d514c5e952ec9c12fb899ecf412 Mon Sep 17 00:00:00 2001 From: Justin Black Date: Sat, 27 Jan 2024 18:00:25 -0800 Subject: [PATCH 11/11] Fixes java typos --- .../client/components/securityschemes/OpenIdConnectTest.java | 3 +-- .../client/components/securityschemes/PetstoreAuth.java | 2 +- .../components/securityschemes/SecurityScheme.hbs | 5 ++--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/OpenIdConnectTest.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/OpenIdConnectTest.java index 0b967729205..204c2c47cab 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/OpenIdConnectTest.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/OpenIdConnectTest.java @@ -2,8 +2,7 @@ import org.openapijsonschematools.client.securityschemes.OpenIdConnectSecurityScheme; -@dataclasses.dataclass -class OpenIdConnectTest(security_schemes.OpenIdConnectSecurityScheme): +public class OpenIdConnectTest extends OpenIdConnectSecurityScheme { /* openIdConnect */ diff --git a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/PetstoreAuth.java b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/PetstoreAuth.java index 686c008d1c1..ad84bd017f6 100644 --- a/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/PetstoreAuth.java +++ b/samples/client/petstore/java/src/main/java/org/openapijsonschematools/client/components/securityschemes/PetstoreAuth.java @@ -1,6 +1,6 @@ package org.openapijsonschematools.client.components.securityschemes; -import org.openapijsonschematools.client.securityschemes.Oauth2SecurityScheme; +import org.openapijsonschematools.client.securityschemes.OAuth2SecurityScheme; public class PetstoreAuth extends OAuth2SecurityScheme { /* diff --git a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs index 583e1c3ccb1..19f3403c9ea 100644 --- a/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs +++ b/src/main/resources/java/src/main/java/packagename/components/securityschemes/SecurityScheme.hbs @@ -27,7 +27,7 @@ import {{packageName}}.securityschemes.HttpSignatureSecurityScheme; import {{packageName}}.securityschemes.MutualTlsSecurityScheme; {{else}} {{#eq type "oauth2"}} -import {{packageName}}.securityschemes.Oauth2SecurityScheme; +import {{packageName}}.securityschemes.OAuth2SecurityScheme; {{else}} {{#eq type "openIdConnect"}} import {{packageName}}.securityschemes.OpenIdConnectSecurityScheme; @@ -103,8 +103,7 @@ public class {{jsonPathPiece.pascalCase}} extends OAuth2SecurityScheme { } {{else}} {{#eq type "openIdConnect"}} -@dataclasses.dataclass -class {{jsonPathPiece.pascalCase}}(security_schemes.OpenIdConnectSecurityScheme): +public class {{jsonPathPiece.pascalCase}} extends OpenIdConnectSecurityScheme { {{#if description}} /* {{description.original}}