/* * 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; } }