All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.caucho.v5.config.Priorities Maven / Gradle / Ivy

There is a newer version: 1.0.1
Show newest version
package com.caucho.v5.config;

/**
 * Static methods for the @Priority annotation.
 */
public class Priorities
{
  public static int compare(Object a, Object b)
  {
    return compare(a.getClass(), b.getClass());
  }
  
  public static int compare(Class a, Class b)
  {
    Priority aPriority = a.getAnnotation(Priority.class);
    Priority bPriority = b.getAnnotation(Priority.class);
    
    if (aPriority != null && bPriority == null) {
      return -1;
    }
    
    if (aPriority == null && bPriority != null) {
      return 1;
    }
    
    if (aPriority == null && bPriority == null) {
      return a.getName().compareTo(b.getName());
    }
    
    int cmp = aPriority.value() - bPriority.value();
    
    if (cmp != 0) {
      return cmp;
    }
    
    return a.getName().compareTo(b.getName());
  }
  
  public static int compareHighFirst(Object a, Object b)
  {
    return compareHighFirst(a.getClass(), b.getClass());
  }
  
  public static int compareHighFirst(Class a, Class b)
  {
    Priority aPriority = a.getAnnotation(Priority.class);
    Priority bPriority = b.getAnnotation(Priority.class);
    
    if (aPriority != null && bPriority == null) {
      return -1;
    }
    
    if (aPriority == null && bPriority != null) {
      return 1;
    }
    
    if (aPriority == null && bPriority == null) {
      return a.getName().compareTo(b.getName());
    }
    
    int cmp = bPriority.value() - aPriority.value();
    
    if (cmp != 0) {
      return cmp;
    }
    
    return a.getName().compareTo(b.getName());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy