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()); + } }