© 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
Copyright (C) 1996-2004, International Business Machines Corporation and
others. All Rights Reserved.

-------------------------------------------
Using the GatherAPIData and ReportAPI tools
-------------------------------------------

These two tools are used together to generate reports about changes in
supported API between versions of ICU4J.


GatherAPIData 

GatherAPIData uses javadoc to process the ICU4J source files and
generate a file listing information about the public API, including
the ICU4J status (draft, stable, deprecated, obsolete).  It excludes
private API, API marked @internal.  The file is written as text, so it
is human-readable, but it is a bit verbose.  To save space, the file
can be zip'd or gzip'd (using flags passed to the tool), which will
reduce the size by about a factor of 10.

GatherAPIData requires javadoc and is currently based on sun jdk
1.4.2.  JavaDoc is internal (I believe) so you need a reference jvm
from Sun to compile the tool, but it can be run against any 1.4 JDK
(at least, those from Sun).  Instructions in the source file show how
it can be invoked.

GatherAPIData should be passed all the packages that need reporting.
Currently, public api is only in the lang, math, text, and util
subpackages of com.ibm.icu.


ReportAPI 

ReportAPI takes two api files generated by GatherAPIData and reports
on removals, changes, and additions to the API.  It does this by
comparing the API information in the two API files.  When new classes
are added, only the class is listed, not its entire API, and similarly
when a class is deleted.  When APIs with the same name and signature
are changed (visibility, status, inheritance) these changes are listed
by showing the old and new versions of the API.

ReportAPI is not particularly smart, and in particular, does not know
about inherited API.  So for example, moving public API from a class
to a base class is reported as a deletion of API from the original
class, even though the effective API on the original class is
unchanged by this.

ReportAPI also does not know about Java class files, so for example it
cannot be used to compare com.ibm.icu.lang.UCharacter against
java.lang.Character.  This might be provided in a later release.

For these reasons, in general it is best to compare two successive
versions of ICU4J against each other, rather than radically different
versions.  A large number of changes can show up, many of which might
fall into these 'innocuous' categories.

ReportAPI can generate either plain text or html reports.  Since it
only requires the data files and does not rely on JavaDoc, it is more
straightforward to invoke.

ReportAPI uses the file extension to determine how to uncompress the
api data files.  It expects '.zip' for files that have been compressed
using zip, and '.gz' for files that have been compressed using gzip.
The GatherAPIData utility automatically appends these extensions when
compression is used.

API Data Files

API Data files for ICU4J 2.8 and 3.0 are in this directory.  The
intent is to store data files for each release version of ICU4J, to
facilitate comparison using the ReportAPI tool.  Of course, they can
always be regenerated using the GenerateAPI and the sources of a
particular ICU4J release.

The format of the API data file is straightforward.  The first line of
the file is the header, successive lines are the api information.
Each line consists of a number of tokens, each followed by a
semi-colon (incuding the last token on the line).

The header line contains the version number, the 'name' of the version
of ICU4J represented by the file, and a 'base directory' field
(currently not fully implemented).

The following lines contain data generated by the APIInfo class, one
line per class or method.  The tokens are status, visibility, static,
final, synchronized, abstract, type, package, containing class, name,
and 'signature' (which varies by the type of object).  For classes,
the 'signature' is the immediate inheritance of the class.  For
fields, the 'signature' is the type of the field.  For methods, the
'signature' is the function signature. All fields are always present.

For more information, please see APIInfo.java.

-------
