From cea86bd73f1cea4982184ddc31040c11b3d88a2d Mon Sep 17 00:00:00 2001 From: Stephan Schnabel Date: Tue, 10 Sep 2024 14:23:57 +0200 Subject: [PATCH] Add serdable to enums, fixes #407 --- gen/main/java/issue/_331/StringWithEnum.java | 1 + .../issue/_363/_false/EnumWithPrefix.java | 1 + .../issue/_363/_false/EnumWithoutPrefix.java | 1 + .../java/issue/_363/_true/EnumWithPrefix.java | 1 + .../issue/_363/_true/EnumWithoutPrefix.java | 1 + gen/main/java/issue/_407/Cat.java | 79 ++++++++++++ gen/main/java/issue/_407/Dog.java | 116 ++++++++++++++++++ gen/main/java/issue/_407/Pet.java | 13 ++ gen/main/java/issue/_407/PetType.java | 35 ++++++ .../micronaut_pojo/EnumerationInteger.java | 1 + .../micronaut_pojo/EnumerationModel.java | 2 + .../micronaut_pojo/EnumerationNumber.java | 1 + .../micronaut_pojo/EnumerationString.java | 1 + .../EnumerationStringDefault.java | 1 + .../InheritanceWithEnumTypeEnum.java | 1 + .../micronaut_pojo/PropertyTypeOne.java | 1 + .../micronaut_pojo/PropertyTypeTwo.java | 1 + .../EnumerationInteger.java | 1 + .../EnumerationModel.java | 2 + .../EnumerationNumber.java | 1 + .../EnumerationString.java | 1 + .../EnumerationStringDefault.java | 1 + .../InheritanceWithEnumTypeEnum.java | 1 + .../PropertyTypeOne.java | 1 + .../PropertyTypeTwo.java | 1 + .../EnumerationInteger.java | 1 + .../EnumerationModel.java | 2 + .../EnumerationNumber.java | 1 + .../EnumerationString.java | 1 + .../EnumerationStringDefault.java | 1 + .../InheritanceWithEnumTypeEnum.java | 1 + .../PropertyTypeOne.java | 1 + .../PropertyTypeTwo.java | 1 + .../EnumerationInteger.java | 1 + .../EnumerationModel.java | 2 + .../EnumerationNumber.java | 1 + .../EnumerationString.java | 1 + .../EnumerationStringDefault.java | 1 + .../InheritanceWithEnumTypeEnum.java | 1 + .../PropertyTypeOne.java | 1 + .../PropertyTypeTwo.java | 1 + .../micronaut_record/EnumerationInteger.java | 1 + .../micronaut_record/EnumerationModel.java | 2 + .../micronaut_record/EnumerationNumber.java | 1 + .../micronaut_record/EnumerationString.java | 1 + .../EnumerationStringDefault.java | 1 + .../InheritanceWithEnumTypeEnum.java | 1 + .../micronaut_record/PropertyTypeOne.java | 1 + .../micronaut_record/PropertyTypeTwo.java | 1 + .../EnumerationInteger.java | 1 + .../EnumerationModel.java | 2 + .../EnumerationNumber.java | 1 + .../EnumerationString.java | 1 + .../EnumerationStringDefault.java | 1 + .../InheritanceWithEnumTypeEnum.java | 1 + .../PropertyTypeOne.java | 1 + .../PropertyTypeTwo.java | 1 + src/it/issue-407/pom.xml | 71 +++++++++++ .../src/test/java/codegen/ModelTest.java | 25 ++++ .../resources/Micronaut/modelEnum.mustache | 2 + .../codegen/languages/IssueCodegenTest.java | 6 + src/test/resources/openapi/issue-407.yaml | 45 +++++++ 62 files changed, 451 insertions(+) create mode 100644 gen/main/java/issue/_407/Cat.java create mode 100644 gen/main/java/issue/_407/Dog.java create mode 100644 gen/main/java/issue/_407/Pet.java create mode 100644 gen/main/java/issue/_407/PetType.java create mode 100644 src/it/issue-407/pom.xml create mode 100644 src/it/issue-407/src/test/java/codegen/ModelTest.java create mode 100644 src/test/resources/openapi/issue-407.yaml diff --git a/gen/main/java/issue/_331/StringWithEnum.java b/gen/main/java/issue/_331/StringWithEnum.java index c67459d1..21f823e4 100644 --- a/gen/main/java/issue/_331/StringWithEnum.java +++ b/gen/main/java/issue/_331/StringWithEnum.java @@ -1,6 +1,7 @@ package issue._331; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum StringWithEnum { A("A"), diff --git a/gen/main/java/issue/_363/_false/EnumWithPrefix.java b/gen/main/java/issue/_363/_false/EnumWithPrefix.java index 56392085..abe03499 100644 --- a/gen/main/java/issue/_363/_false/EnumWithPrefix.java +++ b/gen/main/java/issue/_363/_false/EnumWithPrefix.java @@ -1,6 +1,7 @@ package issue._363._false; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumWithPrefix { AAA_FOO("aaa_foo"), diff --git a/gen/main/java/issue/_363/_false/EnumWithoutPrefix.java b/gen/main/java/issue/_363/_false/EnumWithoutPrefix.java index ec1120ff..1c8c5b13 100644 --- a/gen/main/java/issue/_363/_false/EnumWithoutPrefix.java +++ b/gen/main/java/issue/_363/_false/EnumWithoutPrefix.java @@ -1,6 +1,7 @@ package issue._363._false; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumWithoutPrefix { FOO("foo"), diff --git a/gen/main/java/issue/_363/_true/EnumWithPrefix.java b/gen/main/java/issue/_363/_true/EnumWithPrefix.java index 2517b546..2092f51a 100644 --- a/gen/main/java/issue/_363/_true/EnumWithPrefix.java +++ b/gen/main/java/issue/_363/_true/EnumWithPrefix.java @@ -1,6 +1,7 @@ package issue._363._true; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumWithPrefix { FOO("aaa_foo"), diff --git a/gen/main/java/issue/_363/_true/EnumWithoutPrefix.java b/gen/main/java/issue/_363/_true/EnumWithoutPrefix.java index db3cb075..d3c35a0e 100644 --- a/gen/main/java/issue/_363/_true/EnumWithoutPrefix.java +++ b/gen/main/java/issue/_363/_true/EnumWithoutPrefix.java @@ -1,6 +1,7 @@ package issue._363._true; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumWithoutPrefix { FOO("foo"), diff --git a/gen/main/java/issue/_407/Cat.java b/gen/main/java/issue/_407/Cat.java new file mode 100644 index 00000000..13ac6282 --- /dev/null +++ b/gen/main/java/issue/_407/Cat.java @@ -0,0 +1,79 @@ +package issue._407; + +@jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable +public final class Cat implements Pet { + + @com.fasterxml.jackson.annotation.JsonProperty("hunts") + @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) + private java.lang.Boolean hunts; + + @com.fasterxml.jackson.annotation.JsonProperty("age") + @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) + private java.lang.Integer age; + + @Override + public PetType getPetType() { + return PetType.CAT; + } + + // methods + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } + Cat other = (Cat) object; + return java.util.Objects.equals(hunts, other.hunts) + && java.util.Objects.equals(age, other.age); + } + + @Override + public int hashCode() { + return java.util.Objects.hash(hunts, age); + } + + @Override + public java.lang.String toString() { + return new java.lang.StringBuilder() + .append("Cat[") + .append("hunts=").append(hunts).append(",") + .append("age=").append(age) + .append("]") + .toString(); + } + + // fluent + + public Cat hunts(java.lang.Boolean newHunts) { + this.hunts = newHunts; + return this; + } + + public Cat age(java.lang.Integer newAge) { + this.age = newAge; + return this; + } + + // getter/setter + + public java.lang.Boolean getHunts() { + return hunts; + } + + public void setHunts(java.lang.Boolean newHunts) { + this.hunts = newHunts; + } + + public java.lang.Integer getAge() { + return age; + } + + public void setAge(java.lang.Integer newAge) { + this.age = newAge; + } +} diff --git a/gen/main/java/issue/_407/Dog.java b/gen/main/java/issue/_407/Dog.java new file mode 100644 index 00000000..199b4681 --- /dev/null +++ b/gen/main/java/issue/_407/Dog.java @@ -0,0 +1,116 @@ +package issue._407; + +@jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable +public final class Dog implements Pet { + + @com.fasterxml.jackson.annotation.JsonProperty("bark") + @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) + private java.lang.Boolean bark; + + @com.fasterxml.jackson.annotation.JsonProperty("breed") + @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) + private Breed breed; + + @Override + public PetType getPetType() { + return PetType.DOG; + } + + // methods + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } + Dog other = (Dog) object; + return java.util.Objects.equals(bark, other.bark) + && java.util.Objects.equals(breed, other.breed); + } + + @Override + public int hashCode() { + return java.util.Objects.hash(bark, breed); + } + + @Override + public java.lang.String toString() { + return new java.lang.StringBuilder() + .append("Dog[") + .append("bark=").append(bark).append(",") + .append("breed=").append(breed) + .append("]") + .toString(); + } + + // fluent + + public Dog bark(java.lang.Boolean newBark) { + this.bark = newBark; + return this; + } + + public Dog breed(Breed newBreed) { + this.breed = newBreed; + return this; + } + + // getter/setter + + public java.lang.Boolean getBark() { + return bark; + } + + public void setBark(java.lang.Boolean newBark) { + this.bark = newBark; + } + + public Breed getBreed() { + return breed; + } + + public void setBreed(Breed newBreed) { + this.breed = newBreed; + } + +@io.micronaut.serde.annotation.Serdeable +public enum Breed { + + DINGO("Dingo"), + HUSKY("Husky"), + RETRIEVER("Retriever"), + SHEPHERD("Shepherd"); + + public static final java.lang.String DINGO_VALUE = "Dingo"; + public static final java.lang.String HUSKY_VALUE = "Husky"; + public static final java.lang.String RETRIEVER_VALUE = "Retriever"; + public static final java.lang.String SHEPHERD_VALUE = "Shepherd"; + + private final java.lang.String value; + + private Breed(java.lang.String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static Breed toEnum(java.lang.String value) { + return toOptional(value).orElseThrow(() -> new IllegalArgumentException("Unknown value '" + value + "'.")); + } + + public static java.util.Optional toOptional(java.lang.String value) { + return java.util.Arrays + .stream(values()) + .filter(e -> e.value.equals(value)) + .findAny(); + } + + @com.fasterxml.jackson.annotation.JsonValue + public java.lang.String getValue() { + return value; + } +} +} diff --git a/gen/main/java/issue/_407/Pet.java b/gen/main/java/issue/_407/Pet.java new file mode 100644 index 00000000..b5800010 --- /dev/null +++ b/gen/main/java/issue/_407/Pet.java @@ -0,0 +1,13 @@ +package issue._407; + +@jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, include = com.fasterxml.jackson.annotation.JsonTypeInfo.As.EXISTING_PROPERTY, property = "petType") +@com.fasterxml.jackson.annotation.JsonSubTypes({ + @com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = Cat.class, name = "Cat"), + @com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = Dog.class, name = "Dog") +}) +public sealed interface Pet permits Cat, Dog { + + @com.fasterxml.jackson.annotation.JsonProperty("petType") + PetType getPetType(); +} diff --git a/gen/main/java/issue/_407/PetType.java b/gen/main/java/issue/_407/PetType.java new file mode 100644 index 00000000..7f7076ef --- /dev/null +++ b/gen/main/java/issue/_407/PetType.java @@ -0,0 +1,35 @@ +package issue._407; + +@jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable +public enum PetType { + + DOG("Dog"), + CAT("Cat"); + + public static final java.lang.String DOG_VALUE = "Dog"; + public static final java.lang.String CAT_VALUE = "Cat"; + + private final java.lang.String value; + + private PetType(java.lang.String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static PetType toEnum(java.lang.String value) { + return toOptional(value).orElseThrow(() -> new IllegalArgumentException("Unknown value '" + value + "'.")); + } + + public static java.util.Optional toOptional(java.lang.String value) { + return java.util.Arrays + .stream(values()) + .filter(e -> e.value.equals(value)) + .findAny(); + } + + @com.fasterxml.jackson.annotation.JsonValue + public java.lang.String getValue() { + return value; + } +} diff --git a/gen/main/java/testmodel/micronaut_pojo/EnumerationInteger.java b/gen/main/java/testmodel/micronaut_pojo/EnumerationInteger.java index 4cbbab94..20eb4e9b 100644 --- a/gen/main/java/testmodel/micronaut_pojo/EnumerationInteger.java +++ b/gen/main/java/testmodel/micronaut_pojo/EnumerationInteger.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationInteger { NUMBER_MINUS_2147483648(-2147483648), diff --git a/gen/main/java/testmodel/micronaut_pojo/EnumerationModel.java b/gen/main/java/testmodel/micronaut_pojo/EnumerationModel.java index e686cbdd..0cf5874c 100644 --- a/gen/main/java/testmodel/micronaut_pojo/EnumerationModel.java +++ b/gen/main/java/testmodel/micronaut_pojo/EnumerationModel.java @@ -110,6 +110,7 @@ public void setEmbeddedDefault(EmbeddedDefault newEmbeddedDefault) { this.embeddedDefault = newEmbeddedDefault; } +@io.micronaut.serde.annotation.Serdeable public enum Embedded { FIRST("first"), @@ -142,6 +143,7 @@ public java.lang.String getValue() { } } +@io.micronaut.serde.annotation.Serdeable public enum EmbeddedDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo/EnumerationNumber.java b/gen/main/java/testmodel/micronaut_pojo/EnumerationNumber.java index 03ab400c..c1b470a4 100644 --- a/gen/main/java/testmodel/micronaut_pojo/EnumerationNumber.java +++ b/gen/main/java/testmodel/micronaut_pojo/EnumerationNumber.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationNumber { NUMBER_MINUS_1(-1D), diff --git a/gen/main/java/testmodel/micronaut_pojo/EnumerationString.java b/gen/main/java/testmodel/micronaut_pojo/EnumerationString.java index c7450e2c..8f6d2efa 100644 --- a/gen/main/java/testmodel/micronaut_pojo/EnumerationString.java +++ b/gen/main/java/testmodel/micronaut_pojo/EnumerationString.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationString { ONE("one"), diff --git a/gen/main/java/testmodel/micronaut_pojo/EnumerationStringDefault.java b/gen/main/java/testmodel/micronaut_pojo/EnumerationStringDefault.java index d629e719..d195f186 100644 --- a/gen/main/java/testmodel/micronaut_pojo/EnumerationStringDefault.java +++ b/gen/main/java/testmodel/micronaut_pojo/EnumerationStringDefault.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationStringDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo/InheritanceWithEnumTypeEnum.java b/gen/main/java/testmodel/micronaut_pojo/InheritanceWithEnumTypeEnum.java index 018258e1..43f43951 100644 --- a/gen/main/java/testmodel/micronaut_pojo/InheritanceWithEnumTypeEnum.java +++ b/gen/main/java/testmodel/micronaut_pojo/InheritanceWithEnumTypeEnum.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum InheritanceWithEnumTypeEnum { INHERITANCE1("Inheritance1"), diff --git a/gen/main/java/testmodel/micronaut_pojo/PropertyTypeOne.java b/gen/main/java/testmodel/micronaut_pojo/PropertyTypeOne.java index 2fa743e6..a13102f1 100644 --- a/gen/main/java/testmodel/micronaut_pojo/PropertyTypeOne.java +++ b/gen/main/java/testmodel/micronaut_pojo/PropertyTypeOne.java @@ -53,6 +53,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { ONE("one"); diff --git a/gen/main/java/testmodel/micronaut_pojo/PropertyTypeTwo.java b/gen/main/java/testmodel/micronaut_pojo/PropertyTypeTwo.java index 0632d286..af1a59d7 100644 --- a/gen/main/java/testmodel/micronaut_pojo/PropertyTypeTwo.java +++ b/gen/main/java/testmodel/micronaut_pojo/PropertyTypeTwo.java @@ -53,6 +53,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { TWO("two"); diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationInteger.java b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationInteger.java index 1d474510..6bd78c15 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationInteger.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationInteger.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationInteger { NUMBER_MINUS_2147483648(-2147483648), diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationModel.java b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationModel.java index 14e3fefc..f4d42670 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationModel.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationModel.java @@ -115,6 +115,7 @@ public void setEmbeddedDefault(EmbeddedDefault newEmbeddedDefault) { this.embeddedDefault = newEmbeddedDefault; } +@io.micronaut.serde.annotation.Serdeable public enum Embedded { FIRST("first"), @@ -147,6 +148,7 @@ public java.lang.String getValue() { } } +@io.micronaut.serde.annotation.Serdeable public enum EmbeddedDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationNumber.java b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationNumber.java index 4eac093a..e6a69020 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationNumber.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationNumber.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationNumber { NUMBER_MINUS_1(-1D), diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationString.java b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationString.java index baac8a33..f50af668 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationString.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationString.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationString { ONE("one"), diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationStringDefault.java b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationStringDefault.java index 7ac4a5f7..7c45f836 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationStringDefault.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/EnumerationStringDefault.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationStringDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/InheritanceWithEnumTypeEnum.java b/gen/main/java/testmodel/micronaut_pojo_constants/InheritanceWithEnumTypeEnum.java index 3a31c15d..a87722d5 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/InheritanceWithEnumTypeEnum.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/InheritanceWithEnumTypeEnum.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum InheritanceWithEnumTypeEnum { INHERITANCE1("Inheritance1"), diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeOne.java b/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeOne.java index 7ed93ea9..492d40b8 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeOne.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeOne.java @@ -55,6 +55,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { ONE("one"); diff --git a/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeTwo.java b/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeTwo.java index 89fbcd44..6a1abe51 100644 --- a/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeTwo.java +++ b/gen/main/java/testmodel/micronaut_pojo_constants/PropertyTypeTwo.java @@ -55,6 +55,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { TWO("two"); diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationInteger.java b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationInteger.java index 0ecac340..cde4d948 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationInteger.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationInteger.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_nullable; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationInteger { NUMBER_MINUS_2147483648(-2147483648), diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationModel.java b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationModel.java index 0d960309..a9091a30 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationModel.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationModel.java @@ -110,6 +110,7 @@ public void setEmbeddedDefault(EmbeddedDefault newEmbeddedDefault) { this.embeddedDefault = newEmbeddedDefault; } +@io.micronaut.serde.annotation.Serdeable public enum Embedded { FIRST("first"), @@ -142,6 +143,7 @@ public java.lang.String getValue() { } } +@io.micronaut.serde.annotation.Serdeable public enum EmbeddedDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationNumber.java b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationNumber.java index db771d76..e205d079 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationNumber.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationNumber.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_nullable; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationNumber { NUMBER_MINUS_1(-1D), diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationString.java b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationString.java index cda049fb..6390de51 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationString.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationString.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_nullable; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationString { ONE("one"), diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationStringDefault.java b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationStringDefault.java index 01c56e7c..684f60af 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationStringDefault.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/EnumerationStringDefault.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_nullable; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationStringDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/InheritanceWithEnumTypeEnum.java b/gen/main/java/testmodel/micronaut_pojo_nullable/InheritanceWithEnumTypeEnum.java index 435a3abd..d8ddea65 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/InheritanceWithEnumTypeEnum.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/InheritanceWithEnumTypeEnum.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_nullable; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum InheritanceWithEnumTypeEnum { INHERITANCE1("Inheritance1"), diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeOne.java b/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeOne.java index 0bc9a223..b92168cd 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeOne.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeOne.java @@ -53,6 +53,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { ONE("one"); diff --git a/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeTwo.java b/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeTwo.java index 490d624b..51790506 100644 --- a/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeTwo.java +++ b/gen/main/java/testmodel/micronaut_pojo_nullable/PropertyTypeTwo.java @@ -53,6 +53,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { TWO("two"); diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationInteger.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationInteger.java index 6ce42eba..20698c28 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationInteger.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationInteger.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_unsealed; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationInteger { NUMBER_MINUS_2147483648(-2147483648), diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationModel.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationModel.java index ed61524b..43a320a4 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationModel.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationModel.java @@ -110,6 +110,7 @@ public void setEmbeddedDefault(EmbeddedDefault newEmbeddedDefault) { this.embeddedDefault = newEmbeddedDefault; } +@io.micronaut.serde.annotation.Serdeable public enum Embedded { FIRST("first"), @@ -142,6 +143,7 @@ public java.lang.String getValue() { } } +@io.micronaut.serde.annotation.Serdeable public enum EmbeddedDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationNumber.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationNumber.java index 53bc2e99..13c2fd2d 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationNumber.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationNumber.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_unsealed; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationNumber { NUMBER_MINUS_1(-1D), diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationString.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationString.java index cf1587c2..888ca035 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationString.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationString.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_unsealed; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationString { ONE("one"), diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationStringDefault.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationStringDefault.java index 3e874ccf..8b1cd16a 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationStringDefault.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/EnumerationStringDefault.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_unsealed; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationStringDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/InheritanceWithEnumTypeEnum.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/InheritanceWithEnumTypeEnum.java index 1df04095..a4199eac 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/InheritanceWithEnumTypeEnum.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/InheritanceWithEnumTypeEnum.java @@ -1,6 +1,7 @@ package testmodel.micronaut_pojo_unsealed; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum InheritanceWithEnumTypeEnum { INHERITANCE1("Inheritance1"), diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeOne.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeOne.java index 4ec0b373..2d276f6e 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeOne.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeOne.java @@ -53,6 +53,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { ONE("one"); diff --git a/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeTwo.java b/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeTwo.java index d29f1495..7e0bebd8 100644 --- a/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeTwo.java +++ b/gen/main/java/testmodel/micronaut_pojo_unsealed/PropertyTypeTwo.java @@ -53,6 +53,7 @@ public void setType(Type newType) { this.type = newType; } +@io.micronaut.serde.annotation.Serdeable public enum Type { TWO("two"); diff --git a/gen/main/java/testmodel/micronaut_record/EnumerationInteger.java b/gen/main/java/testmodel/micronaut_record/EnumerationInteger.java index 2583e23a..671283ce 100644 --- a/gen/main/java/testmodel/micronaut_record/EnumerationInteger.java +++ b/gen/main/java/testmodel/micronaut_record/EnumerationInteger.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationInteger { NUMBER_MINUS_2147483648(-2147483648), diff --git a/gen/main/java/testmodel/micronaut_record/EnumerationModel.java b/gen/main/java/testmodel/micronaut_record/EnumerationModel.java index 542dbabb..acbae873 100644 --- a/gen/main/java/testmodel/micronaut_record/EnumerationModel.java +++ b/gen/main/java/testmodel/micronaut_record/EnumerationModel.java @@ -23,6 +23,7 @@ public record EnumerationModel( @com.fasterxml.jackson.annotation.JsonProperty("embedded-default") @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) EmbeddedDefault embeddedDefault) { +@io.micronaut.serde.annotation.Serdeable public enum Embedded { FIRST("first"), @@ -54,6 +55,7 @@ public java.lang.String getValue() { return value; } } +@io.micronaut.serde.annotation.Serdeable public enum EmbeddedDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_record/EnumerationNumber.java b/gen/main/java/testmodel/micronaut_record/EnumerationNumber.java index 847e5525..31c12ef3 100644 --- a/gen/main/java/testmodel/micronaut_record/EnumerationNumber.java +++ b/gen/main/java/testmodel/micronaut_record/EnumerationNumber.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationNumber { NUMBER_MINUS_1(-1D), diff --git a/gen/main/java/testmodel/micronaut_record/EnumerationString.java b/gen/main/java/testmodel/micronaut_record/EnumerationString.java index 8f559d4d..f3ab8076 100644 --- a/gen/main/java/testmodel/micronaut_record/EnumerationString.java +++ b/gen/main/java/testmodel/micronaut_record/EnumerationString.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationString { ONE("one"), diff --git a/gen/main/java/testmodel/micronaut_record/EnumerationStringDefault.java b/gen/main/java/testmodel/micronaut_record/EnumerationStringDefault.java index 76c8bbaa..549f742f 100644 --- a/gen/main/java/testmodel/micronaut_record/EnumerationStringDefault.java +++ b/gen/main/java/testmodel/micronaut_record/EnumerationStringDefault.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationStringDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_record/InheritanceWithEnumTypeEnum.java b/gen/main/java/testmodel/micronaut_record/InheritanceWithEnumTypeEnum.java index c5355497..560bb9dd 100644 --- a/gen/main/java/testmodel/micronaut_record/InheritanceWithEnumTypeEnum.java +++ b/gen/main/java/testmodel/micronaut_record/InheritanceWithEnumTypeEnum.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum InheritanceWithEnumTypeEnum { INHERITANCE1("Inheritance1"), diff --git a/gen/main/java/testmodel/micronaut_record/PropertyTypeOne.java b/gen/main/java/testmodel/micronaut_record/PropertyTypeOne.java index d275c9b7..dcbc0ef2 100644 --- a/gen/main/java/testmodel/micronaut_record/PropertyTypeOne.java +++ b/gen/main/java/testmodel/micronaut_record/PropertyTypeOne.java @@ -8,6 +8,7 @@ public record PropertyTypeOne( @com.fasterxml.jackson.annotation.JsonProperty("type") @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) Type type) implements AdditionalPropertiesModelValue { +@io.micronaut.serde.annotation.Serdeable public enum Type { ONE("one"); diff --git a/gen/main/java/testmodel/micronaut_record/PropertyTypeTwo.java b/gen/main/java/testmodel/micronaut_record/PropertyTypeTwo.java index 6f02ab02..833168df 100644 --- a/gen/main/java/testmodel/micronaut_record/PropertyTypeTwo.java +++ b/gen/main/java/testmodel/micronaut_record/PropertyTypeTwo.java @@ -8,6 +8,7 @@ public record PropertyTypeTwo( @com.fasterxml.jackson.annotation.JsonProperty("type") @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) Type type) implements AdditionalPropertiesModelValue { +@io.micronaut.serde.annotation.Serdeable public enum Type { TWO("two"); diff --git a/gen/main/java/testmodel/micronaut_record_constants/EnumerationInteger.java b/gen/main/java/testmodel/micronaut_record_constants/EnumerationInteger.java index d04956d4..45bde143 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/EnumerationInteger.java +++ b/gen/main/java/testmodel/micronaut_record_constants/EnumerationInteger.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationInteger { NUMBER_MINUS_2147483648(-2147483648), diff --git a/gen/main/java/testmodel/micronaut_record_constants/EnumerationModel.java b/gen/main/java/testmodel/micronaut_record_constants/EnumerationModel.java index a6d38519..473a0edc 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/EnumerationModel.java +++ b/gen/main/java/testmodel/micronaut_record_constants/EnumerationModel.java @@ -29,6 +29,7 @@ public record EnumerationModel( public static final java.lang.String JSON_PROPERTY_EMBEDDED = "embedded"; public static final java.lang.String JSON_PROPERTY_EMBEDDED_DEFAULT = "embedded-default"; +@io.micronaut.serde.annotation.Serdeable public enum Embedded { FIRST("first"), @@ -60,6 +61,7 @@ public java.lang.String getValue() { return value; } } +@io.micronaut.serde.annotation.Serdeable public enum EmbeddedDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_record_constants/EnumerationNumber.java b/gen/main/java/testmodel/micronaut_record_constants/EnumerationNumber.java index 0d90a65b..d46e235e 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/EnumerationNumber.java +++ b/gen/main/java/testmodel/micronaut_record_constants/EnumerationNumber.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationNumber { NUMBER_MINUS_1(-1D), diff --git a/gen/main/java/testmodel/micronaut_record_constants/EnumerationString.java b/gen/main/java/testmodel/micronaut_record_constants/EnumerationString.java index 6dd5058c..0b310523 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/EnumerationString.java +++ b/gen/main/java/testmodel/micronaut_record_constants/EnumerationString.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationString { ONE("one"), diff --git a/gen/main/java/testmodel/micronaut_record_constants/EnumerationStringDefault.java b/gen/main/java/testmodel/micronaut_record_constants/EnumerationStringDefault.java index d6843300..ae2f5d2e 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/EnumerationStringDefault.java +++ b/gen/main/java/testmodel/micronaut_record_constants/EnumerationStringDefault.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum EnumerationStringDefault { THREE("three"), diff --git a/gen/main/java/testmodel/micronaut_record_constants/InheritanceWithEnumTypeEnum.java b/gen/main/java/testmodel/micronaut_record_constants/InheritanceWithEnumTypeEnum.java index 37691a8e..25cc407b 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/InheritanceWithEnumTypeEnum.java +++ b/gen/main/java/testmodel/micronaut_record_constants/InheritanceWithEnumTypeEnum.java @@ -1,6 +1,7 @@ package testmodel.micronaut_record_constants; @jakarta.annotation.Generated("org.openapitools.codegen.languages.MicronautCodegen") +@io.micronaut.serde.annotation.Serdeable public enum InheritanceWithEnumTypeEnum { INHERITANCE1("Inheritance1"), diff --git a/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeOne.java b/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeOne.java index ccde0507..376e8006 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeOne.java +++ b/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeOne.java @@ -11,6 +11,7 @@ public record PropertyTypeOne( public static final java.lang.String JSON_PROPERTY_TYPE = "type"; +@io.micronaut.serde.annotation.Serdeable public enum Type { ONE("one"); diff --git a/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeTwo.java b/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeTwo.java index 040eca2b..1ba7f691 100644 --- a/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeTwo.java +++ b/gen/main/java/testmodel/micronaut_record_constants/PropertyTypeTwo.java @@ -11,6 +11,7 @@ public record PropertyTypeTwo( public static final java.lang.String JSON_PROPERTY_TYPE = "type"; +@io.micronaut.serde.annotation.Serdeable public enum Type { TWO("two"); diff --git a/src/it/issue-407/pom.xml b/src/it/issue-407/pom.xml new file mode 100644 index 00000000..d92a1946 --- /dev/null +++ b/src/it/issue-407/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + + @project.groupId@ + @project.artifactId@-it + LOCAL-SNAPSHOT + + + @project.artifactId@-it-issue-407 + + + + + + io.micronaut + micronaut-http-client + + + io.micronaut.serde + micronaut-serde-jackson + + + io.micronaut.test + micronaut-test-junit5 + test + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + io.micronaut + micronaut-inject-java + + + io.micronaut.serde + micronaut-serde-processor + + + + + + + + org.openapitools + openapi-generator-maven-plugin + + @project.basedir@/src/test/resources/openapi/issue-407.yaml + false + + false + + + Generated= + + + + + + + diff --git a/src/it/issue-407/src/test/java/codegen/ModelTest.java b/src/it/issue-407/src/test/java/codegen/ModelTest.java new file mode 100644 index 00000000..640ab2ef --- /dev/null +++ b/src/it/issue-407/src/test/java/codegen/ModelTest.java @@ -0,0 +1,25 @@ +package codegen; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import io.micronaut.json.JsonMapper; + +public class ModelTest { + + private final JsonMapper mapper = JsonMapper.createDefault(); + private final String dogString = "{\"petType\":\"Dog\",\"bark\":true,\"breed\":\"Dingo\"}"; + private final Dog dogObject = new Dog().bark(true).breed(Dog.Breed.DINGO); + + @Test + void writeDog() { + assertEquals(dogString, assertDoesNotThrow(() -> mapper.writeValueAsString(dogObject))); + } + + @Test + void readSerializedDogString() { + assertEquals(dogObject, assertDoesNotThrow(() -> mapper.readValue(dogString, Dog.class))); + } +} diff --git a/src/main/resources/Micronaut/modelEnum.mustache b/src/main/resources/Micronaut/modelEnum.mustache index f8bd0924..29102ca5 100644 --- a/src/main/resources/Micronaut/modelEnum.mustache +++ b/src/main/resources/Micronaut/modelEnum.mustache @@ -1,3 +1,5 @@ +{{#serdeable}}@io.micronaut.serde.annotation.Serdeable +{{/serdeable}} public enum {{#nameInPascalCase}}{{{nameInPascalCase}}}{{/nameInPascalCase}}{{^nameInPascalCase}}{{{classname}}}{{/nameInPascalCase}} { {{#allowableValues}}{{#enumVars}} {{{name}}}({{{value}}}){{^-last}}, diff --git a/src/test/java/org/openapitools/codegen/languages/IssueCodegenTest.java b/src/test/java/org/openapitools/codegen/languages/IssueCodegenTest.java index 844212fc..ac626824 100644 --- a/src/test/java/org/openapitools/codegen/languages/IssueCodegenTest.java +++ b/src/test/java/org/openapitools/codegen/languages/IssueCodegenTest.java @@ -72,6 +72,12 @@ void apiWithParametersWithOptionalAndValidation() { generate(configurator("src/test/resources/openapi/issue-372.yaml", "issue._372")); } + @DisplayName("model with inner and external enum values") + @Test + void modelWithInnerAndExternalEnumValues() { + generate(configurator("src/test/resources/openapi/issue-407.yaml", "issue._407")); + } + static void generate(CodegenConfigurator configurator) { var gen = new DefaultGenerator(); gen.setGenerateMetadata(false); diff --git a/src/test/resources/openapi/issue-407.yaml b/src/test/resources/openapi/issue-407.yaml new file mode 100644 index 00000000..1ef39bbe --- /dev/null +++ b/src/test/resources/openapi/issue-407.yaml @@ -0,0 +1,45 @@ +openapi: 3.0.3 +info: + title: Spec for + version: "1" +paths: {} +components: + schemas: + Pet: + type: object + required: + - petType + properties: + petType: + type: object + allOf: + - $ref: "#/components/schemas/PetType" + discriminator: + propertyName: petType + mapping: + Dog: "#/components/schemas/Dog" + Cat: "#/components/schemas/Cat" + PetType: + type: string + enum: + - Dog + - Cat + Dog: + allOf: + - $ref: "#/components/schemas/Pet" + - type: object + properties: + bark: + type: boolean + breed: + type: string + enum: [Dingo, Husky, Retriever, Shepherd] + Cat: + allOf: + - $ref: "#/components/schemas/Pet" + - type: object + properties: + hunts: + type: boolean + age: + type: integer