From c3452d64aa54f6473f224aa212939a1181f2dfb3 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 5 May 2014 09:05:36 +0200
Subject: [PATCH] OO-1083: check if the 2 objects are of the same class before
 compare them with the generic compareTo method

---
 .../gui/components/table/DefaultColumnDescriptor.java  | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
index 50cebd9ccb2..6bf90697c90 100644
--- a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
+++ b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
@@ -179,12 +179,14 @@ public class DefaultColumnDescriptor implements ColumnDescriptor {
 		if(a instanceof Date && b instanceof Date) {
 			return compareDateAndTimestamps((Date)a, (Date)b);
 		}
-		if (a instanceof Comparable && b instanceof Comparable) {
+		if (a instanceof Boolean && b instanceof Boolean) {
+			// faster than string compare, boolean are comparable
+			return compareBooleans((Boolean)a, (Boolean)b);
+		}
+		if (a instanceof Comparable && a.getClass().equals(b.getClass())) {
+			//compare the same things
 			return ((Comparable)a).compareTo((Comparable)b);
 		}
-		/*if (a instanceof Boolean && b instanceof Boolean) { // faster than string compare, boolean are comparable
-			return compareBooleans((Boolean)a, (Boolean)b);
-		}*/
 		return a.toString().compareTo(b.toString());
 	}
 	
-- 
GitLab