Skip to content

Commit d2c99e7

Browse files
jminiwing328
authored andcommitted
[core] Handle referenced enum case correctly (OpenAPITools#2001)
* [core] Handle referenced enum case correctly * Update all samples * Fix compile error after merge
1 parent ba833d3 commit d2c99e7

File tree

103 files changed

+3416
-104
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+3416
-104
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

Lines changed: 26 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,57 +1927,17 @@ public CodegenProperty fromProperty(String name, Schema p) {
19271927
if (property.minimum != null || property.maximum != null)
19281928
property.hasValidation = true;
19291929

1930-
// legacy support
1931-
Map<String, Object> allowableValues = new HashMap<String, Object>();
1932-
1933-
if (p.getEnum() != null) {
1934-
List<Object> _enum = p.getEnum();
1935-
property._enum = new ArrayList<String>();
1936-
for (Object i : _enum) {
1937-
property._enum.add(String.valueOf(i));
1938-
}
1939-
property.isEnum = true;
1940-
allowableValues.put("values", _enum);
1941-
}
1942-
1943-
if (allowableValues.size() > 0) {
1944-
property.allowableValues = allowableValues;
1945-
}
19461930
} else if (ModelUtils.isBooleanSchema(p)) { // boolean type
19471931
property.isBoolean = true;
19481932
property.getter = toBooleanGetter(name);
19491933
} else if (ModelUtils.isDateSchema(p)) { // date format
19501934
property.isString = false; // for backward compatibility with 2.x
19511935
property.isDate = true;
1952-
if (p.getEnum() != null) {
1953-
List<String> _enum = p.getEnum();
1954-
property._enum = new ArrayList<String>();
1955-
for (String i : _enum) {
1956-
property._enum.add(i);
1957-
}
1958-
property.isEnum = true;
19591936

1960-
// legacy support
1961-
Map<String, Object> allowableValues = new HashMap<String, Object>();
1962-
allowableValues.put("values", _enum);
1963-
property.allowableValues = allowableValues;
1964-
}
19651937
} else if (ModelUtils.isDateTimeSchema(p)) { // date-time format
19661938
property.isString = false; // for backward compatibility with 2.x
19671939
property.isDateTime = true;
1968-
if (p.getEnum() != null) {
1969-
List<String> _enum = p.getEnum();
1970-
property._enum = new ArrayList<String>();
1971-
for (String i : _enum) {
1972-
property._enum.add(i);
1973-
}
1974-
property.isEnum = true;
19751940

1976-
// legacy support
1977-
Map<String, Object> allowableValues = new HashMap<String, Object>();
1978-
allowableValues.put("values", _enum);
1979-
property.allowableValues = allowableValues;
1980-
}
19811941
} else if (ModelUtils.isStringSchema(p)) {
19821942
if (ModelUtils.isByteArraySchema(p)) {
19831943
property.isByteArray = true;
@@ -2005,16 +1965,6 @@ public CodegenProperty fromProperty(String name, Schema p) {
20051965
if (property.pattern != null || property.minLength != null || property.maxLength != null)
20061966
property.hasValidation = true;
20071967

2008-
if (p.getEnum() != null) {
2009-
List<String> _enum = p.getEnum();
2010-
property._enum = _enum;
2011-
property.isEnum = true;
2012-
2013-
// legacy support
2014-
Map<String, Object> allowableValues = new HashMap<String, Object>();
2015-
allowableValues.put("values", _enum);
2016-
property.allowableValues = allowableValues;
2017-
}
20181968
} else if (ModelUtils.isNumberSchema(p)) {
20191969
property.isNumeric = Boolean.TRUE;
20201970
if (ModelUtils.isFloatSchema(p)) { // float
@@ -2043,21 +1993,35 @@ public CodegenProperty fromProperty(String name, Schema p) {
20431993
if (property.minimum != null || property.maximum != null)
20441994
property.hasValidation = true;
20451995

2046-
if (p.getEnum() != null && !p.getEnum().isEmpty()) {
2047-
List<Object> _enum = p.getEnum();
2048-
property._enum = new ArrayList<String>();
2049-
for (Object i : _enum) {
2050-
property._enum.add(String.valueOf(i));
2051-
}
2052-
property.isEnum = true;
1996+
} else if (ModelUtils.isFreeFormObject(p)){
1997+
property.isFreeFormObject = true;
1998+
}
1999+
2000+
//Inline enum case:
2001+
if (p.getEnum() != null && !p.getEnum().isEmpty()) {
2002+
List<Object> _enum = p.getEnum();
2003+
property._enum = new ArrayList<String>();
2004+
for (Object i : _enum) {
2005+
property._enum.add(String.valueOf(i));
2006+
}
2007+
property.isEnum = true;
2008+
2009+
Map<String, Object> allowableValues = new HashMap<String, Object>();
2010+
allowableValues.put("values", _enum);
2011+
if (allowableValues.size() > 0) {
2012+
property.allowableValues = allowableValues;
2013+
}
2014+
}
2015+
//Referenced enum case:
2016+
Schema r = ModelUtils.getReferencedSchema(this.openAPI, p);
2017+
if (r.getEnum() != null && !r.getEnum().isEmpty()) {
2018+
List<Object> _enum = r.getEnum();
20532019

2054-
// legacy support
2055-
Map<String, Object> allowableValues = new HashMap<String, Object>();
2056-
allowableValues.put("values", _enum);
2020+
Map<String, Object> allowableValues = new HashMap<String, Object>();
2021+
allowableValues.put("values", _enum);
2022+
if (allowableValues.size() > 0) {
20572023
property.allowableValues = allowableValues;
20582024
}
2059-
} else if (ModelUtils.isFreeFormObject(p)){
2060-
property.isFreeFormObject = true;
20612025
}
20622026

20632027
property.dataType = getTypeDeclaration(p);

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,7 @@ public String getAlias(String name) {
727727

728728
@Override
729729
public String toDefaultValue(Schema p) {
730+
p = ModelUtils.getReferencedSchema(this.openAPI, p);
730731
if (ModelUtils.isArraySchema(p)) {
731732
final ArraySchema ap = (ArraySchema) p;
732733
final String pattern;

samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public static EnumNumberEnum fromValue(String text) {
184184
private EnumNumberEnum enumNumber;
185185

186186
@JsonProperty("outerEnum")
187-
private OuterEnum outerEnum = null;
187+
private OuterEnum outerEnum;
188188

189189
public EnumTest enumString(EnumStringEnum enumString) {
190190
this.enumString = enumString;

samples/client/petstore/java/feign10x/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public static EnumNumberEnum fromValue(String text) {
184184
private EnumNumberEnum enumNumber;
185185

186186
@JsonProperty("outerEnum")
187-
private OuterEnum outerEnum = null;
187+
private OuterEnum outerEnum;
188188

189189
public EnumTest enumString(EnumStringEnum enumString) {
190190
this.enumString = enumString;

samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public static EnumNumberEnum fromValue(String text) {
184184
private EnumNumberEnum enumNumber;
185185

186186
@JsonProperty("outerEnum")
187-
private OuterEnum outerEnum = null;
187+
private OuterEnum outerEnum;
188188

189189
public EnumTest enumString(EnumStringEnum enumString) {
190190
this.enumString = enumString;

samples/client/petstore/java/jersey1/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public static EnumNumberEnum fromValue(String text) {
184184
private EnumNumberEnum enumNumber;
185185

186186
@JsonProperty("outerEnum")
187-
private OuterEnum outerEnum = null;
187+
private OuterEnum outerEnum;
188188

189189
public EnumTest enumString(EnumStringEnum enumString) {
190190
this.enumString = enumString;

samples/client/petstore/java/jersey2-java6/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public static EnumNumberEnum fromValue(String text) {
183183
private EnumNumberEnum enumNumber;
184184

185185
@JsonProperty("outerEnum")
186-
private OuterEnum outerEnum = null;
186+
private OuterEnum outerEnum;
187187

188188
public EnumTest enumString(EnumStringEnum enumString) {
189189
this.enumString = enumString;

samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public static EnumNumberEnum fromValue(String text) {
184184
private EnumNumberEnum enumNumber;
185185

186186
@JsonProperty("outerEnum")
187-
private OuterEnum outerEnum = null;
187+
private OuterEnum outerEnum;
188188

189189
public EnumTest enumString(EnumStringEnum enumString) {
190190
this.enumString = enumString;

samples/client/petstore/java/jersey2/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public static EnumNumberEnum fromValue(String text) {
184184
private EnumNumberEnum enumNumber;
185185

186186
@JsonProperty("outerEnum")
187-
private OuterEnum outerEnum = null;
187+
private OuterEnum outerEnum;
188188

189189
public EnumTest enumString(EnumStringEnum enumString) {
190190
this.enumString = enumString;

samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public EnumNumberEnum read(final JsonReader jsonReader) throws IOException {
242242

243243
public static final String SERIALIZED_NAME_OUTER_ENUM = "outerEnum";
244244
@SerializedName(SERIALIZED_NAME_OUTER_ENUM)
245-
private OuterEnum outerEnum = null;
245+
private OuterEnum outerEnum;
246246

247247
public EnumTest() {
248248
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
*.class
2+
3+
# Mobile Tools for Java (J2ME)
4+
.mtj.tmp/
5+
6+
# Package Files #
7+
*.jar
8+
*.war
9+
*.ear
10+
11+
# exclude jar for gradle wrapper
12+
!gradle/wrapper/*.jar
13+
14+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
15+
hs_err_pid*
16+
17+
# build files
18+
**/target
19+
target
20+
.gradle
21+
build
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# OpenAPI Generator Ignore
2+
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
3+
4+
# Use this file to prevent files from being overwritten by the generator.
5+
# The patterns follow closely to .gitignore or .dockerignore.
6+
7+
# As an example, the C# client generator defines ApiClient.cs.
8+
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
9+
#ApiClient.cs
10+
11+
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
12+
#foo/*/qux
13+
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
14+
15+
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
16+
#foo/**/qux
17+
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
18+
19+
# You can also negate patterns with an exclamation (!).
20+
# For example, you can ignore all files in a docs folder with the file extension .md:
21+
#docs/*.md
22+
# Then explicitly reverse the ignore rule for a single file:
23+
#!docs/README.md
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4.0.0-SNAPSHOT
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#
2+
# Generated by: https://openapi-generator.tech
3+
#
4+
language: java
5+
jdk:
6+
- oraclejdk8
7+
- oraclejdk7
8+
before_install:
9+
# ensure gradlew has proper permission
10+
- chmod a+x ./gradlew
11+
script:
12+
# test using maven
13+
- mvn test
14+
# uncomment below to test using gradle
15+
# - gradle test
16+
# uncomment below to test using sbt
17+
# - sbt test

0 commit comments

Comments
 (0)