| /* |
| * Copyright 2009 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.jjs.scriptonly; |
| |
| import com.google.gwt.core.client.GwtScriptOnly; |
| import com.google.gwt.dev.jjs.server.AccessedByScriptOnlyClass; |
| import com.google.gwt.user.client.Window; |
| import com.google.gwt.user.client.rpc.AsyncCallback; |
| |
| /** |
| * This is the hosted-mode version of this class. It will attempt to call |
| * methods not normally available in hosted-mode classes. |
| */ |
| @GwtScriptOnly |
| public class ScriptOnlyClass extends BaseClass { |
| /* |
| * NB: If you see errors from the GWT compiler while trying to compile this |
| * type, make sure that the user/test-super folder is on the classpath. |
| */ |
| public static boolean isInstance(Class<?> test, Object instance) { |
| return test.isInstance(instance); |
| } |
| |
| /** |
| * Test cross-boundary method invocation. |
| */ |
| public void callCallback(AsyncCallback<ScriptOnlyClass> callback) { |
| assert callback != null; |
| assert callback.getClass().getClassLoader() == this.getClass().getClassLoader().getParent(); |
| callback.onSuccess(this); |
| } |
| |
| /** |
| * Access code that's not available in the module's source path. |
| */ |
| public boolean callCodeNotInSourcePath() { |
| return AccessedByScriptOnlyClass.getBool(); |
| } |
| |
| /** |
| * Can only do this in Development Mode. |
| */ |
| public String getClassLoaderName() { |
| return getClass().getClassLoader().getClass().getName(); |
| } |
| |
| /** |
| * Test class-literal access to classes that come from the CCL. |
| */ |
| public Class<?> getWindowClass() { |
| return Window.class; |
| } |
| |
| @Override |
| public boolean isHostedMode() { |
| return true; |
| } |
| } |