From cf6794ebe93906c406a54acc5c8854dc600a9a7f Mon Sep 17 00:00:00 2001 From: Junping Du Date: Tue, 1 Aug 2017 17:13:02 -0700 Subject: [PATCH] HADOOP-14683. FileStatus.compareTo binary compatible issue. Contributed by Akira Ajisaka. --- .../java/org/apache/hadoop/fs/FileStatus.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileStatus.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileStatus.java index f5111ef6f0a..7ce636371c5 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileStatus.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileStatus.java @@ -34,7 +34,7 @@ import org.apache.hadoop.io.Writable; */ @InterfaceAudience.Public @InterfaceStability.Stable -public class FileStatus implements Writable, Comparable, +public class FileStatus implements Writable, Comparable, Serializable, ObjectInputValidation { private static final long serialVersionUID = 0x13caeae8; @@ -352,11 +352,25 @@ public class FileStatus implements Writable, Comparable, * @return a negative integer, zero, or a positive integer as this object * is less than, equal to, or greater than the specified object. */ - @Override public int compareTo(FileStatus o) { return this.getPath().compareTo(o.getPath()); } - + + /** + * Compare this FileStatus to another FileStatus. + * This method was added back by HADOOP-14683 to keep binary compatibility. + * + * @param o the FileStatus to be compared. + * @return a negative integer, zero, or a positive integer as this object + * is less than, equal to, or greater than the specified object. + * @throws ClassCastException if the specified object is not FileStatus + */ + @Override + public int compareTo(Object o) { + FileStatus other = (FileStatus) o; + return compareTo(other); + } + /** Compare if this object is equal to another object * @param o the object to be compared. * @return true if two file status has the same path name; false if not.