@PUT @Produces(MediaType.APPLICATION_JSON) @Path("/schemas/{schemaName}") @ApiOperation(value = "Update a schema", notes = "Updates a schema") @ApiResponses(value = {@ApiResponse(code = 200, message = "Successfully updated schema"), @ApiResponse(code = 404, message = "Schema not found"), @ApiResponse(code = 400, message = "Missing or invalid request body"), @ApiResponse(code = 500, message = "Internal error")}) public SuccessResponse updateSchema( @ApiParam(value = "Name of the schema", required = true) @PathParam("schemaName") String schemaName, FormDataMultiPart multiPart) { return addOrUpdateSchema(schemaName, multiPart); }
private List<Map<String, Object>> determineResponses(Method method) { final List<Map<String, Object>> result = Lists.newArrayList(); final ApiResponses annotation = method.getAnnotation(ApiResponses.class); if (null != annotation) { for (ApiResponse response : annotation.value()) { final Map<String, Object> responseDescription = ImmutableMap.<String, Object>of( "code", response.code(), "message", response.message()); result.add(responseDescription); } } return result; }
if (apiOperation.hidden()) { return null; if (!"".equals(apiOperation.nickname())) { operationId = apiOperation.nickname(); final Produces produces = ReflectionUtils.getAnnotation(method, Produces.class); if (produces != null) { for (String mediaType : ReaderUtils.splitContentValues(produces.value())) { operation.produces(mediaType); apiResponses.addAll(Arrays.asList(responseAnnotation.value())); ApiResponses exceptionResponses = ReflectionUtils.getAnnotation(exceptionType, ApiResponses.class); if (exceptionResponses != null) { apiResponses.addAll(Arrays.asList(exceptionResponses.value())); String key = apiResponse.code() == 0 ? "default" : String.valueOf(apiResponse.code()); if (operation.getResponses().containsKey(key)) { continue;
private static ResponseConfig convert(ApiResponse apiResponse) { ResponseConfig responseConfig = new ResponseConfig(); responseConfig.setCode(apiResponse.code()); responseConfig.setDescription(apiResponse.message()); responseConfig.setResponseClass(apiResponse.response()); responseConfig.setResponseContainer(apiResponse.responseContainer()); responseConfig.setResponseReference(apiResponse.reference()); responseConfig.setResponseHeaders(apiResponse.responseHeaders()); return responseConfig; }
if (apiOperation != null && StringUtils.isNotBlank(apiOperation.responseReference())) { final Response response = new Response().description(SUCCESSFUL_OPERATION); response.schema(new RefProperty(apiOperation.responseReference())); result.put(apiOperation.code(), response); for (ApiResponse apiResponse : responseAnnotation.value()) { final Map<String, Property> responseHeaders = parseResponseHeaders(swagger, context, apiResponse.responseHeaders()); .description(apiResponse.message()) .headers(responseHeaders); if (StringUtils.isNotEmpty(apiResponse.reference())) { response.schema(new RefProperty(apiResponse.reference())); } else if (!ReflectionUtils.isVoid(apiResponse.response())) { final Type type = apiResponse.response(); final Property property = ModelConverters.getInstance().readAsProperty(type); if (property != null) { response.schema(ContainerWrapper.wrapContainer(apiResponse.responseContainer(), property)); appendModels(swagger, type); result.put(apiResponse.code(), response);
.operationId(apiOperation.nickname()) .summary(apiOperation.value()) .description(apiOperation.notes()) .tags(Arrays.asList(operationTags)); Arrays.asList(apiResponses.value()) .forEach(apiResponse -> { Response responseMessage = new Response().description(apiResponse.message()); RefProperty responseObject = new RefProperty(); if (apiResponse.code() == STATUS_CODE_OK && !apiOperation.response().equals(Void.class)) { responseObject.asDefault(apiOperation.response().getSimpleName()); responseMessage.schema(responseObject); } else if (!apiResponse.response().equals(Void.class)) { responseObject.asDefault(apiResponse.response().getSimpleName()); responseMessage.schema(responseObject); operation.response(apiResponse.code(), responseMessage); });
protected void updateApiResponse(Operation operation, ApiResponses responseAnnotation) { for (ApiResponse apiResponse : responseAnnotation.value()) { Map<String, Property> responseHeaders = parseResponseHeaders(apiResponse.responseHeaders()); Class<?> responseClass = apiResponse.response(); Response response = new Response() .description(apiResponse.message()) .headers(responseHeaders); Response apiOperationResponse = operation.getResponses().get(String.valueOf(apiResponse.code())); if (apiOperationResponse != null) { response.setSchema(apiOperationResponse.getSchema()); for (String key : models.keySet()) { final Property schema = new RefProperty().asDefault(key); if (apiResponse.responseContainer().equals("List")) { response.schema(new ArrayProperty(schema)); } else { Map<String, Response> responses = operation.getResponses(); if (responses != null) { Response apiOperationResponse = responses.get(String.valueOf(apiResponse.code())); if (apiOperationResponse != null) { response.setSchema(apiOperationResponse.getSchema()); if (apiResponse.code() == 0) { operation.defaultResponse(response); } else { operation.response(apiResponse.code(), response);
private ApiResponse getApiResponseForErrorCode(int errorCode, HandlerMethod method) { ApiResponses apiResponses = method.getMethodAnnotation(ApiResponses.class); if (apiResponses != null) { for (ApiResponse apiResponse : apiResponses.value()) { if (apiResponse.code() == errorCode) { return apiResponse; } } } return method.getMethodAnnotation(ApiResponse.class); } }
@Override public List<ResolvedType> apply(ApiResponses input) { List<ResolvedType> resolvedTypes = newArrayList(); for (ApiResponse response : input.value()) { ResolvedType modelType = context.alternateFor(typeResolver.resolve(response.response())); LOG.debug("Adding input parameter of type {}", resolvedTypeSignature(modelType).or("<null>")); resolvedTypes.add(modelType); } return resolvedTypes; } };
@SuppressWarnings("Duplicates") @VisibleForTesting static ResolvedType getResolvedType( ApiResponse annotation, TypeResolver resolver, ResolvedType defaultType) { if (null != annotation) { Class<?> response = annotation.response(); String responseContainer = annotation.responseContainer(); if (resolvedType(resolver, response, responseContainer).isPresent()) { return resolvedType(resolver, response, responseContainer).get(); } } return defaultType; }
private ResponseEntity<?> handleNoteNotFoundException(NoteNotFoundException e, HandlerMethod handlerMethod) { ApiResponse apiResponse = getApiResponseForErrorCode(404, handlerMethod); Error error = new Error().message(apiResponse != null ? apiResponse.message() : "Note not found:" + e.getNoteId()); return new ResponseEntity<Error>(error, HttpStatus.NOT_FOUND); }
if (apiOperation.hidden()) { return null; if (!"".equals(apiOperation.nickname())) { operationId = apiOperation.nickname(); final Produces produces = ReflectionUtils.getAnnotation(method, Produces.class); if (produces != null) { for (String mediaType : ReaderUtils.splitContentValues(produces.value())) { operation.produces(mediaType); apiResponses.addAll(Arrays.asList(responseAnnotation.value())); ApiResponses exceptionResponses = ReflectionUtils.getAnnotation(exceptionType, ApiResponses.class); if (exceptionResponses != null) { apiResponses.addAll(Arrays.asList(exceptionResponses.value())); String key = apiResponse.code() == 0 ? "default" : String.valueOf(apiResponse.code()); if (operation.getResponses().containsKey(key)) { continue;
private static ResponseConfig convert(ApiResponse apiResponse) { ResponseConfig responseConfig = new ResponseConfig(); responseConfig.setCode(apiResponse.code()); responseConfig.setDescription(apiResponse.message()); responseConfig.setResponseClass(apiResponse.response()); responseConfig.setResponseContainer(apiResponse.responseContainer()); responseConfig.setResponseReference(apiResponse.reference()); responseConfig.setResponseHeaders(apiResponse.responseHeaders()); return responseConfig; }
if (apiOperation != null && StringUtils.isNotBlank(apiOperation.responseReference())) { final Response response = new Response().description(SUCCESSFUL_OPERATION); response.schema(new RefProperty(apiOperation.responseReference())); result.put(apiOperation.code(), response); ApiResponses.class); if (responseAnnotation != null) { for (ApiResponse apiResponse : responseAnnotation.value()) { final Map<String, Property> responseHeaders = parseResponseHeaders(context, apiResponse.responseHeaders()); final Response response = new Response().description(apiResponse.message()) .headers(responseHeaders); if (StringUtils.isNotEmpty(apiResponse.reference())) { response.schema(new RefProperty(apiResponse.reference())); } else if (!ReflectionUtils.isVoid(apiResponse.response())) { final Type type = apiResponse.response(); final Property property = ModelConverters.getInstance().readAsProperty(type); if (property != null) { response.schema(ContainerWrapper .wrapContainer(apiResponse.responseContainer(), property)); appendModels(context.getSwagger(), type); result.put(apiResponse.code(), response);
ApiResponse[] apiResponseAnnotations = apiResponses.value(); for (ApiResponse apiResponse : apiResponseAnnotations) { if (!seenResponsesByCode.containsKey(apiResponse.code())) { seenResponsesByCode.put(apiResponse.code(), apiResponse); ModelContext modelContext = returnValue( context.getGroupName(), apiResponse.response(), context.getDocumentationType(), context.getAlternateTypeProvider(), Optional<ModelReference> responseModel = Optional.absent(); Optional<ResolvedType> type = resolvedType(null, apiResponse); if (isSuccessful(apiResponse.code())) { type = type.or(operationResponse); headers.putAll(headers(apiResponse.responseHeaders())); .code(apiResponse.code()) .message(apiResponse.message()) .responseModel(responseModel.orNull()) .headersWithDescription(headers)
@POST @Produces(MediaType.APPLICATION_JSON) @Path("/schemas") @ApiOperation(value = "Add a new schema", notes = "Adds a new schema") @ApiResponses(value = {@ApiResponse(code = 200, message = "Successfully deleted schema"), @ApiResponse(code = 404, message = "Schema not found"), @ApiResponse(code = 400, message = "Missing or invalid request body"), @ApiResponse(code = 500, message = "Internal error")}) public SuccessResponse addSchema(FormDataMultiPart multiPart) { return addOrUpdateSchema(null, multiPart); }
if (apiOperation.hidden()) { return null; if (apiOperation.ignoreJsonView()) { jsonViewAnnotation = null; if (!apiOperation.nickname().isEmpty()) { operationId = apiOperation.nickname(); final Produces produces = ReflectionUtils.getAnnotation(method, Produces.class); if (produces != null) { for (String mediaType : ReaderUtils.splitContentValues(produces.value())) { operation.produces(mediaType); apiResponses.addAll(Arrays.asList(responseAnnotation.value())); ApiResponses exceptionResponses = ReflectionUtils.getAnnotation(exceptionType, ApiResponses.class); if (exceptionResponses != null) { apiResponses.addAll(Arrays.asList(exceptionResponses.value())); String key = (apiResponse.code() == 0) ? "default" : String.valueOf(apiResponse.code()); if (operation.getResponses() != null && operation.getResponses().containsKey(key)) { continue;
private void addResponse(Operation operation, ApiResponse apiResponse) { Map<String, Property> responseHeaders = parseResponseHeaders(apiResponse.responseHeaders()); Response response = new Response().description(apiResponse.message()).headers(responseHeaders); if (apiResponse.code() == 0) { operation.defaultResponse(response); } else { operation.response(apiResponse.code(), response); } if (StringUtils.isNotEmpty(apiResponse.reference())) { response.schema(new RefProperty(apiResponse.reference())); } else if (!isVoid(apiResponse.response())) { Type responseType = apiResponse.response(); final Property property = ModelConverters.getInstance().readAsProperty(responseType); if (property != null) { response.schema(ContainerWrapper.wrapContainer(apiResponse.responseContainer(), property)); appendModels(responseType); } } }
for (ApiResponse swaggerResponse : swaggerResponses.value()) { ResponseCode rc = new ResponseCode(this); rc.setCode(swaggerResponse.code()); rc.setCondition(swaggerResponse.message()); io.swagger.annotations.ResponseHeader[] headers = swaggerResponse.responseHeaders(); for (io.swagger.annotations.ResponseHeader header : headers) { if (!header.name().isEmpty()) {
private List<Map<String, Object>> determineResponses(Method method) { final List<Map<String, Object>> result = Lists.newArrayList(); final ApiResponses annotation = method.getAnnotation(ApiResponses.class); if (null != annotation) { for (ApiResponse response : annotation.value()) { final Map<String, Object> responseDescription = ImmutableMap.<String, Object>of( "code", response.code(), "message", response.message()); result.add(responseDescription); } } return result; }