41
41
public class GeneratorController {
42
42
43
43
static Logger LOGGER = LoggerFactory .getLogger (GeneratorController .class );
44
- static List <String > CLIENTS = new ArrayList <>();
45
- static List <String > SERVERS = new ArrayList <>();
46
- static List <String > CLIENTSV2 = new ArrayList <>();
47
- static List <String > SERVERSV2 = new ArrayList <>();
44
+
45
+ static Map <CodegenType , List <String >> TYPES = new LinkedHashMap <>();
46
+ static Map <io .swagger .codegen .CodegenType , List <String >> TYPESV2 = new LinkedHashMap <>();
48
47
49
48
private static ObjectMapper yamlMapper = new ObjectMapper (new YAMLFactory ());
50
- private static ObjectMapper jsonMapper = new ObjectMapper ();
51
49
private static HiddenOptions hiddenOptions ;
52
50
private static String HIDDEN_OPTIONS_CONFIG_FILE = "hiddenOptions.yaml" ;
53
51
private static String PROP_HIDDEN_OPTIONS_PATH = "HIDDEN_OPTIONS_PATH" ;
@@ -59,26 +57,45 @@ public class GeneratorController {
59
57
final ServiceLoader <CodegenConfig > loader = ServiceLoader .load (CodegenConfig .class );
60
58
61
59
loader .forEach (config -> {
62
- if ((config .getTag ().equals (CodegenType .CLIENT ) || config .getTag ().equals (CodegenType .DOCUMENTATION )) && !hiddenOptions .isHiddenClientV3 (config .getName ())) {
63
- CLIENTS .add (config .getName ());
64
- } else if (config .getTag ().equals (CodegenType .SERVER ) && !hiddenOptions .isHiddenServerV3 (config .getName ())) {
65
- SERVERS .add (config .getName ());
60
+ boolean isServer = CodegenType .SERVER .equals (config .getTag ());
61
+ boolean process = false ;
62
+ if (isServer && !hiddenOptions .isHiddenServerV3 (config .getName ())) {
63
+ process = true ;
64
+ } else if (!isServer && !hiddenOptions .isHiddenClientV3 (config .getName ())) {
65
+ process = true ;
66
+ }
67
+ if (process ) {
68
+ List <String > typeLanguages = TYPES .get (config .getTag ());
69
+ if (typeLanguages == null ) {
70
+ typeLanguages = new ArrayList <>();
71
+ TYPES .put (config .getTag (), typeLanguages );
72
+ }
73
+ typeLanguages .add (config .getName ());
66
74
}
67
75
});
68
- Collections . sort ( CLIENTS , String . CASE_INSENSITIVE_ORDER );
69
- Collections .sort (SERVERS , String .CASE_INSENSITIVE_ORDER );
76
+
77
+ TYPES . forEach (( k , v ) -> Collections .sort (v , String .CASE_INSENSITIVE_ORDER ) );
70
78
71
79
final ServiceLoader <io .swagger .codegen .CodegenConfig > loaderV2 = ServiceLoader .load (io .swagger .codegen .CodegenConfig .class );
72
80
73
81
loaderV2 .forEach (config -> {
74
- if ((config .getTag ().equals (io .swagger .codegen .CodegenType .CLIENT ) || config .getTag ().equals (io .swagger .codegen .CodegenType .DOCUMENTATION )) && !hiddenOptions .isHiddenClient (config .getName ())) {
75
- CLIENTSV2 .add (config .getName ());
76
- } else if (config .getTag ().equals (io .swagger .codegen .CodegenType .SERVER ) && !hiddenOptions .isHiddenServer (config .getName ())) {
77
- SERVERSV2 .add (config .getName ());
82
+ boolean isServer = io .swagger .codegen .CodegenType .SERVER .equals (config .getTag ());
83
+ boolean process = false ;
84
+ if (isServer && !hiddenOptions .isHiddenServer (config .getName ())) {
85
+ process = true ;
86
+ } else if (!isServer && !hiddenOptions .isHiddenClient (config .getName ())) {
87
+ process = true ;
88
+ }
89
+ if (process ) {
90
+ List <String > typeLanguages = TYPESV2 .get (config .getTag ());
91
+ if (typeLanguages == null ) {
92
+ typeLanguages = new ArrayList <>();
93
+ TYPESV2 .put (config .getTag (), typeLanguages );
94
+ }
95
+ typeLanguages .add (config .getName ());
78
96
}
79
97
});
80
- Collections .sort (CLIENTSV2 , String .CASE_INSENSITIVE_ORDER );
81
- Collections .sort (SERVERSV2 , String .CASE_INSENSITIVE_ORDER );
98
+ TYPESV2 .forEach ((k , v ) -> Collections .sort (v , String .CASE_INSENSITIVE_ORDER ));
82
99
}
83
100
84
101
@@ -170,29 +187,88 @@ public static HiddenOptions loadHiddenOptions(String location) {
170
187
}
171
188
}
172
189
173
- public ResponseContext clientLanguages (RequestContext requestContext , String version ) {
190
+ @ Deprecated
191
+ public ResponseContext clientLanguages (RequestContext requestContext , String version , Boolean clientOnly ) {
192
+ List <String > clientAndDoc = new ArrayList <>();
174
193
if ("V2" .equals (version )) {
194
+ clientAndDoc .addAll (TYPESV2 .get (io .swagger .codegen .CodegenType .CLIENT ));
195
+ if (!Boolean .TRUE .equals (clientOnly )) {
196
+ clientAndDoc .addAll (TYPESV2 .get (io .swagger .codegen .CodegenType .DOCUMENTATION ));
197
+ }
198
+ Collections .sort (clientAndDoc , String .CASE_INSENSITIVE_ORDER );
199
+
175
200
return new ResponseContext ()
176
201
.status (Response .Status .OK .getStatusCode ())
177
- .entity (CLIENTSV2 );
202
+ .entity (clientAndDoc );
178
203
179
204
}
205
+ clientAndDoc .addAll (TYPES .get (CodegenType .CLIENT ));
206
+ if (!Boolean .TRUE .equals (clientOnly )) {
207
+ clientAndDoc .addAll (TYPES .get (CodegenType .DOCUMENTATION ));
208
+ }
209
+ Collections .sort (clientAndDoc , String .CASE_INSENSITIVE_ORDER );
210
+
180
211
return new ResponseContext ()
181
212
.status (Response .Status .OK .getStatusCode ())
182
- .entity (CLIENTS );
213
+ .entity (clientAndDoc );
183
214
184
215
}
185
216
217
+ @ Deprecated
186
218
public ResponseContext serverLanguages (RequestContext requestContext , String version ) {
187
219
if ("V2" .equals (version )) {
188
220
return new ResponseContext ()
189
221
.status (Response .Status .OK .getStatusCode ())
190
- .entity (SERVERSV2 );
222
+ .entity (TYPESV2 . get ( io . swagger . codegen . CodegenType . SERVER ) );
191
223
192
224
}
193
225
return new ResponseContext ()
194
226
.status (Response .Status .OK .getStatusCode ())
195
- .entity (SERVERS );
227
+ .entity (TYPES .get (CodegenType .SERVER ));
228
+ }
229
+
230
+ @ Deprecated
231
+ public ResponseContext documentationLanguages (RequestContext requestContext , String version ) {
232
+ if ("V2" .equals (version )) {
233
+ return new ResponseContext ()
234
+ .status (Response .Status .OK .getStatusCode ())
235
+ .entity (TYPESV2 .get (io .swagger .codegen .CodegenType .DOCUMENTATION ));
236
+
237
+ }
238
+ return new ResponseContext ()
239
+ .status (Response .Status .OK .getStatusCode ())
240
+ .entity (TYPES .get (CodegenType .DOCUMENTATION ));
241
+ }
242
+
243
+ public ResponseContext languages (RequestContext requestContext , String type , String version ) {
244
+ if ("V2" .equals (version )) {
245
+ io .swagger .codegen .CodegenType codegenType = io .swagger .codegen .CodegenType .forValue (type );
246
+ return new ResponseContext ()
247
+ .status (Response .Status .OK .getStatusCode ())
248
+ .entity (TYPESV2 .get (codegenType ));
249
+
250
+ }
251
+ CodegenType codegenTypeV3 = CodegenType .forValue (type );
252
+ return new ResponseContext ()
253
+ .status (Response .Status .OK .getStatusCode ())
254
+ .entity (TYPES .get (codegenTypeV3 ));
255
+ }
256
+
257
+ public ResponseContext languagesMulti (RequestContext requestContext , List <String > types , String version ) {
258
+ final List <String > languages = new ArrayList <>();
259
+ if ("V2" .equals (version )) {
260
+ types .forEach (s -> languages .addAll (TYPESV2 .get (io .swagger .codegen .CodegenType .forValue (s ))));
261
+ Collections .sort (languages , String .CASE_INSENSITIVE_ORDER );
262
+ return new ResponseContext ()
263
+ .status (Response .Status .OK .getStatusCode ())
264
+ .entity (languages );
265
+
266
+ }
267
+ types .forEach (s -> languages .addAll (TYPES .get (CodegenType .forValue (s ))));
268
+ Collections .sort (languages , String .CASE_INSENSITIVE_ORDER );
269
+ return new ResponseContext ()
270
+ .status (Response .Status .OK .getStatusCode ())
271
+ .entity (languages );
196
272
}
197
273
198
274
public ResponseContext listOptions (RequestContext requestContext , String language , String version ) {
@@ -372,6 +448,33 @@ private ResponseContext generate(GenerationRequest generationRequest, File outpu
372
448
.entity (msg );
373
449
}
374
450
if (files .size () > 0 ) {
451
+ if (generationRequest .getType () == null ) {
452
+ String lang = generationRequest .getLang ();
453
+ if (GenerationRequest .CodegenVersion .V2 .equals (generationRequest .getCodegenVersion ())) {
454
+ TYPESV2
455
+ .entrySet ().stream ()
456
+ .filter (e -> {
457
+ return e .getValue ().contains (lang );
458
+ })
459
+ .findFirst ()
460
+ .ifPresent (e -> {
461
+ generationRequest .type (GenerationRequest .Type .fromValue (e .getKey ().toValue ()));
462
+ });
463
+ } else {
464
+ TYPES
465
+ .entrySet ().stream ()
466
+ .filter (e -> {
467
+ return e .getValue ().contains (lang );
468
+ })
469
+ .findFirst ()
470
+ .ifPresent (e -> {
471
+ generationRequest .type (GenerationRequest .Type .fromValue (e .getKey ().toValue ()));
472
+ });
473
+ }
474
+ if (generationRequest .getType () == null ) {
475
+ generationRequest .type (GenerationRequest .Type .CLIENT );
476
+ }
477
+ }
375
478
return downloadFile (outputRootFolder , outputContentFolder , outputFile , generationRequest .getLang (), generationRequest .getType ());
376
479
} else {
377
480
return new ResponseContext ()
0 commit comments