Hi Felix,
+1 to all of this.

Out of curiosity, would adding the final keyword require a major version
bump? It isn't backwards compatible, but is perhaps an interesting grey
area.

Justin

On Mon, Aug 5, 2013 at 11:04 AM, Felix Meschberger <fmesc...@adobe.com>wrote:

> Hi all
>
> While working on SLING-2944 [1] it occurred to me that we do not currently
> take good care to differentiate between interfaces to be implemented by a
> single bundle (such as SlingHttpServletRequest) and interfaces which may be
> implemented by multiple bundles to extend some functionality (such as
> ResourceProvider).
>
> Also, we have a number of constant, helper, and utility type classes in
> the Sling API, which we should not make available to extensibility.
>
> I have created SLING-2993 [2] and provided a patch to the Sling API such
> that:
>
> * All classes intended for extension remain unchanged
> * All classes not intended for extension are marked final
> * All interfaces intended to be implemented by multiple bundles
> (providers) are marked @ConsumerType
> * All interfaces intended to be implemented by a single bundle are marked
> as @ProviderType
>
> This change also requires to update the Maven Bundle Plugin version in the
> Sling parent POM to 2.4.0.
>
> This change would prevent us from collateral damage such in the context of
> SLING-2944 where the Servlet Resolver, Filesystem Resource Provider, and
> Bundle Resource Provider bundles have to be updated just because the
> ResourceResolverFactory API has been extended.
>
> WDYT ?
>
> Regards
> Felix
>
> [1] https://issues.apache.org/jira/browse/SLING-2944
> [2] https://issues.apache.org/jira/browse/SLING-2993

Reply via email to