@@ -140,7 +140,9 @@ public static List<PackageNode> resolvePath(List<Object> arguments, IProgressMon
140
140
if (StringUtils .isNotBlank (pkgRootNode .getName ())) {
141
141
result .add (pkgRootNode );
142
142
}
143
- result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
143
+ if (!packageFragment .isDefaultPackage ()) {
144
+ result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
145
+ }
144
146
result .add (PackageNode .createNodeForPrimaryType (typeRoot .findPrimaryType ()));
145
147
} else if (ExtUtils .isJarResourceUri (uri )) {
146
148
IJarEntryResource resource = ExtUtils .getJarEntryResource (uri );
@@ -150,7 +152,9 @@ public static List<PackageNode> resolvePath(List<Object> arguments, IProgressMon
150
152
result .add (PackageNode .createNodeForPackageFragmentRoot (pkgRoot ));
151
153
if (resource .getParent () instanceof IPackageFragment ) {
152
154
IPackageFragment packageFragment = (IPackageFragment ) resource .getParent ();
153
- result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
155
+ if (!packageFragment .isDefaultPackage ()) {
156
+ result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
157
+ }
154
158
} else {
155
159
int currentSize = result .size ();
156
160
// visit back from file to the top folder
@@ -186,7 +190,9 @@ public static List<PackageNode> resolvePath(List<Object> arguments, IProgressMon
186
190
if (StringUtils .isNotBlank (pkgRootNode .getName ())) {
187
191
result .add (pkgRootNode );
188
192
}
189
- result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
193
+ if (!packageFragment .isDefaultPackage ()) {
194
+ result .add (PackageNode .createNodeForPackageFragment (packageFragment ));
195
+ }
190
196
191
197
PackageNode item = new PackageNode (resource .getName (), resource .getFullPath ().toPortableString (), NodeKind .FILE );
192
198
item .setUri (JDTUtils .getFileURI (resource ));
@@ -338,7 +344,7 @@ private static List<PackageNode> getPackages(PackageParams query, IProgressMonit
338
344
new Status (IStatus .ERROR , JdtlsExtActivator .PLUGIN_ID , String .format ("No package root found for %s" , query .getPath ())));
339
345
}
340
346
Object [] result = getPackageFragmentRootContent (packageRoot , pm );
341
- return convertToPackageNode (result , packageRoot );
347
+ return convertToPackageNode (result , packageRoot , pm );
342
348
} catch (CoreException e ) {
343
349
JdtlsExtActivator .logException ("Problem load project package " , e );
344
350
}
@@ -410,7 +416,7 @@ private static List<PackageNode> getFolderChildren(PackageParams query, IProgres
410
416
JarEntryDirectory directory = (JarEntryDirectory ) resource ;
411
417
Object [] children = findJarDirectoryChildren (directory , query .getPath ());
412
418
if (children != null ) {
413
- return convertToPackageNode (children , null );
419
+ return convertToPackageNode (children , null , pm );
414
420
}
415
421
}
416
422
}
@@ -421,7 +427,7 @@ private static List<PackageNode> getFolderChildren(PackageParams query, IProgres
421
427
Object [] children = JavaCore .create (folder ) != null ? Arrays .stream (folder .members ()).filter (t -> t instanceof IFile ).toArray ()
422
428
: folder .members ();
423
429
if (children != null ) {
424
- return convertToPackageNode (children , null );
430
+ return convertToPackageNode (children , null , pm );
425
431
}
426
432
}
427
433
}
@@ -457,18 +463,26 @@ private static Object[] getPackageFragmentRootContent(IPackageFragmentRoot root,
457
463
return result .toArray ();
458
464
}
459
465
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 {
461
467
List <PackageNode > result = new ArrayList <>();
462
468
for (Object root : rootContent ) {
463
469
if (root instanceof IPackageFragment ) {
464
470
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 );
468
477
} 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 );
470
485
}
471
- result .add (entry );
472
486
} else if (root instanceof IClassFile ) {
473
487
IClassFile classFile = (IClassFile ) root ;
474
488
PackageNode entry = new PackageNode (classFile .getElementName (), null , NodeKind .FILE );
0 commit comments