protected void checkPath(OperationGenerator operationGenerator) { if (StringUtils.isEmpty(operationGenerator.getPath()) && StringUtils.isEmpty(operationGenerator.getSwagger().getBasePath())) { throw new Error("Path must not both be empty in class and method"); } } }
protected void mergeBodyBasedParameters(OperationGenerator operationGenerator, List<BodyParameter> bodyParameters) { List<Parameter> swaggerParameters = operationGenerator.getSwaggerParameters(); swaggerParameters.removeAll(bodyParameters); // 将这些body包装为一个class,整体做为一个body参数 String bodyParamName = ParamUtils.generateBodyParameterName(operationGenerator.getProviderMethod()); Class<?> cls = ClassUtils.getOrCreateBodyClass(operationGenerator, bodyParameters); BodyParameter bodyParameter = ParamUtils.createBodyParameter(operationGenerator.getSwagger(), bodyParamName, cls); swaggerParameters.add(bodyParameter); }
protected void setParameterType(OperationGenerator operationGenerator, int paramIdx, T parameter) { ParamUtils.setParameterType(operationGenerator.getSwagger(), operationGenerator.getProviderMethod(), paramIdx, parameter); }
@Override public void process(Object annotation, OperationGenerator operationGenerator) { ApiImplicitParam paramAnnotation = (ApiImplicitParam) annotation; Parameter parameter = AnnotationUtils.createParameter(operationGenerator.getSwagger(), paramAnnotation); operationGenerator.addMethodAnnotationParameter(parameter); } }
@Override public void process(Object annotation, OperationGenerator operationGenerator) { // swagger号称不允许独立使用这个标注,不过支持独立使用,也没什么后果 ApiResponse apiResponse = (ApiResponse) annotation; AnnotationUtils.addResponse(operationGenerator.getSwagger(), operationGenerator.getOperation(), apiResponse); } }
@Override public Property process(OperationGenerator operationGenerator) { ParameterizedType type = (ParameterizedType) operationGenerator.getProviderMethod().getGenericReturnType(); Type responseType = type.getActualTypeArguments()[0]; ParamUtils.addDefinitions(operationGenerator.getSwagger(), responseType); return ModelConverters.getInstance().readAsProperty(responseType); } }
@Override public Property process(OperationGenerator operationGenerator) { // Response完全表达应答类型 // 如果produces是text,那么可以假设是string,否则只能报错 List<String> produces = operationGenerator.getOperation().getProduces(); if (produces == null) { produces = operationGenerator.getSwagger().getProduces(); } if (produces != null) { if (produces.contains(MediaType.TEXT_PLAIN)) { Type responseType = String.class; ParamUtils.addDefinitions(operationGenerator.getSwagger(), responseType); return ModelConverters.getInstance().readAsProperty(responseType); } } throw new Error("Use ApiOperation or ApiResponses to declare response type"); } }
@Override public Property process(OperationGenerator operationGenerator) { Type responseType = operationGenerator.getProviderMethod().getGenericReturnType(); ParamUtils.addDefinitions(operationGenerator.getSwagger(), responseType); return ModelConverters.getInstance().readAsProperty(responseType); } }
@Override public void process(Object annotation, OperationGenerator operationGenerator) { ResponseHeader responseHeader = (ResponseHeader) annotation; ResponseHeaderConfig config = AnnotationUtils.convert(responseHeader); if (config != null) { Property property = AnnotationUtils.generateResponseHeaderProperty(operationGenerator.getSwagger(), config); operationGenerator.addResponseHeader(config.getName(), property); } } }
public static BodyParameter createBodyParameter(OperationGenerator operationGenerator, int paramIdx) { Method method = operationGenerator.getProviderMethod(); String paramName = getParameterName(method, paramIdx); Type paramType = getGenericParameterType(method, paramIdx); return createBodyParameter(operationGenerator.getSwagger(), paramName, paramType); }
private RefModel toRefModel(String modelType) { if (RefProperty.class.isInstance(property)) { return (RefModel) PropertyBuilder.toModel(property); } ModelImpl modelImpl = new ModelImpl(); modelImpl.setType("object"); modelImpl.setName(name); modelImpl.addProperty(name, property); operationGenerator.getSwagger().addDefinition(modelType, modelImpl); RefModel refModel = new RefModel(); refModel.setReference("#/definitions/" + modelType); return refModel; } }
@Override public void process(OperationGenerator operationGenerator, int paramIdx) { String paramName = ParamUtils.getParameterName(operationGenerator.getProviderMethod(), paramIdx); QueryParameter queryParameter = new QueryParameter(); queryParameter.setName(paramName); ParamUtils.setParameterType(operationGenerator.getSwagger(), operationGenerator.getProviderMethod(), paramIdx, queryParameter); operationGenerator.addProviderParameter(queryParameter); } }
public static PendingBodyParameter createPendingBodyParameter(OperationGenerator operationGenerator, String paramName, Type paramType) { ParamUtils.addDefinitions(operationGenerator.getSwagger(), paramType); Property property = ModelConverters.getInstance().readAsProperty(paramType); PendingBodyParameter pendingBodyParameter = new PendingBodyParameter(); pendingBodyParameter.setName(paramName); pendingBodyParameter.setProperty(property); pendingBodyParameter.setType(paramType); pendingBodyParameter.setOperationGenerator(operationGenerator); return pendingBodyParameter; } }
@Override public void process(Object annotation, OperationGenerator operationGenerator) { ApiOperation apiOperationAnnotation = (ApiOperation) annotation; Operation operation = operationGenerator.getOperation(); operationGenerator.setHttpMethod(apiOperationAnnotation.httpMethod()); if (!StringUtils.isEmpty(apiOperationAnnotation.value())) { operation.setSummary(apiOperationAnnotation.value()); } if (!StringUtils.isEmpty(apiOperationAnnotation.notes())) { operation.setDescription(apiOperationAnnotation.notes()); } operation.setOperationId(apiOperationAnnotation.nickname()); operation.getVendorExtensions().putAll(BaseReaderUtils.parseExtensions(apiOperationAnnotation.extensions())); convertTags(apiOperationAnnotation.tags(), operation); convertProduces(apiOperationAnnotation.produces(), operation); convertConsumes(apiOperationAnnotation.consumes(), operation); convertProtocols(apiOperationAnnotation.protocols(), operation); AnnotationUtils.addResponse(operationGenerator.getSwagger(), operation, apiOperationAnnotation); // responseReference未解析 // hidden未解析 // authorizations未解析 }
protected void checkPath(OperationGenerator operationGenerator) { if (StringUtils.isEmpty(operationGenerator.getPath()) && StringUtils.isEmpty(operationGenerator.getSwagger().getBasePath())) { throw new Error("Path must not both be empty in class and method"); } } }
@Override public void process(Object annotation, OperationGenerator operationGenerator) { // swagger号称不允许独立使用这个标注,不过支持独立使用,也没什么后果 ApiResponse apiResponse = (ApiResponse) annotation; AnnotationUtils.addResponse(operationGenerator.getSwagger(), operationGenerator.getOperation(), apiResponse); } }
@Override public Property process(OperationGenerator operationGenerator) { ParameterizedType type = (ParameterizedType) operationGenerator.getProviderMethod().getGenericReturnType(); Type responseType = type.getActualTypeArguments()[0]; ParamUtils.addDefinitions(operationGenerator.getSwagger(), responseType); return ModelConverters.getInstance().readAsProperty(responseType); } }
@Override public void process(Object annotation, OperationGenerator operationGenerator) { ResponseHeader responseHeader = (ResponseHeader) annotation; ResponseHeaderConfig config = AnnotationUtils.convert(responseHeader); if (config != null) { Property property = AnnotationUtils.generateResponseHeaderProperty(operationGenerator.getSwagger(), config); operationGenerator.addResponseHeader(config.getName(), property); } } }
@Override public void process(OperationGenerator operationGenerator, int paramIdx) { String paramName = ParamUtils.getParameterName(operationGenerator.getProviderMethod(), paramIdx); QueryParameter queryParameter = new QueryParameter(); queryParameter.setName(paramName); ParamUtils.setParameterType(operationGenerator.getSwagger(), operationGenerator.getProviderMethod(), paramIdx, queryParameter); operationGenerator.addProviderParameter(queryParameter); } }
public static PendingBodyParameter createPendingBodyParameter(OperationGenerator operationGenerator, String paramName, Type paramType) { ParamUtils.addDefinitions(operationGenerator.getSwagger(), paramType); Property property = ModelConverters.getInstance().readAsProperty(paramType); PendingBodyParameter pendingBodyParameter = new PendingBodyParameter(); pendingBodyParameter.setName(paramName); pendingBodyParameter.setProperty(property); pendingBodyParameter.setType(paramType); pendingBodyParameter.setOperationGenerator(operationGenerator); return pendingBodyParameter; } }