Better error reporting. Also, move the proxy and request interfaces
to shared, where they belong — the servlet validates against them.
Review at http://gwt-code-reviews.appspot.com/1444801
Review by: jlabanca@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10168 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/App.java b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/App.java
index 240889e..b37fd2b 100644
--- a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/App.java
+++ b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/App.java
@@ -15,6 +15,8 @@
*/
package com.google.gwt.sample.mobilewebapp.client;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceChangeEvent;
@@ -24,7 +26,9 @@
import com.google.gwt.sample.mobilewebapp.client.place.AppPlaceHistoryMapper;
import com.google.gwt.sample.mobilewebapp.client.place.TaskListPlace;
import com.google.gwt.storage.client.Storage;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
+import com.google.web.bindery.event.shared.UmbrellaException;
/**
* The heart of the applicaiton, mainly concerned with bootstrapping.
@@ -53,7 +57,7 @@
private final AppPlaceHistoryMapper historyMapper;
private final PlaceHistoryHandler historyHandler;
-
+
private final ReloadOnAuthenticationFailure reloadOnAuthenticationFailure;
public App(Storage storage, EventBus eventBus, PlaceController placeController,
@@ -77,6 +81,17 @@
public void run(HasWidgets.ForIsWidget parentView) {
parentView.add(shell);
+ GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
+ @Override
+ public void onUncaughtException(Throwable e) {
+ while (e instanceof UmbrellaException) {
+ e = ((UmbrellaException)e).getCauses().iterator().next();
+ }
+ Window.alert("An unexpected error occurred: " + e.getMessage());
+ placeController.goTo(new TaskListPlace(false));
+ }
+ });
+
// Check for authentication failures or mismatches
reloadOnAuthenticationFailure.register(eventBus);
diff --git a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactory.java b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactory.java
index 913ed2d..f66c5c0 100644
--- a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactory.java
+++ b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactory.java
@@ -21,6 +21,7 @@
import com.google.gwt.sample.mobilewebapp.client.activity.TaskListView;
import com.google.gwt.sample.mobilewebapp.client.activity.TaskReadView;
import com.google.gwt.storage.client.Storage;
+import com.google.gwt.sample.mobilewebapp.shared.MobileWebAppRequestFactory;
/**
* The factory responsible for instantiating everything interesting in this
diff --git a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImpl.java b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImpl.java
index fbbe23d..4dc6e9f 100644
--- a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImpl.java
+++ b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImpl.java
@@ -34,6 +34,7 @@
import com.google.gwt.sample.mobilewebapp.client.desktop.DesktopTaskReadView;
import com.google.gwt.sample.mobilewebapp.client.desktop.MobileWebAppShellDesktop;
import com.google.gwt.sample.mobilewebapp.client.place.AppPlaceHistoryMapper;
+import com.google.gwt.sample.mobilewebapp.shared.MobileWebAppRequestFactory;
import com.google.gwt.storage.client.Storage;
import com.google.gwt.user.client.Window;
import com.google.web.bindery.requestfactory.shared.RequestTransport;
diff --git a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/activity/TaskEditActivity.java b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/activity/TaskEditActivity.java
index 470c85a..50ce3d6 100644
--- a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/activity/TaskEditActivity.java
+++ b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/activity/TaskEditActivity.java
@@ -18,11 +18,11 @@
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.sample.mobilewebapp.client.ClientFactory;
-import com.google.gwt.sample.mobilewebapp.client.TaskRequest;
import com.google.gwt.sample.mobilewebapp.client.place.TaskEditPlace;
import com.google.gwt.sample.mobilewebapp.client.place.TaskListPlace;
import com.google.gwt.sample.mobilewebapp.client.ui.SoundEffects;
import com.google.gwt.sample.mobilewebapp.shared.TaskProxy;
+import com.google.gwt.sample.mobilewebapp.shared.TaskRequest;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.web.bindery.requestfactory.shared.Receiver;
@@ -131,13 +131,6 @@
}
@Override
- public void onFailure(ServerFailure error) {
- Window.alert("An error occurred on the server while saving this task."
- + " Please try saving the task again.");
- doCancelTask();
- }
-
- @Override
public void onSuccess(Void response) {
// Notify the user that the task was updated.
TaskEditActivity.this.notify("Task Saved");
@@ -177,13 +170,6 @@
clientFactory.getRequestFactory().taskRequest().findTask(this.taskId).fire(
new Receiver<TaskProxy>() {
@Override
- public void onFailure(ServerFailure error) {
- Window.alert("An error occurred on the server while loading this task."
- + " Please select a different task from the task list.");
- doCancelTask();
- }
-
- @Override
public void onSuccess(TaskProxy response) {
// Early exit if this activity has already been cancelled.
if (isDead) {
@@ -234,8 +220,8 @@
new Receiver<Void>() {
@Override
public void onFailure(ServerFailure error) {
- Window.alert("An error occurred on the server while deleting this task."
- + " Please try deleting it again.");
+ Window.alert("An error occurred on the server while deleting this task: \"."
+ + error.getMessage() + "\".");
}
@Override
@@ -293,13 +279,6 @@
clientFactory.getRequestFactory().taskRequest().findTask(this.taskId).fire(
new Receiver<TaskProxy>() {
@Override
- public void onFailure(ServerFailure error) {
- Window.alert("An error occurred on the server while loading this task."
- + " Please select a different task from the task list.");
- doCancelTask();
- }
-
- @Override
public void onSuccess(TaskProxy response) {
// Early exit if this activity has already been cancelled.
if (isDead) {
diff --git a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/MobileWebAppRequestFactory.java b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/shared/MobileWebAppRequestFactory.java
similarity index 94%
rename from samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/MobileWebAppRequestFactory.java
rename to samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/shared/MobileWebAppRequestFactory.java
index 1900a4c..0173ca6 100644
--- a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/MobileWebAppRequestFactory.java
+++ b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/shared/MobileWebAppRequestFactory.java
@@ -13,7 +13,7 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.google.gwt.sample.mobilewebapp.client;
+package com.google.gwt.sample.mobilewebapp.shared;
import com.google.web.bindery.requestfactory.shared.RequestFactory;
diff --git a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/TaskRequest.java b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/shared/TaskRequest.java
similarity index 93%
rename from samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/TaskRequest.java
rename to samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/shared/TaskRequest.java
index 65fa8ec..cfbc6b2 100644
--- a/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/TaskRequest.java
+++ b/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/shared/TaskRequest.java
@@ -13,10 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.google.gwt.sample.mobilewebapp.client;
+package com.google.gwt.sample.mobilewebapp.shared;
import com.google.gwt.sample.mobilewebapp.server.domain.Task;
-import com.google.gwt.sample.mobilewebapp.shared.TaskProxy;
import com.google.web.bindery.requestfactory.shared.InstanceRequest;
import com.google.web.bindery.requestfactory.shared.Request;
import com.google.web.bindery.requestfactory.shared.RequestContext;