Skip to content

Commit dfce0da

Browse files
committed
Merge branch 'qtstc-master'
2 parents be3eec1 + 321dc0d commit dfce0da

File tree

12 files changed

+355
-29
lines changed

12 files changed

+355
-29
lines changed

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

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,6 @@
22

33
import com.google.common.base.Function;
44
import com.google.common.collect.Lists;
5-
6-
import org.apache.commons.lang3.StringEscapeUtils;
7-
import org.apache.commons.lang3.StringUtils;
8-
import org.slf4j.Logger;
9-
import org.slf4j.LoggerFactory;
10-
11-
import java.io.File;
12-
import java.util.ArrayList;
13-
import java.util.Arrays;
14-
import java.util.Collections;
15-
import java.util.Comparator;
16-
import java.util.HashMap;
17-
import java.util.HashSet;
18-
import java.util.Iterator;
19-
import java.util.LinkedHashMap;
20-
import java.util.List;
21-
import java.util.Map;
22-
import java.util.Map.Entry;
23-
import java.util.Objects;
24-
import java.util.Set;
25-
import java.util.TreeSet;
26-
import java.util.regex.Matcher;
27-
import java.util.regex.Pattern;
28-
29-
import javax.annotation.Nullable;
30-
315
import io.swagger.codegen.examples.ExampleGenerator;
326
import io.swagger.models.ArrayModel;
337
import io.swagger.models.ComposedModel;
@@ -71,7 +45,29 @@
7145
import io.swagger.models.properties.StringProperty;
7246
import io.swagger.models.properties.UUIDProperty;
7347
import io.swagger.util.Json;
48+
import org.apache.commons.lang3.StringEscapeUtils;
49+
import org.apache.commons.lang3.StringUtils;
50+
import org.slf4j.Logger;
51+
import org.slf4j.LoggerFactory;
7452

53+
import javax.annotation.Nullable;
54+
import java.io.File;
55+
import java.util.ArrayList;
56+
import java.util.Arrays;
57+
import java.util.Collections;
58+
import java.util.Comparator;
59+
import java.util.HashMap;
60+
import java.util.HashSet;
61+
import java.util.Iterator;
62+
import java.util.LinkedHashMap;
63+
import java.util.List;
64+
import java.util.Map;
65+
import java.util.Map.Entry;
66+
import java.util.Objects;
67+
import java.util.Set;
68+
import java.util.TreeSet;
69+
import java.util.regex.Matcher;
70+
import java.util.regex.Pattern;
7571

7672
public class DefaultCodegen {
7773
protected static final Logger LOGGER = LoggerFactory.getLogger(DefaultCodegen.class);
@@ -2609,7 +2605,11 @@ private void addVars(CodegenModel m, List<CodegenProperty> vars, Map<String, Pro
26092605
}
26102606

26112607
addImport(m, cp.baseType);
2612-
addImport(m, cp.complexType);
2608+
CodegenProperty innerCp = cp;
2609+
while(innerCp != null) {
2610+
addImport(m, innerCp.complexType);
2611+
innerCp = innerCp.items;
2612+
}
26132613
vars.add(cp);
26142614

26152615
// if required, add to the list "requiredVars"

modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaModelTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.swagger.codegen.java;
22

3+
import com.google.common.collect.Sets;
34
import io.swagger.codegen.CodegenModel;
45
import io.swagger.codegen.CodegenParameter;
56
import io.swagger.codegen.CodegenProperty;
@@ -12,13 +13,12 @@
1213
import io.swagger.models.properties.ArrayProperty;
1314
import io.swagger.models.properties.ByteArrayProperty;
1415
import io.swagger.models.properties.DateTimeProperty;
16+
import io.swagger.models.properties.DecimalProperty;
1517
import io.swagger.models.properties.IntegerProperty;
1618
import io.swagger.models.properties.LongProperty;
1719
import io.swagger.models.properties.MapProperty;
1820
import io.swagger.models.properties.RefProperty;
1921
import io.swagger.models.properties.StringProperty;
20-
21-
import com.google.common.collect.Sets;
2222
import org.testng.Assert;
2323
import org.testng.annotations.DataProvider;
2424
import org.testng.annotations.Test;
@@ -458,6 +458,21 @@ public void convertParameterTest() {
458458
Assert.assertNull(cm.allowableValues);
459459
}
460460

461+
@Test(description = "types used by inner properties should be imported")
462+
public void mapWithAnListOfBigDecimalTest() {
463+
final CodegenModel cm1 = new JavaClientCodegen().fromModel("sample", new ModelImpl()
464+
.description("model with Map<String, List<BigDecimal>>")
465+
.property("map", new MapProperty().additionalProperties(new ArrayProperty(new DecimalProperty()))));
466+
Assert.assertEquals(cm1.vars.get(0).datatype, "Map<String, List<BigDecimal>>");
467+
Assert.assertTrue(cm1.imports.contains("BigDecimal"));
468+
469+
final CodegenModel cm2 = new JavaClientCodegen().fromModel("sample", new ModelImpl()
470+
.description("model with Map<String, Map<String, List<BigDecimal>>>")
471+
.property("map", new MapProperty().additionalProperties(new MapProperty().additionalProperties(new ArrayProperty(new DecimalProperty())))));
472+
Assert.assertEquals(cm2.vars.get(0).datatype, "Map<String, Map<String, List<BigDecimal>>>");
473+
Assert.assertTrue(cm2.imports.contains("BigDecimal"));
474+
}
475+
461476
@DataProvider(name = "modelNames")
462477
public static Object[][] primeNumbers() {
463478
return new Object[][] {

modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,6 +1005,27 @@ definitions:
10051005
type: array
10061006
items:
10071007
$ref: '#/definitions/ReadOnlyFirst'
1008+
NumberOnly:
1009+
type: object
1010+
properties:
1011+
JustNumber:
1012+
type: number
1013+
ArrayOfNumberOnly:
1014+
type: object
1015+
properties:
1016+
ArrayNumber:
1017+
type: array
1018+
items:
1019+
type: number
1020+
ArrayOfArrayOfNumberOnly:
1021+
type: object
1022+
properties:
1023+
ArrayArrayNumber:
1024+
type: array
1025+
items:
1026+
type: array
1027+
items:
1028+
type: number
10081029
externalDocs:
10091030
description: Find out more about Swagger
10101031
url: 'http://swagger.io'
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#
2+
# Generated by: https://github.com/swagger-api/swagger-codegen.git
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
language: java
17+
jdk:
18+
- oraclejdk8
19+
- oraclejdk7
20+
before_install:
21+
# ensure gradlew has proper permission
22+
- chmod a+x ./gradlew
23+
script:
24+
# test using maven
25+
- mvn test
26+
# uncomment below to test using gradle
27+
# - gradle test
28+
# uncomment below to test using sbt
29+
# - sbt test
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
# ArrayOfArrayOfNumberOnly
3+
4+
## Properties
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
**arrayArrayNumber** | [**List&lt;List&lt;BigDecimal&gt;&gt;**](List.md) | | [optional]
8+
9+
10+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
# ArrayOfNumberOnly
3+
4+
## Properties
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
**arrayNumber** | [**List&lt;BigDecimal&gt;**](BigDecimal.md) | | [optional]
8+
9+
10+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
# NumberOnly
3+
4+
## Properties
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
**justNumber** | [**BigDecimal**](BigDecimal.md) | | [optional]
8+
9+
10+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello world!
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package io.swagger.client.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonValue;
4+
import java.util.Objects;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import io.swagger.annotations.ApiModel;
7+
import io.swagger.annotations.ApiModelProperty;
8+
import java.math.BigDecimal;
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
13+
/**
14+
* ArrayOfArrayOfNumberOnly
15+
*/
16+
17+
public class ArrayOfArrayOfNumberOnly {
18+
19+
private List<List<BigDecimal>> arrayArrayNumber = new ArrayList<List<BigDecimal>>();
20+
21+
22+
/**
23+
**/
24+
public ArrayOfArrayOfNumberOnly arrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
25+
this.arrayArrayNumber = arrayArrayNumber;
26+
return this;
27+
}
28+
29+
@ApiModelProperty(example = "null", value = "")
30+
@JsonProperty("ArrayArrayNumber")
31+
public List<List<BigDecimal>> getArrayArrayNumber() {
32+
return arrayArrayNumber;
33+
}
34+
public void setArrayArrayNumber(List<List<BigDecimal>> arrayArrayNumber) {
35+
this.arrayArrayNumber = arrayArrayNumber;
36+
}
37+
38+
39+
@Override
40+
public boolean equals(java.lang.Object o) {
41+
if (this == o) {
42+
return true;
43+
}
44+
if (o == null || getClass() != o.getClass()) {
45+
return false;
46+
}
47+
ArrayOfArrayOfNumberOnly arrayOfArrayOfNumberOnly = (ArrayOfArrayOfNumberOnly) o;
48+
return Objects.equals(this.arrayArrayNumber, arrayOfArrayOfNumberOnly.arrayArrayNumber);
49+
}
50+
51+
@Override
52+
public int hashCode() {
53+
return Objects.hash(arrayArrayNumber);
54+
}
55+
56+
@Override
57+
public String toString() {
58+
StringBuilder sb = new StringBuilder();
59+
sb.append("class ArrayOfArrayOfNumberOnly {\n");
60+
61+
sb.append(" arrayArrayNumber: ").append(toIndentedString(arrayArrayNumber)).append("\n");
62+
sb.append("}");
63+
return sb.toString();
64+
}
65+
66+
/**
67+
* Convert the given object to string with each line indented by 4 spaces
68+
* (except the first line).
69+
*/
70+
private String toIndentedString(java.lang.Object o) {
71+
if (o == null) {
72+
return "null";
73+
}
74+
return o.toString().replace("\n", "\n ");
75+
}
76+
}
77+
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package io.swagger.client.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonValue;
4+
import java.util.Objects;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import io.swagger.annotations.ApiModel;
7+
import io.swagger.annotations.ApiModelProperty;
8+
import java.math.BigDecimal;
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
13+
/**
14+
* ArrayOfNumberOnly
15+
*/
16+
17+
public class ArrayOfNumberOnly {
18+
19+
private List<BigDecimal> arrayNumber = new ArrayList<BigDecimal>();
20+
21+
22+
/**
23+
**/
24+
public ArrayOfNumberOnly arrayNumber(List<BigDecimal> arrayNumber) {
25+
this.arrayNumber = arrayNumber;
26+
return this;
27+
}
28+
29+
@ApiModelProperty(example = "null", value = "")
30+
@JsonProperty("ArrayNumber")
31+
public List<BigDecimal> getArrayNumber() {
32+
return arrayNumber;
33+
}
34+
public void setArrayNumber(List<BigDecimal> arrayNumber) {
35+
this.arrayNumber = arrayNumber;
36+
}
37+
38+
39+
@Override
40+
public boolean equals(java.lang.Object o) {
41+
if (this == o) {
42+
return true;
43+
}
44+
if (o == null || getClass() != o.getClass()) {
45+
return false;
46+
}
47+
ArrayOfNumberOnly arrayOfNumberOnly = (ArrayOfNumberOnly) o;
48+
return Objects.equals(this.arrayNumber, arrayOfNumberOnly.arrayNumber);
49+
}
50+
51+
@Override
52+
public int hashCode() {
53+
return Objects.hash(arrayNumber);
54+
}
55+
56+
@Override
57+
public String toString() {
58+
StringBuilder sb = new StringBuilder();
59+
sb.append("class ArrayOfNumberOnly {\n");
60+
61+
sb.append(" arrayNumber: ").append(toIndentedString(arrayNumber)).append("\n");
62+
sb.append("}");
63+
return sb.toString();
64+
}
65+
66+
/**
67+
* Convert the given object to string with each line indented by 4 spaces
68+
* (except the first line).
69+
*/
70+
private String toIndentedString(java.lang.Object o) {
71+
if (o == null) {
72+
return "null";
73+
}
74+
return o.toString().replace("\n", "\n ");
75+
}
76+
}
77+

0 commit comments

Comments
 (0)