HADOOP-13493. Compatibility Docs should clarify the policy for what takes precedence when a conflict is found (templedf via rkanter)
(cherry picked from commit75a3ab88f5
) (cherry picked from commit2c2ff7da05
)
This commit is contained in:
parent
9de795f12a
commit
7dd435cd81
|
@ -117,13 +117,7 @@ Compatibility types
|
||||||
|
|
||||||
Developers SHOULD annotate all Hadoop interfaces and classes with the
|
Developers SHOULD annotate all Hadoop interfaces and classes with the
|
||||||
@InterfaceAudience and @InterfaceStability annotations to describe the
|
@InterfaceAudience and @InterfaceStability annotations to describe the
|
||||||
intended audience and stability. Annotations may be at the package, class, or
|
intended audience and stability.
|
||||||
member variable or method level. Member variable and method annotations SHALL
|
|
||||||
override class annotations, and class annotations SHALL override package
|
|
||||||
annotations. A package, class, or member variable or method that is not
|
|
||||||
annotated SHALL be interpreted as implicitly
|
|
||||||
[Private](./InterfaceClassification.html#Private) and
|
|
||||||
[Unstable](./InterfaceClassification.html#Unstable).
|
|
||||||
|
|
||||||
* @InterfaceAudience captures the intended audience. Possible values are
|
* @InterfaceAudience captures the intended audience. Possible values are
|
||||||
[Public](./InterfaceClassification.html#Public) (for end users and external
|
[Public](./InterfaceClassification.html#Public) (for end users and external
|
||||||
|
@ -134,6 +128,27 @@ etc.), and [Private](./InterfaceClassification.html#Private)
|
||||||
* @InterfaceStability describes what types of interface changes are permitted. Possible values are [Stable](./InterfaceClassification.html#Stable), [Evolving](./InterfaceClassification.html#Evolving), and [Unstable](./InterfaceClassification.html#Unstable).
|
* @InterfaceStability describes what types of interface changes are permitted. Possible values are [Stable](./InterfaceClassification.html#Stable), [Evolving](./InterfaceClassification.html#Evolving), and [Unstable](./InterfaceClassification.html#Unstable).
|
||||||
* @Deprecated notes that the package, class, or member variable or method could potentially be removed in the future and should not be used.
|
* @Deprecated notes that the package, class, or member variable or method could potentially be removed in the future and should not be used.
|
||||||
|
|
||||||
|
Annotations MAY be applied at the package, class, or method level. If a method
|
||||||
|
has no privacy or stability annotation, it SHALL inherit its intended audience
|
||||||
|
or stability level from the class to which it belongs. If a class has no
|
||||||
|
privacy or stability annotation, it SHALL inherit its intended audience or
|
||||||
|
stability level from the package to which it belongs. If a package has no
|
||||||
|
privacy or stability annotation, it SHALL be assumed to be
|
||||||
|
[Private](./InterfaceClassification.html#Private) and
|
||||||
|
[Unstable](./InterfaceClassification.html#Unstable),
|
||||||
|
respectively.
|
||||||
|
|
||||||
|
In the event that an element's audience or stability annotation conflicts with
|
||||||
|
the corresponding annotation of its parent (whether explicit or inherited), the
|
||||||
|
element's audience or stability (respectively) SHALL be determined by the
|
||||||
|
more restrictive annotation. For example, if a
|
||||||
|
[Private](./InterfaceClassification.html#Private) method is contained
|
||||||
|
in a [Public](./InterfaceClassification.html#Public) class, then the method
|
||||||
|
SHALL be treated as [Private](./InterfaceClassification.html#Private). If a
|
||||||
|
[Public](./InterfaceClassification.html#Public) method is contained in a
|
||||||
|
[Private](./InterfaceClassification.html#Private) class, the method SHALL be
|
||||||
|
treated as [Private](./InterfaceClassification.html#Private).
|
||||||
|
|
||||||
#### Use Cases
|
#### Use Cases
|
||||||
|
|
||||||
* [Public](./InterfaceClassification.html#Public)-[Stable](./InterfaceClassification.html#Stable) API compatibility is required to ensure end-user programs and downstream projects continue to work without modification.
|
* [Public](./InterfaceClassification.html#Public)-[Stable](./InterfaceClassification.html#Stable) API compatibility is required to ensure end-user programs and downstream projects continue to work without modification.
|
||||||
|
|
Loading…
Reference in New Issue