Perhaps you meant to send this to [email protected]? --
BJ Hargrave Senior Technical Staff Member, IBM OSGi Fellow and CTO of the OSGi Alliance [email protected] office: +1 386 848 1781 mobile: +1 386 848 3788 From: "Guillaume Sauthier (OW2)" <[email protected]> To: OSGi Developer Mail List <[email protected]>, Date: 2012/07/10 09:03 Subject: [osgi-dev] Exported packages are not auto-magically imported Sent by: [email protected] Hi all Recently, I updated my maven-bundle-plugin from 2.1.0 to latest 2.3.7, and I observed a change in the list of imported packages. I have 2 different uses case: 1. Wrapping an existing library (say one of the commons-*) and thus exporting all of its packages 2. Creating a Bundle of our own with an API package and an implementation package, but with both packages exported (no services around here, so it's mostly like a library, but with an API) So the change was that the exported packages were usually automatically imported, and it's no more the case. After digging in Bnd, I found the following issue: https://github.com/bndtools/bnd/issues/6 ... that looks related to that part of bnd: https://github.com/bndtools/bnd/blob/master/biz.aQute.bndlib/src/aQute/lib/osgi/Analyzer.java#L954 The comment is quite instructive and reasonable, but I see a difference in the comment and in the real implementation. The comment say: "there must be a contained package that refers to the exported package for it to make use importing that package" But the implementation do: // private packages = contained - exported. Set<String> privatePackages = new HashSet<String>(contained.keySet()); privatePackages.removeAll(exports.keySet()); The implementation do not take care of "contained" packages but only looks for "private" packages (that is contained - exported). In both of my use cases, as I export everything, contained == exported so I have no private packages and therefore, not a single exported package is also automatically imported. So finally the question, what is the reasonning to restrict to private packages instead of contained packages ? I may agree that for the library wrapping use case, no substitution is not necessarily bad, as if 2 exported packages are equivalent, only the first one will be wired to (except if there is a Require-Bundle for this exact Bundle). But for the other case, I really want my api packages to be also imported, well that's an API ... Thanks --Guillaume_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
