@@ -1027,6 +1027,326 @@ public void generateSerializableModelWithXimplements() throws Exception {
10271027 );
10281028 }
10291029
1030+ @ Test
1031+ public void generateApiWithHttpRequestContextReactiveAnnotationSwagger2 () throws Exception {
1032+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1033+ output .deleteOnExit ();
1034+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1035+
1036+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1037+ codegen .setOutputDir (output .getAbsolutePath ());
1038+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , true );
1039+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , true );
1040+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1041+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "swagger2" );
1042+
1043+ ClientOptInput input = new ClientOptInput ()
1044+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1045+ .config (codegen );
1046+ DefaultGenerator generator = new DefaultGenerator ();
1047+
1048+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1049+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1050+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1051+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1052+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1053+
1054+ generator .opts (input ).generate ();
1055+
1056+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1057+ assertFileContains (
1058+ petControllerPath ,
1059+ "deletePet(@Parameter(description = \" Pet id to delete\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long,@Parameter(description = \" \" , `in` = ParameterIn.HEADER) @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?, @Parameter(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>" ,
1060+ "getPetById(@Parameter(description = \" ID of pet to return\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long, @Parameter(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Pet>"
1061+ );
1062+
1063+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1064+ assertFileContains (
1065+ userControllerPath ,
1066+ "logoutUser(@Parameter(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>"
1067+ );
1068+ }
1069+
1070+ @ Test
1071+ public void generateApiWithHttpRequestContextReactiveAnnotationSwagger1 () throws Exception {
1072+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1073+ output .deleteOnExit ();
1074+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1075+
1076+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1077+ codegen .setOutputDir (output .getAbsolutePath ());
1078+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , true );
1079+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , true );
1080+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1081+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "swagger1" );
1082+
1083+ ClientOptInput input = new ClientOptInput ()
1084+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1085+ .config (codegen );
1086+ DefaultGenerator generator = new DefaultGenerator ();
1087+
1088+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1089+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1090+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1091+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1092+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1093+
1094+ generator .opts (input ).generate ();
1095+
1096+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1097+ assertFileContains (
1098+ petControllerPath ,
1099+ "deletePet(@ApiParam(value = \" Pet id to delete\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long,@ApiParam(value = \" \" ) @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?, @ApiParam(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>" ,
1100+ "getPetById(@ApiParam(value = \" ID of pet to return\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long, @ApiParam(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Pet>"
1101+ );
1102+
1103+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1104+ assertFileContains (
1105+ userControllerPath ,
1106+ "logoutUser(@ApiParam(hidden = true) exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>"
1107+ );
1108+ }
1109+
1110+ @ Test
1111+ public void generateApiWithHttpRequestContextReactiveAnnotationNone () throws Exception {
1112+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1113+ output .deleteOnExit ();
1114+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1115+
1116+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1117+ codegen .setOutputDir (output .getAbsolutePath ());
1118+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , true );
1119+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , true );
1120+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1121+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "none" );
1122+
1123+ ClientOptInput input = new ClientOptInput ()
1124+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1125+ .config (codegen );
1126+ DefaultGenerator generator = new DefaultGenerator ();
1127+
1128+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1129+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1130+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1131+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1132+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1133+
1134+ generator .opts (input ).generate ();
1135+
1136+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1137+ assertFileContains (
1138+ petControllerPath ,
1139+ "deletePet( @PathVariable(\" petId\" ) petId: kotlin.Long, @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?, exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>" ,
1140+ "getPetById( @PathVariable(\" petId\" ) petId: kotlin.Long, exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Pet>"
1141+ );
1142+
1143+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1144+ assertFileContains (
1145+ userControllerPath ,
1146+ "logoutUser(exchange: org.springframework.web.server.ServerWebExchange): ResponseEntity<Unit>"
1147+ );
1148+ }
1149+
1150+ @ Test
1151+ public void generateApiWithoutHttpRequestContextReactiveAnnotationNone () throws Exception {
1152+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1153+ output .deleteOnExit ();
1154+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1155+
1156+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1157+ codegen .setOutputDir (output .getAbsolutePath ());
1158+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , false );
1159+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , true );
1160+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1161+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "none" );
1162+
1163+ ClientOptInput input = new ClientOptInput ()
1164+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1165+ .config (codegen );
1166+ DefaultGenerator generator = new DefaultGenerator ();
1167+
1168+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1169+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1170+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1171+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1172+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1173+
1174+ generator .opts (input ).generate ();
1175+
1176+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1177+ assertFileContains (
1178+ petControllerPath ,
1179+ "deletePet( @PathVariable(\" petId\" ) petId: kotlin.Long, @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?): ResponseEntity<Unit>" ,
1180+ "getPetById( @PathVariable(\" petId\" ) petId: kotlin.Long): ResponseEntity<Pet>"
1181+ );
1182+
1183+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1184+ assertFileContains (
1185+ userControllerPath ,
1186+ "logoutUser(): ResponseEntity<Unit>"
1187+ );
1188+ }
1189+
1190+ @ Test
1191+ public void generateApiWithHttpRequestContextNonReactiveAnnotationSwagger2 () throws Exception {
1192+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1193+ output .deleteOnExit ();
1194+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1195+
1196+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1197+ codegen .setOutputDir (output .getAbsolutePath ());
1198+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , true );
1199+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , false );
1200+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1201+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "swagger2" );
1202+
1203+ ClientOptInput input = new ClientOptInput ()
1204+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1205+ .config (codegen );
1206+ DefaultGenerator generator = new DefaultGenerator ();
1207+
1208+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1209+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1210+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1211+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1212+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1213+
1214+ generator .opts (input ).generate ();
1215+
1216+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1217+ assertFileContains (
1218+ petControllerPath ,
1219+ "deletePet(@Parameter(description = \" Pet id to delete\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long,@Parameter(description = \" \" , `in` = ParameterIn.HEADER) @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?, @Parameter(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>" ,
1220+ "getPetById(@Parameter(description = \" ID of pet to return\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long, @Parameter(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Pet>"
1221+ );
1222+
1223+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1224+ assertFileContains (
1225+ userControllerPath ,
1226+ "logoutUser(@Parameter(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>"
1227+ );
1228+ }
1229+
1230+ @ Test
1231+ public void generateApiWithHttpRequestContextNonReactiveAnnotationSwagger1 () throws Exception {
1232+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1233+ output .deleteOnExit ();
1234+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1235+
1236+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1237+ codegen .setOutputDir (output .getAbsolutePath ());
1238+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , true );
1239+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , false );
1240+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1241+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "swagger1" );
1242+
1243+ ClientOptInput input = new ClientOptInput ()
1244+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1245+ .config (codegen );
1246+ DefaultGenerator generator = new DefaultGenerator ();
1247+
1248+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1249+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1250+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1251+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1252+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1253+
1254+ generator .opts (input ).generate ();
1255+
1256+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1257+ assertFileContains (
1258+ petControllerPath ,
1259+ "deletePet(@ApiParam(value = \" Pet id to delete\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long,@ApiParam(value = \" \" ) @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?, @ApiParam(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>" ,
1260+ "getPetById(@ApiParam(value = \" ID of pet to return\" , required = true) @PathVariable(\" petId\" ) petId: kotlin.Long, @ApiParam(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Pet>"
1261+ );
1262+
1263+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1264+ assertFileContains (
1265+ userControllerPath ,
1266+ "logoutUser(@ApiParam(hidden = true) request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>"
1267+ );
1268+ }
1269+
1270+ @ Test
1271+ public void generateApiWithHttpRequestContextNonReactiveAnnotationNone () throws Exception {
1272+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1273+ output .deleteOnExit ();
1274+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1275+
1276+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1277+ codegen .setOutputDir (output .getAbsolutePath ());
1278+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , true );
1279+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , false );
1280+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1281+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "none" );
1282+
1283+ ClientOptInput input = new ClientOptInput ()
1284+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1285+ .config (codegen );
1286+ DefaultGenerator generator = new DefaultGenerator ();
1287+
1288+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1289+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1290+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1291+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1292+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1293+
1294+ generator .opts (input ).generate ();
1295+
1296+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1297+ assertFileContains (
1298+ petControllerPath ,
1299+ "deletePet( @PathVariable(\" petId\" ) petId: kotlin.Long, @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?, request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>" ,
1300+ "getPetById( @PathVariable(\" petId\" ) petId: kotlin.Long, request: javax.servlet.http.HttpServletRequest): ResponseEntity<Pet>"
1301+ );
1302+
1303+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1304+ assertFileContains (
1305+ userControllerPath ,
1306+ "logoutUser(request: javax.servlet.http.HttpServletRequest): ResponseEntity<Unit>"
1307+ );
1308+ }
1309+
1310+ @ Test
1311+ public void generateApiWithoutHttpRequestContextNonReactiveAnnotationNone () throws Exception {
1312+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1313+ output .deleteOnExit ();
1314+ String outputPath = output .getAbsolutePath ().replace ('\\' , '/' );
1315+
1316+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1317+ codegen .setOutputDir (output .getAbsolutePath ());
1318+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .INCLUDE_HTTP_REQUEST_CONTEXT , false );
1319+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , false );
1320+ codegen .additionalProperties ().put (DOCUMENTATION_PROVIDER , "none" );
1321+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .ANNOTATION_LIBRARY , "none" );
1322+
1323+ ClientOptInput input = new ClientOptInput ()
1324+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/petstore.yaml" ))
1325+ .config (codegen );
1326+ DefaultGenerator generator = new DefaultGenerator ();
1327+
1328+ generator .setGeneratorPropertyDefault (CodegenConstants .MODELS , "false" );
1329+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_TESTS , "false" );
1330+ generator .setGeneratorPropertyDefault (CodegenConstants .MODEL_DOCS , "false" );
1331+ generator .setGeneratorPropertyDefault (CodegenConstants .APIS , "true" );
1332+ generator .setGeneratorPropertyDefault (CodegenConstants .SUPPORTING_FILES , "false" );
1333+
1334+ generator .opts (input ).generate ();
1335+
1336+ Path petControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/PetApiController.kt" );
1337+ assertFileContains (
1338+ petControllerPath ,
1339+ "deletePet( @PathVariable(\" petId\" ) petId: kotlin.Long, @RequestHeader(value = \" api_key\" , required = false) apiKey: kotlin.String?): ResponseEntity<Unit>" ,
1340+ "getPetById( @PathVariable(\" petId\" ) petId: kotlin.Long): ResponseEntity<Pet>"
1341+ );
1342+
1343+ Path userControllerPath = Paths .get (outputPath + "/src/main/kotlin/org/openapitools/api/UserApiController.kt" );
1344+ assertFileContains (
1345+ userControllerPath ,
1346+ "logoutUser(): ResponseEntity<Unit>"
1347+ );
1348+ }
1349+
10301350 @ Test
10311351 public void generateNonSerializableModelWithXimplements () throws Exception {
10321352 File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
0 commit comments