From 3e89c4dfab9844d0f1b4bc2de09f586c9a56383b Mon Sep 17 00:00:00 2001 From: Andrea Peruffo Date: Wed, 14 Dec 2022 13:58:46 +0000 Subject: [PATCH] [java-gen] Fix default value encoding for enums --- CHANGELOG.md | 1 + .../main/java/io/fabric8/java/generator/nodes/JObject.java | 5 +++-- .../java/io/fabric8/it/certmanager/TestDefaultValues.java | 3 +++ .../src/test/resources/example.yaml | 7 +++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cd908d5bc..11c78a36e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ #### Bugs * Fix #4666: fixed okhttp calls not explicitly closing +* Fix #4677: [java-generator] Fix default encoding of enums ### 6.3.0 (2022-12-12) diff --git a/java-generator/core/src/main/java/io/fabric8/java/generator/nodes/JObject.java b/java-generator/core/src/main/java/io/fabric8/java/generator/nodes/JObject.java index e1c4c11e82..9d7bf926ee 100644 --- a/java-generator/core/src/main/java/io/fabric8/java/generator/nodes/JObject.java +++ b/java-generator/core/src/main/java/io/fabric8/java/generator/nodes/JObject.java @@ -168,7 +168,8 @@ public GeneratorResult generateJava() { GeneratorResult gr = prop.generateJava(); // For now the inner types are only for enums - if (!gr.getInnerClasses().isEmpty()) { + boolean isEnum = !gr.getInnerClasses().isEmpty(); + if (isEnum) { for (GeneratorResult.ClassResult enumCR : gr.getInnerClasses()) { Optional ed = enumCR.getCompilationUnit().getEnumByName(enumCR.getName()); if (ed.isPresent()) { @@ -244,7 +245,7 @@ public GeneratorResult generateJava() { } if (prop.getDefaultValue() != null) { - Expression primitiveDefault = generatePrimitiveDefaultInitializerExpression(prop); + Expression primitiveDefault = (isEnum) ? null : generatePrimitiveDefaultInitializerExpression(prop); if (primitiveDefault != null) { objField.getVariable(0).setInitializer(primitiveDefault); diff --git a/java-generator/it/src/it/default-values-instantiation/src/test/java/io/fabric8/it/certmanager/TestDefaultValues.java b/java-generator/it/src/it/default-values-instantiation/src/test/java/io/fabric8/it/certmanager/TestDefaultValues.java index 653c7093d3..93aa846456 100644 --- a/java-generator/it/src/it/default-values-instantiation/src/test/java/io/fabric8/it/certmanager/TestDefaultValues.java +++ b/java-generator/it/src/it/default-values-instantiation/src/test/java/io/fabric8/it/certmanager/TestDefaultValues.java @@ -23,6 +23,7 @@ import java.util.List; +import static io.cert_manager.v1.CertificateRequestSpec.*; import static org.junit.jupiter.api.Assertions.assertEquals; class TestDefaultValues { @@ -44,6 +45,7 @@ void testDefaultValues() throws Exception { Double eight = cr.getSpec().getEight(); List nine = cr.getSpec().getNine(); Ten ten = cr.getSpec().getTen(); + Eleven eleven = cr.getSpec().getEleven(); // Assert assertEquals("one", one); @@ -59,5 +61,6 @@ void testDefaultValues() throws Exception { assertEquals("nine2", nine.get(1)); assertEquals("tenone", ten.getTenOne()); assertEquals("tentwo", ten.getTenTwo()); + assertEquals(Eleven.BAZ, eleven); } } diff --git a/java-generator/it/src/it/default-values-instantiation/src/test/resources/example.yaml b/java-generator/it/src/it/default-values-instantiation/src/test/resources/example.yaml index f5efe9155a..f1ce5f32e6 100644 --- a/java-generator/it/src/it/default-values-instantiation/src/test/resources/example.yaml +++ b/java-generator/it/src/it/default-values-instantiation/src/test/resources/example.yaml @@ -90,5 +90,12 @@ spec: default: tenOne: "tenone" tenTwo: "tentwo" + eleven: + type: string + enum: + - "foo" + - "bar" + - "baz" + default: "baz" served: true storage: true