org.powermock.api.extension.agent.JavaAgentFrameworkRegisterImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of powermock-api-mockito2 Show documentation
Show all versions of powermock-api-mockito2 Show documentation
PowerMock API for Mockito 2.+..
package org.powermock.api.extension.agent;
import org.powermock.api.mockito.internal.mockcreation.MockCreator;
import org.powermock.core.agent.JavaAgentClassRegister;
import org.powermock.core.agent.JavaAgentFrameworkRegister;
import org.powermock.reflect.Whitebox;
/**
* Implementation of JavaAgentFrameworkRegister for Mockito framework.
*/
public class JavaAgentFrameworkRegisterImpl implements JavaAgentFrameworkRegister {
public static final String MOCK_CREATOR_IMPLEMENTATION_CLASS = "org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator";
private MockCreator mockCreator;
@Override
public void set(JavaAgentClassRegister javaAgentClassRegister) {
setToPowerMockito(javaAgentClassRegister);
}
private void setToPowerMockito(JavaAgentClassRegister javaAgentClassRegister) {
mockCreator = getPowerMockCoreForCurrentClassLoader();
Whitebox.setInternalState(mockCreator, "agentClassRegister", javaAgentClassRegister);
}
private MockCreator getPowerMockCoreForCurrentClassLoader() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try {
return Whitebox.getInternalState(classLoader.loadClass(MOCK_CREATOR_IMPLEMENTATION_CLASS), "MOCK_CREATOR");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
@Override
public void clear() {
if (mockCreator == null) {
throw new IllegalStateException("Cannot clear JavaAgentClassRegister. Set method has not been called.");
}
Whitebox.setInternalState(mockCreator, "agentClassRegister", (Object) null);
}
}