[ 
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

Reply via email to