diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e76312e89..e1296fcf58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ #### Improvements * Fix #4348: Introduce specific annotations for the generators +* Fix #4396: Provide more error context when @Group/@Version annotations are missing #### Dependency Upgrade * Fix #4383: bump snakeyaml from 1.30 to 1.31 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 a2b35bab85..570df96140 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 a69586377a..5ce401efce 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 f7d82abdf2..223046d282 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()); }