diff options
author | gjoranv <gv@verizonmedia.com> | 2019-07-17 12:24:33 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2019-07-17 12:24:33 +0200 |
commit | aaa3d1dc83084691741e06313b68135a2923ff86 (patch) | |
tree | a5b65a56f7f3b53f01316a07b90afc729fc194f3 /bundle-plugin/src | |
parent | 8844a8dce19e20c6dce434a8675a4646384f1a52 (diff) |
Move method for detecting missing packages to PackageTally
Diffstat (limited to 'bundle-plugin/src')
2 files changed, 15 insertions, 8 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 31e1f80b41d..71796929012 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 @@ -10,6 +10,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; /** * @author Tony Vaagenes @@ -41,6 +42,18 @@ public class PackageTally { } /** + * Returns the set of packages that is referenced from this tally, but not included in the given set of available packages. + * + * @param definedAndExportedPackages Set of available packages (usually all packages defined in the generated bundle's project + all exported packages of dependencies) + * @return The set of missing packages, that may cause problem when the bundle is deployed in an OSGi container runtime. + */ + public Set<String> referencedPackagesMissingFrom(Set<String> definedAndExportedPackages) { + return Sets.difference(referencedPackages(), definedAndExportedPackages).stream() + .filter(pkg -> !pkg.startsWith("java.")) + .collect(Collectors.toSet()); + } + + /** * Represents the classes for two package tallies that are deployed as a single unit. * <p> * ExportPackageAnnotations from this has precedence over the other. 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 9ae732941f7..e32326868d1 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 @@ -156,25 +156,19 @@ public class GenerateOsgiManifestMojo extends AbstractMojo { Set<String> definedAndExportedPackages = Sets.union(includedPackages.definedPackages(), exportedPackagesFromProvidedDeps); - Set<String> missingProjectPackages = missingPackages(projectPackages, definedAndExportedPackages); + Set<String> missingProjectPackages = projectPackages.referencedPackagesMissingFrom(definedAndExportedPackages); if (! missingProjectPackages.isEmpty()) { getLog().warn("Packages unavailable runtime are referenced from project classes " + "(annotations can usually be ignored): " + missingProjectPackages); } - Set<String> missingCompilePackages = missingPackages(compileJarPackages, definedAndExportedPackages); + Set<String> missingCompilePackages = compileJarPackages.referencedPackagesMissingFrom(definedAndExportedPackages); if (! missingCompilePackages.isEmpty()) { getLog().info("Packages unavailable runtime are referenced from compile scoped jars " + "(annotations can usually be ignored): " + missingCompilePackages); } } - private static Set<String> missingPackages(PackageTally projectPackages, Set<String> definedAndExportedPackages) { - return Sets.difference(projectPackages.referencedPackages(), definedAndExportedPackages).stream() - .filter(pkg -> !pkg.startsWith("java.")) - .collect(Collectors.toSet()); - } - private static void warnIfPackagesDefinedOverlapsGlobalPackages(Set<String> internalPackages, List<String> globalPackages) throws MojoExecutionException { Set<String> overlap = Sets.intersection(internalPackages, new HashSet<>(globalPackages)); |