001/* 002 * Copyright (C) 2009 The Guava Authors 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package com.google.common.annotations; 018 019import java.lang.annotation.Documented; 020import java.lang.annotation.ElementType; 021import java.lang.annotation.Retention; 022import java.lang.annotation.RetentionPolicy; 023import java.lang.annotation.Target; 024 025/** 026 * The presence of this annotation on a method indicates that the method may 027 * <em>not</em> be used with the 028 * <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a> (GWT), 029 * even though its type is annotated as {@link GwtCompatible} and accessible in 030 * GWT. They can cause GWT compilation errors or simply unexpected exceptions 031 * when used in GWT. 032 * 033 * <p>Note that this annotation should only be applied to methods, fields, or 034 * inner classes of types which are annotated as {@link GwtCompatible}. 035 * 036 * @author Charles Fry 037 */ 038@Retention(RetentionPolicy.CLASS) 039@Target({ 040 ElementType.TYPE, ElementType.METHOD, 041 ElementType.CONSTRUCTOR, ElementType.FIELD }) 042@Documented 043@GwtCompatible 044public @interface GwtIncompatible { 045 /** 046 * Describes why the annotated element is incompatible with GWT. Since this is 047 * generally due to a dependence on a type/method which GWT doesn't support, 048 * it is sufficient to simply reference the unsupported type/method. E.g. 049 * "Class.isInstance". 050 */ 051 String value(); 052}