rwaldhoff 2003/01/13 14:34:57 Modified: collections/src/java/org/apache/commons/collections/comparators BooleanComparator.java ComparableComparator.java ReverseComparator.java Log: * reduce ComparableComparator.compare to "return ((Comparable)o1).compareTo(o2)" * some javadoc fixes Revision Changes Path 1.4 +3 -3 jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/BooleanComparator.java Index: BooleanComparator.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/BooleanComparator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- BooleanComparator.java 11 Jan 2003 01:07:13 -0000 1.3 +++ BooleanComparator.java 13 Jan 2003 22:34:57 -0000 1.4 @@ -157,7 +157,7 @@ * I sort <code>true</code> values before * <code>false</code> values. In other words, * returns <code>true</code> iff - * {@link #compare(Boolean,Boolean) compare(Boolean.TRUE,Boolean.FALSE)} + * {@link #compare(Boolean,Boolean) compare(Boolean.FALSE,Boolean.TRUE)} * returns a positive value. */ public boolean sortsTrueFirst() { 1.9 +40 -65 jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/ComparableComparator.java Index: ComparableComparator.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/ComparableComparator.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- ComparableComparator.java 10 Jan 2003 20:21:23 -0000 1.8 +++ ComparableComparator.java 13 Jan 2003 22:34:57 -0000 1.9 @@ -1,6 +1,6 @@ -package org.apache.commons.collections.comparators; - -/* ==================================================================== +/* + * $Header$ + * ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2003 The Apache Software Foundation. All rights @@ -55,28 +55,35 @@ * */ +package org.apache.commons.collections.comparators; + import java.io.Serializable; import java.util.Comparator; /** - * A Comparator that compares Comparable objects. - * Throws ClassCastExceptions if the objects are not - * Comparable, or if either is null. - * - * Throws ClassCastException if the compareTo of both - * objects do not provide an inverse result of each other - * as per the Comparable javadoc. This Comparator is useful, for example, + * A {@link Comparator Comparator} that compares + * {@link Comparable Comparable} objects. + * <p /> + * This Comparator is useful, for example, * for enforcing the natural order in custom implementations * of SortedSet and SortedMap. + * <p /> + * Note: In the 2.0 and 2.1 releases of Commons Collections, + * this class would throw a {@link ClassCastException} if + * either of the arguments to {@link #compare compare} + * were <code>null</code>, not {@link Comparable Comparable}, + * or for which {@link Comparable#compareTo compareTo} gave + * inconsistent results. This is no longer the case. See + * {@link #compare} for details. * * @since Commons Collections 2.0 - * @author [EMAIL PROTECTED] * @version $Revision$ $Date$ + * + * @author [EMAIL PROTECTED] + * + * @see java.util.Collections#reverseOrder */ -public class ComparableComparator implements Comparator,Serializable { - - private static final ComparableComparator instance = - new ComparableComparator(); +public class ComparableComparator implements Comparator, Serializable { /** * Return a shared instance of a ComparableComparator. Developers are @@ -88,58 +95,20 @@ return instance; } - private static final long serialVersionUID=-291439688585137865L; - public ComparableComparator() { } + /** + * Compare the two {@link Comparable Comparable} arguments. + * This method is equivalent to: + * <pre>(({@link Comparable Comparable})o1).{@link Comparable#compareTo compareTo}(o2)</pre> + * @throws NullPointerException when <i>o1</i> is <code>null</code>, + * or when <code>((Comparable)o1).compareTo(o2)</code> does + * @throws ClassCastException when <i>o1</i> is not a {@link Comparable Comparable}, + * or when <code>((Comparable)o1).compareTo(o2)</code> does + */ public int compare(Object o1, Object o2) { - if( (o1 == null) || (o2 == null) ) { - throw new ClassCastException( - "There were nulls in the arguments for this method: "+ - "compare("+o1 + ", " + o2 + ")" - ); - } - - if(o1 instanceof Comparable) { - if(o2 instanceof Comparable) { - int result1 = ((Comparable)o1).compareTo(o2); - int result2 = ((Comparable)o2).compareTo(o1); - - // enforce comparable contract - if(result1 == 0 && result2 == 0) { - return 0; - } else - if(result1 < 0 && result2 > 0) { - return result1; - } else - if(result1 > 0 && result2 < 0) { - return result1; - } else { - // results inconsistent - throw new ClassCastException("o1 not comparable to o2"); - } - } else { - // o2 wasn't comparable - throw new ClassCastException( - "The first argument of this method was not a Comparable: " + - o2.getClass().getName() - ); - } - } else - if(o2 instanceof Comparable) { - // o1 wasn't comparable - throw new ClassCastException( - "The second argument of this method was not a Comparable: " + - o1.getClass().getName() - ); - } else { - // neither were comparable - throw new ClassCastException( - "Both arguments of this method were not Comparables: " + - o1.getClass().getName() + " and " + o2.getClass().getName() - ); - } + return ((Comparable)o1).compareTo(o2); } /** @@ -155,8 +124,8 @@ /** * Returns <code>true</code> iff <i>that</i> Object is - * is a {@link Comparator} whose ordering is known to be - * equivalent to mine. + * is a {@link Comparator Comparator} whose ordering is + * known to be equivalent to mine. * <p> * This implementation returns <code>true</code> * iff <code><i>that</i>.{@link Object#getClass getClass()}</code> @@ -169,4 +138,10 @@ return (this == that) || ((null != that) && (that.getClass().equals(this.getClass()))); } + + private static final ComparableComparator instance = + new ComparableComparator(); + + private static final long serialVersionUID=-291439688585137865L; + } 1.12 +12 -10 jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/ReverseComparator.java Index: ReverseComparator.java =================================================================== RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/ReverseComparator.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- ReverseComparator.java 10 Jan 2003 20:21:25 -0000 1.11 +++ ReverseComparator.java 13 Jan 2003 22:34:57 -0000 1.12 @@ -61,7 +61,7 @@ /** * Reverses the order of another comparator by - * reversing the arguments to its {@link #compare} + * reversing the arguments to its {@link #compare compare} * method. * * @since Commons Collections 2.0 @@ -69,29 +69,29 @@ * * @author [EMAIL PROTECTED] * @author <a href="mailto:[EMAIL PROTECTED]">Michael A. Smith</a> + * + * @see java.util.Collections#reverseOrder */ public class ReverseComparator implements Comparator,Serializable { - private Comparator comparator; - /** * Creates a comparator that compares objects based on the inverse of their * natural ordering. Using this Constructor will create a ReverseComparator * that is functionaly identical to the Comparator returned by * java.util.Collections.<b>reverseOrder()</b>. * - * @see java.util.Collections#reverseOrder() + * @see java.util.Collections#reverseOrder */ public ReverseComparator() { this(null); } /** - * Creates a reverse comparator that inverts the comparison - * of the passed in comparator. If you pass in a null, + * Creates a comparator that inverts the comparison + * of the given comparator. If you pass in <code>null</code>, * the ReverseComparator defaults to reversing the * natural order, as per - * java.util.Collections.<b>reverseOrder()</b>. + * {@link java.util.Collections#reverseOrder}</b>. * * @param comparator Comparator to reverse */ @@ -145,5 +145,7 @@ } // use serialVersionUID from Collections 2.0 for interoperability - private static final long serialVersionUID = 2858887242028539265L;; + private static final long serialVersionUID = 2858887242028539265L; + + private Comparator comparator; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>