package gov.nasa.jpl.mbee.mdk.util; import java.util.Comparator; @Deprecated public class MostAbstractFirst implements Comparator<Class<?>> { public static MostAbstractFirst instance = instance(); public static MostAbstractFirst instance() { if (instance == null) { instance = new MostAbstractFirst(); } return instance; } /** * */ public MostAbstractFirst() { } @Override public int compare(Class<?> o1, Class<?> o2) { if (o1 == o2) { return 0; } if (o1 == null) { return -1; } if (o2 == null) { return 1; } int count1 = 0, count2 = 0; Class<?> p1 = o1, p2 = o2; while (p1 != null) { ++count1; p1 = p1.getSuperclass(); } while (p2 != null) { ++count2; if (count2 > count1) { return -1; } p1 = p1.getSuperclass(); } if (count1 > count2) { return 1; } // tie break with generic comparator return CompareUtils.GenericComparator.instance().compare(o1, o2); } }