private static List convertToPackageNode()

in jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java [519:572]


    private static List<PackageNode> convertToPackageNode(Object[] rootContent, IPackageFragmentRoot packageRoot,
            IProgressMonitor pm) throws JavaModelException {
        List<PackageNode> result = new ArrayList<>();
        for (Object root : rootContent) {
            if (root instanceof IPackageFragment) {
                IPackageFragment fragment = (IPackageFragment) root;
                if (fragment.isDefaultPackage()) {
                    // directly show root types under default package
                    PackageParams subQuery = new PackageParams(NodeKind.PACKAGE, packageRoot.getJavaProject().getProject().getLocationURI().toString(),
                            fragment.getPath().toPortableString(), fragment.getHandleIdentifier());
                    List<PackageNode> packageNodes = getRootTypes(subQuery, pm);
                    result.addAll(packageNodes);
                } else {
                    PackageNode entry = PackageNode.createNodeForPackageFragment(fragment);
                    if (fragment.getResource() != null) {
                        entry.setUri(fragment.getResource().getLocationURI().toString());
                    } else {
                        entry.setUri(fragment.getPath().toFile().toURI().toString());
                    }
                    result.add(entry);
                }
            } else if (root instanceof IClassFile) {
                IClassFile classFile = (IClassFile) root;
                PackageNode entry = new PackageNode(classFile.getElementName(), null, NodeKind.FILE);
                entry.setUri(JDTUtils.toUri(classFile));
                result.add(entry);
            } else if (root instanceof JarEntryResource) {
                PackageNode jarNode = getJarEntryResource((JarEntryResource) root);
                if (jarNode != null) {
                    result.add(jarNode);
                }
            } else if (root instanceof IFile) {
                IFile file = (IFile) root;
                PackageNode entry = new PackageNode(file.getName(), file.getFullPath().toPortableString(), NodeKind.FILE);
                entry.setUri(JDTUtils.getFileURI(file));
                result.add(entry);
            } else if (root instanceof IFolder) {
                IFolder folder = (IFolder) root;
                String displayName = folder.getName();
                if (packageRoot != null) {
                    // together with package list, we need to provide full folder name relative to
                    // package root
                    IPath path = folder.getFullPath().makeRelativeTo(packageRoot.getPath());
                    displayName = StringUtils.replace(path.toPortableString(), "/", ".");
                }

                PackageNode entry = new PackageNode(displayName, folder.getFullPath().toPortableString(), NodeKind.FOLDER);
                entry.setUri(JDTUtils.getFileURI(folder));
                result.add(entry);
            }
        }

        return result;
    }