From: Robert Varga Date: Sat, 10 Oct 2015 13:22:12 +0000 (+0200) Subject: Use Objects.hashCode()/equals() in generated DTOs X-Git-Tag: release/beryllium~76 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;ds=sidebyside;h=9ba501bd6779fcdf3a5ab2ef2dde2803673701e0;p=mdsal.git Use Objects.hashCode()/equals() in generated DTOs Using java.util.Objects reduces complexity of generated code, leading to leaner class files. Change-Id: I941ede7cf9f60a9372864048bccdbb1650d2f5cf Signed-off-by: Robert Varga --- diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend index 7a8b72aef5..6913a84193 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend @@ -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 { diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend index a9cbeb10bb..8dec19fc92 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend @@ -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; }