File tree Expand file tree Collapse file tree 3 files changed +59
-27
lines changed
http-generator-core/src/main/java/io/avaje/http/generator/core/openapi
tests/test-javalin-jsonb/src/main/resources/public Expand file tree Collapse file tree 3 files changed +59
-27
lines changed Original file line number Diff line number Diff line change 22
22
import io .avaje .http .generator .core .SecuritySchemesPrism ;
23
23
import io .avaje .http .generator .core .TagPrism ;
24
24
import io .avaje .http .generator .core .TagsPrism ;
25
+ import io .avaje .http .generator .core .Util ;
25
26
import io .swagger .v3 .oas .models .Components ;
26
27
import io .swagger .v3 .oas .models .OpenAPI ;
27
28
import io .swagger .v3 .oas .models .Operation ;
@@ -77,12 +78,17 @@ private OpenAPI initOpenAPI() {
77
78
}
78
79
79
80
Schema toSchema (String rawType , Element element ) {
80
- TypeElement typeElement = elements .getTypeElement (rawType );
81
+ final var typeElement = elements .getTypeElement (rawType );
82
+ final var varElement =
83
+ elements .getTypeElement (Util .trimAnnotations (element .asType ().toString ()));
84
+
81
85
if (typeElement == null ) {
82
86
// primitive types etc
83
87
return schemaBuilder .toSchema (element .asType ());
88
+ } else if (varElement != null ) {
89
+ return schemaBuilder .toSchema (element );
84
90
} else {
85
- return schemaBuilder .toSchema (typeElement . asType () );
91
+ return schemaBuilder .toSchema (typeElement );
86
92
}
87
93
}
88
94
Original file line number Diff line number Diff line change @@ -132,6 +132,17 @@ private static TypeMirror typeArgument(TypeMirror type) {
132
132
return typeArguments .get (0 );
133
133
}
134
134
135
+ Schema <?> toSchema (Element element ) {
136
+ var schema = toSchema (element .asType ());
137
+
138
+ setLengthMinMax (element , schema );
139
+ setFormatFromValidation (element , schema );
140
+ if (isNotNullable (element )) {
141
+ schema .setNullable (Boolean .FALSE );
142
+ }
143
+ return schema ;
144
+ }
145
+
135
146
Schema <?> toSchema (TypeMirror type ) {
136
147
if (types .isAssignable (type , completableFutureType )) {
137
148
type = typeArgument (type );
Original file line number Diff line number Diff line change 692
692
"description" : " " ,
693
693
"parameters" : [
694
694
{
695
- "name" : " bean " ,
696
- "in" : " bean " ,
695
+ "name" : " name " ,
696
+ "in" : " query " ,
697
697
"schema" : {
698
- "$ref" : " #/components/schemas/GetBeanForm"
698
+ "maxLength" : 150 ,
699
+ "minLength" : 2 ,
700
+ "type" : " string" ,
701
+ "nullable" : false
702
+ }
703
+ },
704
+ {
705
+ "name" : " email" ,
706
+ "in" : " query" ,
707
+ "schema" : {
708
+ "maxLength" : 100 ,
709
+ "type" : " string" ,
710
+ "format" : " email"
711
+ }
712
+ },
713
+ {
714
+ "name" : " addresses" ,
715
+ "in" : " query" ,
716
+ "schema" : {
717
+ "type" : " array" ,
718
+ "items" : {
719
+ "type" : " string"
720
+ }
721
+ }
722
+ },
723
+ {
724
+ "name" : " head" ,
725
+ "in" : " header" ,
726
+ "schema" : {
727
+ "type" : " string"
699
728
}
700
729
}
701
730
],
1440
1469
}
1441
1470
}
1442
1471
}
1472
+ },
1473
+ }
1474
+ }
1475
+ }
1476
+ }
1443
1477
},
1444
1478
"/test/int" : {
1445
1479
"put" : {
1805
1839
}
1806
1840
}
1807
1841
},
1808
- "GetBeanForm" : {
1809
- "type" : " object" ,
1810
- "properties" : {
1811
- "name" : {
1812
- "maxLength" : 150 ,
1813
- "minLength" : 2 ,
1814
- "type" : " string" ,
1815
- "nullable" : false
1816
- },
1817
- "email" : {
1818
- "maxLength" : 100 ,
1819
- "type" : " string" ,
1820
- "format" : " email"
1821
- },
1822
- "addresses" : {
1823
- "type" : " array" ,
1824
- "items" : {
1825
- "type" : " string"
1826
- }
1827
- }
1828
- }
1829
- },
1830
1842
"HelloDto" : {
1831
1843
"type" : " object" ,
1832
1844
"properties" : {
1876
1888
}
1877
1889
}
1878
1890
},
1891
+ "InputStream" : {
1892
+ "type" : " object"
1893
+ },
1879
1894
"MyForm" : {
1880
1895
"type" : " object" ,
1881
1896
"properties" : {
You can’t perform that action at this time.
0 commit comments