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

Julian Reschke updated OAK-10635:
---------------------------------
    Component/s:     (was: commons)

> BundledTypeRegistry replace guava collection refs with facade
> -------------------------------------------------------------
>
>                 Key: OAK-10635
>                 URL: https://issues.apache.org/jira/browse/OAK-10635
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>    Affects Versions: 1.62.0
>            Reporter: Mark Adamcin
>            Priority: Minor
>
> The oak-shaded-guava bundle exports shaded guava packages with a version that 
> is defined by google to match the version of the upstream artifact. While it 
> is a semantic versioning scheme, it follows the API contract of the entire 
> artifact, and does not distinguish API changes in included packages like 
> .base and .collect at a granular level, which can result in otherwise 
> avoidable OSGi wiring errors when references to guava types leak outside of 
> the greater Oak API boundary, such as when classes are embedded or when guava 
> types are explicitly referenced in signatures outside of oak-shaded-guava.
> oak-commons should endeavor to provide a stable facade API for the simpler 
> parts of the guava library that are referenced at runtime by other oak 
> bundles, such as newHashMap(), ImmutableList.copyOf(), Preconditions.check*, 
> and perhaps Closer. 
> One example I know of that could where I could benefit from this approach 
> almost immediately is a project where I am embedding 
> BundlingConfigInitializer and BundledTypesRegistry from oak-store-document in 
> a customized repository configuration. When BundledTypesRegistry is embedded, 
> it brings with it imports of ImmutableMap, Maps, and Sets from 
> org.apache.jackrabbit.guava.common.collect. With the recent guava upgrade to 
> 33.0.0 in OAK-10605 in 1.61-SNAPSHOT, the custom repository bundle fails to 
> activate because the previous import-package bounds no longer match: 
> {{org.apache.jackrabbit.guava.common.collect;version=[32.1.3,33).}}



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

Reply via email to