in jdtls.ext/com.microsoft.jdtls.ext.core/src/com/microsoft/jdtls/ext/core/PackageCommand.java [428:465]
private static List<PackageNode> getFolderChildren(PackageParams query, IProgressMonitor pm) {
try {
IPackageFragmentRoot packageRoot = (IPackageFragmentRoot) JavaCore.create(query.getHandlerIdentifier());
if (packageRoot == null) {
throw new CoreException(
new Status(IStatus.ERROR, JdtlsExtActivator.PLUGIN_ID, String.format("No package root found for %s", query.getPath())));
}
if (packageRoot.getKind() == IPackageFragmentRoot.K_BINARY) {
Object[] resources = packageRoot.getNonJavaResources();
for (Object resource : resources) {
if (pm.isCanceled()) {
throw new OperationCanceledException();
}
if (resource instanceof JarEntryDirectory) {
JarEntryDirectory directory = (JarEntryDirectory) resource;
Object[] children = findJarDirectoryChildren(directory, query.getPath());
if (children != null) {
return convertToPackageNode(children, null, pm);
}
}
}
} else {
IJavaProject javaProject = packageRoot.getJavaProject();
IFolder folder = javaProject.getProject().getFolder(new Path(query.getPath()).makeRelativeTo(javaProject.getProject().getFullPath()));
if (folder != null && folder.exists()) {
Object[] children = JavaCore.create(folder) != null ? Arrays.stream(folder.members()).filter(t -> t instanceof IFile).toArray()
: folder.members();
if (children != null) {
return convertToPackageNode(children, null, pm);
}
}
}
} catch (CoreException e) {
JdtlsExtActivator.logException("Problem load project classfile list ", e);
}
return Collections.emptyList();
}