Merge branch 'master' of https://github.com/qtstc/swagger-codegen into qtstc-master

This commit is contained in:
wing328 2016-06-21 22:13:48 +08:00
commit fa3aacf4aa
2 changed files with 44 additions and 29 deletions

View File

@ -2,32 +2,6 @@ package io.swagger.codegen;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
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.Objects;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Nullable;
import io.swagger.codegen.examples.ExampleGenerator;
import io.swagger.models.ArrayModel;
import io.swagger.models.ComposedModel;
@ -71,7 +45,29 @@ import io.swagger.models.properties.RefProperty;
import io.swagger.models.properties.StringProperty;
import io.swagger.models.properties.UUIDProperty;
import io.swagger.util.Json;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
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.Objects;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DefaultCodegen {
protected static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class);
@ -2609,7 +2605,11 @@ public class DefaultCodegen {
}
addImport(m, cp.baseType);
addImport(m, cp.complexType);
CodegenProperty innerCp = cp;
while(innerCp != null) {
addImport(m, innerCp.complexType);
innerCp = innerCp.items;
}
vars.add(cp);
// if required, add to the list "requiredVars"

View File

@ -1,5 +1,6 @@
package io.swagger.codegen.java;
import com.google.common.collect.Sets;
import io.swagger.codegen.CodegenModel;
import io.swagger.codegen.CodegenParameter;
import io.swagger.codegen.CodegenProperty;
@ -12,13 +13,12 @@ import io.swagger.models.parameters.QueryParameter;
import io.swagger.models.properties.ArrayProperty;
import io.swagger.models.properties.ByteArrayProperty;
import io.swagger.models.properties.DateTimeProperty;
import io.swagger.models.properties.DecimalProperty;
import io.swagger.models.properties.IntegerProperty;
import io.swagger.models.properties.LongProperty;
import io.swagger.models.properties.MapProperty;
import io.swagger.models.properties.RefProperty;
import io.swagger.models.properties.StringProperty;
import com.google.common.collect.Sets;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@ -458,6 +458,21 @@ public class JavaModelTest {
Assert.assertNull(cm.allowableValues);
}
@Test(description = "types used by inner properties should be imported")
public void mapWithAnListOfBigDecimalTest() {
final CodegenModel cm1 = new JavaClientCodegen().fromModel("sample", new ModelImpl()
.description("model with Map<String, List<BigDecimal>>")
.property("map", new MapProperty().additionalProperties(new ArrayProperty(new DecimalProperty()))));
Assert.assertEquals(cm1.vars.get(0).datatype, "Map<String, List<BigDecimal>>");
Assert.assertTrue(cm1.imports.contains("BigDecimal"));
final CodegenModel cm2 = new JavaClientCodegen().fromModel("sample", new ModelImpl()
.description("model with Map<String, Map<String, List<BigDecimal>>>")
.property("map", new MapProperty().additionalProperties(new MapProperty().additionalProperties(new ArrayProperty(new DecimalProperty())))));
Assert.assertEquals(cm2.vars.get(0).datatype, "Map<String, Map<String, List<BigDecimal>>>");
Assert.assertTrue(cm2.imports.contains("BigDecimal"));
}
@DataProvider(name = "modelNames")
public static Object[][] primeNumbers() {
return new Object[][] {