You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Julian Reschke (Jira)" <ji...@apache.org> on 2024/01/31 11:51:00 UTC

[jira] [Updated] (OAK-10635) BundledTypeRegistry's use of shaded Guava problematic when used outside Oak

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

Julian Reschke updated OAK-10635:
---------------------------------
    Summary: BundledTypeRegistry's use of shaded Guava problematic when used outside Oak  (was: BundledTypeRegistry replace guava collection refs with facade)

> BundledTypeRegistry's use of shaded Guava problematic when used outside Oak
> ---------------------------------------------------------------------------
>
>                 Key: OAK-10635
>                 URL: https://issues.apache.org/jira/browse/OAK-10635
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: documentmk
>            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)