diff options
author | gjoranv <gv@yahooinc.com> | 2023-05-24 00:42:21 +0200 |
---|---|---|
committer | gjoranv <gv@yahooinc.com> | 2023-05-24 00:42:21 +0200 |
commit | 6b3cdc3756a0c9169744f206902821d4b44788fc (patch) | |
tree | 798be950cf6505e20dd75fd2651386cff55e54bb /bundle-plugin/src | |
parent | 60339a70a6be71d5bfa1a5848f17fdc4cf903b7d (diff) |
Add X-JDisc-PublicApi-Package header
Diffstat (limited to 'bundle-plugin/src')
-rw-r--r-- | bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java | 7 | ||||
-rw-r--r-- | bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java | 9 |
2 files changed, 14 insertions, 2 deletions
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java index e2d2b96d194..51fba228b41 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/classanalysis/PackageTally.java @@ -42,6 +42,13 @@ public class PackageTally { return ret; } + public Set<String> publicApiPackages() { + return definedPackages.values().stream() + .filter(PackageInfo::isPublicApi) + .map(PackageInfo::name) + .collect(Collectors.toSet()); + } + /** * Returns the set of packages that is referenced from this tally, but not included in the given set of available packages. * 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 f5d3259c537..ac50613bf6f 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 @@ -102,7 +102,7 @@ public class GenerateOsgiManifestMojo extends AbstractGenerateOsgiManifestMojo { Map<String, String> manifestContent = generateManifestContent(artifactSet.getJarArtifactsToInclude(), calculatedImports, includedPackages); - addAdditionalManifestProperties(manifestContent); + addAdditionalManifestProperties(manifestContent, projectPackages); createManifestFile(Paths.get(project.getBuild().getOutputDirectory()), manifestContent); } catch (Exception e) { @@ -110,7 +110,8 @@ public class GenerateOsgiManifestMojo extends AbstractGenerateOsgiManifestMojo { } } - private void addAdditionalManifestProperties(Map<String, String> manifestContent) { + private void addAdditionalManifestProperties(Map<String, String> manifestContent, PackageTally projectPackages) { + addIfNotEmpty(manifestContent, "X-JDisc-PublicApi-Package", publicApi(projectPackages)); addIfNotEmpty(manifestContent, "Bundle-Activator", bundleActivator); addIfNotEmpty(manifestContent, "X-JDisc-Privileged-Activator", jdiscPrivilegedActivator); addIfNotEmpty(manifestContent, "Main-Class", mainClass); @@ -119,6 +120,10 @@ public class GenerateOsgiManifestMojo extends AbstractGenerateOsgiManifestMojo { addIfNotEmpty(manifestContent, "WebInfUrl", webInfUrl); } + private static String publicApi(PackageTally tally) { + return tally.publicApiPackages().stream().sorted().collect(Collectors.joining(",")); + } + private void logDebugPackageSets(List<Export> exportedPackagesFromProvidedJars, PackageTally includedPackages) { if (getLog().isDebugEnabled()) { getLog().debug("Referenced packages = " + includedPackages.referencedPackages()); |