@@ -140,7 +140,9 @@ public static List<PackageNode> resolvePath(List<Object> arguments, IProgressMon
140140 if (StringUtils .isNotBlank (pkgRootNode .getName ())) {
141141 result .add (pkgRootNode );
142142 }
143- result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
143+ if (!packageFragment .isDefaultPackage ()) {
144+ result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
145+ }
144146 result .add (PackageNode .createNodeForPrimaryType (typeRoot .findPrimaryType ()));
145147 } else if (ExtUtils .isJarResourceUri (uri )) {
146148 IJarEntryResource resource = ExtUtils .getJarEntryResource (uri );
@@ -150,7 +152,9 @@ public static List<PackageNode> resolvePath(List<Object> arguments, IProgressMon
150152 result .add (PackageNode .createNodeForPackageFragmentRoot (pkgRoot ));
151153 if (resource .getParent () instanceof IPackageFragment ) {
152154 IPackageFragment packageFragment = (IPackageFragment ) resource .getParent ();
153- result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
155+ if (!packageFragment .isDefaultPackage ()) {
156+ result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
157+ }
154158 } else {
155159 int currentSize = result .size ();
156160 // visit back from file to the top folder
@@ -186,7 +190,9 @@ public static List<PackageNode> resolvePath(List<Object> arguments, IProgressMon
186190 if (StringUtils .isNotBlank (pkgRootNode .getName ())) {
187191 result .add (pkgRootNode );
188192 }
189- result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
193+ if (!packageFragment .isDefaultPackage ()) {
194+ result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
195+ }
190196
191197 PackageNode item = new PackageNode (resource .getName (), resource .getFullPath ().toPortableString (), NodeKind .FILE );
192198 item .setUri (JDTUtils .getFileURI (resource ));
@@ -338,7 +344,7 @@ private static List<PackageNode> getPackages(PackageParams query, IProgressMonit
338344 new Status (IStatus .ERROR , JdtlsExtActivator .PLUGIN_ID , String .format ("No package root found for %s" , query .getPath ())));
339345 }
340346 Object [] result = getPackageFragmentRootContent (packageRoot , pm );
341- return convertToPackageNode (result , packageRoot );
347+ return convertToPackageNode (result , packageRoot , pm );
342348 } catch (CoreException e ) {
343349 JdtlsExtActivator .logException ("Problem load project package " , e );
344350 }
@@ -410,7 +416,7 @@ private static List<PackageNode> getFolderChildren(PackageParams query, IProgres
410416 JarEntryDirectory directory = (JarEntryDirectory ) resource ;
411417 Object [] children = findJarDirectoryChildren (directory , query .getPath ());
412418 if (children != null ) {
413- return convertToPackageNode (children , null );
419+ return convertToPackageNode (children , null , pm );
414420 }
415421 }
416422 }
@@ -421,7 +427,7 @@ private static List<PackageNode> getFolderChildren(PackageParams query, IProgres
421427 Object [] children = JavaCore .create (folder ) != null ? Arrays .stream (folder .members ()).filter (t -> t instanceof IFile ).toArray ()
422428 : folder .members ();
423429 if (children != null ) {
424- return convertToPackageNode (children , null );
430+ return convertToPackageNode (children , null , pm );
425431 }
426432 }
427433 }
@@ -457,18 +463,26 @@ private static Object[] getPackageFragmentRootContent(IPackageFragmentRoot root,
457463 return result .toArray ();
458464 }
459465
460- private static List <PackageNode > convertToPackageNode (Object [] rootContent , IPackageFragmentRoot packageRoot ) throws JavaModelException {
466+ private static List <PackageNode > convertToPackageNode (Object [] rootContent , IPackageFragmentRoot packageRoot , IProgressMonitor pm ) throws JavaModelException {
461467 List <PackageNode > result = new ArrayList <>();
462468 for (Object root : rootContent ) {
463469 if (root instanceof IPackageFragment ) {
464470 IPackageFragment fragment = (IPackageFragment ) root ;
465- PackageNode entry = PackageNode .createNodeForPackageFragment (fragment );
466- if (fragment .getResource () != null ) {
467- entry .setUri (fragment .getResource ().getLocationURI ().toString ());
471+ if (fragment .isDefaultPackage ()) {
472+ // directly show root types under default package
473+ PackageParams subQuery = new PackageParams (NodeKind .PACKAGE , packageRoot .getJavaProject ().getProject ().getLocationURI ().toString (),
474+ fragment .getPath ().toPortableString (), fragment .getHandleIdentifier ());
475+ List <PackageNode > packageNodes = getRootTypes (subQuery , pm );
476+ result .addAll (packageNodes );
468477 } else {
469- entry .setUri (fragment .getPath ().toFile ().toURI ().toString ());
478+ PackageNode entry = PackageNode .createNodeForPackageFragment (fragment );
479+ if (fragment .getResource () != null ) {
480+ entry .setUri (fragment .getResource ().getLocationURI ().toString ());
481+ } else {
482+ entry .setUri (fragment .getPath ().toFile ().toURI ().toString ());
483+ }
484+ result .add (entry );
470485 }
471- result .add (entry );
472486 } else if (root instanceof IClassFile ) {
473487 IClassFile classFile = (IClassFile ) root ;
474488 PackageNode entry = new PackageNode (classFile .getElementName (), null , NodeKind .FILE );
0 commit comments