Details
-
Task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
JCR API 2.1.0, API 2.4.2
-
None
Description
The interfaces and classes in the Sling API bundle are not currently properly documented as to who is intended to implement or extend these. In the interest of stable extensibility, the types should be marked as follows:
- Exceptions: Nothing to mark. These are concrete classes intended for extension
- Abstract Classes: Annotate with @ConsumerType. These are intended for extension.
- Helper/Util/Constant Classes: Mark final because there is no use extending them.
- Interfaces: For each interface decide whether they are implemented by a single service (e.g. ResourceResovlerFactory) or by multiple service providers (e.g. ResourceProvider).
Technically the @ConsumerType annotation is not required because it is the default. Yet, I think we should mark all non-@ProviderType types with @ConsumerType to clarify the distinction.
Will attach a proposed patch to this issue.