| /* |
| * Copyright 2008 Google 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.dev.shell; |
| |
| import com.google.gwt.core.client.GWTBridge; |
| import com.google.gwt.dev.About; |
| |
| /** |
| * This class is the hosted-mode peer for {@link com.google.gwt.core.client.GWT}. |
| */ |
| public class GWTBridgeImpl extends GWTBridge { |
| |
| protected static ThreadLocal<String> uniqueID = |
| new ThreadLocal<String>() { |
| private int counter = 0; |
| |
| @Override |
| public String initialValue() { |
| return "DevModeThread" + ++counter; |
| } |
| }; |
| |
| private final ShellJavaScriptHost host; |
| |
| public GWTBridgeImpl(ShellJavaScriptHost host) { |
| this.host = host; |
| } |
| |
| /** |
| * Resolves a deferred binding request and create the requested object. |
| */ |
| @Override |
| public <T> T create(Class<?> requestedClass) { |
| String className = requestedClass.getName(); |
| try { |
| return host.<T> rebindAndCreate(className); |
| } catch (Throwable e) { |
| String msg = "Deferred binding failed for '" + className |
| + "' (did you forget to inherit a required module?)"; |
| throw new RuntimeException(msg, e); |
| } |
| } |
| |
| @Override |
| public String getThreadUniqueID() { |
| // TODO(unnurg): Remove this function once Dev Mode rewriting classes are |
| // in gwt-dev. |
| return uniqueID.get(); |
| } |
| |
| @Override |
| public String getVersion() { |
| return About.getGwtVersionNum(); |
| } |
| |
| /** |
| * Yes, we're running as client code in the hosted mode classloader. |
| */ |
| @Override |
| public boolean isClient() { |
| return true; |
| } |
| |
| /** |
| * Logs in dev shell. |
| */ |
| @Override |
| public void log(String message, Throwable e) { |
| host.log(message, e); |
| } |
| |
| } |