Merge pull request #75 from RefuX/master
Export Packages for Automatic Modules
diff --git a/atomos/src/main/java/org/apache/felix/atomos/impl/modules/AtomosModules.java b/atomos/src/main/java/org/apache/felix/atomos/impl/modules/AtomosModules.java
index e6adf68..30d60f5 100644
--- a/atomos/src/main/java/org/apache/felix/atomos/impl/modules/AtomosModules.java
+++ b/atomos/src/main/java/org/apache/felix/atomos/impl/modules/AtomosModules.java
@@ -527,14 +527,28 @@
// only do exports for non bundle modules
// real OSGi bundles already have good export capabilities
StringBuilder exportPackageHeader = new StringBuilder();
- desc.exports().stream().sorted().forEach((exports) -> {
- if (exportPackageHeader.length() > 0)
- {
- exportPackageHeader.append(", ");
- }
- exportPackageHeader.append(exports.source());
- // TODO map targets to x-friends directive?
- });
+
+ // ModuleDescriptor.exports() is empty for an automatic module, which is different from
+ // JPMS at runtime where all packages in the automatic module are exported
+ if (desc.isAutomatic()) {
+ desc.packages().stream().sorted().forEach((packageName) -> {
+ if (exportPackageHeader.length() > 0)
+ {
+ exportPackageHeader.append(", ");
+ }
+ exportPackageHeader.append(packageName);
+ });
+ }
+ else {
+ desc.exports().stream().sorted().forEach((exported) -> {
+ if (exportPackageHeader.length() > 0)
+ {
+ exportPackageHeader.append(", ");
+ }
+ exportPackageHeader.append(exported.source());
+ // TODO map targets to x-friends directive?
+ });
+ }
if (exportPackageHeader.length() > 0)
{
headers.put(Constants.EXPORT_PACKAGE, exportPackageHeader.toString());