package jdiff; import java.io.*; import java.util.*; /** * Class to represent a class, analogous to ClassDoc in the * Javadoc doclet API. * * The method used for Collection comparison (compareTo) must make its * comparison based upon everything that is known about this class. * * See the file LICENSE.txt for copyright details. * @author Matthew Doar, mdoar@pobox.com */ class ClassAPI implements Comparable { /** Name of the class, not fully qualified. */ public String name_; /** Set if this class is an interface. */ public boolean isInterface_; /** Set if this class is abstract. */ boolean isAbstract_ = false; /** Modifiers for this class. */ public Modifiers modifiers_; /** Name of the parent class, or null if there is no parent. */ public String extends_; // Can only extend zero or one class or interface /** Interfaces implemented by this class. */ public List implements_; // String[] /** Constructors in this class. */ public List ctors_; // ConstructorAPI[] /** Methods in this class. */ public List methods_; // MethodAPI[] /** Fields in this class. */ public List fields_; //FieldAPI[] /** The doc block, default is null. */ public String doc_ = null; /** Constructor. */ public ClassAPI(String name, String parent, boolean isInterface, boolean isAbstract, Modifiers modifiers) { name_ = name; extends_ = parent; isInterface_ = isInterface; isAbstract_ = isAbstract; modifiers_ = modifiers; implements_ = new ArrayList(); // String[] ctors_ = new ArrayList(); // ConstructorAPI[] methods_ = new ArrayList(); // MethodAPI[] fields_ = new ArrayList(); // FieldAPI[] } /** Compare two ClassAPI objects by all the known information. */ public int compareTo(Object o) { ClassAPI oClassAPI = (ClassAPI)o; int comp = name_.compareTo(oClassAPI.name_); if (comp != 0) return comp; if (isInterface_ != oClassAPI.isInterface_) return -1; if (isAbstract_ != oClassAPI.isAbstract_) return -1; comp = modifiers_.compareTo(oClassAPI.modifiers_); if (comp != 0) return comp; if (APIComparator.docChanged(doc_, oClassAPI.doc_)) return -1; return 0; } /** * Tests two methods for equality using just the class name, * used by indexOf(). */ public boolean equals(Object o) { if (name_.compareTo(((ClassAPI)o).name_) == 0) return true; return false; } }