/*
- * Copyright 2011 GRNET S.A. All rights reserved.
+ * Copyright 2011-2013 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.Helpers;
+import gr.grnet.pithos.web.client.Pithos;
+import gr.grnet.pithos.web.client.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 api;
protected String owner;
@Override
public void execute() {
+ Pithos.LOG("DELETE ", api + owner + path);
+
RequestBuilder builder = new RequestBuilder(RequestBuilder.DELETE, api + owner + path);
- for (String header : headers.keySet()) {
- builder.setHeader(header, headers.get(header));
- }
+ Helpers.setHeaders(builder, headers);
+
try {
builder.sendRequest("", new RestRequestCallback<Resource>(api + owner + path, Response.SC_NO_CONTENT) {
@Override
}
@Override
- public void onError(@SuppressWarnings("unused") Request request, Throwable throwable) {
- DeleteRequest.this.onError(throwable);
+ public void onError(Request request, Throwable 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) {
+ Pithos.LOG(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);
}
}