You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by jg...@apache.org on 2009/03/25 16:37:35 UTC
svn commit: r758304 - in /ibatis/trunk/java/tools/ibator/core:
build/version.properties doc/ReleaseNotes.txt htmldoc/whatsNew.html
src/org/apache/ibatis/ibator/plugins/EqualsHashCodePlugin.java
testJava5/ibatortest/execute/flat/java5/FlatJava5Tests.java
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("fred@fred.com");
+ awfulTable1.setEmailaddress("fred@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("fred@fred.com");
+ awfulTable2.setEmailaddress("fred@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("fred@fred.com");
+ awfulTable1.setEmailaddress("fred@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("fred@fred.com");
+ awfulTable2.setEmailaddress("fred@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());
+ }
}