X-Git-Url: https://code.grnet.gr/git/pithos-web-client/blobdiff_plain/7811b9d1b61781af911aebe3f47f7196cbb0b059..45c7626299bb69f4f496e760c6679823296fe28a:/src/gr/grnet/pithos/web/client/rest/DeleteRequest.java diff --git a/src/gr/grnet/pithos/web/client/rest/DeleteRequest.java b/src/gr/grnet/pithos/web/client/rest/DeleteRequest.java index f3002ce..bafffbe 100644 --- a/src/gr/grnet/pithos/web/client/rest/DeleteRequest.java +++ b/src/gr/grnet/pithos/web/client/rest/DeleteRequest.java @@ -1,5 +1,5 @@ /* - * 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 @@ -35,21 +35,31 @@ 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; @@ -69,10 +79,11 @@ public abstract class DeleteRequest implements ScheduledCommand { @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(api + owner + path, Response.SC_NO_CONTENT) { @Override @@ -86,16 +97,31 @@ public abstract class DeleteRequest implements ScheduledCommand { } @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); } }