aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/junit/internal/Classes.java
blob: e8404f685504047b80c767107cecdde4c81f45eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package org.junit.internal;

import static java.lang.Thread.currentThread;

/**
 * Miscellaneous functions dealing with classes.
 */
public class Classes {

    /**
     * Do not instantiate.
     * @deprecated will be private soon.
     */
    @Deprecated
    public Classes() {
    }

    /**
     * Returns Class.forName for {@code className} using the current thread's class loader.
     * If the current thread does not have a class loader, falls back to the class loader for
     * {@link Classes}.
     *
     * @param className Name of the class.
     * @throws ClassNotFoundException
     */
    public static Class<?> getClass(String className) throws ClassNotFoundException {
        return getClass(className, Classes.class);
    }

    /**
     * Returns Class.forName for {@code className} using the current thread's class loader.
     * If the current thread does not have a class loader, falls back to the class loader for the
     * passed-in class.
     *
     * @param className Name of the class.
     * @param callingClass Class that is requesting a the class
     * @throws ClassNotFoundException
     * @since 4.13
     */
    public static Class<?> getClass(String className, Class<?> callingClass) throws ClassNotFoundException {
        ClassLoader classLoader = currentThread().getContextClassLoader();
        return Class.forName(className, true, classLoader == null ? callingClass.getClassLoader() : classLoader);
    }
}