AnnotationsUtils.getInfo(openAPIDefinition.info()).ifPresent(info -> openAPI.setInfo(info)); .getExternalDocumentation(openAPIDefinition.externalDocs()) .ifPresent(docs -> openAPI.setExternalDocs(docs)); .getTags(openAPIDefinition.tags(), false) .ifPresent(tags -> openApiTags.addAll(tags)); AnnotationsUtils.getServers(openAPIDefinition.servers()).ifPresent(servers -> openAPI.setServers(servers)); .getExtensions(openAPIDefinition.extensions())); if (apiTags != null) { AnnotationsUtils .getTags(apiTags, false).ifPresent(tags -> tags .stream() AnnotationsUtils.getServers(apiServers).ifPresent(servers -> classServers.addAll(servers)); Optional<io.swagger.v3.oas.models.ExternalDocumentation> classExternalDocumentation = AnnotationsUtils.getExternalDocumentation(apiExternalDocs); for (int i = 0; i < genericParameterTypes.length; i++) { final Type type = TypeFactory.defaultInstance().constructType(genericParameterTypes[i], cls); io.swagger.v3.oas.annotations.Parameter paramAnnotation = AnnotationsUtils.getAnnotation(io.swagger.v3.oas.annotations.Parameter.class, paramAnnotations[i]); Type paramType = ParameterProcessor.getParameterType(paramAnnotation, true); if (paramType == null) { AnnotatedParameter param = annotatedMethod.getParameter(i);
Map<String, Object> extensions = AnnotationsUtils.getExtensions(response.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { AnnotationsUtils.getContent(response.content(), classProduces == null ? new String[0] : classProduces.value(), methodProduces == null ? new String[0] : methodProduces.value(), null, components, jsonViewAnnotation).ifPresent(apiResponseObject::content); AnnotationsUtils.getHeaders(response.headers(), jsonViewAnnotation).ifPresent(apiResponseObject::headers); if (StringUtils.isNotBlank(apiResponseObject.getDescription()) || apiResponseObject.getContent() != null || apiResponseObject.getHeaders() != null) { Map<String, Link> links = AnnotationsUtils.getLinks(response.links()); if (links.size() > 0) { apiResponseObject.setLinks(links);
MediaType mediaType = new MediaType(); if (components != null) { getSchema(annotationContent, components, jsonViewAnnotation).ifPresent(mediaType::setSchema); } else { mediaType.setSchema(schema); getExample(example).ifPresent(exampleObject -> mediaType.addExamples(example.name(), exampleObject)); Map<String, Object> extensions = AnnotationsUtils.getExtensions(annotationContent.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { addEncodingToMediaType(mediaType, encoding, jsonViewAnnotation); applyTypes(classTypes, methodTypes, content, mediaType);
getExternalDocumentation(tag.externalDocs()).ifPresent(tagObject::setExternalDocs); if (tag.extensions().length > 0) { Map<String, Object> extensions = AnnotationsUtils.getExtensions(tag.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) {
Map<String, Object> extensions = AnnotationsUtils.getExtensions(info.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { return Optional.empty(); getContact(info.contact()).ifPresent(infoObject::setContact); getLicense(info.license()).ifPresent(infoObject::setLicense);
protected Map<String, Object> resolveExtensions(Annotated a, Annotation[] annotations, io.swagger.v3.oas.annotations.media.Schema schema) { if (schema != null && schema.extensions() != null && schema.extensions().length > 0) { return AnnotationsUtils.getExtensions(schema.extensions()); } return null; }
AnnotationsUtils.getExternalDocumentation(apiOperation.externalDocs()).ifPresent(operation::setExternalDocs); AnnotationsUtils.getServers(apiOperation.servers()).ifPresent(servers -> servers.forEach(operation::addServersItem)); Map<String, Object> extensions = AnnotationsUtils.getExtensions(apiOperation.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) {
public static Optional<Schema> getSchemaFromAnnotation(io.swagger.v3.oas.annotations.media.Schema schema, Components components, JsonView jsonViewAnnotation) { if (schema == null || !hasSchemaAnnotation(schema)) { return Optional.empty(); Map<String, Object> extensions = AnnotationsUtils.getExtensions(schema.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { getExternalDocumentation(schema.externalDocs()).ifPresent(schemaObject::setExternalDocs); Schema notSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); schemaObject.setNot(notSchemaObject); Class<?>[] schemaImplementations = schema.oneOf(); for (Class<?> schemaImplementation : schemaImplementations) { Schema oneOfSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); ((ComposedSchema) schemaObject).addOneOfItem(oneOfSchemaObject); Class<?>[] schemaImplementations = schema.anyOf(); for (Class<?> schemaImplementation : schemaImplementations) { Schema anyOfSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); ((ComposedSchema) schemaObject).addAnyOfItem(anyOfSchemaObject); Class<?>[] schemaImplementations = schema.allOf(); for (Class<?> schemaImplementation : schemaImplementations) { Schema allOfSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); ((ComposedSchema) schemaObject).addAllOfItem(allOfSchemaObject);
final Annotation resolvedSchemaOrArrayAnnotation = AnnotationsUtils.mergeSchemaAnnotations(annotatedType.getCtxAnnotations(), type); final io.swagger.v3.oas.annotations.media.Schema resolvedSchemaAnnotation = resolvedSchemaOrArrayAnnotation == null ? JsonIdentityInfo jsonIdentityInfo = AnnotationsUtils.getAnnotation(JsonIdentityInfo.class, annotatedType.getCtxAnnotations()); if (jsonIdentityInfo == null) { jsonIdentityInfo = type.getRawClass().getAnnotation(JsonIdentityInfo.class); JsonIdentityReference jsonIdentityReference = AnnotationsUtils.getAnnotation(JsonIdentityReference.class, annotatedType.getCtxAnnotations()); if (jsonIdentityReference == null) { jsonIdentityReference = type.getRawClass().getAnnotation(JsonIdentityReference.class); io.swagger.v3.oas.annotations.media.Schema ctxSchema = AnnotationsUtils.getSchemaAnnotation(annotations); if (AnnotationsUtils.hasSchemaAnnotation(ctxSchema)) { if (!StringUtils.isBlank(ctxSchema.name())) { propSchemaName = ctxSchema.name(); io.swagger.v3.oas.annotations.media.ArraySchema ctxArraySchema = AnnotationsUtils.getArraySchemaAnnotation(annotations); if (AnnotationsUtils.hasArrayAnnotation(ctxArraySchema)) { if (AnnotationsUtils.hasSchemaAnnotation(ctxArraySchema.schema())) { if (!StringUtils.isBlank(ctxArraySchema.schema().name())) { propSchemaName = ctxArraySchema.schema().name(); propName = propSchemaName; Annotation propSchemaOrArray = AnnotationsUtils.mergeSchemaAnnotations(annotations, propType); final io.swagger.v3.oas.annotations.media.Schema propResolvedSchemaAnnotation = propSchemaOrArray == null ?
AnnotationsUtils.getExample(exampleObject).ifPresent(example -> exampleMap.put(exampleObject.name(), example)); Map<String, Object> extensionMap = AnnotationsUtils.getExtensions(p.extensions()); if (extensionMap != null && extensionMap.size() > 0) { for (String ext : extensionMap.keySet()) { Optional<Content> content = AnnotationsUtils.getContent(p.content(), classTypes, methodTypes, parameter.getSchema(), null, jsonViewAnnotation); if (content.isPresent()) { parameter.setContent(content.get());
public static Optional<ArraySchema> getArraySchema(io.swagger.v3.oas.annotations.media.ArraySchema arraySchema, Components components, JsonView jsonViewAnnotation) { if (arraySchema == null || !hasArrayAnnotation(arraySchema)) { return Optional.empty(); Map<String, Object> extensions = AnnotationsUtils.getExtensions(arraySchema.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { getSchemaFromAnnotation(arraySchema.schema(), components, jsonViewAnnotation).ifPresent(schema -> { if (StringUtils.isNotBlank(schema.getType()) || StringUtils.isNotBlank(schema.get$ref())) { arraySchemaObject.setItems(schema);
Map<String, Object> extensions = AnnotationsUtils.getExtensions(requestBody.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { return Optional.empty(); AnnotationsUtils.getContent(requestBody.content(), classConsumes == null ? new String[0] : classConsumes.value(), methodConsumes == null ? new String[0] : methodConsumes.value(), null, components, jsonViewAnnotation).ifPresent(requestBodyObject::setContent); return Optional.of(requestBodyObject);
getHeaders(encoding.headers(), jsonViewAnnotation).ifPresent(encodingObject::headers); Map<String, Object> extensions = AnnotationsUtils.getExtensions(encoding.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) {
Map<String, Object> extensions = AnnotationsUtils.getExtensions(link.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { return Optional.empty(); Map<String, String> linkParameters = getLinkParameters(link.parameters()); if (linkParameters.size() > 0) { linkObject.setParameters(linkParameters);
@Override public io.swagger.v3.oas.annotations.ExternalDocumentation externalDocs() { if (getExternalDocumentation(master.externalDocs()).isPresent() || !getExternalDocumentation(patch.externalDocs()).isPresent()) { return master.externalDocs(); } return patch.externalDocs(); }
/** * Applies annotations to property's {@link XML} definition. * * @param member annotations provider * @param property property instance to be updated */ public static void apply(Annotated member, Annotation[] annotations, Schema property) { XmlElementWrapper wrapper = member.getAnnotation(XmlElementWrapper.class); if (wrapper == null) { wrapper = AnnotationsUtils.getAnnotation(XmlElementWrapper.class, annotations); } XmlAttribute attr = member.getAnnotation(XmlAttribute.class); if (attr == null) { attr = AnnotationsUtils.getAnnotation(XmlAttribute.class, annotations); } XmlElement elem = member.getAnnotation(XmlElement.class); if (elem == null) { elem = AnnotationsUtils.getAnnotation(XmlElement.class, annotations); } if (wrapper != null) { applyElement(wrapper, property); } else if (elem != null) { applyElement(elem, property); } else if (attr != null && isAttributeAllowed(property)) { applyAttribute(attr, property); } }
@Test(dataProvider = "expectedData") public void extensionsTest(String methodName, Map<String, Object> expected) throws NoSuchMethodException { final Method method = getClass().getDeclaredMethod(methodName); final Extension[] extensions = method.getAnnotation(Operation.class).extensions(); final Map<String, Object> map = AnnotationsUtils.getExtensions(extensions); Assert.assertEquals(map, expected); }
AnnotationsUtils.getExternalDocumentation(apiOperation.externalDocs()).ifPresent(operation::setExternalDocs); AnnotationsUtils.getServers(apiOperation.servers()).ifPresent(servers -> servers.forEach(operation::addServersItem)); Map<String, Object> extensions = AnnotationsUtils.getExtensions(apiOperation.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) {
MediaType mediaType = new MediaType(); if (components != null) { getSchema(annotationContent, components, jsonViewAnnotation).ifPresent(mediaType::setSchema); } else { mediaType.setSchema(schema); getExample(example).ifPresent(exampleObject -> mediaType.addExamples(example.name(), exampleObject)); Map<String, Object> extensions = AnnotationsUtils.getExtensions(annotationContent.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { addEncodingToMediaType(mediaType, encoding, jsonViewAnnotation); applyTypes(classTypes, methodTypes, content, mediaType);
public static Optional<Schema> getSchemaFromAnnotation(io.swagger.v3.oas.annotations.media.Schema schema, Components components, JsonView jsonViewAnnotation) { if (schema == null || !hasSchemaAnnotation(schema)) { return Optional.empty(); Map<String, Object> extensions = AnnotationsUtils.getExtensions(schema.extensions()); if (extensions != null) { for (String ext : extensions.keySet()) { getExternalDocumentation(schema.externalDocs()).ifPresent(schemaObject::setExternalDocs); Schema notSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); schemaObject.setNot(notSchemaObject); Class<?>[] schemaImplementations = schema.oneOf(); for (Class<?> schemaImplementation : schemaImplementations) { Schema oneOfSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); ((ComposedSchema) schemaObject).addOneOfItem(oneOfSchemaObject); Class<?>[] schemaImplementations = schema.anyOf(); for (Class<?> schemaImplementation : schemaImplementations) { Schema anyOfSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); ((ComposedSchema) schemaObject).addAnyOfItem(anyOfSchemaObject); Class<?>[] schemaImplementations = schema.allOf(); for (Class<?> schemaImplementation : schemaImplementations) { Schema allOfSchemaObject = resolveSchemaFromType(schemaImplementation, components, jsonViewAnnotation); ((ComposedSchema) schemaObject).addAllOfItem(allOfSchemaObject);