Reviewers: bobv, schmitt,

Description:
Promotes Gin's AsyncProvider to GWT, along with a more general
AsyncCallback than the one in com.google.gwt.user.client.rpc.
Retrofits GWT RPC to use the new callback interface for ease of
integration for existing GIN users.


Please review this at http://gwt-code-reviews.appspot.com/1387801/

Affected files:
  A user/src/com/google/gwt/core/client/AsyncCallback.java
  A user/src/com/google/gwt/core/client/AsyncProvider.java
  M user/src/com/google/gwt/user/client/rpc/AsyncCallback.java


Index: user/src/com/google/gwt/core/client/AsyncCallback.java
===================================================================
--- user/src/com/google/gwt/core/client/AsyncCallback.java      (revision 0)
+++ user/src/com/google/gwt/core/client/AsyncCallback.java      (revision 0)
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2011 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;
+
+/**
+ * A callback for any asynchronous call that can result in success or failure.
+ *
+ * @param <T> The type returned on success
+ * @param <F> The type returned on failure
+ */
+public interface AsyncCallback<T, F> {
+
+  /**
+   * Called when an asynchronous call fails to complete normally.
+   *
+   * @param reason failure encountered
+   */
+  void onFailure(F reason);
+
+  /**
+   * Called when an asynchronous call completes successfully.
+   *
+   * @param result the value returned
+   */
+  void onSuccess(T result);
+}
Index: user/src/com/google/gwt/core/client/AsyncProvider.java
===================================================================
--- user/src/com/google/gwt/core/client/AsyncProvider.java      (revision 0)
+++ user/src/com/google/gwt/core/client/AsyncProvider.java      (revision 0)
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2011 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;
+
+/**
+ * An object capable of providing an instance of type T asynchronously
+ * via {@link AsyncCallback}. For example, the instance might be
+ * created within a GWT.runAsync block using the following template:
+ *
+ *  <pre style=code>
+ *      public void get(final AsyncCallback<T, Throwable> callback) {
+ *        GWT.runAsync(new RunAsyncCallback() {
+ *          public void onSuccess() {
+ *            callback.onSuccess(javax.inject.Provider<T>.get());
+ *          }
+ *          public void onFailure(Throwable ex) {
+ *            callback.onFailure(ex);
+ *          }
+ *        }
+ *      }
+ *  </pre>
+ *
+ */
+public interface AsyncProvider<T> {
+
+  /**
+ * @param callback Callback used to pass the instance of T or an exception
+   *    if there is an issue creating that instance.
+   */
+  void get(AsyncCallback<? super T> callback);
+}
Index: user/src/com/google/gwt/user/client/rpc/AsyncCallback.java
===================================================================
--- user/src/com/google/gwt/user/client/rpc/AsyncCallback.java (revision 9846) +++ user/src/com/google/gwt/user/client/rpc/AsyncCallback.java (working copy)
@@ -89,7 +89,8 @@
  *          <code>void</code> return type becomes a {@link Void} type
  *          argument, which is always <code>null</code>).
  */
-public interface AsyncCallback<T> {
+public interface AsyncCallback<T>
+    extends com.google.gwt.core.client.AsyncCallback<T, Throwable> {

   /**
    * Called when an asynchronous call fails to complete normally.


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to