Revision f1b24b82 src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java

b/src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java
49 49
import com.google.gwt.event.dom.client.ClickEvent;
50 50
import com.google.gwt.event.dom.client.ClickHandler;
51 51
import com.google.gwt.event.dom.client.KeyCodes;
52
import com.google.gwt.http.client.Response;
52 53
import com.google.gwt.i18n.client.DateTimeFormat;
53 54
import com.google.gwt.user.client.Event.NativePreviewEvent;
54 55
import com.google.gwt.user.client.ui.Button;
......
340 341
            updateMetadata(folder.getUri() + "?update=", perms);
341 342
	}
342 343

  
343
	protected void updateMetadata(String path, Map<String, Boolean[]> newPermissions) {
344
	protected void updateMetadata(final String path, final Map<String, Boolean[]> newPermissions) {
344 345
        if (newPermissions != null) {
345 346
            PostRequest updateFolder = new PostRequest(app.getApiPath(), folder.getOwner(), path) {
346 347
                @Override
......
351 352
                @Override
352 353
                public void onError(Throwable t) {
353 354
                    GWT.log("", t);
354
                    app.displayError("System error modifying folder: " + t.getMessage());
355
                    if (t instanceof RestException) {
356
                    	if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) { //Probably a virtual folder
357
                            final String path1 = folder.getUri();
358
                            PutRequest newFolder = new PutRequest(app.getApiPath(), app.getUsername(), path1) {
359
                                @Override
360
                                public void onSuccess(@SuppressWarnings("unused") Resource result) {
361
                                	updateMetadata(path, newPermissions);
362
                                }
363

  
364
                                @Override
365
                                public void onError(Throwable t) {
366
                                    GWT.log("", t);
367
                                    if(t instanceof RestException){
368
                                        app.displayError("Unable to update folder: " + ((RestException) t).getHttpStatusText());
369
                                    }
370
                                    else
371
                                        app.displayError("System error modifying folder: " + t.getMessage());
372
                                }
373
                            };
374
                            newFolder.setHeader("X-Auth-Token", app.getToken());
375
                            newFolder.setHeader("Content-Type", "application/folder");
376
                            newFolder.setHeader("Accept", "*/*");
377
                            newFolder.setHeader("Content-Length", "0");
378
                            Scheduler.get().scheduleDeferred(newFolder);
379
                    	}
380
                    }
381
                    else
382
                    	app.displayError("System error modifying folder: " + t.getMessage());
355 383
                }
356 384
            };
357 385
            updateFolder.setHeader("X-Auth-Token", app.getToken());

Also available in: Unified diff