java/code/src/com/redhat/rhn/domain/user/UserFactory.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
New commits:
commit e753297050a29419e4be024e3354e01f72116cce
Author: Silvio Moioli <smoioli(a)suse.de>
Date: Fri Sep 27 09:01:39 2013 +0200
UserFactory: fix time zone ordering
UserFactoryTest.testTimeZoneLookupAll() can fail depending on timezone
ordering as returned by the database, which is not defined. In fact,
UserFactory's custom comparator returns zero when comparing
"America/New_York" to "America/Indianapolis", because they have
the
same raw offset.
This patch compares Olson names when raw offsets are equal, restoring
test determinism.
diff --git a/java/code/src/com/redhat/rhn/domain/user/UserFactory.java
b/java/code/src/com/redhat/rhn/domain/user/UserFactory.java
index 6daaa6f..023b002 100644
--- a/java/code/src/com/redhat/rhn/domain/user/UserFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/user/UserFactory.java
@@ -538,8 +538,14 @@ public class UserFactory extends HibernateFactory {
if (timeZones != null) {
Collections.sort(timeZones, new Comparator() {
public int compare(Object o1, Object o2) {
- int offSet1 = ((RhnTimeZone)o1).getTimeZone().getRawOffset();
- int offSet2 = ((RhnTimeZone)o2).getTimeZone().getRawOffset();
+ RhnTimeZone t1 = (RhnTimeZone) o1;
+ RhnTimeZone t2 = (RhnTimeZone) o2;
+ int offSet1 = t1.getTimeZone().getRawOffset();
+ int offSet2 = t2.getTimeZone().getRawOffset();
+
+ if (offSet2 - offSet1 == 0) {
+ return t2.getOlsonName().compareTo(t1.getOlsonName());
+ }
if (offSet1 <= -18000000 && offSet1 >= -36000000
&&
offSet2 <= -18000000 && offSet2 >=
-36000000) {
Show replies by date