196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectpackage jdiff; 296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectimport java.io.*; 496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectimport java.util.*; 596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project/** 796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Class to represent a field, analogous to FieldDoc in the 896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Javadoc doclet API. 996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * 1096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * The method used for Collection comparison (compareTo) must make its 1196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * comparison based upon everything that is known about this field. 1296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * 1396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * See the file LICENSE.txt for copyright details. 1496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * @author Matthew Doar, mdoar@pobox.com 1596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project */ 1696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectclass FieldAPI implements Comparable { 1796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Name of the field. */ 1896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public String name_; 1996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 2096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Type of the field. */ 2196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public String type_; 2296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 2396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** 2496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * The fully qualified name of the class or interface this field is 2596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * inherited from. If this is null, then the field is defined locally 2696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * in this class or interface. 2796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project */ 2896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public String inheritedFrom_ = null; 2996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 3096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Set if this field is transient. */ 3196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public boolean isTransient_ = false; 3296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 3396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Set if this field is volatile. */ 3496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public boolean isVolatile_ = false; 3596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 3696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** If non-null, this is the value of this field. */ 3796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public String value_ = null; 3896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 3996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Modifiers for this class. */ 4096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public Modifiers modifiers_; 4196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 4296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** The doc block, default is null. */ 4396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public String doc_ = null; 4496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 4596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Constructor. */ 4696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public FieldAPI(String name, String type, 4796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project boolean isTransient, boolean isVolatile, 4896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String value, Modifiers modifiers) { 4996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project name_ = name; 5096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project type_ = type; 5196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project isTransient_ = isTransient; 5296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project isVolatile_ = isVolatile; 5396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project value_ = value; 5496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project modifiers_ = modifiers; 5596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 5696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 5796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Copy constructor. */ 5896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public FieldAPI(FieldAPI f) { 5996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project name_ = f.name_; 6096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project type_ = f.type_; 6196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project inheritedFrom_ = f.inheritedFrom_; 6296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project isTransient_ = f.isTransient_; 6396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project isVolatile_ = f.isVolatile_; 6496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project value_ = f.value_; 6596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project modifiers_ = f.modifiers_; // Note: shallow copy 6696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project doc_ = f.doc_; 6796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 6896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 6996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Compare two FieldAPI objects, including name, type and modifiers. */ 7096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public int compareTo(Object o) { 7196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project FieldAPI oFieldAPI = (FieldAPI)o; 7296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project int comp = name_.compareTo(oFieldAPI.name_); 7396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (comp != 0) 7496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return comp; 7596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project comp = type_.compareTo(oFieldAPI.type_); 7696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (comp != 0) 7796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return comp; 7896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (APIComparator.changedInheritance(inheritedFrom_, oFieldAPI.inheritedFrom_) != 0) 7996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return -1; 8096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (isTransient_ != oFieldAPI.isTransient_) { 8196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return -1; 8296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 8396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (isVolatile_ != oFieldAPI.isVolatile_) { 8496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return -1; 8596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 8696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (value_ != null && oFieldAPI.value_ != null) { 8796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project comp = value_.compareTo(oFieldAPI.value_); 8896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (comp != 0) 8996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return comp; 9096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 9196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project comp = modifiers_.compareTo(oFieldAPI.modifiers_); 9296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (comp != 0) 9396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return comp; 9496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (APIComparator.docChanged(doc_, oFieldAPI.doc_)) 9596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return -1; 9696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return 0; 9796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 9896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 9996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** 10096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Tests two fields, using just the field name, used by indexOf(). 10196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project */ 10296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public boolean equals(Object o) { 10396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (name_.compareTo(((FieldAPI)o).name_) == 0) 10496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return true; 10596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project return false; 10696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 10796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project} 108