package org.robolectric.internal.bytecode;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodType;
import org.robolectric.util.ReflectionHelpers;
public class RobolectricInternals {
@SuppressWarnings("UnusedDeclaration")
private static ClassHandler classHandler; // initialized via magic by SdkEnvironment
@SuppressWarnings("UnusedDeclaration")
private static ShadowInvalidator shadowInvalidator;
@SuppressWarnings("UnusedDeclaration")
private static SandboxClassLoader classLoader;
@SuppressWarnings("UnusedDeclaration")
public static void classInitializing(Class clazz) throws Exception {
classHandler.classInitializing(clazz);
}
@SuppressWarnings("UnusedDeclaration")
public static Object initializing(Object instance) throws Exception {
return classHandler.initializing(instance);
}
@SuppressWarnings("UnusedDeclaration")
public static ClassHandler.Plan methodInvoked(String signature, boolean isStatic, Class<?> theClass) {
return classHandler.methodInvoked(signature, isStatic, theClass);
}
public static MethodHandle getShadowCreator(Class<?> caller) {
return classHandler.getShadowCreator(caller);
}
public static MethodHandle findShadowMethod(Class<?> theClass, String name,
MethodType type, boolean isStatic) throws IllegalAccessException {
return classHandler.findShadowMethod(theClass, name, type, isStatic);
}
@SuppressWarnings("UnusedDeclaration")
public static Throwable cleanStackTrace(Throwable exception) {
return classHandler.stripStackTrace(exception);
}
public static Object intercept(String signature, Object instance, Object[] params, Class theClass) throws Throwable {
try {
return classHandler.intercept(signature, instance, params, theClass);
} catch (java.lang.LinkageError e) {
throw new Exception(e);
}
}
public static void performStaticInitialization(Class<?> clazz) {
ReflectionHelpers.callStaticMethod(clazz, ShadowConstants.STATIC_INITIALIZER_METHOD_NAME);
}
public static ShadowInvalidator getShadowInvalidator() {
return shadowInvalidator;
}
public static ClassLoader getClassLoader() {
return classLoader;
}
}