Use Objects.hashCode()/equals() in generated DTOs 50/28250/3
authorRobert Varga <robert.varga@pantheon.sk>
Sat, 10 Oct 2015 13:22:12 +0000 (15:22 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 12 Oct 2015 08:58:03 +0000 (08:58 +0000)
Using java.util.Objects reduces complexity of generated code, leading to
leaner class files.

Change-Id: I941ede7cf9f60a9372864048bccdbb1650d2f5cf
Signed-off-by: Robert Varga <robert.varga@pantheon.sk>
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend

index 7a8b72aef526885602a7ccea8e725f42f8ac99b2..6913a84193cd2f7f03103c0193f4c2d79c59ee6c 100644 (file)
@@ -17,6 +17,7 @@ import java.util.HashSet
 import java.util.LinkedHashSet
 import java.util.List
 import java.util.Map
+import java.util.Objects
 import java.util.Set
 import org.opendaylight.yangtools.binding.generator.util.ReferencedTypeImpl
 import org.opendaylight.yangtools.binding.generator.util.Types
@@ -637,13 +638,13 @@ class BuilderTemplate extends BaseTemplate {
                 int result = 1;
                 «FOR property : properties»
                     «IF property.returnType.name.contains("[")»
-                    result = prime * result + ((«property.fieldName» == null) ? 0 : «Arrays.importedName».hashCode(«property.fieldName»));
+                    result = prime * result + «Arrays.importedName».hashCode(«property.fieldName»);
                     «ELSE»
-                    result = prime * result + ((«property.fieldName» == null) ? 0 : «property.fieldName».hashCode());
+                    result = prime * result + «Objects.importedName».hashCode(«property.fieldName»);
                     «ENDIF»
                 «ENDFOR»
                 «IF augmentField != null»
-                    result = prime * result + ((«augmentField.name» == null) ? 0 : «augmentField.name».hashCode());
+                    result = prime * result + «Objects.importedName».hashCode(«augmentField.name»);
                 «ENDIF»
 
                 hash = result;
@@ -674,14 +675,10 @@ class BuilderTemplate extends BaseTemplate {
                 «type.importedName» other = («type.importedName»)obj;
                 «FOR property : properties»
                     «val fieldName = property.fieldName»
-                    if («fieldName» == null) {
-                        if (other.«property.getterMethodName»() != null) {
-                            return false;
-                        }
                     «IF property.returnType.name.contains("[")»
-                    } else if(!«Arrays.importedName».equals(«fieldName», other.«property.getterMethodName»())) {
+                    if (!«Arrays.importedName».equals(«fieldName», other.«property.getterMethodName»())) {
                     «ELSE»
-                    } else if(!«fieldName».equals(other.«property.getterMethodName»())) {
+                    if (!«Objects.importedName».equals(«fieldName», other.«property.getterMethodName»())) {
                     «ENDIF»
                         return false;
                     }
@@ -691,11 +688,7 @@ class BuilderTemplate extends BaseTemplate {
                         // Simple case: we are comparing against self
                         «type.name»«IMPL» otherImpl = («type.name»«IMPL») obj;
                         «val fieldName = augmentField.name»
-                        if («fieldName» == null) {
-                            if (otherImpl.«fieldName» != null) {
-                                return false;
-                            }
-                        } else if(!«fieldName».equals(otherImpl.«fieldName»)) {
+                        if (!«Objects.importedName».equals(«fieldName», otherImpl.«fieldName»)) {
                             return false;
                         }
                     } else {
index a9cbeb10bbeb1dad237bf699c7e94a305baf7383..8dec19fc92f6a56d94a470ba8b7304f788e2cb1e 100644 (file)
@@ -16,6 +16,7 @@ import java.util.ArrayList
 import java.util.Arrays
 import java.util.Collections
 import java.util.List
+import java.util.Objects
 import java.util.regex.Pattern
 import org.opendaylight.yangtools.binding.generator.util.TypeConstants
 import org.opendaylight.yangtools.sal.binding.model.api.ConcreteType
@@ -487,9 +488,9 @@ class ClassTemplate extends BaseTemplate {
                 int result = 1;
                 «FOR property : genTO.hashCodeIdentifiers»
                     «IF property.returnType.name.contains("[")»
-                    result = prime * result + ((«property.fieldName» == null) ? 0 : «Arrays.importedName».hashCode(«property.fieldName»));
+                    result = prime * result + «Arrays.importedName».hashCode(«property.fieldName»);
                     «ELSE»
-                    result = prime * result + ((«property.fieldName» == null) ? 0 : «property.fieldName».hashCode());
+                    result = prime * result + «Objects.importedName».hashCode(«property.fieldName»);
                     «ENDIF»
                 «ENDFOR»
                 return result;
@@ -518,14 +519,10 @@ class ClassTemplate extends BaseTemplate {
                 «type.name» other = («type.name») obj;
                 «FOR property : genTO.equalsIdentifiers»
                     «val fieldName = property.fieldName»
-                    if («fieldName» == null) {
-                        if (other.«fieldName» != null) {
-                            return false;
-                        }
                     «IF property.returnType.name.contains("[")»
-                    } else if(!«Arrays.importedName».equals(«fieldName», other.«fieldName»)) {
+                    if (!«Arrays.importedName».equals(«fieldName», other.«fieldName»)) {
                     «ELSE»
-                    } else if(!«fieldName».equals(other.«fieldName»)) {
+                    if (!«Objects.importedName».equals(«fieldName», other.«fieldName»)) {
                     «ENDIF»
                         return false;
                     }