public Optional findAtomosContent()

in atomos/src/main/java/org/apache/felix/atomos/impl/base/AtomosBase.java [1232:1267]


        public Optional<AtomosContent> findAtomosContent(String symbolicName)
        {
            Map<String, AtomosContent> nameToBundle = this.nameToBundle;
            if (nameToBundle == null)
            {
                nameToBundle = new HashMap<>();
                final Map<String, AtomosContent> populate = nameToBundle;
                getAtomosContents().forEach(
                    (a) -> populate.putIfAbsent(a.getSymbolicName(), a));

                Set<AtomosLayer> visited = new HashSet<>();
                Deque<AtomosLayer> stack = new ArrayDeque<>();
                visited.add(this);
                stack.push(this);

                while (!stack.isEmpty())
                {
                    AtomosLayer layer = stack.pop();
                    layer.getAtomosContents().forEach(
                        (a) -> populate.putIfAbsent(a.getSymbolicName(), a));
                    List<AtomosLayer> parents = layer.getParents();
                    for (int i = parents.size() - 1; i >= 0; i--)
                    {
                        AtomosLayer parent = parents.get(i);
                        if (!visited.contains(parent))
                        {
                            visited.add(parent);
                            stack.push(parent);
                        }
                    }
                }

                this.nameToBundle = populate;
            }
            return Optional.ofNullable(nameToBundle.get(symbolicName));
        }