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