@@ -38,6 +38,8 @@ public class OpenAPINormalizer {
38
38
private Map <String , String > inputRules = new HashMap <>();
39
39
private Map <String , Boolean > rules = new HashMap <>();
40
40
41
+ private TreeSet <String > anyTypeTreeSet = new TreeSet <>();
42
+
41
43
final Logger LOGGER = LoggerFactory .getLogger (OpenAPINormalizer .class );
42
44
43
45
Set <String > ruleNames = new TreeSet <>();
@@ -160,6 +162,14 @@ public OpenAPINormalizer(OpenAPI openAPI, Map<String, String> inputRules) {
160
162
rules .put (SIMPLIFY_BOOLEAN_ENUM , true );
161
163
162
164
processRules (inputRules );
165
+
166
+ // represent any type in tree set
167
+ anyTypeTreeSet .add ("string" );
168
+ anyTypeTreeSet .add ("number" );
169
+ anyTypeTreeSet .add ("integer" );
170
+ anyTypeTreeSet .add ("boolean" );
171
+ anyTypeTreeSet .add ("object" );
172
+ anyTypeTreeSet .add ("array" );
163
173
}
164
174
165
175
/**
@@ -922,6 +932,27 @@ private Schema processSimplifyOneOf(Schema schema) {
922
932
923
933
List <Schema > oneOfSchemas = schema .getOneOf ();
924
934
if (oneOfSchemas != null ) {
935
+ // simplify any type with 6 sub-schemas (string, integer, etc) in oneOf
936
+ if (oneOfSchemas .size () == 6 ) {
937
+ TreeSet <String > ts = new TreeSet <>();
938
+ for (Schema s : oneOfSchemas ) {
939
+ ts .add (s .getType ());
940
+ }
941
+
942
+ if (ts .equals (anyTypeTreeSet )) {
943
+ Schema anyType = new Schema ();
944
+ anyType .setDescription (schema .getDescription ());
945
+ anyType .setNullable (schema .getNullable ());
946
+ anyType .setExtensions (schema .getExtensions ());
947
+ anyType .setTitle (schema .getTitle ());
948
+ anyType .setExample (schema .getExample ());
949
+ anyType .setExamples (schema .getExamples ());
950
+ anyType .setDefault (schema .getDefault ());
951
+ anyType .setDeprecated (schema .getDeprecated ());
952
+ return anyType ;
953
+ }
954
+ }
955
+
925
956
if (oneOfSchemas .removeIf (oneOf -> isNullTypeSchema (oneOf ))) {
926
957
schema .setNullable (true );
927
958
@@ -1026,6 +1057,27 @@ private Schema processSimplifyAnyOf(Schema schema) {
1026
1057
1027
1058
List <Schema > anyOfSchemas = schema .getAnyOf ();
1028
1059
if (anyOfSchemas != null ) {
1060
+ // simplify any type with 6 sub-schemas (string, integer, etc) in anyOf
1061
+ if (anyOfSchemas .size () == 6 ) {
1062
+ TreeSet <String > ts = new TreeSet <>();
1063
+ for (Schema s : anyOfSchemas ) {
1064
+ ts .add (s .getType ());
1065
+ }
1066
+
1067
+ if (ts .equals (anyTypeTreeSet )) {
1068
+ Schema anyType = new Schema ();
1069
+ anyType .setDescription (schema .getDescription ());
1070
+ anyType .setNullable (schema .getNullable ());
1071
+ anyType .setExtensions (schema .getExtensions ());
1072
+ anyType .setTitle (schema .getTitle ());
1073
+ anyType .setExample (schema .getExample ());
1074
+ anyType .setExamples (schema .getExamples ());
1075
+ anyType .setDefault (schema .getDefault ());
1076
+ anyType .setDeprecated (schema .getDeprecated ());
1077
+ return anyType ;
1078
+ }
1079
+ }
1080
+
1029
1081
if (anyOfSchemas .removeIf (anyOf -> isNullTypeSchema (anyOf ))) {
1030
1082
schema .setNullable (true );
1031
1083
}
0 commit comments