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("[email protected]");
+ awfulTable1.setEmailaddress("[email protected]");
+ 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("[email protected]");
+ awfulTable2.setEmailaddress("[email protected]");
+ 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("[email protected]");
+ awfulTable1.setEmailaddress("[email protected]");
+ 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("[email protected]");
+ awfulTable2.setEmailaddress("[email protected]");
+ 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());
+ }
}