Do not generate prime when not needed
[mdsal.git] / binding / mdsal-binding-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / java / api / generator / InterfaceTemplate.xtend
index e2b4215b4b9553efa34ea6748071fc1612e1a890..a6d549069fbf7f51ac7221f05655c546c7c6f605 100644 (file)
@@ -7,19 +7,19 @@
  */
 package org.opendaylight.mdsal.binding.java.api.generator
 
-import static extension org.opendaylight.mdsal.binding.spec.naming.BindingMapping.getGetterMethodForNonnull
-import static extension org.opendaylight.mdsal.binding.spec.naming.BindingMapping.getGetterMethodForRequire
-import static extension org.opendaylight.mdsal.binding.spec.naming.BindingMapping.isGetterMethodName
-import static extension org.opendaylight.mdsal.binding.spec.naming.BindingMapping.isNonnullMethodName
-import static extension org.opendaylight.mdsal.binding.spec.naming.BindingMapping.isRequireMethodName
+import static extension org.opendaylight.yangtools.yang.binding.contract.Naming.getGetterMethodForNonnull
+import static extension org.opendaylight.yangtools.yang.binding.contract.Naming.getGetterMethodForRequire
+import static extension org.opendaylight.yangtools.yang.binding.contract.Naming.isGetterMethodName
+import static extension org.opendaylight.yangtools.yang.binding.contract.Naming.isNonnullMethodName
+import static extension org.opendaylight.yangtools.yang.binding.contract.Naming.isRequireMethodName
 import static org.opendaylight.mdsal.binding.model.ri.Types.BOOLEAN
 import static org.opendaylight.mdsal.binding.model.ri.Types.STRING
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.REQUIRE_PREFIX
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTATION_FIELD
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.BINDING_CONTRACT_IMPLEMENTED_INTERFACE_NAME
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.BINDING_EQUALS_NAME
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.BINDING_HASHCODE_NAME
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.BINDING_TO_STRING_NAME
+import static org.opendaylight.yangtools.yang.binding.contract.Naming.REQUIRE_PREFIX
+import static org.opendaylight.yangtools.yang.binding.contract.Naming.AUGMENTATION_FIELD
+import static org.opendaylight.yangtools.yang.binding.contract.Naming.BINDING_CONTRACT_IMPLEMENTED_INTERFACE_NAME
+import static org.opendaylight.yangtools.yang.binding.contract.Naming.BINDING_EQUALS_NAME
+import static org.opendaylight.yangtools.yang.binding.contract.Naming.BINDING_HASHCODE_NAME
+import static org.opendaylight.yangtools.yang.binding.contract.Naming.BINDING_TO_STRING_NAME
 
 import com.google.common.annotations.VisibleForTesting;
 import java.util.List
@@ -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();