in atomos/src/main/java/org/apache/felix/atomos/impl/base/AtomosBase.java [1637:1683]
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) -> {
int sLen = s.length();
int lastSlash = s.lastIndexOf('/');
if (sLen > 1 && s.indexOf('-') < 0 && lastSlash > 0 && lastSlash != sLen - 1)
{
String pkg = s.substring(0, lastSlash).replace('/', '.');
packageToAtomosContent.put(pkg,
(AtomosContentIndexed) atomosContent);
}
});
}
catch (IOException e)
{
// ignore
debug("IOException getting entries: %s", e.getMessage());
}
}
}
}