[Java Play Framework] Fix collection utils (#6025)

* Major fix to the collection handling in Play Framework Generator

* Major fix to the collection handling in Play Framework Generator (small details missing from previous commit)

* Add the fix to header and form parameters too
This commit is contained in:
Jean-François Côté
2017-07-18 07:36:43 -04:00
committed by wing328
parent dafefc06f1
commit dad3e6018a
6 changed files with 59 additions and 132 deletions

View File

@@ -62,7 +62,7 @@ public class PetApiController extends Controller {
@ApiAction
public Result findPetsByStatus() throws Exception {
List<String> statusList = SwaggerUtils.parametersToList("csv", "status", request().getQueryString("status"));
List<String> statusList = SwaggerUtils.parametersToList("csv", request().queryString().get("status"));
List<String> status = new ArrayList<String>();
for (String curParam : statusList) {
//noinspection UseBulkOperation
@@ -76,7 +76,7 @@ public class PetApiController extends Controller {
@ApiAction
public Result findPetsByTags() throws Exception {
List<String> tagsList = SwaggerUtils.parametersToList("csv", "tags", request().getQueryString("tags"));
List<String> tagsList = SwaggerUtils.parametersToList("csv", request().queryString().get("tags"));
List<String> tags = new ArrayList<String>();
for (String curParam : tagsList) {
//noinspection UseBulkOperation

View File

@@ -17,56 +17,42 @@ public class SwaggerUtils {
public @interface ApiAction {
}
public static List<String> parametersToList(String collectionFormat, String name, Object value){
public static List<String> parametersToList(String collectionFormat, String[] values){
List<String> params = new ArrayList<>();
// preconditions
if (name == null || name.isEmpty() || value == null) return params;
if (values == null) {
return params;
}
Collection valueCollection = null;
if (value instanceof Collection) {
valueCollection = (Collection) value;
if (values.length >= 1 && collectionFormat.equals("multi")) {
params.addAll(Arrays.asList(values));
} else {
params.add(parameterToString(value));
return params;
}
collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv
if (valueCollection.isEmpty()){
return params;
}
String delimiter = ",";
// get the collection format
collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv
// create the params based on the collection format
if (collectionFormat.equals("multi")) {
for (Object item : valueCollection) {
params.add(parameterToString(item));
switch(collectionFormat) {
case "csv": {
delimiter = ",";
break;
}
case "ssv": {
delimiter = " ";
break;
}
case "tsv": {
delimiter = "\t";
break;
}
case "pipes": {
delimiter = "|";
break;
}
}
return params;
params = Arrays.asList(values[0].split(delimiter));
}
String delimiter = ",";
if (collectionFormat.equals("csv")) {
delimiter = ",";
} else if (collectionFormat.equals("ssv")) {
delimiter = " ";
} else if (collectionFormat.equals("tsv")) {
delimiter = "\t";
} else if (collectionFormat.equals("pipes")) {
delimiter = "|";
}
StringBuilder sb = new StringBuilder() ;
for (Object item : valueCollection) {
sb.append(delimiter);
sb.append(parameterToString(item));
}
params.add(sb.substring(1));
return params;
}