Part 1 of reimplementing DevMode JSO implementation to remove the need for global state.
Add SingleJsoImpl annotation
http://gwt-code-reviews.appspot.com/473801
Patch by: bobv
Review by: scottb
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8246 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/core/client/SingleJsoImpl.java b/user/src/com/google/gwt/core/client/SingleJsoImpl.java
new file mode 100644
index 0000000..aabaad4
--- /dev/null
+++ b/user/src/com/google/gwt/core/client/SingleJsoImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2010 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.core.client;
+
+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;
+
+/**
+ * This annotation may be placed on an interface to declare the single
+ * JavaScriptObject type that implements the interface. While it is not strictly
+ * necessary to use this annotation when declaring JSO subtypes that implement
+ * an interface, this annotation allows a developer to ensure that a specific
+ * JSO implementation will always be used.
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface SingleJsoImpl {
+ Class<? extends JavaScriptObject> value();
+}
diff --git a/user/src/com/google/gwt/core/client/SingleJsoImplName.java b/user/src/com/google/gwt/core/client/SingleJsoImplName.java
new file mode 100644
index 0000000..08f8750
--- /dev/null
+++ b/user/src/com/google/gwt/core/client/SingleJsoImplName.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2010 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.core.client;
+
+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;
+
+/**
+ * This annotation may be placed on an interface to name the single
+ * JavaScriptObject type that implements the interface. This annotation may be
+ * used in place of {@link SingleJsoImpl} if the JSO implementation is not
+ * normally available, perhaps because it is created during a build process.
+ *
+ * @see SingleJsoImpl
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface SingleJsoImplName {
+ /**
+ * The binary name of the type that implements the interface at runtime.
+ */
+ String value();
+}