org.junit.internal.management.ManagementFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of junit Show documentation
Show all versions of junit Show documentation
JUnit is a unit testing framework for Java, created by Erich Gamma and Kent Beck.
package org.junit.internal.management;
import org.junit.internal.Classes;
import java.lang.reflect.InvocationTargetException;
/**
* Reflective wrapper around {@link java.lang.management.ManagementFactory}
*/
public class ManagementFactory {
private static final class FactoryHolder {
private static final Class MANAGEMENT_FACTORY_CLASS;
static {
Class managementFactoryClass = null;
try {
managementFactoryClass = Classes.getClass("java.lang.management.ManagementFactory");
} catch (ClassNotFoundException e) {
// do nothing, managementFactoryClass will be none on failure
}
MANAGEMENT_FACTORY_CLASS = managementFactoryClass;
}
static Object getBeanObject(String methodName) {
if (MANAGEMENT_FACTORY_CLASS != null) {
try {
return MANAGEMENT_FACTORY_CLASS.getMethod(methodName).invoke(null);
} catch (IllegalAccessException e) {
// fallthrough
} catch (IllegalArgumentException e) {
// fallthrough
} catch (InvocationTargetException e) {
// fallthrough
} catch (NoSuchMethodException e) {
// fallthrough
} catch (SecurityException e) {
// fallthrough
}
}
return null;
}
}
private static final class RuntimeHolder {
private static final RuntimeMXBean RUNTIME_MX_BEAN =
getBean(FactoryHolder.getBeanObject("getRuntimeMXBean"));
private static final RuntimeMXBean getBean(Object runtimeMxBean) {
return runtimeMxBean != null
? new ReflectiveRuntimeMXBean(runtimeMxBean) : new FakeRuntimeMXBean();
}
}
private static final class ThreadHolder {
private static final ThreadMXBean THREAD_MX_BEAN =
getBean(FactoryHolder.getBeanObject("getThreadMXBean"));
private static final ThreadMXBean getBean(Object threadMxBean) {
return threadMxBean != null
? new ReflectiveThreadMXBean(threadMxBean) : new FakeThreadMXBean();
}
}
/**
* @see java.lang.management.ManagementFactory#getRuntimeMXBean()
*/
public static RuntimeMXBean getRuntimeMXBean() {
return RuntimeHolder.RUNTIME_MX_BEAN;
}
/**
* @see java.lang.management.ManagementFactory#getThreadMXBean()
*/
public static ThreadMXBean getThreadMXBean() {
return ThreadHolder.THREAD_MX_BEAN;
}
}