/*
- * Copyright 2011 GRNET S.A. All rights reserved.
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
package gr.grnet.pithos.web.client.rest;
+import gr.grnet.pithos.web.client.foldertree.Resource;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
-import gr.grnet.pithos.web.client.foldertree.Resource;
-import java.util.HashMap;
-import java.util.Map;
/**
* Created by IntelliJ IDEA. User: chstath Date: 7/5/11 Time: 5:29 PM To change this template use File | Settings | File
* Templates.
*/
public abstract class DeleteRequest implements ScheduledCommand {
- private String api;
+
+ protected static final int MAX_RETRIES = 3;
+
+ protected int retries = 0;
- private String owner;
+ private String api;
+
+ protected String owner;
private String path;
builder.setHeader(header, headers.get(header));
}
try {
- builder.sendRequest("", new RestRequestCallback(api + owner + path, Response.SC_NO_CONTENT) {
+ builder.sendRequest("", new RestRequestCallback<Resource>(api + owner + path, Response.SC_NO_CONTENT) {
@Override
public void onSuccess(Resource object) {
DeleteRequest.this.onSuccess(object);
@Override
public void onError(Request request, Throwable throwable) {
- DeleteRequest.this.onError(throwable);
+ if (retries >= MAX_RETRIES)
+ DeleteRequest.this.onError(throwable);
+ else
+ Scheduler.get().scheduleDeferred(DeleteRequest.this);
}
+
+ @Override
+ public void onUnauthorized(Response response) {
+ if (retries >= MAX_RETRIES)
+ DeleteRequest.this.onUnauthorized(response);
+ else
+ Scheduler.get().scheduleDeferred(DeleteRequest.this);
+ }
});
+ retries++;
}
catch (RequestException e) {
}
}
- public void setHeader(String header, String value) {
+ protected abstract void onUnauthorized(Response response);
+
+ public void setHeader(String header, String value) {
headers.put(header, value);
}
}