Added equals and hashcode to builder implementations.
authorMartin Vitez <mvitez@cisco.com>
Tue, 1 Oct 2013 12:07:36 +0000 (14:07 +0200)
committerMartin Vitez <mvitez@cisco.com>
Tue, 1 Oct 2013 12:07:36 +0000 (14:07 +0200)
Signed-off-by: Martin Vitez <mvitez@cisco.com>
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend

index 2ce3148534610c153ba1de82fd08e07d00789eb5..2e3344c30301d50731e834ef18387eb5d5778244 100644 (file)
@@ -240,6 +240,9 @@ class BuilderTemplate extends BaseTemplate {
 \r
                 «generateGetters(true)»\r
 \r
+                «generateHashCode()»\r
+\r
+                «generateEquals()»\r
             }\r
 \r
         }\r
@@ -325,6 +328,73 @@ class BuilderTemplate extends BaseTemplate {
                 return (E) «augmentField.name».get(augmentationType);\r
             }\r
         «ENDIF»\r
-    '''    \r
+    '''\r
+\r
+    /**\r
+     * Template method which generates the method <code>hashCode()</code>.\r
+     * \r
+     * @return string with the <code>hashCode()</code> method definition in JAVA format\r
+     */\r
+    def protected generateHashCode() '''\r
+        «IF !properties.empty || augmentField != null»\r
+            @Override\r
+            public int hashCode() {\r
+                final int prime = 31;\r
+                int result = 1;\r
+                «FOR property : properties»\r
+                    result = prime * result + ((«property.fieldName» == null) ? 0 : «property.fieldName».hashCode());\r
+                «ENDFOR»\r
+                «IF augmentField != null»\r
+                    result = prime * result + ((«augmentField.name» == null) ? 0 : «augmentField.name».hashCode());\r
+                «ENDIF»\r
+                return result;\r
+            }\r
+        «ENDIF»\r
+    '''\r
+\r
+    /**\r
+     * Template method which generates the method <code>equals()</code>.\r
+     * \r
+     * @return string with the <code>equals()</code> method definition in JAVA format     \r
+     */\r
+    def protected generateEquals() '''\r
+        «IF !properties.empty || augmentField != null»\r
+            @Override\r
+            public boolean equals(java.lang.Object obj) {\r
+                if (this == obj) {\r
+                    return true;\r
+                }\r
+                if (obj == null) {\r
+                    return false;\r
+                }\r
+                if (getClass() != obj.getClass()) {\r
+                    return false;\r
+                }\r
+                «type.name»«IMPL» other = («type.name»«IMPL») obj;\r
+                «FOR property : properties»\r
+                    «val fieldName = property.fieldName»\r
+                    if («fieldName» == null) {\r
+                        if (other.«fieldName» != null) {\r
+                            return false;\r
+                        }\r
+                    } else if(!«fieldName».equals(other.«fieldName»)) {\r
+                        return false;\r
+                    }\r
+                «ENDFOR»\r
+                «IF augmentField != null»\r
+                    «val fieldName = augmentField.name»\r
+                    if («fieldName» == null) {\r
+                        if (other.«fieldName» != null) {\r
+                            return false;\r
+                        }\r
+                    } else if(!«fieldName».equals(other.«fieldName»)) {\r
+                        return false;\r
+                    }\r
+                «ENDIF»\r
+                return true;\r
+            }\r
+        «ENDIF»\r
+    '''\r
+\r
 }\r
 \r