Skip to content

Commit baa3fd4

Browse files
committed
[issue-9926] add "itemsDepth" property for nested properties
This allows variable-name generation for nested structures without shadowing violations, like v${{itemsDepth}}.
1 parent a8b8d9b commit baa3fd4

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public class CodegenProperty implements Cloneable {
4646
public List<String> _enum;
4747
public Map<String, Object> allowableValues;
4848
public CodegenProperty items;
49+
public Integer itemsDepth;
4950
public Map<String, Object> vendorExtensions;
5051
public boolean hasValidation; // true if pattern, maximum, etc are set (only used in the mustache template)
5152
public boolean isInherited;

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

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1596,12 +1596,24 @@ public String getterAndSetterCapitalize(String name) {
15961596
* @return Codegen Property object
15971597
*/
15981598
public CodegenProperty fromProperty(String name, Property p) {
1599+
return fromProperty(name, p, null);
1600+
}
1601+
/**
1602+
* Convert Swagger Property object to Codegen Property object
1603+
*
1604+
* @param name name of the property
1605+
* @param p Swagger property object
1606+
* @param itemsDepth the depth in nested containers or null
1607+
* @return Codegen Property object
1608+
*/
1609+
protected CodegenProperty fromProperty(String name, Property p, Integer itemsDepth) {
15991610
if (p == null) {
16001611
LOGGER.error("unexpected missing property for name " + name);
16011612
return null;
16021613
}
16031614

16041615
CodegenProperty property = CodegenModelFactory.newInstance(CodegenModelType.PROPERTY);
1616+
property.itemsDepth = itemsDepth;
16051617
property.name = toVarName(name);
16061618
property.baseName = name;
16071619
property.nameInCamelCase = camelize(property.name, false);
@@ -1864,7 +1876,8 @@ public CodegenProperty fromProperty(String name, Property p) {
18641876
if (itemName == null) {
18651877
itemName = property.name;
18661878
}
1867-
CodegenProperty cp = fromProperty(itemName, ap.getItems());
1879+
CodegenProperty cp = fromProperty(itemName, ap.getItems(),
1880+
itemsDepth == null ? 1 : itemsDepth.intValue() + 1);
18681881
updatePropertyForArray(property, cp);
18691882
} else if (p instanceof MapProperty) {
18701883
MapProperty ap = (MapProperty) p;
@@ -1877,7 +1890,8 @@ public CodegenProperty fromProperty(String name, Property p) {
18771890
property.maxItems = ap.getMaxProperties();
18781891

18791892
// handle inner property
1880-
CodegenProperty cp = fromProperty("inner", ap.getAdditionalProperties());
1893+
CodegenProperty cp = fromProperty("inner", ap.getAdditionalProperties(),
1894+
itemsDepth == null ? 1 : itemsDepth.intValue() + 1);
18811895
updatePropertyForMap(property, cp);
18821896
} else {
18831897
setNonArrayMapProperty(property, type);

0 commit comments

Comments
 (0)