blob: 151e729790478f6462ae636b59d514771c0a746d [file] [log] [blame]
package jdiff;
import java.io.*;
import java.util.*;
/**
* Class to represent a field, analogous to FieldDoc in the
* Javadoc doclet API.
*
* The method used for Collection comparison (compareTo) must make its
* comparison based upon everything that is known about this field.
*
* See the file LICENSE.txt for copyright details.
* @author Matthew Doar, mdoar@pobox.com
*/
class FieldAPI implements Comparable {
/** Name of the field. */
public String name_;
/** Type of the field. */
public String type_;
/**
* The fully qualified name of the class or interface this field is
* inherited from. If this is null, then the field is defined locally
* in this class or interface.
*/
public String inheritedFrom_ = null;
/** Set if this field is transient. */
public boolean isTransient_ = false;
/** Set if this field is volatile. */
public boolean isVolatile_ = false;
/** If non-null, this is the value of this field. */
public String value_ = null;
/** Modifiers for this class. */
public Modifiers modifiers_;
/** The doc block, default is null. */
public String doc_ = null;
/** Constructor. */
public FieldAPI(String name, String type,
boolean isTransient, boolean isVolatile,
String value, Modifiers modifiers) {
name_ = name;
type_ = type;
isTransient_ = isTransient;
isVolatile_ = isVolatile;
value_ = value;
modifiers_ = modifiers;
}
/** Copy constructor. */
public FieldAPI(FieldAPI f) {
name_ = f.name_;
type_ = f.type_;
inheritedFrom_ = f.inheritedFrom_;
isTransient_ = f.isTransient_;
isVolatile_ = f.isVolatile_;
value_ = f.value_;
modifiers_ = f.modifiers_; // Note: shallow copy
doc_ = f.doc_;
}
/** Compare two FieldAPI objects, including name, type and modifiers. */
public int compareTo(Object o) {
FieldAPI oFieldAPI = (FieldAPI)o;
int comp = name_.compareTo(oFieldAPI.name_);
if (comp != 0)
return comp;
comp = type_.compareTo(oFieldAPI.type_);
if (comp != 0)
return comp;
if (APIComparator.changedInheritance(inheritedFrom_, oFieldAPI.inheritedFrom_) != 0)
return -1;
if (isTransient_ != oFieldAPI.isTransient_) {
return -1;
}
if (isVolatile_ != oFieldAPI.isVolatile_) {
return -1;
}
if (value_ != null && oFieldAPI.value_ != null) {
comp = value_.compareTo(oFieldAPI.value_);
if (comp != 0)
return comp;
}
comp = modifiers_.compareTo(oFieldAPI.modifiers_);
if (comp != 0)
return comp;
if (APIComparator.docChanged(doc_, oFieldAPI.doc_))
return -1;
return 0;
}
/**
* Tests two fields, using just the field name, used by indexOf().
*/
public boolean equals(Object o) {
if (name_.compareTo(((FieldAPI)o).name_) == 0)
return true;
return false;
}
}