@Override protected void doWithMethodDocument(MethodDocument document, Method method) { ResourceMethod rm = method.getAnnotation(ResourceMethod.class); if (rm == null) { throw new IllegalArgumentException( "Can't generate document unless method is annotated with @ResourceMethod"); } MethodParamProcessor mpp = new MethodParamProcessor(); mpp.processAnnotations(method, document); // --- Process TGIRest annotations ResourceMethod resourceMethod = method.getAnnotation(ResourceMethod.class); if (resourceMethod != null) { document.setDescription(resourceMethod.description()); document.setResponseErrors(getResponseErrors(resourceMethod)); // Parse examples. document.setExampleDocuments(getExampleDocuments(resourceMethod)); } }
/** * Gets the error documentation for the resource method annotation. * * @param resourceMethod Endpoint method to document. * @return a list of ResponseErrors in the parameter */ List<ResponseError> getResponseErrors(ResourceMethod resourceMethod) { if (null == resourceMethod) return Collections.emptyList(); final Collection<ResponseError> errors = Collections2.transform( Arrays.asList(resourceMethod.errors()), new Function<MethodError, ResponseError>() { @Override public ResponseError apply(MethodError from) { return new ResponseError(from.status().getStatusCode(), from.cause()); } }); return ImmutableList.copyOf(errors); }
List<ApiExampleDocument> getExampleDocuments(ResourceMethod method) { if (null == method) return Collections.emptyList(); final Collection<ApiExampleDocument> documents = Collections2.transform( Arrays.asList(method.examples()), new Function<ApiCallExample, ApiExampleDocument>() { @Override public ApiExampleDocument apply(ApiCallExample apiCallExample) { return new ApiExampleDocument( apiCallExample.title(), apiCallExample.description(), apiCallExample.input(), apiCallExample.contentType(), apiCallExample.output(), apiCallExample.accepts()); } }); return ImmutableList.copyOf(documents); }