Skip to content

Commit f7dce21

Browse files
committed
More cleanup (add method to generate resource name from binary class name)
1 parent 635aa19 commit f7dce21

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

src/main/java/de/thetaphi/forbiddenapis/AsmUtils.java

+5
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ public static String binaryToInternal(String clazz) {
5454
return clazz.replace('.', '/');
5555
}
5656

57+
/** Converts a binary class name to a "{@code .class}" file resource name. */
58+
public static String getClassResourceName(String clazz) {
59+
return binaryToInternal(clazz).concat(".class");
60+
}
61+
5762
/** Returns true is a string is a glob pattern */
5863
public static boolean isGlob(String s) {
5964
return s.indexOf('*') >= 0 || s.indexOf('?') >= 0;

src/main/java/de/thetaphi/forbiddenapis/Checker.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public Checker(Logger logger, ClassLoader loader, EnumSet<Option> options) {
129129
// fall back to legacy behavior:
130130
if (!isSupportedJDK) {
131131
try {
132-
final URL objectClassURL = loader.getResource("java/lang/Object.class");
132+
final URL objectClassURL = loader.getResource(AsmUtils.getClassResourceName(Object.class.getName()));
133133
if (objectClassURL != null && "jrt".equalsIgnoreCase(objectClassURL.getProtocol())) {
134134
// this is Java 9 with modules!
135135
isSupportedJDK = true;
@@ -191,7 +191,7 @@ private InputStream getBytecodeFromJigsaw(String classname) {
191191
try {
192192
final Class<?> clazz = Class.forName(classname, false, loader);
193193
final Object module = method_Class_getModule.invoke(clazz);
194-
return (InputStream) method_Module_getResourceAsStream.invoke(module, AsmUtils.binaryToInternal(classname).concat(".class"));
194+
return (InputStream) method_Module_getResourceAsStream.invoke(module, AsmUtils.getClassResourceName(classname));
195195
} catch (Exception e) {
196196
return null; // not found
197197
}
@@ -238,7 +238,7 @@ private ClassSignature getClassFromClassLoader(final String clazz) throws ClassN
238238
return c;
239239
} else {
240240
try {
241-
final URL url = loader.getResource(AsmUtils.binaryToInternal(clazz).concat(".class"));
241+
final URL url = loader.getResource(AsmUtils.getClassResourceName(clazz));
242242
if (url != null) {
243243
final URLConnection conn = url.openConnection();
244244
final boolean isRuntimeClass = isRuntimeClass(conn);

src/main/java/de/thetaphi/forbiddenapis/cli/CliMain.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.apache.commons.cli.PosixParser;
4141
import org.codehaus.plexus.util.DirectoryScanner;
4242

43+
import de.thetaphi.forbiddenapis.AsmUtils;
4344
import de.thetaphi.forbiddenapis.Checker;
4445
import de.thetaphi.forbiddenapis.ForbiddenApiException;
4546
import de.thetaphi.forbiddenapis.Logger;
@@ -165,9 +166,10 @@ private void printVersion() {
165166

166167
private void printHelp(Options options) {
167168
final HelpFormatter formatter = new HelpFormatter();
168-
String cmdline = "java " + getClass().getName();
169+
String clazzName = getClass().getName();
170+
String cmdline = "java " + clazzName;
169171
try {
170-
final URLConnection conn = getClass().getResource(getClass().getSimpleName() + ".class").openConnection();
172+
final URLConnection conn = getClass().getClassLoader().getResource(AsmUtils.getClassResourceName(clazzName)).openConnection();
171173
if (conn instanceof JarURLConnection) {
172174
final URL jarUrl = ((JarURLConnection) conn).getJarFileURL();
173175
if ("file".equalsIgnoreCase(jarUrl.getProtocol())) {

0 commit comments

Comments
 (0)