Skip to content

Commit f23e2a2

Browse files
committed
added fix, test for #937
1 parent 9199bf5 commit f23e2a2

File tree

4 files changed

+73
-28
lines changed

4 files changed

+73
-28
lines changed

modules/swagger-jaxrs/src/main/java/com/wordnik/swagger/jaxrs/DefaultParameterExtension.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,26 @@ public class DefaultParameterExtension extends AbstractSwaggerExtension implemen
2626
Logger LOGGER = LoggerFactory.getLogger(DefaultParameterExtension.class);
2727

2828
public List<Parameter> extractParameters(Annotation[] annotations, Class<?> cls, boolean isArray, Set<Class<?>> classesToSkip, Iterator<SwaggerExtension> chain) {
29-
String defaultValue = null;
29+
String defaultValue = "";
3030

3131
if(this.shouldIgnoreClass(cls))
3232
return new ArrayList<Parameter>();
3333

3434
List<Parameter> parameters = new ArrayList<Parameter>();
3535
Parameter parameter = null;
3636
for(Annotation annotation : annotations) {
37+
if(annotation instanceof DefaultValue) {
38+
DefaultValue defaultValueAnnotation = (DefaultValue) annotation;
39+
defaultValue = defaultValueAnnotation.value();
40+
}
3741
if(annotation instanceof QueryParam) {
3842
QueryParam param = (QueryParam) annotation;
3943
QueryParameter qp = new QueryParameter()
4044
.name(param.value());
41-
qp.setDefaultValue(defaultValue);
45+
46+
if(!defaultValue.isEmpty()) {
47+
qp.setDefaultValue(defaultValue);
48+
}
4249
Property schema = ModelConverters.getInstance().readAsProperty(cls);
4350
if(schema != null)
4451
qp.setProperty(schema);
@@ -48,7 +55,8 @@ else if(annotation instanceof PathParam) {
4855
PathParam param = (PathParam) annotation;
4956
PathParameter pp = new PathParameter()
5057
.name(param.value());
51-
pp.setDefaultValue(defaultValue);
58+
if(!defaultValue.isEmpty())
59+
pp.setDefaultValue(defaultValue);
5260
Property schema = ModelConverters.getInstance().readAsProperty(cls);
5361
if(schema != null)
5462
pp.setProperty(schema);
@@ -68,7 +76,8 @@ else if(annotation instanceof CookieParam) {
6876
CookieParam param = (CookieParam) annotation;
6977
CookieParameter cp = new CookieParameter()
7078
.name(param.value());
71-
cp.setDefaultValue(defaultValue);
79+
if(!defaultValue.isEmpty())
80+
cp.setDefaultValue(defaultValue);
7281
Property schema = ModelConverters.getInstance().readAsProperty(cls);
7382
if(schema != null)
7483
cp.setProperty(schema);
@@ -78,17 +87,13 @@ else if(annotation instanceof FormParam) {
7887
FormParam param = (FormParam) annotation;
7988
FormParameter fp = new FormParameter()
8089
.name(param.value());
81-
fp.setDefaultValue(defaultValue);
90+
if(!defaultValue.isEmpty())
91+
fp.setDefaultValue(defaultValue);
8292
Property schema = ModelConverters.getInstance().readAsProperty(cls);
8393
if(schema != null)
8494
fp.setProperty(schema);
8595
parameter = fp;
8696
}
87-
else if(annotation instanceof DefaultValue) {
88-
DefaultValue defaultValueAnnotation = (DefaultValue) annotation;
89-
// TODO: not supported yet
90-
defaultValue = defaultValueAnnotation.value();
91-
}
9297
}
9398
if(parameter != null) {
9499
parameters.add(parameter);

modules/swagger-jaxrs/src/main/java/com/wordnik/swagger/jaxrs/ParameterProcessor.java

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,48 +30,62 @@ public static Parameter applyAnnotations(Swagger swagger, Parameter parameter, C
3030
if(annotation instanceof ApiParam) {
3131
ApiParam param = (ApiParam) annotation;
3232
if(parameter != null) {
33-
if(!"".equals(param.defaultValue())){
33+
if(!param.defaultValue().isEmpty()){
3434
defaultValue = param.defaultValue();
3535
}
3636

37-
// parameter.required(param.required());
37+
if(param.required() == true) {
38+
System.out.println(param.required());
39+
parameter.setRequired(param.required());
40+
}
41+
3842
if(param.name() != null && !"".equals(param.name()))
3943
parameter.setName(param.name());
4044
parameter.setDescription(param.value());
4145
parameter.setAccess(param.access());
4246
allowMultiple = param.allowMultiple() || isArray;
43-
if(allowMultiple == true) {
44-
if(parameter instanceof PathParameter) {
45-
PathParameter p = (PathParameter) parameter;
47+
if(parameter instanceof PathParameter) {
48+
PathParameter p = (PathParameter) parameter;
49+
if(defaultValue != null)
50+
p.setDefaultValue(defaultValue);
51+
if(allowMultiple == true) {
4652
Property items = PropertyBuilder.build(p.getType(), p.getFormat(), null);
4753
p.items(items)
4854
.array(true)
4955
.collectionFormat("multi");
50-
p.setDefaultValue(defaultValue);
5156
}
52-
else if(parameter instanceof QueryParameter) {
53-
QueryParameter p = (QueryParameter) parameter;
57+
}
58+
else if(parameter instanceof QueryParameter) {
59+
QueryParameter p = (QueryParameter) parameter;
60+
if(defaultValue != null)
61+
p.setDefaultValue(defaultValue);
62+
if(allowMultiple == true) {
5463
Property items = PropertyBuilder.build(p.getType(), p.getFormat(), null);
5564
p.items(items)
5665
.array(true)
5766
.collectionFormat("multi");
58-
p.setDefaultValue(defaultValue);
5967
}
60-
else if(parameter instanceof HeaderParameter) {
61-
HeaderParameter p = (HeaderParameter) parameter;
68+
}
69+
else if(parameter instanceof HeaderParameter) {
70+
HeaderParameter p = (HeaderParameter) parameter;
71+
if(defaultValue != null)
72+
p.setDefaultValue(defaultValue);
73+
if(allowMultiple == true) {
6274
Property items = PropertyBuilder.build(p.getType(), p.getFormat(), null);
6375
p.items(items)
6476
.array(true)
6577
.collectionFormat("multi");
66-
p.setDefaultValue(defaultValue);
6778
}
68-
else if(parameter instanceof CookieParameter) {
69-
CookieParameter p = (CookieParameter) parameter;
79+
}
80+
else if(parameter instanceof CookieParameter) {
81+
CookieParameter p = (CookieParameter) parameter;
82+
if(defaultValue != null)
83+
p.setDefaultValue(defaultValue);
84+
if(allowMultiple == true) {
7085
Property items = PropertyBuilder.build(p.getType(), p.getFormat(), null);
7186
p.items(items)
7287
.array(true)
7388
.collectionFormat("multi");
74-
p.setDefaultValue(defaultValue);
7589
}
7690
}
7791
allowableValues = param.allowableValues();

modules/swagger-jaxrs/src/test/scala/SimpleScannerTest.scala

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,20 @@ class SimpleScannerTest extends FlatSpec with Matchers {
144144
val swagger = new Reader(new Swagger()).read(classOf[HiddenResource])
145145
val get = swagger.getPaths() should be (null)
146146
}
147-
}
148147

149-
@RunWith(classOf[JUnitRunner])
150-
class SimpleScannerTest2 extends FlatSpec with Matchers {
151148
it should "correctly model an empty model per 499" in {
152149
val swagger = new Reader(new Swagger()).read(classOf[ResourceWithEmptyModel])
153150
Json.prettyPrint(swagger)
154151
}
155152
}
153+
154+
@RunWith(classOf[JUnitRunner])
155+
class SimpleScannerTest2 extends FlatSpec with Matchers {
156+
it should "scan defaultValue and required per #937" in {
157+
val swagger = new Reader(new Swagger()).read(classOf[Resource937])
158+
val get = swagger.getPaths().get("/external/info").getGet()
159+
val param = get.getParameters().get(0).asInstanceOf[QueryParameter]
160+
param.getRequired should be (false)
161+
param.getDefaultValue should be ("dogs")
162+
}
163+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package resources;
2+
3+
import com.wordnik.swagger.annotations.*;
4+
5+
import javax.ws.rs.*;
6+
import javax.ws.rs.core.Response;
7+
8+
import java.util.*;
9+
10+
@Api("/external/info/")
11+
@Path("external/info/")
12+
public class Resource937 {
13+
@ApiOperation(value="test")
14+
@GET
15+
public void getTest(@ApiParam(required=false, defaultValue = "dogs") @DefaultValue("cats") @QueryParam("isRequired") Boolean isRequired) {
16+
return;
17+
}
18+
}

0 commit comments

Comments
 (0)