From d143add535843fcf272f3c9a8be35175f85886c1 Mon Sep 17 00:00:00 2001 From: Jan Gasperlin Date: Tue, 27 Jun 2017 20:46:03 +0200 Subject: [PATCH] Fixed override issue on property collectionFormat part of annotation @ApiImplicitParam and added some tests. --- .../src/test/java/io/swagger/ReaderTest.java | 19 ++++++++++++------- .../resources/ResourceWithImplicitParams.java | 4 +++- .../AbstractSerializableParameter.java | 8 +++++++- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/modules/swagger-jaxrs/src/test/java/io/swagger/ReaderTest.java b/modules/swagger-jaxrs/src/test/java/io/swagger/ReaderTest.java index d3718935b0..e4956ba639 100644 --- a/modules/swagger-jaxrs/src/test/java/io/swagger/ReaderTest.java +++ b/modules/swagger-jaxrs/src/test/java/io/swagger/ReaderTest.java @@ -36,12 +36,7 @@ import io.swagger.resources.SimpleMethods; import org.testng.annotations.Test; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HEAD; -import javax.ws.rs.OPTIONS; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; +import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import java.lang.annotation.Annotation; import java.lang.reflect.Method; @@ -228,7 +223,7 @@ public void scanImplicitParam() { Swagger swagger = getSwagger(ResourceWithImplicitParams.class); List params = swagger.getPath("/testString").getPost().getParameters(); assertNotNull(params); - assertEquals(params.size(), 7); + assertEquals(params.size(), 9); assertEquals(params.get(0).getName(), "sort"); assertEquals(params.get(0).getIn(), "query"); @@ -262,6 +257,16 @@ public void scanImplicitParam() { assertEquals(bodyParam.getName(), "body"); assertEquals(bodyParam.getIn(), "body"); assertTrue(bodyParam.getRequired()); + + QueryParameter selectByParam = (QueryParameter) params.get(7); + assertEquals(selectByParam.getName(), "select"); + assertEquals(selectByParam.getIn(), "query"); + assertEquals(selectByParam.getCollectionFormat(), "multi"); + + QueryParameter orderByParam = (QueryParameter) params.get(8); + assertEquals(orderByParam.getName(), "orderby"); + assertEquals(orderByParam.getIn(), "query"); + assertEquals(orderByParam.getCollectionFormat(), "csv"); } @Test(description = "scan implicit params with file objct") diff --git a/modules/swagger-jaxrs/src/test/java/io/swagger/resources/ResourceWithImplicitParams.java b/modules/swagger-jaxrs/src/test/java/io/swagger/resources/ResourceWithImplicitParams.java index 8c69dcbea8..ab41054393 100644 --- a/modules/swagger-jaxrs/src/test/java/io/swagger/resources/ResourceWithImplicitParams.java +++ b/modules/swagger-jaxrs/src/test/java/io/swagger/resources/ResourceWithImplicitParams.java @@ -22,7 +22,9 @@ public class ResourceWithImplicitParams { @ApiImplicitParam(name = "width", paramType = "formData", dataType = "int", allowableValues = "range[infinity,1]"), @ApiImplicitParam(name = "height", paramType = "query", dataType = "int", allowableValues = "range[3,4]"), @ApiImplicitParam(name = "body", paramType = "body", dataType = "string", required = true), - @ApiImplicitParam(name = "width", paramType = "unknown") + @ApiImplicitParam(name = "width", paramType = "unknown"), + @ApiImplicitParam(name = "select", type = "array", paramType = "query", dataTypeClass = String.class), + @ApiImplicitParam(name = "orderby", type = "array", paramType = "query", dataTypeClass = String.class, collectionFormat = "csv") }) @ApiOperation("Test operation with implicit parameters") public void testString() { diff --git a/modules/swagger-models/src/main/java/io/swagger/models/parameters/AbstractSerializableParameter.java b/modules/swagger-models/src/main/java/io/swagger/models/parameters/AbstractSerializableParameter.java index 780c2af095..1d7d3f9822 100644 --- a/modules/swagger-models/src/main/java/io/swagger/models/parameters/AbstractSerializableParameter.java +++ b/modules/swagger-models/src/main/java/io/swagger/models/parameters/AbstractSerializableParameter.java @@ -248,7 +248,13 @@ public String getType() { @Override public void setType(String type) { this.type = type; - setCollectionFormat(ArrayProperty.isType(type) ? getDefaultCollectionFormat() : null); + if(ArrayProperty.isType(type)) { + if(getCollectionFormat() == null){ + setCollectionFormat(getDefaultCollectionFormat()); + } + } else { + setCollectionFormat(null); + } } @Override