diff --git a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java index 02538119..43cf4f5c 100644 --- a/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java +++ b/jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java @@ -18,6 +18,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.BiFunction; import java.util.stream.Collectors; @@ -403,20 +404,25 @@ private static List getRootTypes(PackageParams query, IProgressMoni } // when .java files and other .properties files are mixed up rootTypeNodes.addAll( - Arrays.stream(nonJavaResources).filter(resource -> resource instanceof IFile || resource instanceof JarEntryFile).map(resource -> { + Arrays.stream(nonJavaResources).map(resource -> { if (resource instanceof IFile) { IFile file = (IFile) resource; PackageNode item = new PackageNode(file.getName(), file.getFullPath().toPortableString(), NodeKind.FILE); item.setUri(JDTUtils.getFileURI(file)); return item; - } else { + } else if (resource instanceof IFolder) { + IFolder folder = (IFolder) resource; + PackageNode item = new PackageNode(folder.getName(), folder.getFullPath().toPortableString(), NodeKind.FOLDER); + item.setUri(JDTUtils.getFileURI(folder)); + return item; + } else if (resource instanceof JarEntryFile) { JarEntryFile file = (JarEntryFile) resource; PackageNode entry = new PackageNode(file.getName(), file.getFullPath().toPortableString(), NodeKind.FILE); entry.setUri(ExtUtils.toUri((JarEntryFile) resource)); return entry; } - - }).collect(Collectors.toList())); + return null; + }).filter(Objects::nonNull).collect(Collectors.toList())); return rootTypeNodes; } } catch (CoreException e) { diff --git a/src/views/hierarchicalPackageNode.ts b/src/views/hierarchicalPackageNode.ts index 3364f7ff..43db37ed 100644 --- a/src/views/hierarchicalPackageNode.ts +++ b/src/views/hierarchicalPackageNode.ts @@ -9,6 +9,7 @@ import { explorerLock } from "../utils/Lock"; import { DataNode } from "./dataNode"; import { ExplorerNode } from "./explorerNode"; import { FileNode } from "./fileNode"; +import { FolderNode } from "./folderNode"; import { PackageNode } from "./packageNode"; import { PrimaryTypeNode } from "./PrimaryTypeNode"; import { ProjectNode } from "./projectNode"; @@ -75,6 +76,8 @@ export class HierarchicalPackageNode extends PackageNode { if (nodeData.metaData && nodeData.metaData[PrimaryTypeNode.K_TYPE_KIND]) { result.push(new PrimaryTypeNode(nodeData, this, this._rootNode)); } + } else if (nodeData.kind === NodeKind.Folder) { + result.push(new FolderNode(nodeData, this, this._project, this._rootNode)); } }); } diff --git a/src/views/packageNode.ts b/src/views/packageNode.ts index da05fbb8..8b4bedc2 100644 --- a/src/views/packageNode.ts +++ b/src/views/packageNode.ts @@ -10,10 +10,12 @@ import { isTest } from "../utility"; import { DataNode } from "./dataNode"; import { ExplorerNode } from "./explorerNode"; import { FileNode } from "./fileNode"; +import { FolderNode } from "./folderNode"; import { PrimaryTypeNode } from "./PrimaryTypeNode"; +import { ProjectNode } from "./projectNode"; export class PackageNode extends DataNode { - constructor(nodeData: INodeData, parent: DataNode, protected _project: DataNode, protected _rootNode: DataNode) { + constructor(nodeData: INodeData, parent: DataNode, protected _project: ProjectNode, protected _rootNode: DataNode) { super(nodeData, parent); } @@ -37,6 +39,8 @@ export class PackageNode extends DataNode { if (nodeData.metaData && nodeData.metaData[PrimaryTypeNode.K_TYPE_KIND]) { result.push(new PrimaryTypeNode(nodeData, this, this._rootNode)); } + } else if (nodeData.kind === NodeKind.Folder) { + result.push(new FolderNode(nodeData, this, this._project, this._rootNode)); } }); }