diff --git a/modules/swagger-annotations/src/main/java/io/swagger/annotations/ApiResponse.java b/modules/swagger-annotations/src/main/java/io/swagger/annotations/ApiResponse.java index f9b2bccd43..51382b5dd5 100644 --- a/modules/swagger-annotations/src/main/java/io/swagger/annotations/ApiResponse.java +++ b/modules/swagger-annotations/src/main/java/io/swagger/annotations/ApiResponse.java @@ -85,4 +85,6 @@ * Valid values are "List", "Set" or "Map". Any other value will be ignored. */ String responseContainer() default ""; + + Example examples() default @Example(value = @ExampleProperty(value = "", mediaType = "")); } diff --git a/modules/swagger-annotations/src/main/java/io/swagger/annotations/ExampleProperty.java b/modules/swagger-annotations/src/main/java/io/swagger/annotations/ExampleProperty.java index 4bd5d6e8e3..0f90c728f7 100644 --- a/modules/swagger-annotations/src/main/java/io/swagger/annotations/ExampleProperty.java +++ b/modules/swagger-annotations/src/main/java/io/swagger/annotations/ExampleProperty.java @@ -36,7 +36,7 @@ * * @return the name of the property */ - String mediaType() default "default"; + String mediaType() default ""; /** * The value of the example. diff --git a/modules/swagger-jaxrs/src/main/java/io/swagger/jaxrs/Reader.java b/modules/swagger-jaxrs/src/main/java/io/swagger/jaxrs/Reader.java index a715d498da..13f07bf81d 100644 --- a/modules/swagger-jaxrs/src/main/java/io/swagger/jaxrs/Reader.java +++ b/modules/swagger-jaxrs/src/main/java/io/swagger/jaxrs/Reader.java @@ -22,21 +22,7 @@ import com.fasterxml.jackson.databind.introspect.AnnotatedMethod; import com.fasterxml.jackson.databind.introspect.AnnotatedParameter; import com.fasterxml.jackson.databind.type.TypeFactory; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiKeyAuthDefinition; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; -import io.swagger.annotations.Authorization; -import io.swagger.annotations.AuthorizationScope; -import io.swagger.annotations.BasicAuthDefinition; -import io.swagger.annotations.Info; -import io.swagger.annotations.OAuth2Definition; -import io.swagger.annotations.ResponseHeader; -import io.swagger.annotations.Scope; -import io.swagger.annotations.SwaggerDefinition; +import io.swagger.annotations.*; import io.swagger.converter.ModelConverters; import io.swagger.jaxrs.config.DefaultReaderConfig; import io.swagger.jaxrs.config.ReaderConfig; @@ -1001,9 +987,11 @@ private void processOperationDecorator(Operation operation, Method method) { private void addResponse(Operation operation, ApiResponse apiResponse) { Map responseHeaders = parseResponseHeaders(apiResponse.responseHeaders()); + //map of response examples annotated with @Example + Map examples = parseExamples(apiResponse.examples()); - Response response = new Response() - .description(apiResponse.message()).headers(responseHeaders); + Response response = new Response().description(apiResponse.message()).headers(responseHeaders); + response.setExamples(examples); if (apiResponse.code() == 0) { operation.defaultResponse(response); @@ -1023,6 +1011,29 @@ private void addResponse(Operation operation, ApiResponse apiResponse) { } } + /** + * Parses the example snippets which is provided in the annotation @{@link Example} + * @param examples + * @return - a map of example strings + */ + private Map parseExamples(Example examples) { + if(examples == null){ + return null; + } + + Map map = null; + for(ExampleProperty prop : examples.value()){ + + if(prop.mediaType().equals("") && prop.value().equals("")){ + continue; + } + + map = map == null ? new HashMap() : map; + map.put(prop.mediaType(), prop.value()); + } + return map; + } + private List getParameters(Type type, List annotations) { final Iterator chain = SwaggerExtensions.chain(); if (!chain.hasNext()) {