Set collectionFormat default only for array (#210)

This commit is contained in:
Jérémie Bresson 2018-04-24 08:01:49 +02:00 committed by GitHub
parent 61c25e7112
commit 7fe555a519
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,41 +1,19 @@
package org.openapitools.codegen; package org.openapitools.codegen;
import java.io.File;
import java.util.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.samskivert.mustache.Mustache.Compiler; import com.samskivert.mustache.Mustache.Compiler;
import io.swagger.models.Model;
import io.swagger.v3.core.util.Json; import io.swagger.v3.core.util.Json;
import io.swagger.v3.core.util.Yaml; import io.swagger.v3.core.util.Yaml;
import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.headers.Header; import io.swagger.v3.oas.models.headers.Header;
import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.BinarySchema;
import io.swagger.v3.oas.models.media.BooleanSchema;
import io.swagger.v3.oas.models.media.ByteArraySchema;
import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.ComposedSchema;
import io.swagger.v3.oas.models.media.DateSchema;
import io.swagger.v3.oas.models.media.DateTimeSchema;
import io.swagger.v3.oas.models.media.EmailSchema;
import io.swagger.v3.oas.models.media.FileSchema;
import io.swagger.v3.oas.models.media.IntegerSchema;
import io.swagger.v3.oas.models.media.MapSchema;
import io.swagger.v3.oas.models.media.Content; import io.swagger.v3.oas.models.media.Content;
import io.swagger.v3.oas.models.media.MediaType; import io.swagger.v3.oas.models.media.MediaType;
import io.swagger.v3.oas.models.media.NumberSchema;
import io.swagger.v3.oas.models.media.ObjectSchema;
import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.StringSchema; import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.media.UUIDSchema;
import io.swagger.v3.oas.models.parameters.CookieParameter; import io.swagger.v3.oas.models.parameters.CookieParameter;
import io.swagger.v3.oas.models.parameters.HeaderParameter; import io.swagger.v3.oas.models.parameters.HeaderParameter;
import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.parameters.Parameter;
@ -52,13 +30,29 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.examples.ExampleGenerator; import org.openapitools.codegen.examples.ExampleGenerator;
import org.openapitools.codegen.utils.ModelUtils; import org.openapitools.codegen.utils.ModelUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class DefaultCodegen implements CodegenConfig { public class DefaultCodegen implements CodegenConfig {
protected static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class); protected static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class);
@ -2502,6 +2496,10 @@ public class DefaultCodegen implements CodegenConfig {
if (parameter.getSchema() != null) { if (parameter.getSchema() != null) {
Schema parameterSchema = parameter.getSchema(); Schema parameterSchema = parameter.getSchema();
if (parameterSchema == null) {
LOGGER.warn("warning! Schema not found for parameter \"" + parameter.getName() + "\", using String");
parameterSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to missing type definition.");
}
// set default value // set default value
if (parameterSchema.getDefault() != null) { if (parameterSchema.getDefault() != null) {
codegenParameter.defaultValue = String.valueOf(parameterSchema.getDefault()); codegenParameter.defaultValue = String.valueOf(parameterSchema.getDefault());
@ -2518,6 +2516,8 @@ public class DefaultCodegen implements CodegenConfig {
} }
collectionFormat = getCollectionFormat(parameter); collectionFormat = getCollectionFormat(parameter);
// default to csv:
collectionFormat = StringUtils.isEmpty(collectionFormat) ? "csv" : collectionFormat;
CodegenProperty codegenProperty = fromProperty("inner", inner); CodegenProperty codegenProperty = fromProperty("inner", inner);
codegenParameter.items = codegenProperty; codegenParameter.items = codegenProperty;
codegenParameter.baseType = codegenProperty.datatype; codegenParameter.baseType = codegenProperty.datatype;
@ -2537,7 +2537,6 @@ public class DefaultCodegen implements CodegenConfig {
codegenParameter.baseType = codegenProperty.datatype; codegenParameter.baseType = codegenProperty.datatype;
codegenParameter.isContainer = true; codegenParameter.isContainer = true;
codegenParameter.isMapContainer = true; codegenParameter.isMapContainer = true;
collectionFormat = getCollectionFormat(parameter);
// recursively add import // recursively add import
while (codegenProperty != null) { while (codegenProperty != null) {
@ -2553,10 +2552,6 @@ public class DefaultCodegen implements CodegenConfig {
property = PropertyBuilder.build(type, format, args); property = PropertyBuilder.build(type, format, args);
} }
*/ */
if (parameterSchema == null) {
LOGGER.warn("warning! Schema not found for parameter \"" + parameter.getName() + "\", using String");
parameterSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to missing type definition.");
}
CodegenProperty codegenProperty = fromProperty(parameter.getName(), parameterSchema); CodegenProperty codegenProperty = fromProperty(parameter.getName(), parameterSchema);
// TODO revise below which seems not working // TODO revise below which seems not working
@ -2595,8 +2590,7 @@ public class DefaultCodegen implements CodegenConfig {
codegenParameter.items = codegenProperty.items; codegenParameter.items = codegenProperty.items;
} }
// default to csv codegenParameter.collectionFormat = collectionFormat;
codegenParameter.collectionFormat = StringUtils.isEmpty(collectionFormat) ? "csv" : collectionFormat;
if ("multi".equals(collectionFormat)) { if ("multi".equals(collectionFormat)) {
codegenParameter.isCollectionFormatMulti = true; codegenParameter.isCollectionFormatMulti = true;
} }