Author: jgbutler
Date: Wed Mar 25 15:37:31 2009
New Revision: 758304

URL: http://svn.apache.org/viewvc?rev=758304&view=rev
Log:
[Ibator] NPE and incorrect calculation in generated equals methods when fields 
are null

Modified:
    ibatis/trunk/java/tools/ibator/core/build/version.properties
    ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
    ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
    
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/plugins/EqualsHashCodePlugin.java
    
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/flat/java5/FlatJava5Tests.java

Modified: ibatis/trunk/java/tools/ibator/core/build/version.properties
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/build/version.properties?rev=758304&r1=758303&r2=758304&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/build/version.properties (original)
+++ ibatis/trunk/java/tools/ibator/core/build/version.properties Wed Mar 25 
15:37:31 2009
@@ -1,4 +1,4 @@
 #Ibator build version info
-#Fri Mar 20 15:17:17 CDT 2009
+#Wed Mar 25 10:30:37 CDT 2009
 version=1.2.2
-buildNum=717
+buildNum=724

Modified: ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt?rev=758304&r1=758303&r2=758304&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt (original)
+++ ibatis/trunk/java/tools/ibator/core/doc/ReleaseNotes.txt Wed Mar 25 
15:37:31 2009
@@ -8,6 +8,8 @@
 1. Fixed NPE when no DAOs are generated
 2. Fixed IBATIS-579 - don't allow column names with spaces to break
    across lines
+3. Fixed NPE and incorrect calculation in generated equals when certain
+   fields are null - thanks to Benjamin Klatt for finding this bug
 
 Enhancements:
 1. IBATIS-569 - Make it easier to override IbatorRules in plugins

Modified: ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html?rev=758304&r1=758303&r2=758304&view=diff
==============================================================================
--- ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html (original)
+++ ibatis/trunk/java/tools/ibator/core/htmldoc/whatsNew.html Wed Mar 25 
15:37:31 2009
@@ -50,6 +50,10 @@
   <li>NPE when no DAOs are generated.</li>
   <li>IBATIS-579 - Don't allow column names that contain spaces to
       break across lines in generated XML.</li>
+  <li>Fixed NPE and incorrect calculation in generated equals method
+      (from EqualsHashCodePlugin) when certain
+      fields are null - thanks to Benjamin Klatt for finding this bug.</li>
+  
 </ul>
 
 <h3>Enhancements</h3>

Modified: 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/plugins/EqualsHashCodePlugin.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/plugins/EqualsHashCodePlugin.java?rev=758304&r1=758303&r2=758304&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/plugins/EqualsHashCodePlugin.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/src/org/apache/ibatis/ibator/plugins/EqualsHashCodePlugin.java
 Wed Mar 25 15:37:31 2009
@@ -154,11 +154,11 @@
             sb.setLength(0);
 
             if (first) {
-                sb.append("return "); //$NON-NLS-1$
+                sb.append("return ("); //$NON-NLS-1$
                 first = false;
             } else {
                 OutputUtilities.javaIndent(sb, 1);
-                sb.append("&& "); //$NON-NLS-1$
+                sb.append("&& ("); //$NON-NLS-1$
             }
 
             String getterMethod = JavaBeansUtil.getGetterMethodName(
@@ -172,15 +172,17 @@
                 sb.append("() == "); //$NON-NLS-1$
                 sb.append("other."); //$NON-NLS-1$
                 sb.append(getterMethod);
-                sb.append("()"); //$NON-NLS-1$
+                sb.append("())"); //$NON-NLS-1$
             } else {
                 sb.append("this."); //$NON-NLS-1$
                 sb.append(getterMethod);
-                sb.append("() == null ? other == null : this."); //$NON-NLS-1$
+                sb.append("() == null ? other."); //$NON-NLS-1$
+                sb.append(getterMethod);
+                sb.append("() == null : this."); //$NON-NLS-1$
                 sb.append(getterMethod);
                 sb.append("().equals(other."); //$NON-NLS-1$
                 sb.append(getterMethod);
-                sb.append("())"); //$NON-NLS-1$
+                sb.append("()))"); //$NON-NLS-1$
             }
             
             if (!iter.hasNext()) {

Modified: 
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/flat/java5/FlatJava5Tests.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/flat/java5/FlatJava5Tests.java?rev=758304&r1=758303&r2=758304&view=diff
==============================================================================
--- 
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/flat/java5/FlatJava5Tests.java
 (original)
+++ 
ibatis/trunk/java/tools/ibator/core/testJava5/ibatortest/execute/flat/java5/FlatJava5Tests.java
 Wed Mar 25 15:37:31 2009
@@ -3005,4 +3005,134 @@
             fail(e.getMessage());
         }
     }
+    
+    public void testEquals1() {
+        Pkfields pkfields1 = new Pkfields();
+        assertFalse(pkfields1.equals(null));
+    }
+    
+    public void testEquals2() {
+        Pkfields pkfields1 = new Pkfields();
+        Pkfields pkfields2 = new Pkfields();
+        assertTrue(pkfields1.equals(pkfields2));
+    }
+    
+    public void testEquals3() {
+        Pkfields pkfields1 = new Pkfields();
+        pkfields1.setId1(2);
+        
+        Pkfields pkfields2 = new Pkfields();
+        pkfields2.setId1(2);
+        
+        assertTrue(pkfields1.equals(pkfields2));
+    }
+    
+    public void testEquals4() {
+        Pkfields pkfields1 = new Pkfields();
+        pkfields1.setId1(2);
+        
+        Pkfields pkfields2 = new Pkfields();
+        pkfields2.setId1(3);
+        
+        assertFalse(pkfields1.equals(pkfields2));
+    }
+
+    public void testEquals5() {
+        AwfulTable awfulTable1 = new AwfulTable();
+        awfulTable1.setActive(false);
+        awfulTable1.setCustomerId(3);
+        awfulTable1.seteMail("f...@fred.com");
+        awfulTable1.setEmailaddress("f...@fred.com");
+        awfulTable1.setFirstFirstName("Fred");
+        awfulTable1.setFourthFirstName("Betty");
+        awfulTable1.setFrom("from");
+        awfulTable1.setId1(22);
+        awfulTable1.setId2(33);
+        awfulTable1.setId5(55);
+        awfulTable1.setId6(66);
+        awfulTable1.setId7(77);
+        awfulTable1.setLastName("Rubble");
+        awfulTable1.setSecondCustomerId(532);
+        awfulTable1.setSecondFirstName("Bamm Bamm");
+        awfulTable1.setThirdFirstName("Pebbles");
+
+        AwfulTable awfulTable2 = new AwfulTable();
+        awfulTable2.setActive(false);
+        awfulTable2.setCustomerId(3);
+        awfulTable2.seteMail("f...@fred.com");
+        awfulTable2.setEmailaddress("f...@fred.com");
+        awfulTable2.setFirstFirstName("Fred");
+        awfulTable2.setFourthFirstName("Betty");
+        awfulTable2.setFrom("from");
+        awfulTable2.setId1(22);
+        awfulTable2.setId2(33);
+        awfulTable2.setId5(55);
+        awfulTable2.setId6(66);
+        awfulTable2.setId7(77);
+        awfulTable2.setLastName("Rubble");
+        awfulTable2.setSecondCustomerId(532);
+        awfulTable2.setSecondFirstName("Bamm Bamm");
+        awfulTable2.setThirdFirstName("Pebbles");
+        
+        assertTrue(awfulTable1.equals(awfulTable2));
+        
+        awfulTable2.setActive(true);
+        assertFalse(awfulTable1.equals(awfulTable2));
+    }
+
+    public void testHashCode1() {
+        Pkfields pkfields1 = new Pkfields();
+        Pkfields pkfields2 = new Pkfields();
+        assertTrue(pkfields1.hashCode() == pkfields2.hashCode());
+    }
+    
+    public void testHashCode2() {
+        Pkfields pkfields1 = new Pkfields();
+        pkfields1.setId1(2);
+        
+        Pkfields pkfields2 = new Pkfields();
+        pkfields2.setId1(2);
+        
+        assertTrue(pkfields1.hashCode() == pkfields2.hashCode());
+    }
+
+    public void testHashCode3() {
+        AwfulTable awfulTable1 = new AwfulTable();
+        awfulTable1.setActive(false);
+        awfulTable1.setCustomerId(3);
+        awfulTable1.seteMail("f...@fred.com");
+        awfulTable1.setEmailaddress("f...@fred.com");
+        awfulTable1.setFirstFirstName("Fred");
+        awfulTable1.setFourthFirstName("Betty");
+        awfulTable1.setFrom("from");
+        awfulTable1.setId1(22);
+        awfulTable1.setId2(33);
+        awfulTable1.setId5(55);
+        awfulTable1.setId6(66);
+        awfulTable1.setId7(77);
+        awfulTable1.setLastName("Rubble");
+        awfulTable1.setSecondCustomerId(532);
+        awfulTable1.setSecondFirstName("Bamm Bamm");
+        awfulTable1.setThirdFirstName("Pebbles");
+
+        AwfulTable awfulTable2 = new AwfulTable();
+        awfulTable2.setActive(false);
+        awfulTable2.setCustomerId(3);
+        awfulTable2.seteMail("f...@fred.com");
+        awfulTable2.setEmailaddress("f...@fred.com");
+        awfulTable2.setFirstFirstName("Fred");
+        awfulTable2.setFourthFirstName("Betty");
+        awfulTable2.setFrom("from");
+        awfulTable2.setId1(22);
+        awfulTable2.setId2(33);
+        awfulTable2.setId5(55);
+        awfulTable2.setId6(66);
+        awfulTable2.setId7(77);
+        awfulTable2.setLastName("Rubble");
+        awfulTable2.setSecondCustomerId(532);
+        awfulTable2.setSecondFirstName("Bamm Bamm");
+        awfulTable2.setThirdFirstName("Pebbles");
+        
+        assertTrue(awfulTable1.hashCode() == awfulTable2.hashCode());
+    }
 }


Reply via email to