Sun Microsystems 2 Tablet Accessory User Manual


 
12 Signature Test Tool 2.0 User’s Guide April 2008
The Merge operation is commutative, so with API A and B, A + B = B + A.
It recognizes either binary or source compatibility when merging APIs.
For any application X that is compatible with either API A or B, when A and B are
merged then X must be compatible with the resulting API C.
The resulting API C cannot contain a class that is not found in either of the A or
B input APIs. This means that any class in C has to have corresponding classes in
either A or B or both A and B.
API C must not contain a class member that is not found in its corresponding
classes in A and B. This applies only to declared class members and not inherited
members.
If some class in A or B, or both, has a member that overrides a member from a
superclass, then the corresponding class in C must also have this overriding
member.
Each API element in C has a set of attributes derived from the attributes of its
corresponding elements in A and B, and this is the smallest possible set of
attributes that does not break compatibility. So if attr is an attribute of an
element from API C, then attr must be defined for the corresponding element
from A or B, and attr can not be omitted without breaking compatibility
between A and C or between B and C.
No unnecessary APIs or relationships between classes or interfaces can be
introduced.
The basic algorithmic rules for combining two input APIs A and B into a signature
file that represents the resulting API C are as follows:
If one of the input APIs A or B contains an element that the other does not, then
this element goes into the resulting signature file of API C without modification
except for the following case: If the element in question is the first declared class
member in the inheritance chain of input API A or B, and the other input API
inherits the same element, then this element represented the resulting API C.
If both of the input APIs contain two identical elements, only one of them is
represented in the resulting API.
If both of the input APIs contain a corresponding element, but with a different set
of attributes, then either of the following occurs:
A conflict wherein the resulting API can not exist.
A compromise wherein the new element with a composite set of attributes is
created and it is represented in the resulting API-set.
Element Handling by Merge
General rules for handling elements of all kinds during the Merge process are as
follows.