[ 
https://issues.apache.org/jira/browse/OAK-10252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Konrad Windszus updated OAK-10252:
----------------------------------
    Description: 
Currently there is almost no annotation related to Provider or Consumer type 
maintained on the interfaces of 
https://github.com/apache/jackrabbit-oak/tree/trunk/oak-jackrabbit-api.

That leads to a default of almost all interfaces being assumed ConsumerType and 
therefore requiring all backwards-incompatible changes (for implementations) a 
major version increment (which breaks every consuming bundle).

For ProviderType interfaces 
(https://docs.osgi.org/javadoc/osgi.annotation/7.0.0/org/osgi/annotation/versioning/ProviderType.html)

bq. A non-binary-compatible change to a provider type normally requires 
incrementing the major version of the type's package. This change will require 
all providers and all consumers to be updated to handle the change. However, a 
non-binary-compatible change affecting a protected access member only requires 
incrementing the minor version of the type's package. This change will require 
all providers to be updated to handle the change, but consumers will not 
require changes since they only use, and do not extend, the provider type and 
thus could not access protected access members of the provider type.

While for ConsumerType interfaces (the default)
(https://docs.osgi.org/javadoc/osgi.annotation/7.0.0/org/osgi/annotation/versioning/ConsumerType.html)

bq. A non-binary-compatible change to a consumer type or a binary-compatible 
change to a consumer type affecting an abstract method normally requires 
incrementing the major version of the type's package. This change will require 
all providers and all consumers to be updated to handle the change since 
consumers that implement or extend the consumer type and all providers must 
understand the change in the consumer type.

  was:
Currently there is no annotation related to Provider or Consumer type 
maintained on the interfaces of 
https://github.com/apache/jackrabbit-oak/tree/trunk/oak-jackrabbit-api.

That leads to a default of all interfaces being assumed ConsumerType and 
therefore requiring all backwards-incompatible changes a major version 
increment (which breaks every consuming bundle).

For ProviderType interfaces 
(https://docs.osgi.org/javadoc/osgi.annotation/7.0.0/org/osgi/annotation/versioning/ProviderType.html)

bq. A non-binary-compatible change to a provider type normally requires 
incrementing the major version of the type's package. This change will require 
all providers and all consumers to be updated to handle the change. However, a 
non-binary-compatible change affecting a protected access member only requires 
incrementing the minor version of the type's package. This change will require 
all providers to be updated to handle the change, but consumers will not 
require changes since they only use, and do not extend, the provider type and 
thus could not access protected access members of the provider type.

While for ConsumerType interfaces (the default)
(https://docs.osgi.org/javadoc/osgi.annotation/7.0.0/org/osgi/annotation/versioning/ConsumerType.html)

bq. A non-binary-compatible change to a consumer type or a binary-compatible 
change to a consumer type affecting an abstract method normally requires 
incrementing the major version of the type's package. This change will require 
all providers and all consumers to be updated to handle the change since 
consumers that implement or extend the consumer type and all providers must 
understand the change in the consumer type.


> Distinguish in oak-jackrabbit-api between provider and consumer type 
> interfaces
> -------------------------------------------------------------------------------
>
>                 Key: OAK-10252
>                 URL: https://issues.apache.org/jira/browse/OAK-10252
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: jackrabbit-api
>            Reporter: Konrad Windszus
>            Assignee: Konrad Windszus
>            Priority: Major
>
> Currently there is almost no annotation related to Provider or Consumer type 
> maintained on the interfaces of 
> https://github.com/apache/jackrabbit-oak/tree/trunk/oak-jackrabbit-api.
> That leads to a default of almost all interfaces being assumed ConsumerType 
> and therefore requiring all backwards-incompatible changes (for 
> implementations) a major version increment (which breaks every consuming 
> bundle).
> For ProviderType interfaces 
> (https://docs.osgi.org/javadoc/osgi.annotation/7.0.0/org/osgi/annotation/versioning/ProviderType.html)
> bq. A non-binary-compatible change to a provider type normally requires 
> incrementing the major version of the type's package. This change will 
> require all providers and all consumers to be updated to handle the change. 
> However, a non-binary-compatible change affecting a protected access member 
> only requires incrementing the minor version of the type's package. This 
> change will require all providers to be updated to handle the change, but 
> consumers will not require changes since they only use, and do not extend, 
> the provider type and thus could not access protected access members of the 
> provider type.
> While for ConsumerType interfaces (the default)
> (https://docs.osgi.org/javadoc/osgi.annotation/7.0.0/org/osgi/annotation/versioning/ConsumerType.html)
> bq. A non-binary-compatible change to a consumer type or a binary-compatible 
> change to a consumer type affecting an abstract method normally requires 
> incrementing the major version of the type's package. This change will 
> require all providers and all consumers to be updated to handle the change 
> since consumers that implement or extend the consumer type and all providers 
> must understand the change in the consumer type.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to