| 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; |
| } |
| |
| } |