From 5d6618985099ac0e161eb1ebe850d7f17176e75b Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Tue, 6 Sep 2022 14:35:57 +0200 Subject: [PATCH] fix: provide more context when group/plural are missing Fixes #4396 --- CHANGELOG.md | 2 +- .../fabric8/kubernetes/model/annotation/Group.java | 2 +- .../fabric8/kubernetes/model/annotation/Version.java | 1 + .../io/fabric8/kubernetes/api/model/HasMetadata.java | 12 +++++++++--- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e8822820c7..e2aad570fcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ #### Improvements * Fix #4348: Introduce specific annotations for the generators * Fix #4365: The Watch retry logic will handle more cases, as well as perform an exceptional close for events that are not properly handled. Informers can directly provide those exceptional outcomes via the SharedIndexInformer.stopped CompletableFuture. +* Fix #4396: Provide more error context when @Group/@Version annotations are missing #### Dependency Upgrade * Fix #4243: Update Tekton pipeline model to v0.39.0 @@ -37,7 +38,6 @@ fix #4373: NO_PROXY should allow URIs with hyphens ("circleci-internal-outer-bui * Fix #4320: corrected leader transitions field on leader election leases * Fix #4360: JUnit dependencies aren't leaked in child modules - #### Improvements * Fix #887: added KubernetesClient.visitResources to search and perform other operations across all resources. * Fix #3960: adding a KubernetesMockServer.expectCustomResource helper method and additional mock crd support diff --git a/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Group.java b/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Group.java index a2b35bab858..570df961401 100644 --- a/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Group.java +++ b/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Group.java @@ -30,6 +30,6 @@ @Target({TYPE}) @Retention(RUNTIME) public @interface Group { - + String NAME = Group.class.getSimpleName(); String value(); } diff --git a/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Version.java b/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Version.java index a69586377a1..5ce401efce1 100644 --- a/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Version.java +++ b/kubernetes-model-generator/kubernetes-model-common/src/main/java/io/fabric8/kubernetes/model/annotation/Version.java @@ -29,6 +29,7 @@ @Target({TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Version { + String NAME = Version.class.getSimpleName(); /** * The name of this version. diff --git a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/HasMetadata.java b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/HasMetadata.java index f7d82abdf2f..223046d2828 100644 --- a/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/HasMetadata.java +++ b/kubernetes-model-generator/kubernetes-model-core/src/main/java/io/fabric8/kubernetes/api/model/HasMetadata.java @@ -84,8 +84,7 @@ static String getApiVersion(Class clazz) { } if (group != null || version != null) { throw new IllegalArgumentException( - "You need to specify both @" + Group.class.getSimpleName() + " and @" - + Version.class.getSimpleName() + " annotations if you specify either"); + "You need to specify both @" + Group.NAME + " and @" + Version.NAME + " annotations if you specify either"); } return null; } @@ -158,7 +157,13 @@ default String getSingular() { } static String getFullResourceName(Class clazz) { - return getFullResourceName(getPlural(clazz), getGroup(clazz)); + final String plural = getPlural(clazz); + final String group = getGroup(clazz); + if (plural == null || group == null) { + throw new IllegalArgumentException( + "Should provide non-null plural and/or group. Is " + clazz.getName() + " properly annotated with @" + Group.NAME + " and/or @" + Version.NAME + "?"); + } + return getFullResourceName(plural, group); } static String getFullResourceName(String plural, String group) { @@ -168,6 +173,7 @@ static String getFullResourceName(String plural, String group) { } @JsonIgnore + @SuppressWarnings("unused") default String getFullResourceName() { return getFullResourceName(getClass()); }