[
https://issues.apache.org/jira/browse/SLING-2993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13733206#comment-13733206
]
Felix Meschberger commented on SLING-2993:
------------------------------------------
Additional discussion in http://sling.markmail.org/thread/sltk7xwacfm3dhaw.
The consensus is that it seems to resonate with exception for the final
keyword: For one thing it breaks compatibility because potential existing
extensions of the classes might fail to load. The other thing it prevents
sensible extension (which is not a problem here since it would be for constant
and utility (static) method classes only).
I will modify the patch to not introduce the final keyword but add JavaDoc that
the respective classes are not intended to be subclassed.
> Properly tag and annotate interfaces and classes
> ------------------------------------------------
>
> Key: SLING-2993
> URL: https://issues.apache.org/jira/browse/SLING-2993
> Project: Sling
> Issue Type: Task
> Components: API
> Affects Versions: API 2.4.2
> Reporter: Felix Meschberger
> Attachments: SLING-2993.patch
>
>
> 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira