Author: bayard
Date: Tue Nov 14 20:14:42 2006
New Revision: 475113
URL: http://svn.apache.org/viewvc?view=rev&rev=475113
Log:
Applying max/min for Comparables as supplied by David Karlsen in LANG-291
Modified:
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/ObjectUtils.java
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/ObjectUtilsTest.java
Modified:
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/ObjectUtils.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/ObjectUtils.java?view=diff&rev=475113&r1=475112&r2=475113
==============================================================================
---
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/ObjectUtils.java
(original)
+++
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/ObjectUtils.java
Tue Nov 14 20:14:42 2006
@@ -31,6 +31,7 @@
* @author Stephen Colebourne
* @author Gary Gregory
* @author Mario Winterer
+ * @author <a href="mailto:[EMAIL PROTECTED]">David J. M. Karlsen</a>
* @since 1.0
* @version $Id$
*/
@@ -276,5 +277,52 @@
return ObjectUtils.NULL;
}
}
+
+
+ /**
+ * Null safe comparison of Comparables.
+ *
+ * @param c1
+ * @param c2
+ * @return
+ * <ul>
+ * <li>If both objects are non-null and unequal, the lesser object.
+ * <li>If both objects are non-null and equal, c1.
+ * <li>If one of the comparables is null, the non-null object.
+ * <li>If both the comparables are null, null is returned.
+ * </ul>
+ */
+ public static Object min( Comparable c1, Comparable c2 ) {
+ if ( c1 != null && c2 != null ) {
+ return c1.compareTo( c2 ) < 1 ? c1 : c2;
+ }
+ else {
+ return c1 != null ? c1 : c2;
+ }
+ }
+
+ /**
+ * Null safe comparison of Comparables.
+ *
+ * @param c1
+ * @param c2
+ * @return
+ * <ul>
+ * <li>If both objects are non-null and unequal, the greater object.
+ * <li>If both objects are non-null and equal, c1.
+ * <li>If one of the comparables is null, the non-null object.
+ * <li>If both the comparables are null, null is returned.
+ * </ul>
+ */
+ public static Object max( Comparable c1, Comparable c2 ) {
+ if ( c1 != null && c2 != null ) {
+ return c1.compareTo( c2 ) >= 0 ? c1 : c2;
+ }
+ else {
+ return c1 != null ? c1 : c2;
+ }
+ }
+
+
}
Modified:
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/ObjectUtilsTest.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/ObjectUtilsTest.java?view=diff&rev=475113&r1=475112&r2=475113
==============================================================================
---
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/ObjectUtilsTest.java
(original)
+++
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/ObjectUtilsTest.java
Tue Nov 14 20:14:42 2006
@@ -18,6 +18,8 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
+import java.util.Calendar;
+import java.util.Date;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -175,5 +177,40 @@
assertTrue(ObjectUtils.NULL instanceof ObjectUtils.Null);
assertSame(ObjectUtils.NULL,
SerializationUtils.clone(ObjectUtils.NULL));
}
-
+
+
+
+ public void testMax() {
+ Calendar calendar = Calendar.getInstance();
+ Comparable nonNullComparable1 = calendar.getTime();
+ Comparable nonNullComparable2 = calendar.getTime();
+
+ calendar.set( Calendar.YEAR, calendar.get( Calendar.YEAR ) -1 );
+ Comparable minComparable = calendar.getTime();
+
+ assertNotSame( nonNullComparable1, nonNullComparable2 );
+
+ assertSame( nonNullComparable1, ObjectUtils.max( null,
nonNullComparable1 ) );
+ assertSame( nonNullComparable1, ObjectUtils.max( nonNullComparable1,
null ) );
+ assertSame( nonNullComparable1, ObjectUtils.max( nonNullComparable1,
nonNullComparable2 ) );
+ assertSame( nonNullComparable1, ObjectUtils.max( nonNullComparable1,
minComparable ) );
+ assertSame( nonNullComparable1, ObjectUtils.max( minComparable,
nonNullComparable1 ) );
+ }
+
+ public void testMin() {
+ Calendar calendar = Calendar.getInstance();
+ Comparable nonNullComparable1 = calendar.getTime();
+ Comparable nonNullComparable2 = calendar.getTime();
+
+ calendar.set( Calendar.YEAR, calendar.get( Calendar.YEAR ) -1 );
+ Comparable minComparable = calendar.getTime();
+
+ assertNotSame( nonNullComparable1, nonNullComparable2 );
+
+ assertSame( nonNullComparable1, ObjectUtils.min( null,
nonNullComparable1 ) );
+ assertSame( nonNullComparable1, ObjectUtils.min( nonNullComparable1,
null ) );
+ assertSame( nonNullComparable1, ObjectUtils.min( nonNullComparable1,
nonNullComparable2 ) );
+ assertSame( minComparable, ObjectUtils.min( nonNullComparable1,
minComparable ) );
+ assertSame( minComparable, ObjectUtils.min( minComparable,
nonNullComparable1 ) );
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]