void addPackages()

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());
                }
            }
        }
    }