SigTest Tool Code Structure
This document describes the high-level structure of the SigTest tool source tree.
Table of Contents
Use the Subversion
checkout command to create a working copy of the
javatest/trunk/code directory. For example:
svn checkout https://svn.java.net/svn/sigtest~svn SIGTEST --username java.net_username
Your working copy (in this example, named SIGTEST) has the following structure:
SIGTEST/ build/ This directory contains the Ant build files and build properties. You must change property values in the build.properties file in order to successfully build SigTest tool. For more information, see SigTest Tool Build Instructions. examples/ This directory contains sample code which can be used to run sigtest. The SigTest User Guide describes examples which can be found in this directory. When you build SigTest tool, the README is copied into the build-distribution. legal/ This directory contains the Gnu Public License (2), and copyrights that apply to this open source product. src/ This directory contains all Java programming language source files and various property files that are used to produce the SigTest tool binary. Please review the SigTest Tool Developer's Guide and SigTest Tool Source Code Description for coding guidelines and descriptions of the various packages included in the SigTest tool source.
Build Distribution Structure
The build distribution directory is created by the SigTest tool Ant build, into which it generates the built binary distribution. By default, this directory is named
sigtest-build, and it is created in the same parent directory as the
SIGTEST working copy.
The SigTest tool build distribution has the following structure:
sigtest-<VERSION>-build/ sigtest-<VERSION>.zip This is the bundled build product. release/ This directory contains the finished build product - unbundled. temp/ This directory contains temporary build products, before bundle preparation.
The structure of the release directory is the structure that one sees when unbundling the build product,
README.html document.css examples/ This directory contains sample code which can be used to run sigtest. The SigTest User Guide describes examples which can be found in this directory. javadoc/ A placeholder directory. Contains the output of the Javadoc™ tool when you specify the javadoc Ant target. legal/ Contains the Gnu Public License (2), and Oracle copyrights that apply to this open source product. lib/ Contains the SigTest tool binaries (sigtest.jar and sigtestdev.jar)
Source CodeThe SigTest tool source code is divided into areas based on their responsibility or whether they are general versus or specific.
The following packages are located under these directories:
The package tree:
`-- com `-- sun `-- tdk `-- signaturetest |-- classpath |-- core |-- errors |-- loaders |-- merge |-- model |-- plugin |-- sigfile `-- util
com.sun.tdk.signaturetest Contains top-level classes with functional entry points such as Setup, Test, SetupAndTest and Merge. Also, there are a few base utility classes in this package such as Result and Version. com.sun.tdk.signaturetest.classpath Contains abstract classes for the defined ordered input set of analyzed class files as well as their implementations for JAR file and directory processing. com.sun.tdk.signaturetest.core Contains a number of classes responsible for test and setup logic, represented class relationships and also some core utility classes. For example ClassCorrector, ClassDescriptionLoader, Erasurator, ThrowsNormalizer, MemberCollectionBuilder are classes that contain the main logic. Classes like ClassSet, ClassHierarchy, PackageGroup represent relationships between classes. ClassLog is a core utility class. com.sun.tdk.signaturetest.errors Contains classes for formatting SigTest thrown errors. com.sun.tdk.signaturetest.loaders This package contains concrete implementations of ClassDescriptionLoader such as BinaryClassDescrLoader which reads class information via parsing class files and ReflClassDescrLoader which does the same via the reflection mechanism. com.sun.tdk.signaturetest.merge Contains classes responsible for APIs merging according JSR-68 rules. com.sun.tdk.signaturetest.model These are classes describing the internal object model. ClassDescription, Modifier, SuperInterface and AnnotationItem are typical samples of these classes. com.sun.tdk.signaturetest.plugin Contains the tool's plugin API for custom extensions. com.sun.tdk.signaturetest.sigfile Classes for reading and writing signature files in different formats. com.sun.tdk.signaturetest.util. Different general purpose utility classes like CommandLineParser.