in atomos/src/main/java/org/apache/felix/atomos/impl/base/AtomosBase.java [1637:1681]
void addPackages(Bundle b)
{
AtomosContentBase atomosContent = (AtomosContentBase) getConnectedContent(
b.getLocation());
if (atomosContent instanceof AtomosContentIndexed)
{
BundleRevision r = b.adapt(BundleRevision.class);
r.getDeclaredCapabilities(PackageNamespace.PACKAGE_NAMESPACE).forEach(
(p) -> packageToAtomosContent.putIfAbsent(
(String) p.getAttributes().get(PackageNamespace.PACKAGE_NAMESPACE),
(AtomosContentIndexed) atomosContent));
String privatePackages = b.getHeaders("").get("Private-Package");
if (privatePackages != null)
{
for (String pkgName : privatePackages.split(","))
{
pkgName = pkgName.trim();
packageToAtomosContent.put(pkgName,
(AtomosContentIndexed) atomosContent);
}
}
else
{
// ensure content is open
b.getEntry("does.not.exist");
ConnectContent content = atomosContent.getConnectContent();
try
{
content.getEntries().forEach((s) -> {
if (s.length() > 1 && s.endsWith("/") && s.indexOf('-') < 0)
{
String pkg = s.substring(0, s.length() - 1).replace('/', '.');
packageToAtomosContent.put(pkg,
(AtomosContentIndexed) atomosContent);
}
});
}
catch (IOException e)
{
// ignore
debug("IOException getting entries: %s", e.getMessage());
}
}
}
}