Skip to content

Commit ff547fc

Browse files
committed
FIx class path indexing
1 parent 151ce93 commit ff547fc

12 files changed

Lines changed: 365 additions & 387 deletions

‎.vscode/settings.json‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
"target": true,
1515
"out": true // set this to false to include "out" folder in search results
1616
},
17-
"editor.formatOnSave": false,
17+
"[java]": {
18+
"editor.formatOnSave": false
19+
},
1820
"java.trace.server": "messages"
1921
}

‎src/main/java/org/javacs/ClassPathIndex.java‎

Lines changed: 0 additions & 191 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.javacs;
2+
3+
import java.lang.reflect.*;
4+
import java.util.*;
5+
import java.util.logging.*;
6+
7+
interface ClassSource {
8+
Set<String> classes();
9+
10+
Class<?> load(String className);
11+
12+
static final Logger LOG = Logger.getLogger("main");
13+
static final Set<String> failedToLoad = new HashSet<>();
14+
15+
default boolean isPublic(String className) {
16+
if (failedToLoad.contains(className)) return false;
17+
try {
18+
var c = load(className);
19+
return Modifier.isPublic(c.getModifiers());
20+
} catch (Exception e) {
21+
LOG.warning(String.format("Failed to load %s: %s", className, e.getMessage()));
22+
failedToLoad.add(className);
23+
return false;
24+
}
25+
}
26+
27+
default boolean isAccessibleFromPackage(String className, String fromPackage) {
28+
var packageName = Parser.mostName(className);
29+
return packageName.equals(fromPackage) || isPublic(className);
30+
}
31+
}

0 commit comments

Comments
 (0)