Added retries when getting errors while fetching folders (issue #2552)
authorChristos Stathis <chstath@ebs.gr>
Mon, 25 Jun 2012 12:09:43 +0000 (15:09 +0300)
committerChristos Stathis <chstath@ebs.gr>
Mon, 25 Jun 2012 12:09:43 +0000 (15:09 +0300)
src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java
src/gr/grnet/pithos/web/client/rest/GetRequest.java

index abd966e..1a57aab 100644 (file)
@@ -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());
index 9bf2406..7bec14f 100644 (file)
@@ -48,6 +48,10 @@ import com.google.gwt.http.client.RequestException;
 import com.google.gwt.http.client.Response;
 
 public abstract class GetRequest<T extends Resource> implements ScheduledCommand {
+       
+       protected static final int MAX_RETRIES = 3; 
+
+       protected int retries = 0; 
 
        protected Class<T> aClass;
 
@@ -123,6 +127,7 @@ public abstract class GetRequest<T extends Resource> implements ScheduledCommand
                     GetRequest.this.onUnauthorized(response);
                                }
             });
+            retries++;
         }
         catch (RequestException e) {
         }