@Override public List<SNode> getNodes(String conceptFqName, boolean includeInherited) { // notify 'model nodes read access' myModel.getRootNodes().iterator(); if (!myNodeMap.isEmpty()) { return getNodesImpl(conceptFqName, includeInherited); } synchronized (myNodeMap) { if (myNodeMap.isEmpty()) { ConceptInstanceMap all = build(new ConceptNodeMapBuilder(myModel)); all.trimValues(); // merge may reuse lists, myNodeMap.merge(all); } return getNodesImpl(conceptFqName, includeInherited); } }
private void fillMap(Iterable<? extends SNode> roots) { for (SNode root : roots) { myMap.add(root); fillMap(root.getChildren()); } }