30
30
import java .io .File ;
31
31
import java .text .Collator ;
32
32
import java .util .*;
33
+ import java .util .function .Predicate ;
33
34
import java .util .stream .Collectors ;
35
+ import java .util .stream .Stream ;
34
36
35
37
import static org .openapitools .codegen .utils .StringUtils .camelize ;
36
38
@@ -411,14 +413,26 @@ public Map<String, Object> postProcessModels(Map<String, Object> objs) {
411
413
return postProcessModelsEnum (objs );
412
414
}
413
415
416
+ private static boolean anyOperationParam (final List <CodegenOperation > operations , final Predicate <CodegenParameter > predicate ) {
417
+ return operations .stream ()
418
+ .flatMap (operation -> Stream .of (
419
+ operation .bodyParams .stream (),
420
+ operation .queryParams .stream (),
421
+ operation .pathParams .stream (),
422
+ operation .headerParams .stream ()
423
+ ))
424
+ .flatMap (a -> a )
425
+ .filter (predicate )
426
+ .findAny ()
427
+ .isPresent ();
428
+ }
429
+
414
430
@ Override
415
431
@ SuppressWarnings ({"static-method" , "unchecked" })
416
432
public Map <String , Object > postProcessOperationsWithModels (Map <String , Object > operations , List <Object > allModels ) {
417
433
Map <String , Object > objs = (Map <String , Object >) operations .get ("operations" );
418
434
List <CodegenOperation > ops = (List <CodegenOperation >) objs .get ("operation" );
419
435
420
- boolean hasDateTime = false ;
421
- boolean hasDate = false ;
422
436
final Map <String , Set <String >> dependencies = new HashMap <>();
423
437
424
438
for (CodegenOperation op : ops ) {
@@ -427,8 +441,6 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
427
441
for (CodegenParameter param : op .pathParams ) {
428
442
final String var = paramToString ("params" , param , false , null );
429
443
path = path .replace ("{" + param .paramName + "}" , "\" ++ " + var + " ++ \" " );
430
- hasDateTime = hasDateTime || param .isDateTime ;
431
- hasDate = hasDate || param .isDate ;
432
444
}
433
445
op .path = ("\" " + path + "\" " ).replaceAll (" \\ +\\ + \" \" " , "" );
434
446
} else {
@@ -437,8 +449,6 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
437
449
for (CodegenParameter param : op .pathParams ) {
438
450
String str = paramToString ("params" , param , false , null );
439
451
path = path .replace ("{" + param .paramName + "}" , str );
440
- hasDateTime = hasDateTime || param .isDateTime ;
441
- hasDate = hasDate || param .isDate ;
442
452
}
443
453
op .path = path ;
444
454
@@ -487,6 +497,7 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
487
497
elmImport .hasExposures = true ;
488
498
elmImports .add (elmImport );
489
499
}
500
+ final boolean hasDate = anyOperationParam (ops , param -> param .isDate );
490
501
if (hasDate ) {
491
502
final ElmImport elmImport = new ElmImport ();
492
503
elmImport .moduleName = "DateOnly" ;
@@ -495,6 +506,7 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
495
506
elmImport .hasExposures = true ;
496
507
elmImports .add (elmImport );
497
508
}
509
+ final boolean hasDateTime = anyOperationParam (ops , param -> param .isDateTime );
498
510
if (hasDateTime ) {
499
511
final ElmImport elmImport = new ElmImport ();
500
512
elmImport .moduleName = "DateTime" ;
@@ -503,6 +515,15 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
503
515
elmImport .hasExposures = true ;
504
516
elmImports .add (elmImport );
505
517
}
518
+ final boolean hasUuid = anyOperationParam (ops , param -> param .isUuid );
519
+ if (hasUuid ) {
520
+ final ElmImport elmImport = new ElmImport ();
521
+ elmImport .moduleName = "Uuid" ;
522
+ elmImport .exposures = new TreeSet <>();
523
+ elmImport .exposures .add ("Uuid" );
524
+ elmImport .hasExposures = true ;
525
+ elmImports .add (elmImport );
526
+ }
506
527
operations .put ("elmImports" , elmImports );
507
528
508
529
return operations ;
@@ -553,14 +574,16 @@ private String paramToString(final String prefix, final CodegenParameter param,
553
574
}
554
575
555
576
String mapFn = null ;
556
- if (param .isString || param .isUuid || param . isBinary || param .isByteArray ) {
577
+ if (param .isString || param .isBinary || param .isByteArray ) {
557
578
mapFn = "" ;
558
579
} else if (param .isBoolean ) {
559
580
mapFn = "(\\ val -> if val then \" true\" else \" false\" )" ;
560
581
} else if (param .isDateTime ) {
561
582
mapFn = "DateTime.toString" ;
562
583
} else if (param .isDate ) {
563
584
mapFn = "DateOnly.toString" ;
585
+ } else if (param .isUuid ) {
586
+ mapFn = "Uuid.toString" ;
564
587
} else if (ElmVersion .ELM_018 .equals (elmVersion )) {
565
588
mapFn = "toString" ;
566
589
} else if (param .isInteger || param .isLong ) {
0 commit comments