/*
* Copyright 2011 JBoss Inc
*
* 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 com.google.gwt.core.client;
import java.lang.reflect.Constructor;
/**
* Mocks core functionality that in some cases requires direct support from
* the compiler and runtime systems such as runtime type information and
* deferred binding.
*/
public class GWT {
public interface UncaughtExceptionHandler {
void onUncaughtException(Throwable e);
}
private static final class DefaultUncaughtExceptionHandler implements UncaughtExceptionHandler {
public void onUncaughtException(Throwable e) {
log("Uncaught exception escaped", e);
}
}
public static final String HOSTED_MODE_PERMUTATION_STRONG_NAME = "HostedMode";
private static UncaughtExceptionHandler sUncaughtExceptionHandler = new DefaultUncaughtExceptionHandler();
/**
* Returns null always
* @param <T>
* @param classLiteral
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T create(Class<?> classLiteral) {
Constructor<?>[] constructors = classLiteral.getConstructors();
if (constructors != null) {
for (Constructor<?> constructor : constructors) {
if (constructor.getParameterTypes().length == 0) {
try {
return (T) classLiteral.newInstance();
} catch (Exception e) {
return null;
}
}
}
}
return null;
}
public static String getHostPageBaseURL() {
return "/test";
}
public static String getModuleBaseURL() {
return "mock";
}
public static String getModuleName() {
return "mock";
}
public static String getPermutationStrongName() {
return HOSTED_MODE_PERMUTATION_STRONG_NAME;
}
@Deprecated
public static String getTypeName(Object o) {
return (o == null) ? null : o.getClass().getName();
}
public static UncaughtExceptionHandler getUncaughtExceptionHandler() {
return sUncaughtExceptionHandler;
}
public static String getUniqueThreadId() {
return "";
}
public static String getVersion() {
return "2.3.0";
}
public static boolean isClient() {
return true;
}
public static boolean isProdMode() {
return false;
}
public static boolean isScript() {
return false;
}
public static void log(String message) {
log(message, null);
}
public static void log(String message, Throwable e) {
System.out.println(message);
e.printStackTrace(System.out);
}
public static void runAsync(Class<?> name, RunAsyncCallback callback) {
runAsyncWithoutCodeSplitting(callback);
}
public static void runAsync(RunAsyncCallback callback) {
runAsyncWithoutCodeSplitting(callback);
}
public static void setUncaughtExceptionHandler(UncaughtExceptionHandler handler) {
sUncaughtExceptionHandler = handler;
}
static void setBridge(GWTBridge bridge) {
}
private static void runAsyncWithoutCodeSplitting(RunAsyncCallback callback) {
UncaughtExceptionHandler handler = sUncaughtExceptionHandler;
if (handler == null) {
callback.onSuccess();
} else {
try {
callback.onSuccess();
} catch (Throwable e) {
handler.onUncaughtException(e);
}
}
}
}