Author: britter
Date: Fri Sep 27 07:49:02 2013
New Revision: 1526817
URL: http://svn.apache.org/r1526817
Log:
LANG-804 - Redundant check for zero in HashCodeBuilder ctor. Patch provided by
Allon Mureinik via github.
Modified:
commons/proper/lang/trunk/src/changes/changes.xml
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java
Modified: commons/proper/lang/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1526817&r1=1526816&r2=1526817&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/changes/changes.xml (original)
+++ commons/proper/lang/trunk/src/changes/changes.xml Fri Sep 27 07:49:02 2013
@@ -22,6 +22,7 @@
<body>
<release version="3.2" date="TBA" description="Next release">
+ <action issue="LANG-804" type="update" dev="britter" due-to="Allon
Mureinik">Redundant check for zero in HashCodeBuilder ctor</action>
<action issue="LANG-893" type="add" dev="oheger" due-to="Woonsan
Ko">StrSubstitutor now supports default values for variables</action>
<action issue="LANG-913" type="add" dev="britter" due-to="Allon
Mureinik">Adding .gitignore to commons-lang</action>
<action issue="LANG-837" type="add">Add ObjectUtils.toIdentityString
methods that support StringBuilder, StrBuilder, and Appendable</action>
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java?rev=1526817&r1=1526816&r2=1526817&view=diff
==============================================================================
---
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
(original)
+++
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
Fri Sep 27 07:49:02 2013
@@ -520,7 +520,7 @@ public class HashCodeBuilder implements
/**
* <p>
- * Two randomly chosen, non-zero, odd numbers must be passed in. Ideally
these should be different for each class,
+ * Two randomly chosen, odd numbers must be passed in. Ideally these
should be different for each class,
* however this is not vital.
* </p>
*
@@ -528,28 +528,22 @@ public class HashCodeBuilder implements
* Prime numbers are preferred, especially for the multiplier.
* </p>
*
- * @param initialNonZeroOddNumber
- * a non-zero, odd number used as the initial value
- * @param multiplierNonZeroOddNumber
- * a non-zero, odd number used as the multiplier
+ * @param initialOddNumber
+ * am odd number used as the initial value
+ * @param multiplierOddNumber
+ * an odd number used as the multiplier
* @throws IllegalArgumentException
- * if the number is zero or even
+ * if the number is even
*/
- public HashCodeBuilder(final int initialNonZeroOddNumber, final int
multiplierNonZeroOddNumber) {
- if (initialNonZeroOddNumber == 0) {
- throw new IllegalArgumentException("HashCodeBuilder requires a non
zero initial value");
- }
- if (initialNonZeroOddNumber % 2 == 0) {
+ public HashCodeBuilder(final int initialOddNumber, final int
multiplierOddNumber) {
+ if (initialOddNumber % 2 == 0) {
throw new IllegalArgumentException("HashCodeBuilder requires an
odd initial value");
}
- if (multiplierNonZeroOddNumber == 0) {
- throw new IllegalArgumentException("HashCodeBuilder requires a non
zero multiplier");
- }
- if (multiplierNonZeroOddNumber % 2 == 0) {
+ if (multiplierOddNumber % 2 == 0) {
throw new IllegalArgumentException("HashCodeBuilder requires an
odd multiplier");
}
- iConstant = multiplierNonZeroOddNumber;
- iTotal = initialNonZeroOddNumber;
+ iConstant = multiplierOddNumber;
+ iTotal = initialOddNumber;
}
/**
Modified:
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java?rev=1526817&r1=1526816&r2=1526817&view=diff
==============================================================================
---
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java
(original)
+++
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/builder/HashCodeBuilderTest.java
Fri Sep 27 07:49:02 2013
@@ -55,15 +55,20 @@ public class HashCodeBuilderTest {
// -----------------------------------------------------------------------
@Test(expected=IllegalArgumentException.class)
- public void testConstructorEx1() {
+ public void testConstructorExZero() {
new HashCodeBuilder(0, 0);
}
@Test(expected=IllegalArgumentException.class)
- public void testConstructorEx2() {
+ public void testConstructorExEven() {
new HashCodeBuilder(2, 2);
}
+ @Test(expected=IllegalArgumentException.class)
+ public void testConstructorExEvenNegative() {
+ new HashCodeBuilder(-2, -2);
+ }
+
static class TestObject {
private int a;