From 5f1b9a5f27353083e44477e635243f632acf1f41 Mon Sep 17 00:00:00 2001 From: gjoranv Date: Thu, 25 May 2023 14:20:41 +0200 Subject: Add special handling for bundles with groupId 'com.yahoo.vespa' - Effective bundle type is INTERNAL, unless set to CORE. Caveat: Setting it explicitly to USER will have no effect. --- .../container/plugin/mojo/GenerateOsgiManifestMojo.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'bundle-plugin/src/main/java/com/yahoo/container') diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java index 818e1510bd6..2781decdf79 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java @@ -39,7 +39,9 @@ import static com.yahoo.container.plugin.util.Files.allDescendantFiles; public class GenerateOsgiManifestMojo extends AbstractGenerateOsgiManifestMojo { private enum BundleType { - CORE, INTERNAL, USER + CORE, // up to container-dev + INTERNAL, // other vespa bundles (need not be set for groupId 'com.yahoo.vespa') + USER } @Parameter @@ -98,7 +100,7 @@ public class GenerateOsgiManifestMojo extends AbstractGenerateOsgiManifestMojo { logMissingPackages(exportedPackagesFromProvidedDeps, projectPackages, compileJarsPackages, includedPackages); } else { getLog().warn(("This project does not have '%s' as provided dependency, so the generated 'Import-Package' " + - "OSGi header may be missing important packages.").formatted(wantedProvidedDependency(bundleType))); + "OSGi header may be missing important packages.").formatted(wantedProvidedDependency())); } logOverlappingPackages(projectPackages, exportedPackagesFromProvidedDeps); logUnnecessaryPackages(compileJarsPackages, exportedPackagesFromProvidedDeps); @@ -117,14 +119,19 @@ public class GenerateOsgiManifestMojo extends AbstractGenerateOsgiManifestMojo { } } - private static String wantedProvidedDependency(BundleType bundleType) { - return switch (bundleType) { + private String wantedProvidedDependency() { + return switch (effectiveBundleType()) { case CORE -> "jdisc_core"; case INTERNAL -> "container-dev"; case USER -> "container"; }; } + private BundleType effectiveBundleType() { + if (bundleType != BundleType.USER) return bundleType; + return project.getGroupId().equals("com.yahoo.vespa") ? BundleType.INTERNAL : BundleType.USER; + } + private void addAdditionalManifestProperties(Map manifestContent, PackageTally includedPackages) { addIfNotEmpty(manifestContent, "X-JDisc-PublicApi-Package", publicApi(includedPackages)); addIfNotEmpty(manifestContent, "Bundle-Activator", bundleActivator); -- cgit v1.2.3