forked from loafle/openapi-generator-original
Add x-implements for java enums (#20778)
This commit is contained in:
parent
36b72052e6
commit
ffa196e6a9
@ -1113,7 +1113,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen
|
|||||||
cm.anyOf.remove("ModelNull");
|
cm.anyOf.remove("ModelNull");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.parcelableModel) {
|
if (this.parcelableModel && !cm.isEnum) {
|
||||||
((ArrayList<String>) cm.getVendorExtensions().get("x-implements")).add("Parcelable");
|
((ArrayList<String>) cm.getVendorExtensions().get("x-implements")).add("Parcelable");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
|
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
|
||||||
{{/jsonb}}
|
{{/jsonb}}
|
||||||
{{/withXml}}
|
{{/withXml}}
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
|
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#withXml}}
|
{{#withXml}}
|
||||||
|
@ -13,7 +13,7 @@ import java.net.URI;
|
|||||||
@JsonbTypeSerializer({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Serializer.class)
|
@JsonbTypeSerializer({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Serializer.class)
|
||||||
@JsonbTypeDeserializer({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Deserializer.class)
|
@JsonbTypeDeserializer({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Deserializer.class)
|
||||||
{{/jsonb}}
|
{{/jsonb}}
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
@SerializedName({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}})
|
@SerializedName({{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}}{{{value}}}{{#isInteger}}"{{/isInteger}}{{#isDouble}}"{{/isDouble}}{{#isLong}}"{{/isLong}}{{#isFloat}}"{{/isFloat}})
|
||||||
|
@ -23,7 +23,7 @@ import java.net.URI;
|
|||||||
@JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class)
|
@JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class)
|
||||||
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
|
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
|
||||||
{{/jsonb}}
|
{{/jsonb}}
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
{{#enumDescription}}
|
{{#enumDescription}}
|
||||||
/**
|
/**
|
||||||
|
@ -12,7 +12,7 @@ import com.google.gson.stream.JsonWriter;
|
|||||||
* {{description}}{{^description}}Gets or Sets {{{name}}}{{/description}}
|
* {{description}}{{^description}}Gets or Sets {{{name}}}{{/description}}
|
||||||
*/
|
*/
|
||||||
@JsonAdapter({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Adapter.class)
|
@JsonAdapter({{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}.Adapter.class)
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
{{#enumDescription}}
|
{{#enumDescription}}
|
||||||
/**
|
/**
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
@XmlType(name="{{datatypeWithEnum}}")
|
@XmlType(name="{{datatypeWithEnum}}")
|
||||||
@XmlEnum({{dataType}}.class)
|
@XmlEnum({{dataType}}.class)
|
||||||
{{/withXml}}
|
{{/withXml}}
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
{{#enumDescription}}
|
{{#enumDescription}}
|
||||||
|
@ -23,7 +23,7 @@ import java.net.URI;
|
|||||||
@JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class)
|
@JsonbTypeSerializer({{datatypeWithEnum}}.Serializer.class)
|
||||||
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
|
@JsonbTypeDeserializer({{datatypeWithEnum}}.Deserializer.class)
|
||||||
{{/jsonb}}
|
{{/jsonb}}
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
{{#enumDescription}}
|
{{#enumDescription}}
|
||||||
/**
|
/**
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
@XmlType(name="{{datatypeWithEnum}}")
|
@XmlType(name="{{datatypeWithEnum}}")
|
||||||
@XmlEnum({{dataType}}.class)
|
@XmlEnum({{dataType}}.class)
|
||||||
{{/withXml}}
|
{{/withXml}}
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
{{#enumDescription}}
|
{{#enumDescription}}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* {{^description}}Gets or Sets {{{name}}}{{/description}}{{{description}}}
|
* {{^description}}Gets or Sets {{{name}}}{{/description}}{{{description}}}
|
||||||
*/
|
*/
|
||||||
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {
|
{{>additionalEnumTypeAnnotations}}public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
|
@ -8,7 +8,7 @@ import com.fasterxml.jackson.annotation.JsonValue;
|
|||||||
*/
|
*/
|
||||||
{{>additionalEnumTypeAnnotations}}
|
{{>additionalEnumTypeAnnotations}}
|
||||||
{{>generatedAnnotation}}
|
{{>generatedAnnotation}}
|
||||||
public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}} {
|
public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}{{#vendorExtensions.x-implements}}{{#-first}} implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
|
||||||
{{#gson}}
|
{{#gson}}
|
||||||
{{#allowableValues}}{{#enumVars}}
|
{{#allowableValues}}{{#enumVars}}
|
||||||
{{#enumDescription}}
|
{{#enumDescription}}
|
||||||
|
@ -3463,4 +3463,17 @@ public class JavaClientCodegenTest {
|
|||||||
"responseBody.isBlank()? null: memberVarObjectMapper.readValue(responseBody, new TypeReference<LocationData>() {})"
|
"responseBody.isBlank()? null: memberVarObjectMapper.readValue(responseBody, new TypeReference<LocationData>() {})"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEnumWithImplements() {
|
||||||
|
final Path output = newTempFolder();
|
||||||
|
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/enum-implements.yaml");
|
||||||
|
JavaClientCodegen codegen = new JavaClientCodegen();
|
||||||
|
codegen.setOutputDir(output.toString());
|
||||||
|
|
||||||
|
Map<String, File> files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen))
|
||||||
|
.generate().stream().collect(Collectors.toMap(File::getName, Function.identity()));
|
||||||
|
|
||||||
|
JavaFileAssert.assertThat(files.get("Type.java")).fileContains("Type implements org.openapitools.java.EnumInterface {");
|
||||||
|
}
|
||||||
}
|
}
|
@ -5370,4 +5370,17 @@ public class SpringCodegenTest {
|
|||||||
"this.name = Optional.of(name);"
|
"this.name = Optional.of(name);"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEnumWithImplements() {
|
||||||
|
final Path output = newTempFolder();
|
||||||
|
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/enum-implements.yaml");
|
||||||
|
SpringCodegen codegen = new SpringCodegen();
|
||||||
|
codegen.setOutputDir(output.toString());
|
||||||
|
|
||||||
|
Map<String, File> files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen))
|
||||||
|
.generate().stream().collect(Collectors.toMap(File::getName, Function.identity()));
|
||||||
|
|
||||||
|
JavaFileAssert.assertThat(files.get("Type.java")).fileContains("Type implements org.openapitools.java.EnumInterface {");
|
||||||
|
}
|
||||||
}
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
openapi: 3.0.0
|
||||||
|
info:
|
||||||
|
title: Sample API
|
||||||
|
description: API description in Markdown.
|
||||||
|
version: 1.0.0
|
||||||
|
paths:
|
||||||
|
/ponies:
|
||||||
|
get:
|
||||||
|
summary: Returns all animals.
|
||||||
|
description: Optional extended description in Markdown.
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/Pony'
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
Pony:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
type:
|
||||||
|
$ref: '#/components/schemas/Type'
|
||||||
|
Type:
|
||||||
|
type: string
|
||||||
|
x-implements: org.openapitools.java.EnumInterface
|
||||||
|
enum:
|
||||||
|
- Earth
|
||||||
|
- Pegasi
|
||||||
|
- Unicorn
|
Loading…
x
Reference in New Issue
Block a user