1
1
package io .smallrye .openapi .runtime .io ;
2
2
3
+ import static io .smallrye .openapi .runtime .io .schema .SchemaConstant .PROP_NAME ;
4
+
3
5
import java .util .Arrays ;
6
+ import java .util .LinkedHashMap ;
4
7
import java .util .Locale ;
8
+ import java .util .Map ;
5
9
import java .util .Objects ;
6
10
import java .util .Optional ;
7
11
import java .util .Set ;
11
15
import org .eclipse .microprofile .openapi .models .PathItem ;
12
16
import org .eclipse .microprofile .openapi .models .PathItem .HttpMethod ;
13
17
import org .jboss .jandex .AnnotationInstance ;
18
+ import org .jboss .jandex .AnnotationValue ;
14
19
15
20
import io .smallrye .openapi .api .models .PathItemImpl ;
16
21
@@ -21,6 +26,7 @@ public class PathItemIO<V, A extends V, O extends V, AB, OB> extends MapModelIO<
21
26
private static final String PROP_PARAMETERS = "parameters" ;
22
27
private static final String PROP_SERVERS = "servers" ;
23
28
private static final String PROP_SUMMARY = "summary" ;
29
+ private static final String PROP_OPERATIONS = "operations" ;
24
30
private static final Set <String > OPERATION_PROPS = Arrays .asList (PathItem .HttpMethod .values ())
25
31
.stream ()
26
32
.map (Enum ::toString )
@@ -54,6 +60,28 @@ public PathItem read(AnnotationInstance[] annotations) {
54
60
return pathItem ;
55
61
}
56
62
63
+ public Map <String , PathItem > readWebhooks (AnnotationValue annotations ) {
64
+ return Optional .ofNullable (annotations )
65
+ .map (AnnotationValue ::asNestedArray )
66
+ .map (this ::readWebhooks )
67
+ .orElse (null );
68
+ }
69
+
70
+ public Map <String , PathItem > readWebhooks (AnnotationInstance [] annotations ) {
71
+ Map <String , PathItem > webhooks = new LinkedHashMap <>();
72
+
73
+ for (AnnotationInstance annotation : annotations ) {
74
+ PathItem pathItem = read ((AnnotationInstance []) value (annotation , PROP_OPERATIONS ));
75
+ pathItem .setDescription (value (annotation , PROP_DESCRIPTION ));
76
+ pathItem .setSummary (value (annotation , PROP_SUMMARY ));
77
+ pathItem .setExtensions (extensionIO ().readExtensible (annotation ));
78
+ String name = value (annotation , PROP_NAME );
79
+ webhooks .put (name , pathItem );
80
+ }
81
+
82
+ return webhooks ;
83
+ }
84
+
57
85
@ Override
58
86
public PathItem readObject (O node ) {
59
87
IoLogging .logger .singleJsonNode ("PathItem" );
0 commit comments