Skip to content

Commit e566851

Browse files
committed
Add reading of Webhook annotation
1 parent 2983bdc commit e566851

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

core/src/main/java/io/smallrye/openapi/runtime/io/OpenAPIDefinitionIO.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public OpenAPI read(AnnotationInstance annotation) {
3737
openApi.setSecurity(
3838
securityIO().readRequirements(annotation.value(PROP_SECURITY), annotation.value(PROP_SECURITY_SETS)));
3939
openApi.setExternalDocs(extDocIO().read(annotation.value(PROP_EXTERNAL_DOCS)));
40+
openApi.setWebhooks(pathItemCallbackIO().readWebhooks(annotation.value(PROP_WEBHOOKS)));
4041
openApi.setComponents(componentsIO().read(annotation.value(PROP_COMPONENTS)));
4142
openApi.setExtensions(extensionIO().readExtensible(annotation));
4243

core/src/main/java/io/smallrye/openapi/runtime/io/PathItemIO.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package io.smallrye.openapi.runtime.io;
22

3+
import static io.smallrye.openapi.runtime.io.schema.SchemaConstant.PROP_NAME;
4+
35
import java.util.Arrays;
6+
import java.util.LinkedHashMap;
47
import java.util.Locale;
8+
import java.util.Map;
59
import java.util.Objects;
610
import java.util.Optional;
711
import java.util.Set;
@@ -11,6 +15,7 @@
1115
import org.eclipse.microprofile.openapi.models.PathItem;
1216
import org.eclipse.microprofile.openapi.models.PathItem.HttpMethod;
1317
import org.jboss.jandex.AnnotationInstance;
18+
import org.jboss.jandex.AnnotationValue;
1419

1520
import io.smallrye.openapi.api.models.PathItemImpl;
1621

@@ -21,6 +26,7 @@ public class PathItemIO<V, A extends V, O extends V, AB, OB> extends MapModelIO<
2126
private static final String PROP_PARAMETERS = "parameters";
2227
private static final String PROP_SERVERS = "servers";
2328
private static final String PROP_SUMMARY = "summary";
29+
private static final String PROP_OPERATIONS = "operations";
2430
private static final Set<String> OPERATION_PROPS = Arrays.asList(PathItem.HttpMethod.values())
2531
.stream()
2632
.map(Enum::toString)
@@ -54,6 +60,28 @@ public PathItem read(AnnotationInstance[] annotations) {
5460
return pathItem;
5561
}
5662

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+
5785
@Override
5886
public PathItem readObject(O node) {
5987
IoLogging.logger.singleJsonNode("PathItem");

0 commit comments

Comments
 (0)