Skip to content

Commit 4059ee4

Browse files
authored
Merge pull request #3113 from swagger-api/fix-response-example
try resolving response example as json
2 parents 3456a77 + 01c4272 commit 4059ee4

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

modules/swagger-jaxrs/src/main/java/io/swagger/jaxrs/Reader.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
import io.swagger.models.properties.Property;
7070
import io.swagger.models.properties.RefProperty;
7171
import io.swagger.util.BaseReaderUtils;
72+
import io.swagger.util.Json;
7273
import io.swagger.util.ParameterProcessor;
7374
import io.swagger.util.PathUtils;
7475
import io.swagger.util.ReflectionUtils;
@@ -1045,9 +1046,14 @@ private Map<String, Object> parseExamples(Example examples) {
10451046
if(prop.mediaType().equals("") && prop.value().equals("")){
10461047
continue;
10471048
}
1048-
1049+
Object exampleValue = null;
1050+
try {
1051+
exampleValue = Json.mapper().readTree(prop.value());
1052+
} catch (Exception e) {
1053+
exampleValue = prop.value();
1054+
}
10491055
map = map == null ? new LinkedHashMap<String, Object>() : map;
1050-
map.put(prop.mediaType(), prop.value());
1056+
map.put(prop.mediaType(), exampleValue);
10511057
}
10521058
return map;
10531059
}

modules/swagger-jaxrs/src/test/java/io/swagger/ReaderTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
package io.swagger;
22

3+
import com.fasterxml.jackson.databind.JsonNode;
34
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
5+
import io.swagger.annotations.Api;
6+
import io.swagger.annotations.ApiOperation;
7+
import io.swagger.annotations.ApiResponse;
8+
import io.swagger.annotations.ApiResponses;
9+
import io.swagger.annotations.Example;
10+
import io.swagger.annotations.ExampleProperty;
411
import io.swagger.converter.ModelConverters;
512
import io.swagger.jaxrs.Reader;
613
import io.swagger.models.ExternalDocs;
714
import io.swagger.models.Model;
815
import io.swagger.models.Operation;
16+
import io.swagger.models.Pet;
917
import io.swagger.models.Swagger;
1018
import io.swagger.models.Tag;
1119
import io.swagger.models.parameters.BodyParameter;
@@ -42,6 +50,7 @@
4250
import io.swagger.resources.RsMultipleConsumesProducesResource;
4351
import io.swagger.resources.SimpleMethods;
4452
import io.swagger.util.Json;
53+
import io.swagger.util.Yaml;
4554
import org.testng.annotations.Test;
4655

4756
import javax.ws.rs.DELETE;
@@ -50,7 +59,9 @@
5059
import javax.ws.rs.OPTIONS;
5160
import javax.ws.rs.POST;
5261
import javax.ws.rs.PUT;
62+
import javax.ws.rs.Path;
5363
import javax.ws.rs.core.MediaType;
64+
import javax.ws.rs.core.Response;
5465
import java.lang.annotation.Annotation;
5566
import java.lang.reflect.Method;
5667
import java.math.BigDecimal;
@@ -465,6 +476,35 @@ public void testSubResourceHasTheRightApiPath() {
465476

466477
}
467478

479+
@Test(description = "Test Response Example")
480+
public void testResponseExample() {
481+
Swagger swagger = getSwagger(ResponseExampleResource.class);
482+
assertNotNull(swagger);
483+
assertNotNull(swagger.getPath("/v1/example"));
484+
assertEquals(swagger.getPaths().size(), 1);
485+
assertTrue(swagger.getPath("/v1/example").getGet().getResponses().get("200").getExamples().get("application/json") instanceof JsonNode);
486+
487+
}
488+
489+
@Api
490+
@Path("/v1")
491+
public class ResponseExampleResource {
492+
@Path("example")
493+
@ApiOperation(value = "aa")
494+
@ApiResponses({
495+
@ApiResponse(code = 200, message = "test", response = Pet.class,
496+
examples = @Example(value =
497+
{
498+
@ExampleProperty(mediaType = "application/json", value = "{\"id\" : 1, \"name\" : \"test\"}")
499+
}
500+
))
501+
})
502+
@GET
503+
public Response getResource() {
504+
return null;
505+
}
506+
}
507+
468508
@Test(description = "Resolve Model with XML Properties starting with is prefix per #2635")
469509
public void testModelResolverXMLPropertiesName() {
470510
final MyClass myClass = new MyClass();

0 commit comments

Comments
 (0)