From ee3389dbc7367b76fac60158e4ffc2f62de322ee Mon Sep 17 00:00:00 2001 From: Shane Perry Date: Mon, 20 Mar 2023 11:33:05 -0600 Subject: [PATCH 1/7] Added ability to configure the AuthorizationFilter pattern --- docs/generators/java-micronaut-client.md | 1 + .../languages/JavaMicronautClientCodegen.java | 17 +++++++++++++++ .../client/auth/AuthorizationFilter.mustache | 2 +- .../micronaut/MicronautClientCodegenTest.java | 21 +++++++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/docs/generators/java-micronaut-client.md b/docs/generators/java-micronaut-client.md index 2d5e55850503..0126dc2f417c 100644 --- a/docs/generators/java-micronaut-client.md +++ b/docs/generators/java-micronaut-client.md @@ -29,6 +29,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |artifactId|artifactId in generated pom.xml. This also becomes part of the generated library's filename| |openapi-micronaut-client| |artifactUrl|artifact URL in generated pom.xml| |https://github.com/openapitools/openapi-generator| |artifactVersion|artifact version in generated pom.xml. This also becomes part of the generated library's filename| |1.0.0| +|authorizationFilterPattern|Configure the authorization filter pattern for the client. Generally defined when generating clients from multiple specification files.| |null| |bigDecimalAsString|Treat BigDecimal values as Strings to avoid precision loss.| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| |build|Specify for which build tool to generate files|
**gradle**
Gradle configuration is generated for the project
**all**
Both Gradle and Maven configurations are generated
**maven**
Maven configuration is generated for the project
|all| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java index 9e8d2140fdc6..b345ffe8d761 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java @@ -13,12 +13,15 @@ public class JavaMicronautClientCodegen extends JavaMicronautAbstractCodegen { public static final String OPT_CONFIGURE_AUTH = "configureAuth"; + public static final String OPT_CONFIGURE_AUTH_FILTER_PATTERN = "configureAuthFilterPattern"; public static final String ADDITIONAL_CLIENT_TYPE_ANNOTATIONS = "additionalClientTypeAnnotations"; + public static final String AUTHORIZATION_FILTER_PATTERN = "authorizationFilterPattern"; public static final String NAME = "java-micronaut-client"; protected boolean configureAuthorization; protected List additionalClientTypeAnnotations; + protected String authorizationFilterPattern; public JavaMicronautClientCodegen() { super(); @@ -33,6 +36,7 @@ public JavaMicronautClientCodegen() { cliOptions.add(CliOption.newBoolean(OPT_CONFIGURE_AUTH, "Configure all the authorization methods as specified in the file", configureAuthorization)); cliOptions.add(CliOption.newString(ADDITIONAL_CLIENT_TYPE_ANNOTATIONS, "Additional annotations for client type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)")); + cliOptions.add(CliOption.newString(AUTHORIZATION_FILTER_PATTERN, "Configure the authorization filter pattern for the client. Generally defined when generating clients from multiple specification files.")); } @Override @@ -66,6 +70,8 @@ public void processOpts() { // Write property that is present in server writePropertyBack(OPT_USE_AUTH, true); + writePropertyBack(OPT_CONFIGURE_AUTH_FILTER_PATTERN, false); + final String invokerFolder = (sourceFolder + '/' + invokerPackage).replace(".", "/"); // Authorization files @@ -79,6 +85,12 @@ public void processOpts() { supportingFiles.add(new SupportingFile("client/auth/configuration/ApiKeyAuthConfiguration.mustache", authConfigurationFolder, "ApiKeyAuthConfiguration.java")); supportingFiles.add(new SupportingFile("client/auth/configuration/ConfigurableAuthorization.mustache", authConfigurationFolder, "ConfigurableAuthorization.java")); supportingFiles.add(new SupportingFile("client/auth/configuration/HttpBasicAuthConfiguration.mustache", authConfigurationFolder, "HttpBasicAuthConfiguration.java")); + + if (additionalProperties.containsKey(AUTHORIZATION_FILTER_PATTERN)) { + String pattern = additionalProperties.get(AUTHORIZATION_FILTER_PATTERN).toString(); + this.setAuthorizationFilterPattern(pattern); + additionalProperties.put(AUTHORIZATION_FILTER_PATTERN, authorizationFilterPattern); + } } if (additionalProperties.containsKey(ADDITIONAL_CLIENT_TYPE_ANNOTATIONS)) { @@ -109,4 +121,9 @@ public void processOpts() { public void setAdditionalClientTypeAnnotations(final List additionalClientTypeAnnotations) { this.additionalClientTypeAnnotations = additionalClientTypeAnnotations; } + + public void setAuthorizationFilterPattern(final String pattern) { + writePropertyBack(OPT_CONFIGURE_AUTH_FILTER_PATTERN, true); + this.authorizationFilterPattern = pattern; + } } diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/auth/AuthorizationFilter.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/auth/AuthorizationFilter.mustache index 4c9c72d8779a..a52b4294c6f8 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/auth/AuthorizationFilter.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/auth/AuthorizationFilter.mustache @@ -37,7 +37,7 @@ import {{javaxPackage}}.annotation.Generated; {{>common/generatedAnnotation}} -@Filter(Filter.MATCH_ALL_PATTERN) +@Filter({{#configureAuthFilterPattern}}"{{authorizationFilterPattern}}"{{/configureAuthFilterPattern}}{{^configureAuthFilterPattern}}Filter.MATCH_ALL_PATTERN{{/configureAuthFilterPattern}}) public class AuthorizationFilter implements HttpClientFilter { private static final Logger LOG = LoggerFactory.getLogger(ClientCredentialsHttpClientFilter.class); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java index af612bd47cad..4af8688d0da2 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java @@ -251,4 +251,25 @@ public void testAdditionalClientTypeAnnotations() { assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "MyAdditionalAnnotation1(1,${param1})"); assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "MyAdditionalAnnotation2(2,${param2})"); } + + @Test + public void testDefaultAuthorizationFilterPattern() { + JavaMicronautClientCodegen codegen = new JavaMicronautClientCodegen(); + codegen.additionalProperties().put(JavaMicronautClientCodegen.OPT_CONFIGURE_AUTH, "true"); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.SUPPORTING_FILES, CodegenConstants.APIS); + + // Micronaut AuthorizationFilter should default to match all patterns + assertFileContains(outputPath + "/src/main/java/org/openapitools/auth/AuthorizationFilter.java", "@Filter(Filter.MATCH_ALL_PATTERN)"); + } + + @Test + public void testAuthorizationFilterPattern() { + JavaMicronautClientCodegen codegen = new JavaMicronautClientCodegen(); + codegen.additionalProperties().put(JavaMicronautClientCodegen.OPT_CONFIGURE_AUTH, "true"); + codegen.additionalProperties().put(JavaMicronautClientCodegen.AUTHORIZATION_FILTER_PATTERN, "pet/**"); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.SUPPORTING_FILES, CodegenConstants.APIS); + + // Micronaut AuthorizationFilter should match the provided pattern + assertFileContains(outputPath + "/src/main/java/org/openapitools/auth/AuthorizationFilter.java", "@Filter(\"pet/**\")"); + } } From e0e0c6774261f7218bd178de7557ac5915da596f Mon Sep 17 00:00:00 2001 From: Shane Perry Date: Mon, 20 Mar 2023 12:50:42 -0600 Subject: [PATCH 2/7] Added configuration for the Client annotation --- docs/generators/java-micronaut-client.md | 4 +- .../languages/JavaMicronautClientCodegen.java | 36 +++++++++++++++++- .../java-micronaut/client/api.mustache | 5 ++- .../micronaut/MicronautClientCodegenTest.java | 38 +++++++++++++++++++ 4 files changed, 80 insertions(+), 3 deletions(-) diff --git a/docs/generators/java-micronaut-client.md b/docs/generators/java-micronaut-client.md index 0126dc2f417c..b5a03f0cff51 100644 --- a/docs/generators/java-micronaut-client.md +++ b/docs/generators/java-micronaut-client.md @@ -29,11 +29,13 @@ These options may be applied as additional-properties (cli) or configOptions (pl |artifactId|artifactId in generated pom.xml. This also becomes part of the generated library's filename| |openapi-micronaut-client| |artifactUrl|artifact URL in generated pom.xml| |https://github.com/openapitools/openapi-generator| |artifactVersion|artifact version in generated pom.xml. This also becomes part of the generated library's filename| |1.0.0| -|authorizationFilterPattern|Configure the authorization filter pattern for the client. Generally defined when generating clients from multiple specification files.| |null| +|authorizationFilterPattern|Configure the authorization filter pattern for the client. Generally defined when generating clients from multiple specification files| |null| +|basePathSeparator|Configure the separator to use between the application name and base path when referencing the property| |-| |bigDecimalAsString|Treat BigDecimal values as Strings to avoid precision loss.| |false| |booleanGetterPrefix|Set booleanGetterPrefix| |get| |build|Specify for which build tool to generate files|
**gradle**
Gradle configuration is generated for the project
**all**
Both Gradle and Maven configurations are generated
**maven**
Maven configuration is generated for the project
|all| |camelCaseDollarSign|Fix camelCase when starting with $ sign. when true : $Value when false : $value| |false| +|clientId|Configure the service ID for the Client| |null| |configureAuth|Configure all the authorization methods as specified in the file| |false| |containerDefaultToNull|Set containers (array, set, map) default to null| |false| |dateFormat|Specify the format pattern of date as a string| |null| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java index b345ffe8d761..cdf8b8a1fcf1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautClientCodegen.java @@ -14,14 +14,19 @@ public class JavaMicronautClientCodegen extends JavaMicronautAbstractCodegen { public static final String OPT_CONFIGURE_AUTH = "configureAuth"; public static final String OPT_CONFIGURE_AUTH_FILTER_PATTERN = "configureAuthFilterPattern"; + public static final String OPT_CONFIGURE_CLIENT_ID = "configureClientId"; public static final String ADDITIONAL_CLIENT_TYPE_ANNOTATIONS = "additionalClientTypeAnnotations"; public static final String AUTHORIZATION_FILTER_PATTERN = "authorizationFilterPattern"; + public static final String BASE_PATH_SEPARATOR = "basePathSeparator"; + public static final String CLIENT_ID = "clientId"; public static final String NAME = "java-micronaut-client"; protected boolean configureAuthorization; protected List additionalClientTypeAnnotations; protected String authorizationFilterPattern; + protected String basePathSeparator = "-"; + protected String clientId; public JavaMicronautClientCodegen() { super(); @@ -36,7 +41,9 @@ public JavaMicronautClientCodegen() { cliOptions.add(CliOption.newBoolean(OPT_CONFIGURE_AUTH, "Configure all the authorization methods as specified in the file", configureAuthorization)); cliOptions.add(CliOption.newString(ADDITIONAL_CLIENT_TYPE_ANNOTATIONS, "Additional annotations for client type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)")); - cliOptions.add(CliOption.newString(AUTHORIZATION_FILTER_PATTERN, "Configure the authorization filter pattern for the client. Generally defined when generating clients from multiple specification files.")); + cliOptions.add(CliOption.newString(AUTHORIZATION_FILTER_PATTERN, "Configure the authorization filter pattern for the client. Generally defined when generating clients from multiple specification files")); + cliOptions.add(CliOption.newString(BASE_PATH_SEPARATOR, "Configure the separator to use between the application name and base path when referencing the property").defaultValue(basePathSeparator)); + cliOptions.add(CliOption.newString(CLIENT_ID, "Configure the service ID for the Client")); } @Override @@ -71,6 +78,12 @@ public void processOpts() { writePropertyBack(OPT_USE_AUTH, true); writePropertyBack(OPT_CONFIGURE_AUTH_FILTER_PATTERN, false); + writePropertyBack(OPT_CONFIGURE_CLIENT_ID, false); + + if(additionalProperties.containsKey(BASE_PATH_SEPARATOR)) { + basePathSeparator = additionalProperties.get(BASE_PATH_SEPARATOR).toString(); + } + writePropertyBack(BASE_PATH_SEPARATOR, basePathSeparator); final String invokerFolder = (sourceFolder + '/' + invokerPackage).replace(".", "/"); @@ -99,6 +112,18 @@ public void processOpts() { additionalProperties.put(ADDITIONAL_CLIENT_TYPE_ANNOTATIONS, additionalClientTypeAnnotations); } + if (additionalProperties.containsKey(CLIENT_ID)) { + String id = additionalProperties.get(CLIENT_ID).toString(); + this.setClientId(id); + additionalProperties.put(CLIENT_ID, clientId); + } + + if (additionalProperties.containsKey(BASE_PATH_SEPARATOR)) { + String separator = additionalProperties.get(BASE_PATH_SEPARATOR).toString(); + this.setBasePathSeparator(separator); + additionalProperties.put(BASE_PATH_SEPARATOR, basePathSeparator); + } + // Api file apiTemplateFiles.clear(); apiTemplateFiles.put("client/api.mustache", ".java"); @@ -126,4 +151,13 @@ public void setAuthorizationFilterPattern(final String pattern) { writePropertyBack(OPT_CONFIGURE_AUTH_FILTER_PATTERN, true); this.authorizationFilterPattern = pattern; } + + public void setClientId(final String id) { + writePropertyBack(OPT_CONFIGURE_CLIENT_ID, true); + this.clientId = id; + } + + public void setBasePathSeparator(final String separator) { + this.basePathSeparator = separator; + } } diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache index 842fe1f3f0d6..bbe5bbd7ce52 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache @@ -45,7 +45,10 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; {{{.}}} {{/additionalClientTypeAnnotations}} {{>common/generatedAnnotation}} -@Client("${{openbrace}}{{{applicationName}}}-base-path{{closebrace}}") +@Client( + {{#configureClientId}}id = "{{clientId}}",{{/configureClientId}} + path = "${{openbrace}}{{{applicationName}}}{{basePathSeparator}}base-path{{closebrace}}" +) public interface {{classname}} { {{#operations}} {{#operation}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java index 4af8688d0da2..78c9fe25856c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java @@ -272,4 +272,42 @@ public void testAuthorizationFilterPattern() { // Micronaut AuthorizationFilter should match the provided pattern assertFileContains(outputPath + "/src/main/java/org/openapitools/auth/AuthorizationFilter.java", "@Filter(\"pet/**\")"); } + + @Test + public void testNoConfigureClientId() { + JavaMicronautClientCodegen codegen = new JavaMicronautClientCodegen(); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.APIS); + + // Micronaut declarative http client should not specify a Client id + assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client( path = \"${openapi-micronaut-client-base-path}\")"); + } + + @Test + public void testConfigureClientId() { + JavaMicronautClientCodegen codegen = new JavaMicronautClientCodegen(); + codegen.additionalProperties().put(JavaMicronautClientCodegen.CLIENT_ID, "unit-test"); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.APIS); + + // Micronaut declarative http client should use the provided Client id + assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client( id = \"unit-test\", path = \"${openapi-micronaut-client-base-path}\")"); + } + + @Test + public void testDefaultPathSeparator() { + JavaMicronautClientCodegen codegen = new JavaMicronautClientCodegen(); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.APIS); + + // Micronaut declarative http client should use the default path separator + assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client( path = \"${openapi-micronaut-client-base-path}\")"); + } + + @Test + public void testConfigurePathSeparator() { + JavaMicronautClientCodegen codegen = new JavaMicronautClientCodegen(); + codegen.additionalProperties().put(JavaMicronautClientCodegen.BASE_PATH_SEPARATOR, "."); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.APIS); + + // Micronaut declarative http client should use the provided path separator + assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client( path = \"${openapi-micronaut-client.base-path}\")"); + } } From 65d73bd3674e5f49dbc73dd256096aac9891d9a8 Mon Sep 17 00:00:00 2001 From: Shane Perry Date: Thu, 23 Mar 2023 10:44:51 -0600 Subject: [PATCH 3/7] Generated samples --- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 5 ++++- .../src/main/java/org/openapitools/api/FakeApi.java | 5 ++++- .../java/org/openapitools/api/FakeClassnameTags123Api.java | 5 ++++- .../src/main/java/org/openapitools/api/PetApi.java | 5 ++++- .../src/main/java/org/openapitools/api/StoreApi.java | 5 ++++- .../src/main/java/org/openapitools/api/UserApi.java | 5 ++++- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java index 9aa8dbcee11f..5e42b9261bee 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -28,7 +28,10 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client("${petstore-micronaut-base-path}") +@Client( + + path = "${petstore-micronaut-base-path}" +) public interface AnotherFakeApi { /** * To test special tags diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java index bf573e43dff4..3eea7471a00f 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java @@ -36,7 +36,10 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client("${petstore-micronaut-base-path}") +@Client( + + path = "${petstore-micronaut-base-path}" +) public interface FakeApi { /** * creates an XmlItem diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java index ec85b9286d32..30728db01cb6 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java @@ -28,7 +28,10 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client("${petstore-micronaut-base-path}") +@Client( + + path = "${petstore-micronaut-base-path}" +) public interface FakeClassnameTags123Api { /** * To test class name in snake case diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java index 589f10b7239c..8597202ce8db 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java @@ -31,7 +31,10 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client("${petstore-micronaut-base-path}") +@Client( + + path = "${petstore-micronaut-base-path}" +) public interface PetApi { /** * Add a new pet to the store diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java index 6f5b00148124..c7e2b091b2fb 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java @@ -28,7 +28,10 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client("${petstore-micronaut-base-path}") +@Client( + + path = "${petstore-micronaut-base-path}" +) public interface StoreApi { /** * Delete purchase order by ID diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java index e4c1285a9817..97cf4052779e 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java @@ -29,7 +29,10 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client("${petstore-micronaut-base-path}") +@Client( + + path = "${petstore-micronaut-base-path}" +) public interface UserApi { /** * Create user From e2ab7a21fb5bdc8261fa687a23f25e20ac12c8b2 Mon Sep 17 00:00:00 2001 From: Shane Perry Date: Thu, 23 Mar 2023 13:39:58 -0600 Subject: [PATCH 4/7] Remove extra newline from template --- .../src/main/resources/java-micronaut/client/api.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache index bbe5bbd7ce52..1d92a9a016ab 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache @@ -45,8 +45,8 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; {{{.}}} {{/additionalClientTypeAnnotations}} {{>common/generatedAnnotation}} -@Client( - {{#configureClientId}}id = "{{clientId}}",{{/configureClientId}} +@Client({{#configureClientId}} + id = "{{clientId}}",{{/configureClientId}} path = "${{openbrace}}{{{applicationName}}}{{basePathSeparator}}base-path{{closebrace}}" ) public interface {{classname}} { From ae00de747dd634610569c27679d91234af5a09c2 Mon Sep 17 00:00:00 2001 From: Shane Perry Date: Thu, 23 Mar 2023 13:54:57 -0600 Subject: [PATCH 5/7] Updated samples --- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 1 - .../src/main/java/org/openapitools/api/FakeApi.java | 1 - .../main/java/org/openapitools/api/FakeClassnameTags123Api.java | 1 - .../src/main/java/org/openapitools/api/PetApi.java | 1 - .../src/main/java/org/openapitools/api/StoreApi.java | 1 - .../src/main/java/org/openapitools/api/UserApi.java | 1 - 6 files changed, 6 deletions(-) diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java index 5e42b9261bee..778e76a51a8b 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -29,7 +29,6 @@ @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") @Client( - path = "${petstore-micronaut-base-path}" ) public interface AnotherFakeApi { diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java index 3eea7471a00f..29edf76bdc70 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java @@ -37,7 +37,6 @@ @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") @Client( - path = "${petstore-micronaut-base-path}" ) public interface FakeApi { diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java index 30728db01cb6..2663339ae5b5 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java @@ -29,7 +29,6 @@ @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") @Client( - path = "${petstore-micronaut-base-path}" ) public interface FakeClassnameTags123Api { diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java index 8597202ce8db..4fee875a18fd 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java @@ -32,7 +32,6 @@ @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") @Client( - path = "${petstore-micronaut-base-path}" ) public interface PetApi { diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java index c7e2b091b2fb..c6bf5aed59f2 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java @@ -29,7 +29,6 @@ @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") @Client( - path = "${petstore-micronaut-base-path}" ) public interface StoreApi { diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java index 97cf4052779e..9c6fc925a0bf 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java @@ -30,7 +30,6 @@ @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") @Client( - path = "${petstore-micronaut-base-path}" ) public interface UserApi { From 0a544ed858cedcd38dbb9def12ac346ac3992f93 Mon Sep 17 00:00:00 2001 From: Shane Perry Date: Mon, 27 Mar 2023 10:06:53 -0600 Subject: [PATCH 6/7] Declarative client annotation path attribute only supported when id attribute is set --- .../src/main/resources/java-micronaut/client/api.mustache | 4 ++-- .../codegen/java/micronaut/MicronautClientCodegenTest.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache index 1d92a9a016ab..8dfdd0a324a9 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache @@ -46,8 +46,8 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; {{/additionalClientTypeAnnotations}} {{>common/generatedAnnotation}} @Client({{#configureClientId}} - id = "{{clientId}}",{{/configureClientId}} - path = "${{openbrace}}{{{applicationName}}}{{basePathSeparator}}base-path{{closebrace}}" + id = "{{clientId}}", + path = {{/configureClientId}}"${{openbrace}}{{{applicationName}}}{{basePathSeparator}}base-path{{closebrace}}" ) public interface {{classname}} { {{#operations}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java index 78c9fe25856c..2c449e9bfee9 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautClientCodegenTest.java @@ -279,7 +279,7 @@ public void testNoConfigureClientId() { String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.APIS); // Micronaut declarative http client should not specify a Client id - assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client( path = \"${openapi-micronaut-client-base-path}\")"); + assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client(\"${openapi-micronaut-client-base-path}\")"); } @Test @@ -298,7 +298,7 @@ public void testDefaultPathSeparator() { String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.APIS); // Micronaut declarative http client should use the default path separator - assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client( path = \"${openapi-micronaut-client-base-path}\")"); + assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client(\"${openapi-micronaut-client-base-path}\")"); } @Test @@ -308,6 +308,6 @@ public void testConfigurePathSeparator() { String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.APIS); // Micronaut declarative http client should use the provided path separator - assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client( path = \"${openapi-micronaut-client.base-path}\")"); + assertFileContains(outputPath + "/src/main/java/org/openapitools/api/PetApi.java", "@Client(\"${openapi-micronaut-client.base-path}\")"); } } From e96ae3ee6673bc3fdffd101994231a28be0056b8 Mon Sep 17 00:00:00 2001 From: Shane Perry Date: Mon, 27 Mar 2023 11:12:24 -0600 Subject: [PATCH 7/7] Cleaned up style of generated file --- .../src/main/resources/java-micronaut/client/api.mustache | 3 +-- .../src/main/java/org/openapitools/api/AnotherFakeApi.java | 4 +--- .../src/main/java/org/openapitools/api/FakeApi.java | 4 +--- .../java/org/openapitools/api/FakeClassnameTags123Api.java | 4 +--- .../src/main/java/org/openapitools/api/PetApi.java | 4 +--- .../src/main/java/org/openapitools/api/StoreApi.java | 4 +--- .../src/main/java/org/openapitools/api/UserApi.java | 4 +--- 7 files changed, 7 insertions(+), 20 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache index 8dfdd0a324a9..fa531874e73d 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache @@ -47,8 +47,7 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; {{>common/generatedAnnotation}} @Client({{#configureClientId}} id = "{{clientId}}", - path = {{/configureClientId}}"${{openbrace}}{{{applicationName}}}{{basePathSeparator}}base-path{{closebrace}}" -) + path = {{/configureClientId}}"${{openbrace}}{{{applicationName}}}{{basePathSeparator}}base-path{{closebrace}}") public interface {{classname}} { {{#operations}} {{#operation}} diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java index 778e76a51a8b..9aa8dbcee11f 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -28,9 +28,7 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client( - path = "${petstore-micronaut-base-path}" -) +@Client("${petstore-micronaut-base-path}") public interface AnotherFakeApi { /** * To test special tags diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java index 29edf76bdc70..bf573e43dff4 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java @@ -36,9 +36,7 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client( - path = "${petstore-micronaut-base-path}" -) +@Client("${petstore-micronaut-base-path}") public interface FakeApi { /** * creates an XmlItem diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java index 2663339ae5b5..ec85b9286d32 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java @@ -28,9 +28,7 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client( - path = "${petstore-micronaut-base-path}" -) +@Client("${petstore-micronaut-base-path}") public interface FakeClassnameTags123Api { /** * To test class name in snake case diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java index 4fee875a18fd..589f10b7239c 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java @@ -31,9 +31,7 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client( - path = "${petstore-micronaut-base-path}" -) +@Client("${petstore-micronaut-base-path}") public interface PetApi { /** * Add a new pet to the store diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java index c6bf5aed59f2..6f5b00148124 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java @@ -28,9 +28,7 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client( - path = "${petstore-micronaut-base-path}" -) +@Client("${petstore-micronaut-base-path}") public interface StoreApi { /** * Delete purchase order by ID diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java index 9c6fc925a0bf..e4c1285a9817 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java @@ -29,9 +29,7 @@ import javax.validation.constraints.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautClientCodegen") -@Client( - path = "${petstore-micronaut-base-path}" -) +@Client("${petstore-micronaut-base-path}") public interface UserApi { /** * Create user