@@ -911,4 +911,230 @@ public void generateSerializableModel() throws Exception {
911911 "private const val serialVersionUID: kotlin.Long = 1"
912912 );
913913 }
914+
915+ @ Test
916+ public void reactiveWithoutFlow () throws Exception {
917+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
918+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
919+ codegen .setOutputDir (output .getAbsolutePath ());
920+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , true );
921+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_FLOW_FOR_ARRAY_RETURN_TYPE , false );
922+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_TAGS , true );
923+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .SERVICE_IMPLEMENTATION , true );
924+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .DELEGATE_PATTERN , true );
925+
926+ List <File > files = new DefaultGenerator ()
927+ .opts (
928+ new ClientOptInput ()
929+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/issue16130-add-useFlowForArrayReturnType-param.yaml" ))
930+ .config (codegen )
931+ )
932+ .generate ();
933+
934+ Assertions .assertThat (files ).contains (
935+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
936+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
937+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
938+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" )
939+ );
940+
941+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
942+ "Flow<kotlin.String>" );
943+
944+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
945+ "List<kotlin.String>" );
946+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
947+ "Flow<kotlin.String>" );
948+
949+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
950+ "List<kotlin.String>" );
951+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
952+ "Flow<kotlin.String>" );
953+
954+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
955+ "List<kotlin.String>" );
956+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
957+ "Flow<kotlin.String>" );
958+ }
959+
960+ @ Test
961+ public void reactiveWithFlow () throws Exception {
962+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
963+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
964+ codegen .setOutputDir (output .getAbsolutePath ());
965+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , true );
966+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_FLOW_FOR_ARRAY_RETURN_TYPE , true );
967+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_TAGS , true );
968+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .SERVICE_IMPLEMENTATION , true );
969+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .DELEGATE_PATTERN , true );
970+
971+ List <File > files = new DefaultGenerator ()
972+ .opts (
973+ new ClientOptInput ()
974+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/issue16130-add-useFlowForArrayReturnType-param.yaml" ))
975+ .config (codegen )
976+ )
977+ .generate ();
978+
979+ Assertions .assertThat (files ).contains (
980+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
981+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
982+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
983+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" )
984+ );
985+
986+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
987+ "List<kotlin.String>" );
988+
989+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
990+ "List<kotlin.String>" );
991+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
992+ "Flow<kotlin.String>" );
993+
994+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
995+ "List<kotlin.String>" );
996+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
997+ "Flow<kotlin.String>" );
998+
999+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1000+ "List<kotlin.String>" );
1001+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1002+ "Flow<kotlin.String>" );
1003+ }
1004+
1005+ @ Test
1006+ public void reactiveWithDefaultValueFlow () throws Exception {
1007+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1008+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1009+ codegen .setOutputDir (output .getAbsolutePath ());
1010+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , true );
1011+ // should use default 'true' instead
1012+ // codegen.additionalProperties().put(KotlinSpringServerCodegen.USE_FLOW_FOR_ARRAY_RETURN_TYPE, true);
1013+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_TAGS , true );
1014+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .SERVICE_IMPLEMENTATION , true );
1015+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .DELEGATE_PATTERN , true );
1016+
1017+ List <File > files = new DefaultGenerator ()
1018+ .opts (
1019+ new ClientOptInput ()
1020+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/issue16130-add-useFlowForArrayReturnType-param.yaml" ))
1021+ .config (codegen )
1022+ )
1023+ .generate ();
1024+
1025+ Assertions .assertThat (files ).contains (
1026+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1027+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
1028+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1029+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" )
1030+ );
1031+
1032+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
1033+ "List<kotlin.String>" );
1034+
1035+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1036+ "List<kotlin.String>" );
1037+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1038+ "Flow<kotlin.String>" );
1039+
1040+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1041+ "List<kotlin.String>" );
1042+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1043+ "Flow<kotlin.String>" );
1044+
1045+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1046+ "List<kotlin.String>" );
1047+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1048+ "Flow<kotlin.String>" );
1049+ }
1050+
1051+ @ Test
1052+ public void nonReactiveWithoutFlow () throws Exception {
1053+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1054+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1055+ codegen .setOutputDir (output .getAbsolutePath ());
1056+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , false );
1057+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_FLOW_FOR_ARRAY_RETURN_TYPE , false );
1058+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_TAGS , true );
1059+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .SERVICE_IMPLEMENTATION , true );
1060+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .DELEGATE_PATTERN , true );
1061+
1062+ List <File > files = new DefaultGenerator ()
1063+ .opts (
1064+ new ClientOptInput ()
1065+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/issue16130-add-useFlowForArrayReturnType-param.yaml" ))
1066+ .config (codegen )
1067+ )
1068+ .generate ();
1069+
1070+ Assertions .assertThat (files ).contains (
1071+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1072+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
1073+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1074+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" )
1075+ );
1076+
1077+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
1078+ "Flow<kotlin.String>" );
1079+
1080+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1081+ "List<kotlin.String>" );
1082+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1083+ "Flow<kotlin.String>" );
1084+
1085+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1086+ "List<kotlin.String>" );
1087+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1088+ "Flow<kotlin.String>" );
1089+
1090+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1091+ "List<kotlin.String>" );
1092+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1093+ "Flow<kotlin.String>" );
1094+ }
1095+
1096+ @ Test
1097+ public void nonReactiveWithFlow () throws Exception {
1098+ File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1099+ KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen ();
1100+ codegen .setOutputDir (output .getAbsolutePath ());
1101+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .REACTIVE , false );
1102+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_FLOW_FOR_ARRAY_RETURN_TYPE , true );
1103+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .USE_TAGS , true );
1104+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .SERVICE_IMPLEMENTATION , true );
1105+ codegen .additionalProperties ().put (KotlinSpringServerCodegen .DELEGATE_PATTERN , true );
1106+
1107+ List <File > files = new DefaultGenerator ()
1108+ .opts (
1109+ new ClientOptInput ()
1110+ .openAPI (TestUtils .parseSpec ("src/test/resources/3_0/kotlin/issue16130-add-useFlowForArrayReturnType-param.yaml" ))
1111+ .config (codegen )
1112+ )
1113+ .generate ();
1114+
1115+ Assertions .assertThat (files ).contains (
1116+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1117+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
1118+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1119+ new File (output , "src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" )
1120+ );
1121+
1122+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiController.kt" ),
1123+ "Flow<kotlin.String>" );
1124+
1125+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1126+ "List<kotlin.String>" );
1127+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1Api.kt" ),
1128+ "Flow<kotlin.String>" );
1129+
1130+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1131+ "List<kotlin.String>" );
1132+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiDelegate.kt" ),
1133+ "Flow<kotlin.String>" );
1134+
1135+ assertFileContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1136+ "List<kotlin.String>" );
1137+ assertFileNotContains (Paths .get (output + "/src/main/kotlin/org/openapitools/api/TestV1ApiService.kt" ),
1138+ "Flow<kotlin.String>" );
1139+ }
9141140}
0 commit comments