Skip to content

Commit 71c5160

Browse files
committed
add colllectionFormat support to retrofit
Fix #1364
1 parent 084e7f7 commit 71c5160

File tree

11 files changed

+215
-3
lines changed

11 files changed

+215
-3
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenParameter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
public class CodegenParameter {
99
public Boolean isFormParam, isQueryParam, isPathParam, isHeaderParam,
10-
isCookieParam, isBodyParam, isFile, notFile, hasMore, isContainer, secondaryParam, isBinary;
10+
isCookieParam, isBodyParam, isFile, notFile, hasMore, isContainer,
11+
secondaryParam, isBinary, isCollectionFormatMulti;
1112
public String baseName, paramName, dataType, collectionFormat, description, baseType, defaultValue;
1213
public String jsonSchema;
1314
public boolean isEnum;
@@ -33,6 +34,7 @@ public CodegenParameter copy() {
3334
output.paramName = this.paramName;
3435
output.dataType = this.dataType;
3536
output.collectionFormat = this.collectionFormat;
37+
output.isCollectionFormatMulti = this.isCollectionFormatMulti;
3638
output.description = this.description;
3739
output.baseType = this.baseType;
3840
output.isFormParam = this.isFormParam;

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,6 +1205,9 @@ public CodegenParameter fromParameter(Parameter param, Set<String> imports) {
12051205
p._enum = model._enum;
12061206
p.allowableValues = model.allowableValues;
12071207
p.collectionFormat = collectionFormat;
1208+
if(collectionFormat != null && collectionFormat.equals("multi")) {
1209+
p.isCollectionFormatMulti = true;
1210+
}
12081211
p.paramName = toParamName(qp.getName());
12091212

12101213
if (model.complexType != null) {

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ public void processOpts() {
218218
supportingFiles.add(new SupportingFile("build.sbt.mustache", "", "build.sbt"));
219219
} else if ("retrofit".equals(getLibrary())) {
220220
supportingFiles.add(new SupportingFile("auth/OAuthOkHttpClient.mustache", authFolder, "OAuthOkHttpClient.java"));
221+
supportingFiles.add(new SupportingFile("CollectionFormats.mustache", invokerFolder, "CollectionFormats.java"));
221222
} else {
222223
supportingFiles.add(new SupportingFile("TypeRef.mustache", invokerFolder, "TypeRef.java"));
223224
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package {{invokerPackage}};
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public class CollectionFormats {
7+
8+
public static class CSVParams {
9+
10+
protected List<String> params;
11+
12+
public CSVParams() {
13+
}
14+
15+
public CSVParams(List<String> params) {
16+
this.params = params;
17+
}
18+
19+
public CSVParams(String... params) {
20+
this.params = Arrays.asList(params);
21+
}
22+
23+
public List<String> getParams() {
24+
return params;
25+
}
26+
27+
public void setParams(List<String> params) {
28+
this.params = params;
29+
}
30+
31+
@Override
32+
public String toString() {
33+
return String.join(",", params);
34+
}
35+
36+
}
37+
38+
public static class SSVParams extends CSVParams {
39+
40+
public SSVParams() {
41+
}
42+
43+
public SSVParams(List<String> params) {
44+
super(params);
45+
}
46+
47+
public SSVParams(String... params) {
48+
super(params);
49+
}
50+
51+
@Override
52+
public String toString() {
53+
return String.join(" ", params);
54+
}
55+
}
56+
57+
public static class TSVParams extends CSVParams {
58+
59+
public TSVParams() {
60+
}
61+
62+
public TSVParams(List<String> params) {
63+
super(params);
64+
}
65+
66+
public TSVParams(String... params) {
67+
super(params);
68+
}
69+
70+
@Override
71+
public String toString() {
72+
return String.join("\t", params);
73+
}
74+
}
75+
76+
public static class PIPESParams extends CSVParams {
77+
78+
public PIPESParams() {
79+
}
80+
81+
public PIPESParams(List<String> params) {
82+
super(params);
83+
}
84+
85+
public PIPESParams(String... params) {
86+
super(params);
87+
}
88+
89+
@Override
90+
public String toString() {
91+
return String.join("|", params);
92+
}
93+
}
94+
95+
}

modules/swagger-codegen/src/main/resources/Java/libraries/retrofit/api.mustache

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package {{package}};
22

3+
import {{invokerPackage}}.CollectionFormats.*;
4+
5+
import {{modelPackage}}.*;
6+
37
import retrofit.Callback;
48
import retrofit.http.*;
59
import retrofit.mime.*;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isQueryParam}}@Query("{{baseName}}") {{{dataType}}} {{paramName}}{{/isQueryParam}}
1+
{{#isQueryParam}}@Query("{{baseName}}") {{#collectionFormat}}{{#isCollectionFormatMulti}}{{{dataType}}}{{/isCollectionFormatMulti}}{{^isCollectionFormatMulti}}{{{collectionFormat.toUpperCase}}}Params{{/isCollectionFormatMulti}}{{/collectionFormat}}{{^collectionFormat}}{{{dataType}}}{{/collectionFormat}} {{paramName}}{{/isQueryParam}}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package io.swagger.client;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public class CollectionFormats {
7+
8+
public static class CSVParams {
9+
10+
protected List<String> params;
11+
12+
public CSVParams() {
13+
}
14+
15+
public CSVParams(List<String> params) {
16+
this.params = params;
17+
}
18+
19+
public CSVParams(String... params) {
20+
this.params = Arrays.asList(params);
21+
}
22+
23+
public List<String> getParams() {
24+
return params;
25+
}
26+
27+
public void setParams(List<String> params) {
28+
this.params = params;
29+
}
30+
31+
@Override
32+
public String toString() {
33+
return String.join(",", params);
34+
}
35+
36+
}
37+
38+
public static class SSVParams extends CSVParams {
39+
40+
public SSVParams() {
41+
}
42+
43+
public SSVParams(List<String> params) {
44+
super(params);
45+
}
46+
47+
public SSVParams(String... params) {
48+
super(params);
49+
}
50+
51+
@Override
52+
public String toString() {
53+
return String.join(" ", params);
54+
}
55+
}
56+
57+
public static class TSVParams extends CSVParams {
58+
59+
public TSVParams() {
60+
}
61+
62+
public TSVParams(List<String> params) {
63+
super(params);
64+
}
65+
66+
public TSVParams(String... params) {
67+
super(params);
68+
}
69+
70+
@Override
71+
public String toString() {
72+
return String.join("\t", params);
73+
}
74+
}
75+
76+
public static class PIPESParams extends CSVParams {
77+
78+
public PIPESParams() {
79+
}
80+
81+
public PIPESParams(List<String> params) {
82+
super(params);
83+
}
84+
85+
public PIPESParams(String... params) {
86+
super(params);
87+
}
88+
89+
@Override
90+
public String toString() {
91+
return String.join("|", params);
92+
}
93+
}
94+
95+
}

samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/StringUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.swagger.client;
22

3-
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-09-18T14:07:38.326+02:00")
3+
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2015-10-11T00:10:38.251+02:00")
44
public class StringUtil {
55
/**
66
* Check if the given array contains the given value (with case-insensitive comparison).

samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/api/PetApi.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package io.swagger.client.api;
22

3+
import io.swagger.client.CollectionFormats.*;
4+
5+
import io.swagger.client.model.*;
6+
37
import retrofit.Callback;
48
import retrofit.http.*;
59
import retrofit.mime.*;

samples/client/petstore/java/retrofit/src/main/java/io/swagger/client/api/StoreApi.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package io.swagger.client.api;
22

3+
import io.swagger.client.CollectionFormats.*;
4+
5+
import io.swagger.client.model.*;
6+
37
import retrofit.Callback;
48
import retrofit.http.*;
59
import retrofit.mime.*;

0 commit comments

Comments
 (0)