diff --git a/src/main/java/com/google/common/annotations/Beta.java b/src/main/java/com/google/common/annotations/Beta.java new file mode 100644 index 0000000..f71dc94 --- /dev/null +++ b/src/main/java/com/google/common/annotations/Beta.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2010 The Guava Authors + * + * 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.common.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Signifies that a public API (public class, method or field) is subject to incompatible changes, + * or even removal, in a future release. An API bearing this annotation is exempt from any + * compatibility guarantees made by its containing library. Note that the presence of this + * annotation implies nothing about the quality or performance of the API in question, only the fact + * that it is not "API-frozen." + * + *
It is generally safe for applications to depend on beta APIs, at the cost of some extra + * work during upgrades. However it is generally inadvisable for libraries (which get + * included on users' CLASSPATHs, outside the library developers' control) to do so. + * + * @author Kevin Bourrillion + */ +@Retention(RetentionPolicy.CLASS) +@Target({ + ElementType.ANNOTATION_TYPE, + ElementType.CONSTRUCTOR, + ElementType.FIELD, + ElementType.METHOD, + ElementType.TYPE +}) +@Documented +@GwtCompatible +public @interface Beta {} diff --git a/src/main/java/com/google/common/annotations/GwtCompatible.java b/src/main/java/com/google/common/annotations/GwtCompatible.java new file mode 100644 index 0000000..4bf6efb --- /dev/null +++ b/src/main/java/com/google/common/annotations/GwtCompatible.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2009 The Guava Authors + * + * 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.common.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * The presence of this annotation on a type indicates that the type may be used with the Google Web Toolkit (GWT). When applied to a method, + * the return type of the method is GWT compatible. It's useful to indicate that an instance created + * by factory methods has a GWT serializable type. In the following example, + * + *
+ * {@literal @}GwtCompatible + * class Lists { + * ... + * {@literal @}GwtCompatible(serializable = true) + * {@literal static+ * + *List } newArrayList(E... elements) { + * ... + * } + * } + *
The return value of {@code Lists.newArrayList(E[])} has GWT serializable type. It is also + * useful in specifying contracts of interface methods. In the following example, + * + *
+ * {@literal @}GwtCompatible + * interface ListFactory { + * ... + * {@literal @}GwtCompatible(serializable = true) + * {@literal+ * + *List } newArrayList(E... elements); + * } + *
The {@code newArrayList(E[])} method of all implementations of {@code ListFactory} is expected + * to return a value with a GWT serializable type. + * + *
Note that a {@code GwtCompatible} type may have some {@link GwtIncompatible} methods. + * + * @author Charles Fry + * @author Hayward Chan + */ +@Retention(RetentionPolicy.CLASS) +@Target({ElementType.TYPE, ElementType.METHOD}) +@Documented +@GwtCompatible +public @interface GwtCompatible { + + /** + * When {@code true}, the annotated type or the type of the method return value is GWT + * serializable. + * + * @see + * Documentation about GWT serialization + */ + boolean serializable() default false; + + /** + * When {@code true}, the annotated type is emulated in GWT. The emulated source (also known as + * super-source) is different from the implementation used by the JVM. + * + * @see + * Documentation about GWT emulated source + */ + boolean emulated() default false; +}