/******************************************************************************* * Copyright 2011 See AUTHORS file. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package java.lang; import com.google.gwt.core.client.GWT; public class Thread implements Runnable { public final static int MIN_PRIORITY = 1; public final static int NORM_PRIORITY = 5; public final static int MAX_PRIORITY = 10; protected static final Thread CURRENT_THREAD = new Thread(); private String name = "main"; boolean interruptedFlag; private Thread() { } @Override public final void run() { throw new UnsupportedOperationException(); } public boolean isInterrupted() { return interruptedFlag; } public void interrupt() { interruptedFlag = true; } public boolean isDaemon() { return false; } public boolean isAlive() { return true; } public long getId() { return 1; } public final native String getName() /*-{ if (!this.threadName) { return 'main'; } return this.threadName; }-*/; public int getPriority() { return NORM_PRIORITY; } public String toString() { return "Thread[" + getName() + "," + getPriority() + ",]"; } public static int activeCount() { return 1; } public static boolean interrupted() { boolean itf = CURRENT_THREAD.interruptedFlag; CURRENT_THREAD.interruptedFlag = false; return itf; } public static Thread currentThread() { return CURRENT_THREAD; } public static void yield() { } private static native void realSleep(double millis) /*-{ var startDate = new Date(); var remaining = millis - (new Date() - startDate); while (remaining > 0) { var xmlHttpReq; try { if (window.ActiveXObject) { try { xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } } else if (window.XMLHttpRequest) { xmlHttpReq = new XMLHttpRequest(); } } catch (e) { } remaining = millis - (new Date() - startDate); } }-*/; public static void sleep(long millis) throws InterruptedException { // noop } public static void setDefaultUncaughtExceptionHandler( final Thread.UncaughtExceptionHandler javaHandler) { GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() { @Override public void onUncaughtException(Throwable e) { final Thread th = new Thread() { @Override public String toString() { return "The only thread"; } }; javaHandler.uncaughtException(th, e); } }); } public static interface UncaughtExceptionHandler { void uncaughtException(Thread t, Throwable e); } }