Make ClientBundle- and RPC-related annotations have runtime retention to support developers that want to re-use these classes in a dynamic server environment.
http://code.google.com/p/google-web-toolkit/issues/detail?id=3803
http://code.google.com/p/google-web-toolkit/issues/detail?id=4797
Patch by: bobv
Review by: rjrjr

Review at http://gwt-code-reviews.appspot.com/306802


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7947 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/resources/client/ClientBundle.java b/user/src/com/google/gwt/resources/client/ClientBundle.java
index a25cba5..7bbd76c 100644
--- a/user/src/com/google/gwt/resources/client/ClientBundle.java
+++ b/user/src/com/google/gwt/resources/client/ClientBundle.java
@@ -19,6 +19,8 @@
 import com.google.gwt.resources.rg.BundleResourceGenerator;
 
 import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
@@ -35,6 +37,7 @@
    * Specifies the classpath location of the resource or resources associated
    * with the {@link ResourcePrototype}.
    */
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.METHOD)
   public @interface Source {
     String[] value();
diff --git a/user/src/com/google/gwt/resources/client/CssResource.java b/user/src/com/google/gwt/resources/client/CssResource.java
index 6f4baec..1578095 100644
--- a/user/src/com/google/gwt/resources/client/CssResource.java
+++ b/user/src/com/google/gwt/resources/client/CssResource.java
@@ -21,6 +21,8 @@
 
 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;
 
 /**
@@ -162,6 +164,7 @@
    * </pre>
    */
   @Documented
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.METHOD)
   public @interface ClassName {
     String value();
@@ -209,6 +212,7 @@
    * CssResource.
    */
   @Documented
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.METHOD)
   public @interface Import {
     Class<? extends CssResource>[] value();
@@ -221,6 +225,7 @@
    * @see Import
    */
   @Documented
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.TYPE)
   public @interface ImportedWithPrefix {
     String value();
@@ -242,6 +247,7 @@
    * </pre>
    */
   @Documented
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.METHOD)
   public @interface NotStrict {
   }
@@ -286,6 +292,7 @@
    * enough to warrant an easier use-case.
    */
   @Documented
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.TYPE)
   public @interface Shared {
   }
@@ -296,6 +303,7 @@
    * @deprecated Strict mode is now the default behavior for CssResource
    */
   @Deprecated
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.METHOD)
   public @interface Strict {
   }
diff --git a/user/src/com/google/gwt/resources/client/GwtCreateResource.java b/user/src/com/google/gwt/resources/client/GwtCreateResource.java
index a13b32a..ca5aa35 100644
--- a/user/src/com/google/gwt/resources/client/GwtCreateResource.java
+++ b/user/src/com/google/gwt/resources/client/GwtCreateResource.java
@@ -20,6 +20,8 @@
 
 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;
 
 /**
@@ -47,6 +49,7 @@
    * </pre>
    */
   @Documented
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.METHOD)
   public @interface ClassType {
     Class<?> value();
diff --git a/user/src/com/google/gwt/resources/client/ImageResource.java b/user/src/com/google/gwt/resources/client/ImageResource.java
index 8095ed5..b918d7e 100644
--- a/user/src/com/google/gwt/resources/client/ImageResource.java
+++ b/user/src/com/google/gwt/resources/client/ImageResource.java
@@ -21,6 +21,8 @@
 
 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;
 
 /**
@@ -34,6 +36,7 @@
    * Specifies additional options to control how an image is bundled.
    */
   @Documented
+  @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.METHOD)
   public @interface ImageOptions {
     /**
diff --git a/user/src/com/google/gwt/user/client/rpc/RemoteServiceRelativePath.java b/user/src/com/google/gwt/user/client/rpc/RemoteServiceRelativePath.java
index 65bc9fe..1524923 100644
--- a/user/src/com/google/gwt/user/client/rpc/RemoteServiceRelativePath.java
+++ b/user/src/com/google/gwt/user/client/rpc/RemoteServiceRelativePath.java
@@ -17,6 +17,8 @@
 
 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;
 
 /**
@@ -29,6 +31,7 @@
  * default path.
  */
 @Documented
+@Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.TYPE)
 public @interface RemoteServiceRelativePath {
   /**