diff --git a/bin/configs/spring-http-interface-reactive-noResponseEntity.yaml b/bin/configs/spring-http-interface-reactive-noResponseEntity.yaml index 961fbeb5cdc2..3ec63c9f3730 100644 --- a/bin/configs/spring-http-interface-reactive-noResponseEntity.yaml +++ b/bin/configs/spring-http-interface-reactive-noResponseEntity.yaml @@ -18,4 +18,5 @@ additionalProperties: # performBeanValidation should default to "false" when not specified useResponseEntity: "false" useSpringBoot3: "true" + useTags: "true" diff --git a/bin/configs/spring-http-interface-reactive.yaml b/bin/configs/spring-http-interface-reactive.yaml index f7397c1788c8..b0fcd0afbe6e 100644 --- a/bin/configs/spring-http-interface-reactive.yaml +++ b/bin/configs/spring-http-interface-reactive.yaml @@ -17,4 +17,4 @@ additionalProperties: # useBeanValidation should default to "false" when not specified # performBeanValidation should default to "false" when not specified useSpringBoot3: "true" - + useTags: "true" diff --git a/bin/configs/spring-http-interface-useHttpServiceProxyFactoryInterfacesConfiguration.yaml b/bin/configs/spring-http-interface-useHttpServiceProxyFactoryInterfacesConfiguration.yaml index cd6c66e38bea..258eb47c9cf7 100644 --- a/bin/configs/spring-http-interface-useHttpServiceProxyFactoryInterfacesConfiguration.yaml +++ b/bin/configs/spring-http-interface-useHttpServiceProxyFactoryInterfacesConfiguration.yaml @@ -18,3 +18,4 @@ additionalProperties: performBeanValidation: "true" useHttpServiceProxyFactoryInterfacesConfigurator: "true" useSpringBoot3: "true" + useTags: "true" diff --git a/bin/configs/spring-http-interface.yaml b/bin/configs/spring-http-interface.yaml index 4051bb3afeb4..9f3621bc7f7e 100644 --- a/bin/configs/spring-http-interface.yaml +++ b/bin/configs/spring-http-interface.yaml @@ -18,3 +18,4 @@ additionalProperties: # useBeanValidation should default to "false" when not specified # performBeanValidation should default to "false" when not specified useSpringBoot3: "true" + useTags: "true" diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java index 12047a88e12f..def8064507ba 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java @@ -1066,7 +1066,7 @@ protected ImmutableMap.Builder addMustacheLambdas() { @Override public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations) { - if (library.equals(SPRING_BOOT) && !useTags) { + if ((library.equals(SPRING_BOOT) || library.equals(SPRING_DECLARATIVE_HTTP_INTERFACE_LIBRARY)) && !useTags) { String basePath = resourcePath; if (basePath.startsWith("/")) { basePath = basePath.substring(1); @@ -1080,6 +1080,9 @@ public void addOperationToGroup(String tag, String resourcePath, Operation opera basePath = "default"; } else { co.subresourceOperation = !co.path.isEmpty(); + // sanitize the raw path segment so it can be safely used as a Java identifier + // (e.g. "another-fake" -> "anotherFake") when deriving classVarName etc. + basePath = camelize(sanitizeName(basePath), LOWERCASE_FIRST_LETTER); } List opList = operations.computeIfAbsent(basePath, k -> new ArrayList<>()); opList.add(co); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index 4d8b7f462fcc..a2d1f9fae6c4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -898,7 +898,9 @@ protected void applyJackson3Package() { } private boolean supportLibraryUseTags() { - return SPRING_BOOT.equals(library) || SPRING_CLOUD_LIBRARY.equals(library); + return SPRING_BOOT.equals(library) + || SPRING_CLOUD_LIBRARY.equals(library) + || SPRING_HTTP_INTERFACE.equals(library); } /** @@ -927,6 +929,9 @@ public void addOperationToGroup(String tag, String resourcePath, Operation opera basePath = "default"; } else { co.subresourceOperation = !co.path.isEmpty(); + // sanitize the raw path segment so it can be safely used as a Java identifier + // (e.g. "another-fake" -> "anotherFake") when deriving classVarName etc. + basePath = camelize(sanitizeName(basePath), LOWERCASE_FIRST_LETTER); } final List opList = operations.computeIfAbsent(basePath, k -> new ArrayList<>()); opList.add(co); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index b7184f853396..2a0fcec86b8f 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -1273,6 +1273,61 @@ public void shouldNotUseTagsForClassname() throws IOException { assertThat(notExisting).isNull(); } + @Test + public void useTags_false_groupsByFirstPathSegment_springHttpInterface() { + SpringCodegen codegen = new SpringCodegen(); + codegen.setLibrary(SPRING_HTTP_INTERFACE); + codegen.additionalProperties().put(USE_TAGS, "false"); + codegen.processOpts(); + + CodegenOperation co = new CodegenOperation(); + co.operationId = "findByStatus"; + co.path = "/pet/findByStatus"; + Map> groups = new HashMap<>(); + + codegen.addOperationToGroup("Pet", "/pet/findByStatus", new Operation(), co, groups); + + assertTrue(groups.containsKey("pet")); + assertEquals(co.baseName, "pet"); + } + + @Test + public void useTags_true_groupsByTag_springHttpInterface() { + SpringCodegen codegen = new SpringCodegen(); + codegen.setLibrary(SPRING_HTTP_INTERFACE); + codegen.additionalProperties().put(USE_TAGS, "true"); + codegen.processOpts(); + + CodegenOperation co = new CodegenOperation(); + co.operationId = "findByStatus"; + Map> groups = new HashMap<>(); + + codegen.addOperationToGroup("Pet", "/pet/findByStatus", new Operation(), co, groups); + + assertTrue(groups.containsKey("Pet")); + } + + @Test + public void useTags_false_groupsByFirstPathSegment_sanitizesInvalidIdentifierChars_springHttpInterface() { + SpringCodegen codegen = new SpringCodegen(); + codegen.setLibrary(SPRING_HTTP_INTERFACE); + codegen.additionalProperties().put(USE_TAGS, "false"); + codegen.processOpts(); + + CodegenOperation co = new CodegenOperation(); + co.operationId = "dummy"; + co.path = "/another-fake/dummy"; + Map> groups = new HashMap<>(); + + codegen.addOperationToGroup("$another-fake?", "/another-fake/dummy", new Operation(), co, groups); + + // the first path segment "another-fake" must be sanitized into a valid Java identifier + // (no hyphen) instead of being used as-is, which previously produced e.g. + // "AnotherFakeApi another-fakeHttpProxy()" - invalid Java syntax. + assertTrue(groups.containsKey("anotherFake")); + assertEquals(co.baseName, "anotherFake"); + } + @Test public void shouldAddValidAnnotationIntoCollectionWhenBeanValidationIsEnabled_issue14723() throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinSpringServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinSpringServerCodegenTest.java index a57b8949ab6d..dbca3cf87c0f 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinSpringServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinSpringServerCodegenTest.java @@ -1,18 +1,27 @@ package org.openapitools.codegen.kotlin; import org.openapitools.codegen.ClientOptInput; +import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.DefaultGenerator; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.KotlinSpringServerCodegen; import org.testng.annotations.Test; +import io.swagger.v3.oas.models.Operation; + import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import static org.openapitools.codegen.CodegenConstants.INTERFACE_ONLY; +import static org.openapitools.codegen.languages.KotlinSpringServerCodegen.SPRING_DECLARATIVE_HTTP_INTERFACE_LIBRARY; +import static org.openapitools.codegen.languages.KotlinSpringServerCodegen.USE_TAGS; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; public class KotlinSpringServerCodegenTest { @@ -203,4 +212,58 @@ public void shouldDisableBuiltInValidationOptionByDefault() throws IOException { TestUtils.assertFileContains(userApiKt, "@Validated"); } + @Test(description = "useTags=false should group operations by first path segment for spring-declarative-http-interface") + public void useTags_false_groupsByFirstPathSegment_springDeclarativeHttpInterface() { + KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen(); + codegen.setLibrary(SPRING_DECLARATIVE_HTTP_INTERFACE_LIBRARY); + codegen.additionalProperties().put(USE_TAGS, false); + codegen.processOpts(); + + CodegenOperation co = new CodegenOperation(); + co.operationId = "findByStatus"; + co.path = "/pet/findByStatus"; + Map> groups = new HashMap<>(); + + codegen.addOperationToGroup("Pet", "/pet/findByStatus", new Operation(), co, groups); + + assertTrue(groups.containsKey("pet")); + assertEquals(co.baseName, "pet"); + } + + @Test(description = "useTags=true should group operations by tag for spring-declarative-http-interface") + public void useTags_true_groupsByTag_springDeclarativeHttpInterface() { + KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen(); + codegen.setLibrary(SPRING_DECLARATIVE_HTTP_INTERFACE_LIBRARY); + codegen.additionalProperties().put(USE_TAGS, true); + codegen.processOpts(); + + CodegenOperation co = new CodegenOperation(); + co.operationId = "findByStatus"; + Map> groups = new HashMap<>(); + + codegen.addOperationToGroup("Pet", "/pet/findByStatus", new Operation(), co, groups); + + assertTrue(groups.containsKey("Pet")); + } + + @Test(description = "useTags=false should sanitize invalid identifier chars from the first path segment for spring-declarative-http-interface") + public void useTags_false_groupsByFirstPathSegment_sanitizesInvalidIdentifierChars_springDeclarativeHttpInterface() { + KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen(); + codegen.setLibrary(SPRING_DECLARATIVE_HTTP_INTERFACE_LIBRARY); + codegen.additionalProperties().put(USE_TAGS, false); + codegen.processOpts(); + + CodegenOperation co = new CodegenOperation(); + co.operationId = "dummy"; + co.path = "/another-fake/dummy"; + Map> groups = new HashMap<>(); + + codegen.addOperationToGroup("$another-fake?", "/another-fake/dummy", new Operation(), co, groups); + + // the first path segment "another-fake" must be sanitized into a valid Kotlin/Java + // identifier (no hyphen) instead of being used as-is. + assertTrue(groups.containsKey("anotherFake")); + assertEquals(co.baseName, "anotherFake"); + } + } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java index 7671d2683121..0da839f7a38b 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java @@ -1087,14 +1087,21 @@ public void givenMultipartForm_whenGenerateReactiveDeclarativeHttpInterface_then new HashMap<>(), configurator -> configurator.setLibrary(SPRING_DECLARATIVE_HTTP_INTERFACE_LIBRARY)); - Path apiFile = files.get("MultipartApi.kt").toPath(); - assertFileContains(apiFile, - "files: Array", + // With useTags=false (the library default), operations are grouped by first path + // segment rather than by tag, so the multipart operations are split across + // MultipartArrayApi.kt/MultipartSingleApi.kt/MultipartMixedApi.kt instead of a single + // tag-derived MultipartApi.kt. + Path arrayFile = files.get("MultipartArrayApi.kt").toPath(); + Path mixedFile = files.get("MultipartMixedApi.kt").toPath(); + + assertFileContains(arrayFile, "files: Array"); + assertFileContains(mixedFile, "file: org.springframework.web.multipart.MultipartFile", "status: MultipartMixedStatus", "marker: MultipartMixedRequestMarker?", "statusArray: kotlin.collections.List?"); - assertFileNotContains(apiFile, "org.springframework.http.codec.multipart.Part"); + assertFileNotContains(arrayFile, "org.springframework.http.codec.multipart.Part"); + assertFileNotContains(mixedFile, "org.springframework.http.codec.multipart.Part"); } private void assertReactiveMultipartParameters(Map files, String fileSuffix) { @@ -6640,7 +6647,7 @@ public void testSealedResponseInterfacesWithDeclarativeHttpInterface() throws IO DefaultGenerator generator = new DefaultGenerator(); generator.opts(input).generate(); - assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/DefaultApi.kt"), + assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/UsersApi.kt"), "import org.openapitools.model.CreateUserResponse", "import org.openapitools.model.GetUserResponse", "fun createUser(", diff --git a/samples/client/petstore/spring-http-interface-bean-validation/.openapi-generator/FILES b/samples/client/petstore/spring-http-interface-bean-validation/.openapi-generator/FILES index 69906eac967c..e0a4e2a7c66f 100644 --- a/samples/client/petstore/spring-http-interface-bean-validation/.openapi-generator/FILES +++ b/samples/client/petstore/spring-http-interface-bean-validation/.openapi-generator/FILES @@ -2,7 +2,7 @@ README.md pom.xml src/main/java/org/openapitools/api/AnotherFakeApi.java src/main/java/org/openapitools/api/FakeApi.java -src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +src/main/java/org/openapitools/api/FakeClassnameTestApi.java src/main/java/org/openapitools/api/PetApi.java src/main/java/org/openapitools/api/StoreApi.java src/main/java/org/openapitools/api/UserApi.java diff --git a/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/FakeApi.java index a089293ed3f8..ead4b520ea0f 100644 --- a/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/FakeApi.java @@ -5,6 +5,7 @@ */ package org.openapitools.api; +import org.openapitools.model.ApiResponseDto; import java.math.BigDecimal; import org.openapitools.model.ChildWithNullableDto; import org.openapitools.model.ClientDto; @@ -15,6 +16,7 @@ import org.springframework.lang.Nullable; import java.time.OffsetDateTime; import org.openapitools.model.OuterCompositeDto; +import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto; import org.openapitools.model.UserDto; import org.openapitools.model.XmlItemDto; import org.springframework.http.ResponseEntity; @@ -125,6 +127,22 @@ ResponseEntity fakeOuterStringSerialize( ); + /** + * GET /fake/{petId}/response-object-different-names + * + * @param petId ID of pet to update (required) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "GET", + value = "/fake/{petId}/response-object-different-names", + accept = { "application/json" } + ) + ResponseEntity responseObjectDifferentNames( + @PathVariable("petId") Long petId + ); + + /** * PUT /fake/body-with-file-schema * For this test, the body for this request much reference a schema named `File`. @@ -379,4 +397,26 @@ ResponseEntity testWithResultExample( ); + + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "POST", + value = "/fake/{petId}/uploadImageWithRequiredFile", + accept = { "application/json" }, + contentType = "multipart/form-data" + ) + ResponseEntity uploadFileWithRequiredFile( + @PathVariable("petId") Long petId, + @RequestPart(value = "requiredFile", required = true) MultipartFile requiredFile, + @Valid @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata + ); + } diff --git a/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java new file mode 100644 index 000000000000..51e7739dd105 --- /dev/null +++ b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -0,0 +1,44 @@ +/* + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.26.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.openapitools.model.ClientDto; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.service.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import org.springframework.validation.annotation.Validated; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + + +@Validated +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.26.0-SNAPSHOT") +public interface FakeClassnameTestApi { + + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param clientDto client model (required) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "PATCH", + value = "/fake_classname_test", + accept = { "application/json" }, + contentType = "application/json" + ) + ResponseEntity testClassname( + @Valid @RequestBody ClientDto clientDto + ); + +} diff --git a/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/PetApi.java index c2720d5ccd9f..a08a65286e05 100644 --- a/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/api/PetApi.java @@ -8,7 +8,6 @@ import org.openapitools.model.ApiResponseDto; import org.springframework.lang.Nullable; import org.openapitools.model.PetDto; -import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto; import java.util.Set; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -124,22 +123,6 @@ ResponseEntity getPetById( ); - /** - * GET /fake/{petId}/response-object-different-names - * - * @param petId ID of pet to update (required) - * @return successful operation (status code 200) - */ - @HttpExchange( - method = "GET", - value = "/fake/{petId}/response-object-different-names", - accept = { "application/json" } - ) - ResponseEntity responseObjectDifferentNames( - @PathVariable("petId") Long petId - ); - - /** * PUT /pet : Update an existing pet * @@ -204,26 +187,4 @@ ResponseEntity uploadFile( @RequestPart(value = "file", required = false) MultipartFile file ); - - /** - * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) - * - * - * @param petId ID of pet to update (required) - * @param requiredFile file to upload (required) - * @param additionalMetadata Additional data to pass to server (optional) - * @return successful operation (status code 200) - */ - @HttpExchange( - method = "POST", - value = "/fake/{petId}/uploadImageWithRequiredFile", - accept = { "application/json" }, - contentType = "multipart/form-data" - ) - ResponseEntity uploadFileWithRequiredFile( - @PathVariable("petId") Long petId, - @RequestPart(value = "requiredFile", required = true) MultipartFile requiredFile, - @Valid @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata - ); - } diff --git a/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java index 14abfcdb5569..41bd4967fd4c 100644 --- a/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java +++ b/samples/client/petstore/spring-http-interface-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java @@ -7,7 +7,7 @@ import org.openapitools.api.AnotherFakeApi; import org.openapitools.api.FakeApi; -import org.openapitools.api.FakeClassnameTags123Api; +import org.openapitools.api.FakeClassnameTestApi; import org.openapitools.api.PetApi; import org.openapitools.api.StoreApi; import org.openapitools.api.UserApi; @@ -37,10 +37,10 @@ FakeApi fakeHttpProxy() { return factory.createClient(FakeApi.class); } - @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTags123") - FakeClassnameTags123Api fakeClassnameTags123HttpProxy() { + @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTest") + FakeClassnameTestApi fakeClassnameTestHttpProxy() { HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(RestClientAdapter.create(client)).build(); - return factory.createClient(FakeClassnameTags123Api.class); + return factory.createClient(FakeClassnameTestApi.class); } @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.pet") diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/FILES b/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/FILES index 69906eac967c..e0a4e2a7c66f 100644 --- a/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/FILES +++ b/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/FILES @@ -2,7 +2,7 @@ README.md pom.xml src/main/java/org/openapitools/api/AnotherFakeApi.java src/main/java/org/openapitools/api/FakeApi.java -src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +src/main/java/org/openapitools/api/FakeClassnameTestApi.java src/main/java/org/openapitools/api/PetApi.java src/main/java/org/openapitools/api/StoreApi.java src/main/java/org/openapitools/api/UserApi.java diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeApi.java index debb7ecc8f66..292f6a0cdee5 100644 --- a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeApi.java @@ -5,6 +5,7 @@ */ package org.openapitools.api; +import org.openapitools.model.ApiResponseDto; import java.math.BigDecimal; import org.openapitools.model.ChildWithNullableDto; import org.openapitools.model.ClientDto; @@ -15,6 +16,7 @@ import org.springframework.lang.Nullable; import java.time.OffsetDateTime; import org.openapitools.model.OuterCompositeDto; +import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto; import org.openapitools.model.UserDto; import org.openapitools.model.XmlItemDto; import org.springframework.http.HttpStatus; @@ -127,6 +129,23 @@ String fakeOuterStringSerialize( ); + /** + * GET /fake/{petId}/response-object-different-names + * + * @param petId ID of pet to update (required) + * @return successful operation (status code 200) + */ + @ResponseStatus(HttpStatus.OK) + @HttpExchange( + method = "GET", + value = "/fake/{petId}/response-object-different-names", + accept = { "application/json" } + ) + ResponseObjectWithDifferentFieldNamesDto responseObjectDifferentNames( + @PathVariable("petId") Long petId + ); + + /** * PUT /fake/body-with-file-schema * For this test, the body for this request much reference a schema named `File`. @@ -392,4 +411,27 @@ Integer testWithResultExample( ); + + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ + @ResponseStatus(HttpStatus.OK) + @HttpExchange( + method = "POST", + value = "/fake/{petId}/uploadImageWithRequiredFile", + accept = { "application/json" }, + contentType = "multipart/form-data" + ) + ApiResponseDto uploadFileWithRequiredFile( + @PathVariable("petId") Long petId, + @RequestPart(value = "requiredFile", required = true) MultipartFile requiredFile, + @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata + ); + } diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeClassnameTestApi.java new file mode 100644 index 000000000000..c21d574cfc24 --- /dev/null +++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -0,0 +1,42 @@ +/* + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.26.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.openapitools.model.ClientDto; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.service.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + + + +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.26.0-SNAPSHOT") +public interface FakeClassnameTestApi { + + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param clientDto client model (required) + * @return successful operation (status code 200) + */ + @ResponseStatus(HttpStatus.OK) + @HttpExchange( + method = "PATCH", + value = "/fake_classname_test", + accept = { "application/json" }, + contentType = "application/json" + ) + ClientDto testClassname( + @RequestBody ClientDto clientDto + ); + +} diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/PetApi.java index 72d69f6db07c..ac38ec99fc45 100644 --- a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/PetApi.java @@ -8,7 +8,6 @@ import org.openapitools.model.ApiResponseDto; import org.springframework.lang.Nullable; import org.openapitools.model.PetDto; -import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto; import java.util.Set; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; @@ -126,23 +125,6 @@ PetDto getPetById( ); - /** - * GET /fake/{petId}/response-object-different-names - * - * @param petId ID of pet to update (required) - * @return successful operation (status code 200) - */ - @ResponseStatus(HttpStatus.OK) - @HttpExchange( - method = "GET", - value = "/fake/{petId}/response-object-different-names", - accept = { "application/json" } - ) - ResponseObjectWithDifferentFieldNamesDto responseObjectDifferentNames( - @PathVariable("petId") Long petId - ); - - /** * PUT /pet : Update an existing pet * @@ -210,27 +192,4 @@ ApiResponseDto uploadFile( @RequestPart(value = "file", required = false) MultipartFile file ); - - /** - * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) - * - * - * @param petId ID of pet to update (required) - * @param requiredFile file to upload (required) - * @param additionalMetadata Additional data to pass to server (optional) - * @return successful operation (status code 200) - */ - @ResponseStatus(HttpStatus.OK) - @HttpExchange( - method = "POST", - value = "/fake/{petId}/uploadImageWithRequiredFile", - accept = { "application/json" }, - contentType = "multipart/form-data" - ) - ApiResponseDto uploadFileWithRequiredFile( - @PathVariable("petId") Long petId, - @RequestPart(value = "requiredFile", required = true) MultipartFile requiredFile, - @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata - ); - } diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java index 14abfcdb5569..41bd4967fd4c 100644 --- a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java +++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java @@ -7,7 +7,7 @@ import org.openapitools.api.AnotherFakeApi; import org.openapitools.api.FakeApi; -import org.openapitools.api.FakeClassnameTags123Api; +import org.openapitools.api.FakeClassnameTestApi; import org.openapitools.api.PetApi; import org.openapitools.api.StoreApi; import org.openapitools.api.UserApi; @@ -37,10 +37,10 @@ FakeApi fakeHttpProxy() { return factory.createClient(FakeApi.class); } - @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTags123") - FakeClassnameTags123Api fakeClassnameTags123HttpProxy() { + @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTest") + FakeClassnameTestApi fakeClassnameTestHttpProxy() { HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(RestClientAdapter.create(client)).build(); - return factory.createClient(FakeClassnameTags123Api.class); + return factory.createClient(FakeClassnameTestApi.class); } @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.pet") diff --git a/samples/client/petstore/spring-http-interface-reactive-bean-validation/.openapi-generator/FILES b/samples/client/petstore/spring-http-interface-reactive-bean-validation/.openapi-generator/FILES index f91496ca5b57..5d8c17d36765 100644 --- a/samples/client/petstore/spring-http-interface-reactive-bean-validation/.openapi-generator/FILES +++ b/samples/client/petstore/spring-http-interface-reactive-bean-validation/.openapi-generator/FILES @@ -2,7 +2,7 @@ README.md pom.xml src/main/java/org/openapitools/api/AnotherFakeApi.java src/main/java/org/openapitools/api/FakeApi.java -src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +src/main/java/org/openapitools/api/FakeClassnameTestApi.java src/main/java/org/openapitools/api/PetApi.java src/main/java/org/openapitools/api/StoreApi.java src/main/java/org/openapitools/api/UserApi.java diff --git a/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/FakeApi.java index 066620ff21e3..9b1ab37b4a85 100644 --- a/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/FakeApi.java @@ -12,9 +12,11 @@ import org.openapitools.model.FileSchemaTestClass; import java.time.LocalDate; import java.util.Map; +import org.openapitools.model.ModelApiResponse; import org.springframework.lang.Nullable; import java.time.OffsetDateTime; import org.openapitools.model.OuterComposite; +import org.openapitools.model.ResponseObjectWithDifferentFieldNames; import org.openapitools.model.User; import org.openapitools.model.XmlItem; import org.springframework.http.ResponseEntity; @@ -129,6 +131,22 @@ Mono> fakeOuterStringSerialize( ); + /** + * GET /fake/{petId}/response-object-different-names + * + * @param petId ID of pet to update (required) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "GET", + value = "/fake/{petId}/response-object-different-names", + accept = { "application/json" } + ) + Mono> responseObjectDifferentNames( + @PathVariable("petId") Long petId + ); + + /** * PUT /fake/body-with-file-schema * For this test, the body for this request much reference a schema named `File`. @@ -383,4 +401,26 @@ Mono> testWithResultExample( ); + + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "POST", + value = "/fake/{petId}/uploadImageWithRequiredFile", + accept = { "application/json" }, + contentType = "multipart/form-data" + ) + Mono> uploadFileWithRequiredFile( + @PathVariable("petId") Long petId, + @RequestPart(value = "requiredFile", required = true) Part requiredFile, + @Valid @RequestPart(value = "additionalMetadata", required = false) String additionalMetadata + ); + } diff --git a/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java new file mode 100644 index 000000000000..fcea644f9e6c --- /dev/null +++ b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -0,0 +1,48 @@ +/* + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.26.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.openapitools.model.Client; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.service.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import org.springframework.validation.annotation.Validated; + +import org.springframework.http.codec.multipart.Part; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + + +@Validated +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.26.0-SNAPSHOT") +public interface FakeClassnameTestApi { + + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param client client model (required) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "PATCH", + value = "/fake_classname_test", + accept = { "application/json" }, + contentType = "application/json" + ) + Mono> testClassname( + @Valid @RequestBody Mono client + ); + +} diff --git a/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/PetApi.java index b8977d72836e..dcc184060bc1 100644 --- a/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/api/PetApi.java @@ -8,7 +8,6 @@ import org.openapitools.model.ModelApiResponse; import org.springframework.lang.Nullable; import org.openapitools.model.Pet; -import org.openapitools.model.ResponseObjectWithDifferentFieldNames; import java.util.Set; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -128,22 +127,6 @@ Mono> getPetById( ); - /** - * GET /fake/{petId}/response-object-different-names - * - * @param petId ID of pet to update (required) - * @return successful operation (status code 200) - */ - @HttpExchange( - method = "GET", - value = "/fake/{petId}/response-object-different-names", - accept = { "application/json" } - ) - Mono> responseObjectDifferentNames( - @PathVariable("petId") Long petId - ); - - /** * PUT /pet : Update an existing pet * @@ -208,26 +191,4 @@ Mono> uploadFile( @RequestPart(value = "file", required = false) Part file ); - - /** - * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) - * - * - * @param petId ID of pet to update (required) - * @param requiredFile file to upload (required) - * @param additionalMetadata Additional data to pass to server (optional) - * @return successful operation (status code 200) - */ - @HttpExchange( - method = "POST", - value = "/fake/{petId}/uploadImageWithRequiredFile", - accept = { "application/json" }, - contentType = "multipart/form-data" - ) - Mono> uploadFileWithRequiredFile( - @PathVariable("petId") Long petId, - @RequestPart(value = "requiredFile", required = true) Part requiredFile, - @Valid @RequestPart(value = "additionalMetadata", required = false) String additionalMetadata - ); - } diff --git a/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java index 0a0765feef9b..ea68da8d0f84 100644 --- a/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java +++ b/samples/client/petstore/spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java @@ -7,7 +7,7 @@ import org.openapitools.api.AnotherFakeApi; import org.openapitools.api.FakeApi; -import org.openapitools.api.FakeClassnameTags123Api; +import org.openapitools.api.FakeClassnameTestApi; import org.openapitools.api.PetApi; import org.openapitools.api.StoreApi; import org.openapitools.api.UserApi; @@ -37,10 +37,10 @@ FakeApi fakeHttpProxy() { return factory.createClient(FakeApi.class); } - @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTags123") - FakeClassnameTags123Api fakeClassnameTags123HttpProxy() { + @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTest") + FakeClassnameTestApi fakeClassnameTestHttpProxy() { HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder().exchangeAdapter(WebClientAdapter.create(client)).build(); - return factory.createClient(FakeClassnameTags123Api.class); + return factory.createClient(FakeClassnameTestApi.class); } @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.pet") diff --git a/samples/client/petstore/spring-http-interface-springboot-4/.openapi-generator/FILES b/samples/client/petstore/spring-http-interface-springboot-4/.openapi-generator/FILES index 69906eac967c..e0a4e2a7c66f 100644 --- a/samples/client/petstore/spring-http-interface-springboot-4/.openapi-generator/FILES +++ b/samples/client/petstore/spring-http-interface-springboot-4/.openapi-generator/FILES @@ -2,7 +2,7 @@ README.md pom.xml src/main/java/org/openapitools/api/AnotherFakeApi.java src/main/java/org/openapitools/api/FakeApi.java -src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +src/main/java/org/openapitools/api/FakeClassnameTestApi.java src/main/java/org/openapitools/api/PetApi.java src/main/java/org/openapitools/api/StoreApi.java src/main/java/org/openapitools/api/UserApi.java diff --git a/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/FakeApi.java index a089293ed3f8..ead4b520ea0f 100644 --- a/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/FakeApi.java @@ -5,6 +5,7 @@ */ package org.openapitools.api; +import org.openapitools.model.ApiResponseDto; import java.math.BigDecimal; import org.openapitools.model.ChildWithNullableDto; import org.openapitools.model.ClientDto; @@ -15,6 +16,7 @@ import org.springframework.lang.Nullable; import java.time.OffsetDateTime; import org.openapitools.model.OuterCompositeDto; +import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto; import org.openapitools.model.UserDto; import org.openapitools.model.XmlItemDto; import org.springframework.http.ResponseEntity; @@ -125,6 +127,22 @@ ResponseEntity fakeOuterStringSerialize( ); + /** + * GET /fake/{petId}/response-object-different-names + * + * @param petId ID of pet to update (required) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "GET", + value = "/fake/{petId}/response-object-different-names", + accept = { "application/json" } + ) + ResponseEntity responseObjectDifferentNames( + @PathVariable("petId") Long petId + ); + + /** * PUT /fake/body-with-file-schema * For this test, the body for this request much reference a schema named `File`. @@ -379,4 +397,26 @@ ResponseEntity testWithResultExample( ); + + /** + * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) + * + * + * @param petId ID of pet to update (required) + * @param requiredFile file to upload (required) + * @param additionalMetadata Additional data to pass to server (optional) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "POST", + value = "/fake/{petId}/uploadImageWithRequiredFile", + accept = { "application/json" }, + contentType = "multipart/form-data" + ) + ResponseEntity uploadFileWithRequiredFile( + @PathVariable("petId") Long petId, + @RequestPart(value = "requiredFile", required = true) MultipartFile requiredFile, + @Valid @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata + ); + } diff --git a/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/FakeClassnameTestApi.java new file mode 100644 index 000000000000..51e7739dd105 --- /dev/null +++ b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -0,0 +1,44 @@ +/* + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.26.0-SNAPSHOT). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +package org.openapitools.api; + +import org.openapitools.model.ClientDto; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.service.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import jakarta.validation.Valid; +import jakarta.validation.constraints.*; +import org.springframework.validation.annotation.Validated; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import jakarta.annotation.Generated; + + +@Validated +@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.26.0-SNAPSHOT") +public interface FakeClassnameTestApi { + + /** + * PATCH /fake_classname_test : To test class name in snake case + * To test class name in snake case + * + * @param clientDto client model (required) + * @return successful operation (status code 200) + */ + @HttpExchange( + method = "PATCH", + value = "/fake_classname_test", + accept = { "application/json" }, + contentType = "application/json" + ) + ResponseEntity testClassname( + @Valid @RequestBody ClientDto clientDto + ); + +} diff --git a/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/PetApi.java index c2720d5ccd9f..a08a65286e05 100644 --- a/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/api/PetApi.java @@ -8,7 +8,6 @@ import org.openapitools.model.ApiResponseDto; import org.springframework.lang.Nullable; import org.openapitools.model.PetDto; -import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto; import java.util.Set; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -124,22 +123,6 @@ ResponseEntity getPetById( ); - /** - * GET /fake/{petId}/response-object-different-names - * - * @param petId ID of pet to update (required) - * @return successful operation (status code 200) - */ - @HttpExchange( - method = "GET", - value = "/fake/{petId}/response-object-different-names", - accept = { "application/json" } - ) - ResponseEntity responseObjectDifferentNames( - @PathVariable("petId") Long petId - ); - - /** * PUT /pet : Update an existing pet * @@ -204,26 +187,4 @@ ResponseEntity uploadFile( @RequestPart(value = "file", required = false) MultipartFile file ); - - /** - * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required) - * - * - * @param petId ID of pet to update (required) - * @param requiredFile file to upload (required) - * @param additionalMetadata Additional data to pass to server (optional) - * @return successful operation (status code 200) - */ - @HttpExchange( - method = "POST", - value = "/fake/{petId}/uploadImageWithRequiredFile", - accept = { "application/json" }, - contentType = "multipart/form-data" - ) - ResponseEntity uploadFileWithRequiredFile( - @PathVariable("petId") Long petId, - @RequestPart(value = "requiredFile", required = true) MultipartFile requiredFile, - @Valid @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata - ); - } diff --git a/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java index 14abfcdb5569..41bd4967fd4c 100644 --- a/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java +++ b/samples/client/petstore/spring-http-interface-springboot-4/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java @@ -7,7 +7,7 @@ import org.openapitools.api.AnotherFakeApi; import org.openapitools.api.FakeApi; -import org.openapitools.api.FakeClassnameTags123Api; +import org.openapitools.api.FakeClassnameTestApi; import org.openapitools.api.PetApi; import org.openapitools.api.StoreApi; import org.openapitools.api.UserApi; @@ -37,10 +37,10 @@ FakeApi fakeHttpProxy() { return factory.createClient(FakeApi.class); } - @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTags123") - FakeClassnameTags123Api fakeClassnameTags123HttpProxy() { + @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTest") + FakeClassnameTestApi fakeClassnameTestHttpProxy() { HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(RestClientAdapter.create(client)).build(); - return factory.createClient(FakeClassnameTags123Api.class); + return factory.createClient(FakeClassnameTestApi.class); } @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.pet")