Skip to content

[JAVA][spring] Make enum fields final in generated Java #21019

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
{{/allowableValues}}
{{/gson}}

private {{{dataType}}} value;
private final {{{dataType}}} value;

{{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}({{{dataType}}} value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatyp
{{/-last}}{{#-last}};{{/-last}}{{/enumVars}}{{/allowableValues}}
{{/gson}}

private {{{dataType}}} value;
private final {{{dataType}}} value;

{{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatypeWithEnum}}({{{dataType}}} value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5432,4 +5432,17 @@ public void shouldDisableBuiltInValidationOptionByDefault() throws IOException {
.assertTypeAnnotations()
.containsWithName("Validated");
}

@Test
public void testEnumFieldShouldBeFinal_issue21018() throws IOException {
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_21018.yaml");

JavaFileAssert.assertThat(files.get("SomeEnum.java"))
.fileContains("private final String value;");

JavaFileAssert.assertThat(files.get("SomeObject.java"))
.fileContains("private final String value");
}
}
35 changes: 35 additions & 0 deletions modules/openapi-generator/src/test/resources/bugs/issue_21018.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
openapi: "3.0.3"
info:
version: 1.0.0
title: test
paths:
/test:
get:
summary: test
operationId: test
responses:
'200':
description: OK
components:
schemas:
SomeEnum:
type: string
enum:
- Cat
- Dog
x-enum-varnames:
- CAT
- DOG
SomeObject:
type: object
properties:
name:
type: string
type:
type: string
enum:
- Cat
- Dog
x-enum-varnames:
- CAT
- DOG
14 changes: 7 additions & 7 deletions samples/client/petstore/crystal/spec/spec_helper.cr
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# OpenAPI Petstore
# #OpenAPI Petstore
#
# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
#
# The version of the OpenAPI document: 1.0.0
#The version of the OpenAPI document: 1.0.0
#
# Generated by: https://openapi-generator.tech
# Generator version: 7.13.0-SNAPSHOT
#Generated by: https://openapi-generator.tech
#Generator version: 7.13.0-SNAPSHOT
#

# load modules
Expand All @@ -17,7 +17,7 @@ require "../src/petstore"
def assert_compilation_error(path : String, message : String) : Nil
buffer = IO::Memory.new
result = Process.run("crystal", ["run", "--no-color", "--no-codegen", path], error: buffer)
expect(result.success?).to be_false
expect(buffer.to_s).to contain message
result.success?.should be_false
buffer.to_s.should contain message
buffer.close
end
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public enum StatusEnum {

DELIVERED("delivered");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public enum StatusEnum {

SOLD("sold");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public enum StatusEnum {

DELIVERED("delivered");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public enum StatusEnum {

SOLD("sold");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public enum StatusEnum {

DELIVERED("delivered");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public enum StatusEnum {

SOLD("sold");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public enum StatusEnum {

DELIVERED("delivered");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public enum StatusEnum {

SOLD("sold");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public enum KindEnum {

JAGUARS("jaguars");

private String value;
private final String value;

KindEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public enum JustSymbolEnum {

DOLLAR("$");

private String value;
private final String value;

JustSymbolEnum(String value) {
this.value = value;
Expand Down Expand Up @@ -71,7 +71,7 @@ public enum ArrayEnumEnum {

CRAB("crab");

private String value;
private final String value;

ArrayEnumEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public enum EnumClassDto {

_XYZ_("(xyz)");

private String value;
private final String value;

EnumClassDto(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public enum EnumStringEnum {

EMPTY("");

private String value;
private final String value;

EnumStringEnum(String value) {
this.value = value;
Expand Down Expand Up @@ -73,7 +73,7 @@ public enum EnumStringRequiredEnum {

EMPTY("");

private String value;
private final String value;

EnumStringRequiredEnum(String value) {
this.value = value;
Expand Down Expand Up @@ -110,7 +110,7 @@ public enum EnumIntegerEnum {

NUMBER_MINUS_1(-1);

private Integer value;
private final Integer value;

EnumIntegerEnum(Integer value) {
this.value = value;
Expand Down Expand Up @@ -147,7 +147,7 @@ public enum EnumNumberEnum {

NUMBER_MINUS_1_DOT_2(-1.2);

private Double value;
private final Double value;

EnumNumberEnum(Double value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public enum InnerEnum {

LOWER("lower");

private String value;
private final String value;

InnerEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public enum StatusEnum {

DELIVERED("delivered");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public enum OuterEnumDto {

DELIVERED("delivered");

private String value;
private final String value;

OuterEnumDto(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public class ParentWithNullableDto {
public enum TypeEnum {
CHILD_WITH_NULLABLE("ChildWithNullable");

private String value;
private final String value;

TypeEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public enum StatusEnum {

SOLD("sold");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public enum KindEnum {

JAGUARS("jaguars");

private String value;
private final String value;

KindEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public enum JustSymbolEnum {

DOLLAR("$");

private String value;
private final String value;

JustSymbolEnum(String value) {
this.value = value;
Expand Down Expand Up @@ -69,7 +69,7 @@ public enum ArrayEnumEnum {

CRAB("crab");

private String value;
private final String value;

ArrayEnumEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public enum EnumClass {

_XYZ_("(xyz)");

private String value;
private final String value;

EnumClass(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public enum EnumStringEnum {

EMPTY("");

private String value;
private final String value;

EnumStringEnum(String value) {
this.value = value;
Expand Down Expand Up @@ -73,7 +73,7 @@ public enum EnumStringRequiredEnum {

EMPTY("");

private String value;
private final String value;

EnumStringRequiredEnum(String value) {
this.value = value;
Expand Down Expand Up @@ -110,7 +110,7 @@ public enum EnumIntegerEnum {

NUMBER_MINUS_1(-1);

private Integer value;
private final Integer value;

EnumIntegerEnum(Integer value) {
this.value = value;
Expand Down Expand Up @@ -147,7 +147,7 @@ public enum EnumNumberEnum {

NUMBER_MINUS_1_DOT_2(-1.2);

private Double value;
private final Double value;

EnumNumberEnum(Double value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public enum InnerEnum {

LOWER("lower");

private String value;
private final String value;

InnerEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public enum StatusEnum {

DELIVERED("delivered");

private String value;
private final String value;

StatusEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public enum OuterEnum {

DELIVERED("delivered");

private String value;
private final String value;

OuterEnum(String value) {
this.value = value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class ParentWithNullable {
public enum TypeEnum {
CHILD_WITH_NULLABLE("ChildWithNullable");

private String value;
private final String value;

TypeEnum(String value) {
this.value = value;
Expand Down
Loading
Loading