@@ -367,17 +367,20 @@ private static IPackageFragmentRoot getPackageFragmentRootFromQuery(PackageParam
367367 return packageRoot ;
368368 }
369369
370- // jar in Referenced Libraries must be constructed from path
371- IJavaProject javaProject = getJavaProject (query .getProjectUri ());
372- if (javaProject != null ) {
373- try {
374- packageRoot = javaProject .findPackageFragmentRoot (Path .fromPortableString (query .getRootPath ()));
375- } catch (JavaModelException e ) {
376- return null ;
370+ if (query .getProjectUri () != null && query .getRootPath () != null ) {
371+ // jar in Referenced Libraries must be constructed from path
372+ IJavaProject javaProject = getJavaProject (query .getProjectUri ());
373+ if (javaProject != null ) {
374+ try {
375+ return javaProject .findPackageFragmentRoot (Path .fromPortableString (query .getRootPath ()));
376+ } catch (JavaModelException e ) {
377+ JdtlsExtActivator .log (e );
378+ return null ;
379+ }
377380 }
378381 }
379382
380- return packageRoot ;
383+ return null ;
381384 }
382385
383386 private static List <PackageNode > getRootTypes (PackageParams query , IProgressMonitor pm ) {
@@ -421,41 +424,47 @@ public static List<Object> getChildrenForPackage(IPackageFragment packageFragmen
421424 }
422425
423426 private static List <PackageNode > getFolderChildren (PackageParams query , IProgressMonitor pm ) {
427+ List <Object > children = new LinkedList <>();
428+ IJavaProject javaProject = null ;
424429 try {
425430 IPackageFragmentRoot packageRoot = getPackageFragmentRootFromQuery (query );
426- if (packageRoot == null ) {
427- throw new CoreException (
428- new Status (IStatus .ERROR , JdtlsExtActivator .PLUGIN_ID , String .format ("No package root found for %s" , query .getPath ())));
429- }
430- List <Object > children = new LinkedList <>();
431- if (packageRoot .getKind () == IPackageFragmentRoot .K_BINARY ) {
432- Object [] resources = packageRoot .getNonJavaResources ();
433- for (Object resource : resources ) {
434- if (pm .isCanceled ()) {
435- throw new OperationCanceledException ();
436- }
437- if (resource instanceof JarEntryDirectory ) {
438- JarEntryDirectory directory = (JarEntryDirectory ) resource ;
439- Object [] directoryChildren = findJarDirectoryChildren (directory , query .getPath ());
440- if (children != null ) {
441- children .addAll (Arrays .asList (directoryChildren ));
431+ if (packageRoot != null ) {
432+ if (packageRoot .getKind () == IPackageFragmentRoot .K_BINARY ) {
433+ Object [] resources = packageRoot .getNonJavaResources ();
434+ for (Object resource : resources ) {
435+ if (pm .isCanceled ()) {
436+ throw new OperationCanceledException ();
437+ }
438+ if (resource instanceof JarEntryDirectory ) {
439+ JarEntryDirectory directory = (JarEntryDirectory ) resource ;
440+ Object [] directoryChildren = findJarDirectoryChildren (directory , query .getPath ());
441+ if (children != null ) {
442+ children .addAll (Arrays .asList (directoryChildren ));
443+ }
442444 }
443445 }
446+ } else {
447+ javaProject = packageRoot .getJavaProject ();
448+ IFolder folder = ResourcesPlugin .getWorkspace ().getRoot ().getFolder (Path .fromPortableString (query .getPath ()));
449+ if (folder .exists ()) {
450+ boolean isJavaElement = JavaCore .create (folder ) != null ;
451+ children .addAll (Arrays .stream (folder .members ())
452+ .filter (f -> isJavaElement ? f instanceof IFile : true )
453+ .collect (Collectors .toList ())
454+ );
455+ }
444456 }
445457 } else {
446- IJavaProject javaProject = packageRoot .getJavaProject ();
447- IFolder folder = javaProject .getProject ().getFolder (new Path (query .getPath ()).makeRelativeTo (javaProject .getProject ().getFullPath ()));
448- if (folder != null && folder .exists ()) {
449- boolean isJavaElement = JavaCore .create (folder ) != null ;
450- children .addAll (Arrays .stream (folder .members ())
451- .filter (f -> isJavaElement ? f instanceof IFile : true )
452- .collect (Collectors .toList ())
453- );
458+ // general resource folder.
459+ IFolder folder = ResourcesPlugin .getWorkspace ().getRoot ().getFolder (Path .fromPortableString (query .getPath ()));
460+ if (folder .exists ()) {
461+ children .addAll (Arrays .asList (folder .members ()));
462+ javaProject = JavaCore .create (folder .getProject ());
454463 }
455464 }
456465
457466 ResourceSet resourceSet = new ResourceSet (children );
458- ResourceVisitor visitor = new JavaResourceVisitor (packageRoot . getJavaProject () );
467+ ResourceVisitor visitor = new JavaResourceVisitor (javaProject );
459468 resourceSet .accept (visitor );
460469 return visitor .getNodes ();
461470
0 commit comments