Skip to content

Commit 5ac75eb

Browse files
committed
Handling of x-implements for enumeration in java and spring generators
1 parent dd67423 commit 5ac75eb

File tree

12 files changed

+68
-9
lines changed

12 files changed

+68
-9
lines changed

modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
99
{{/jsonb}}
1010
{{/withXml}}
11-
{{>additionalEnumTypeAnnotations}}public enum {{datatypeWithEnum}} {
11+
{{>additionalEnumTypeAnnotations}}public enum {{datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
1212
1313
{{#allowableValues}}
1414
{{#withXml}}

modules/openapi-generator/src/main/resources/Java/libraries/microprofile/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import java.net.URI;
1313
@JsonbTypeSerializer({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Serializer.class)
1414
@JsonbTypeDeserializer({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Deserializer.class)
1515
{{/jsonb}}
16-
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
16+
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
1717
{{#gson}}
1818
{{#allowableValues}}{{#enumVars}}
1919
@SerializedName({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}})

modules/openapi-generator/src/main/resources/Java/libraries/native/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import java.net.URI;
2323
@JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class)
2424
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
2525
{{/jsonb}}
26-
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
26+
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
2727
{{#allowableValues}}{{#enumVars}}
2828
{{#enumDescription}}
2929
/**

modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.google.gson.stream.JsonWriter;
1212
* {{description}}{{^description}}Gets or Sets {{{name}}}{{/description}}
1313
*/
1414
@JsonAdapter({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Adapter.class)
15-
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
15+
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
1616
{{#allowableValues}}{{#enumVars}}
1717
{{#enumDescription}}
1818
/**

modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/modelInnerEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
@XmlType(name="{{datatypeWithEnum}}")
77
@XmlEnum({{dataType}}.class)
88
{{/withXml}}
9-
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {
9+
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
1010
{{#allowableValues}}
1111
{{#enumVars}}
1212
{{#enumDescription}}

modules/openapi-generator/src/main/resources/Java/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import java.net.URI;
2323
@JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class)
2424
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
2525
{{/jsonb}}
26-
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
26+
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
2727
{{#allowableValues}}{{#enumVars}}
2828
{{#enumDescription}}
2929
/**

modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
@XmlType(name="{{datatypeWithEnum}}")
1313
@XmlEnum({{dataType}}.class)
1414
{{/withXml}}
15-
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {
15+
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
1616
{{#allowableValues}}
1717
{{#enumVars}}
1818
{{#enumDescription}}

modules/openapi-generator/src/main/resources/JavaSpring/enumClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* {{^description}}Gets or Sets {{{name}}}{{/description}}{{{description}}}
33
*/
4-
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {
4+
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}} {{/vendorExtensions.x-implements}}{
55
{{#gson}}
66
{{#allowableValues}}
77
{{#enumVars}}

modules/openapi-generator/src/main/resources/JavaSpring/enumOuterClass.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue;
88
*/
99
{{>additionalEnumTypeAnnotations}}
1010
{{>generatedAnnotation}}
11-
public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
11+
public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}} {{/vendorExtensions.x-implements}}{
1212
{{#gson}}
1313
{{#allowableValues}}{{#enumVars}}
1414
{{#enumDescription}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3365,4 +3365,17 @@ public void callNativeServiceWithEmptyResponseAsync() throws IOException {
33653365
"responseBody.isBlank()? null: memberVarObjectMapper.readValue(responseBody, new TypeReference<LocationData>() {})"
33663366
);
33673367
}
3368+
3369+
@Test
3370+
public void testEnumWithImplements() {
3371+
final Path output = newTempFolder();
3372+
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/enum-implements.yaml");
3373+
JavaClientCodegen codegen = new JavaClientCodegen();
3374+
codegen.setOutputDir(output.toString());
3375+
3376+
Map<String, File> files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen))
3377+
.generate().stream().collect(Collectors.toMap(File::getName, Function.identity()));
3378+
3379+
JavaFileAssert.assertThat(files.get("Type.java")).fileContains("Type implements org.openapitools.java.EnumInterface {");
3380+
}
33683381
}

0 commit comments

Comments
 (0)