import io.swagger.models.Operation; //导入方法依赖的package包/类
private Operation buildOperation(ExecutableElement executableElement) {
Operation operation = new Operation();
String operationId = ofNullable(executableElement.getAnnotation(ApiOperation.class))
.map(ApiOperation::nickname)
.filter(StringUtils::isNotBlank)
.orElse(executableElement.getSimpleName().toString());
operation.setOperationId(operationId);
Element controller = executableElement.getEnclosingElement();
Optional apiAnnotation = ofNullable(controller.getAnnotation(Api.class));
apiAnnotation.ifPresent(annotation -> Stream.of(annotation.tags())
.filter(StringUtils::isNotBlank)
.forEach(operation::addTag));
executableElement.getParameters()
.stream()
.map(this::buildParameter)
.filter(Optional::isPresent)
.map(Optional::get)
.forEach(operation::addParameter);
Response okResponse = new Response();
Property returnProperty = ofNullable(executableElement.getAnnotation(ApiOperation.class))
.map(apiOperation -> annotationUtils.extractType(apiOperation, ApiOperation::response))
.filter(returnType -> returnType.getKind() != TypeKind.VOID)
.map(propertyUtils::toProperty)
.orElseGet(() -> propertyUtils.toProperty(executableElement.getReturnType()));
okResponse.schema(returnProperty);
operation.response(200, okResponse);
return operation;
}