package krasa.formatter.plugin;
import org.mockito.cglib.proxy.Callback;
import org.mockito.cglib.proxy.Factory;
import org.mockito.cglib.proxy.MethodInterceptor;
import org.mockito.internal.creation.jmock.ClassImposterizer;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl;
public class ProxyUtils {
public static CodeStyleManager createProxy(CodeStyleManagerImpl manager, EclipseCodeStyleManager overridingObject) {
MethodInterceptor interceptor = new CodeStyleManagerDelegator(manager, overridingObject);
return ClassImposterizer.INSTANCE.imposterise(interceptor, CodeStyleManagerImpl.class, new Class<?>[0]);
}
public static boolean isMyProxy(Object mock) {
return mock != null && getDelegate(mock) != null;
}
public static CodeStyleManager getDelegate(Object mock) {
if (!(mock instanceof Factory)) {
return null;
}
Factory factory = (Factory) mock;
Callback callback = factory.getCallback(0);
if (!(callback instanceof CodeStyleManagerDelegator)) {
return null;
}
return ((CodeStyleManagerDelegator) callback).getDelegatedObject();
}
}