From 37ba772acba4cf4f56e3814c073c64f096f94d02 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 23 Feb 2024 23:30:47 +0100 Subject: [PATCH 1/1] Do not generate prime when not needed In case we do not have any properties we end up emitting a local variable which we'll never use -- generating a compiler warning. Improve InterfaceTemplate to check for this condition and emit the prime only if there are actually at least one property. Change-Id: I3341ca075e8c7c0b671a76f226b7bdb99cb12465 Signed-off-by: Robert Varga --- .../java/api/generator/InterfaceTemplate.xtend | 11 +++++++---- .../java/api/generator/BuilderGeneratorTest.java | 9 ++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend index 53900de421..a6d549069f 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend @@ -299,11 +299,14 @@ class InterfaceTemplate extends BaseTemplate { * @throws «NPE.importedName» if {@code obj} is {@code null} */ static int «BINDING_HASHCODE_NAME»(final «type.fullyQualifiedNonNull» obj) { - final int prime = 31; int result = 1; - «FOR property : typeAnalysis.value» - result = prime * result + «property.importedUtilClass».hashCode(obj.«property.getterMethodName»()); - «ENDFOR» + «val props = typeAnalysis.value» + «IF !props.empty» + final int prime = 31; + «FOR property : props» + result = prime * result + «property.importedUtilClass».hashCode(obj.«property.getterMethodName»()); + «ENDFOR» + «ENDIF» «IF augmentable» for (var augmentation : obj.augmentations().values()) { result += augmentation.hashCode(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java index 08e2643c91..c7df05746b 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java @@ -51,8 +51,8 @@ public class BuilderGeneratorTest { * @throws NullPointerException if {@code obj} is {@code null} */ static int bindingHashCode(final test.@NonNull test obj) { - final int prime = 31; int result = 1; + final int prime = 31; result = prime * result + Objects.hashCode(obj.getTest()); return result; } @@ -78,8 +78,8 @@ public class BuilderGeneratorTest { * @throws NullPointerException if {@code obj} is {@code null} */ static int bindingHashCode(final test.@NonNull test obj) { - final int prime = 31; int result = 1; + final int prime = 31; result = prime * result + Objects.hashCode(obj.getTest1()); result = prime * result + Objects.hashCode(obj.getTest2()); return result; @@ -101,7 +101,6 @@ public class BuilderGeneratorTest { * @throws NullPointerException if {@code obj} is {@code null} */ static int bindingHashCode(final test.@NonNull test obj) { - final int prime = 31; int result = 1; for (var augmentation : obj.augmentations().values()) { result += augmentation.hashCode(); @@ -125,8 +124,8 @@ public class BuilderGeneratorTest { * @throws NullPointerException if {@code obj} is {@code null} */ static int bindingHashCode(final test.@NonNull test obj) { - final int prime = 31; int result = 1; + final int prime = 31; result = prime * result + Objects.hashCode(obj.getTest()); for (var augmentation : obj.augmentations().values()) { result += augmentation.hashCode(); @@ -150,8 +149,8 @@ public class BuilderGeneratorTest { * @throws NullPointerException if {@code obj} is {@code null} */ static int bindingHashCode(final test.@NonNull test obj) { - final int prime = 31; int result = 1; + final int prime = 31; result = prime * result + Objects.hashCode(obj.getTest1()); result = prime * result + Objects.hashCode(obj.getTest2()); for (var augmentation : obj.augmentations().values()) { -- 2.36.6