package org.tessell.widgets;
import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.GWTBridge;
import com.google.gwt.core.client.impl.SchedulerImpl;
public class StubGWTBridge extends GWTBridge {
private static final Logger log = Logger.getLogger(StubGWTBridge.class.getName());
private static final StubGWTBridge bridge = new StubGWTBridge();
private StubScheduler scheduler;
public static StubScheduler getScheduler() {
return bridge.scheduler;
}
public static void install() {
try {
final Method m = GWT.class.getDeclaredMethod("setBridge", GWTBridge.class);
m.setAccessible(true);
m.invoke(null, bridge);
} catch (final Exception e) {
throw new RuntimeException(e);
}
}
@Override
@SuppressWarnings("unchecked")
public <T> T create(final Class<?> classLiteral) {
if (classLiteral == SchedulerImpl.class) {
if (scheduler == null) {
scheduler = new StubScheduler();
}
return (T) scheduler;
}
return null;
}
@Override
public String getVersion() {
return "stub";
}
@Override
public boolean isClient() {
return false;
}
@Override
public void log(final String message, final Throwable e) {
log.log(Level.SEVERE, message, e);
}
}