X-Git-Url: http://jaekl.net/gitweb/?a=blobdiff_plain;f=prod%2Fnet%2Fjaekl%2Fcfb%2Futil%2FUtil.java;h=99ef6e846f78b9b082cfbbc7d4e8db7f94e9fae6;hb=a4a577abc3f9b2b1147caafd1cb39fa8c2622cd4;hp=30f4c90c64bc40f63fc9afc7b5d312edd54b8c35;hpb=5bc9bbe3fd54b9fc7aa3b92d2d37e95c41b9645a;p=cfb.git diff --git a/prod/net/jaekl/cfb/util/Util.java b/prod/net/jaekl/cfb/util/Util.java index 30f4c90..99ef6e8 100644 --- a/prod/net/jaekl/cfb/util/Util.java +++ b/prod/net/jaekl/cfb/util/Util.java @@ -4,12 +4,76 @@ package net.jaekl.cfb.util; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.Iterator; +import java.util.List; public class Util { - public static String stringify(Throwable thr) { + // Returns true iff. a and b contain equal items in the same order + public static boolean listsAreEqual(List a, List b) + { + if ((null == a) || (null == b)) { + return (a == b); + } + + if (0 == a.size()) { + return (0 == b.size()); + } + + if (a.size() != b.size()) { + return false; + } + + Iterator iterA = a.iterator(); + Iterator iterB = b.iterator(); + + while (iterA.hasNext()) { + Object elemA = iterA.next(); + Object elemB = iterB.next(); + + if (! objsAreEqual(elemA, elemB)) { + return false; + } + } + + return true; + } + + // Test for equality, while taking care to avoid + // dereferencing a null pointer. + // Note that two null pointers are considered equal. + public static boolean objsAreEqual(Object a, Object b) + { + if ((null == a) || (null == b)) { + return (a == b); + } + + if ((a instanceof Number) && (b instanceof Number)) { + Number aNum = (Number)a; + Number bNum = (Number)b; + + return ( (aNum.longValue() == bNum.longValue()) + || (aNum.doubleValue() == bNum.doubleValue()) ); + } + + return a.equals(b); + } + + // Return 1 if obj is null, or obj.hashCode() otherwise + public static int objHashCode(Object obj) + { + if (null == obj) { + return 1; + } + return obj.hashCode(); + } + + // Convert a Throwable to the string representation + // that is generated by printStackTrace(). + public static String stringify(Throwable thr) + { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); thr.printStackTrace(pw); return sw.toString(); - } + } }