From: Christos Stathis Date: Mon, 25 Jun 2012 12:09:43 +0000 (+0300) Subject: Added retries when getting errors while fetching folders (issue #2552) X-Git-Tag: 0.14rc1~80 X-Git-Url: https://code.grnet.gr/git/pithos-web-client/commitdiff_plain/2f4ea6173f9ef1d0f6e1d240644d384b34142e22 Added retries when getting errors while fetching folders (issue #2552) --- diff --git a/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java b/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java index abd966e..1a57aab 100644 --- a/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java +++ b/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java @@ -252,17 +252,26 @@ public class FolderTreeViewModel implements TreeViewModel { @Override public void onError(Throwable t) { - GWT.log("Error getting folder", t); - app.setError(t); - if (t instanceof RestException) - app.displayError("Error getting folder: " + ((RestException) t).getHttpStatusText()); - else - app.displayError("System error fetching folder: " + t.getMessage()); + if (retries >= MAX_RETRIES) { + GWT.log("Error getting folder", t); + app.setError(t); + if (t instanceof RestException) + app.displayError("Error getting folder: " + ((RestException) t).getHttpStatusText()); + else + app.displayError("System error fetching folder: " + t.getMessage()); + } + else {//retry + GWT.log("Retry " + retries); + Scheduler.get().scheduleDeferred(this); + } } @Override protected void onUnauthorized(Response response) { - app.sessionExpired(); + if (retries >= MAX_RETRIES) + app.sessionExpired(); + else //retry + Scheduler.get().scheduleDeferred(this); } }; getFolder.setHeader("X-Auth-Token", app.getToken()); diff --git a/src/gr/grnet/pithos/web/client/rest/GetRequest.java b/src/gr/grnet/pithos/web/client/rest/GetRequest.java index 9bf2406..7bec14f 100644 --- a/src/gr/grnet/pithos/web/client/rest/GetRequest.java +++ b/src/gr/grnet/pithos/web/client/rest/GetRequest.java @@ -48,6 +48,10 @@ import com.google.gwt.http.client.RequestException; import com.google.gwt.http.client.Response; public abstract class GetRequest implements ScheduledCommand { + + protected static final int MAX_RETRIES = 3; + + protected int retries = 0; protected Class aClass; @@ -123,6 +127,7 @@ public abstract class GetRequest implements ScheduledCommand GetRequest.this.onUnauthorized(response); } }); + retries++; } catch (RequestException e) { }