Fixed a race condition duw to which renamed shared folders continued showing in mysha...
authorChristos Stathis <chstath@ebs.gr>
Thu, 22 Mar 2012 15:14:54 +0000 (17:14 +0200)
committerChristos Stathis <chstath@ebs.gr>
Thu, 22 Mar 2012 15:14:54 +0000 (17:14 +0200)
src/gr/grnet/pithos/web/client/DeleteFolderDialog.java
src/gr/grnet/pithos/web/client/FolderPermissionsDialog.java
src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java
src/gr/grnet/pithos/web/client/Pithos.java
src/gr/grnet/pithos/web/client/commands/PasteCommand.java

index 4259689..d80806c 100644 (file)
@@ -101,7 +101,7 @@ public class DeleteFolderDialog extends DialogBox {
                Button ok = new Button("Delete", new ClickHandler() {\r
                        @Override\r
                        public void onClick(ClickEvent event) {\r
-                               app.deleteFolder(folder);\r
+                               app.deleteFolder(folder, null);\r
                                hide();\r
                        }\r
                });\r
@@ -123,7 +123,7 @@ public class DeleteFolderDialog extends DialogBox {
                        switch (evt.getKeyCode()) {\r
                                case KeyCodes.KEY_ENTER:\r
                                        hide();\r
-                                       app.deleteFolder(folder);\r
+                                       app.deleteFolder(folder, null);\r
                                        break;\r
                                case KeyCodes.KEY_ESCAPE:\r
                                        hide();\r
index 71528a1..9e3e0d8 100644 (file)
@@ -213,7 +213,7 @@ public class FolderPermissionsDialog extends DialogBox {
                             app.copySubfolders(iterf, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() {\r
                                 @Override\r
                                 public void execute() {\r
-                                    app.deleteFolder(folder);\r
+                                    app.deleteFolder(folder, null);\r
                                     updateMetadata(path + "?update=", perms);\r
                                 }\r
                             });\r
index 268b7de..ed8828f 100644 (file)
@@ -303,14 +303,19 @@ public class FolderPropertiesDialog extends DialogBox {
                             app.copySubfolders(iterf, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() {\r
                                 @Override\r
                                 public void execute() {\r
-                                    app.deleteFolder(folder);\r
-                                    app.updateFolder(folder.getParent(), false, new Command() {\r
-                                               \r
-                                               @Override\r
-                                               public void execute() {\r
-                                                       app.updateMySharedRoot();\r
-                                               }\r
-                                       });\r
+                                    app.deleteFolder(folder, new Command() {\r
+                                                                               \r
+                                                                               @Override\r
+                                                                               public void execute() {\r
+                                                   app.updateFolder(folder.getParent(), false, new Command() {\r
+                                                               \r
+                                                               @Override\r
+                                                               public void execute() {\r
+                                                                       app.updateMySharedRoot();\r
+                                                               }\r
+                                                       });\r
+                                                                               }\r
+                                                                       });\r
                                 }\r
                             });\r
                         }\r
index 3f3e0f3..191a4f5 100644 (file)
@@ -813,7 +813,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                History.newItem(key);
        }
 
-    public void deleteFolder(final Folder folder) {
+    public void deleteFolder(final Folder folder, final Command callback) {
         String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(folder.getPrefix()) + "&t=" + System.currentTimeMillis();
         RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
         builder.setHeader("X-Auth-Token", getToken());
@@ -826,7 +826,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                         JSONArray array = json.isArray();
                         int i = 0;
                         if (array != null) {
-                            deleteObject(folder, i, array);
+                            deleteObject(folder, i, array, callback);
                         }
                     }
                 }
@@ -842,7 +842,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
         }
     }
 
-    void deleteObject(final Folder folder, final int i, final JSONArray array) {
+    void deleteObject(final Folder folder, final int i, final JSONArray array, final Command callback) {
         if (i < array.size()) {
             JSONObject o = array.get(i).isObject();
             if (o != null && !o.containsKey("subdir")) {
@@ -851,7 +851,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                 DeleteRequest delete = new DeleteRequest(getApiPath(), folder.getOwner(), URL.encode(path)) {
                     @Override
                     public void onSuccess(Resource result) {
-                        deleteObject(folder, i + 1, array);
+                        deleteObject(folder, i + 1, array, callback);
                     }
 
                     @Override
@@ -888,7 +888,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                                         array.set(l++, array2.get(j));
                                     }
                                 }
-                                deleteObject(folder, i + 1, array);
+                                deleteObject(folder, i + 1, array, callback);
                             }
                         }
 
@@ -913,6 +913,8 @@ public class Pithos implements EntryPoint, ResizeHandler {
                                                @Override
                                                public void execute() {
                                                        updateStatistics();
+                                                       if (callback != null)
+                                                               callback.execute();
                                                }
                                        });
                 }
index 4d0f188..6ae2669 100644 (file)
@@ -95,7 +95,7 @@ public class PasteCommand implements Command {
                     @Override
                     public void execute() {
                         app.getClipboard().clear();
-                        app.deleteFolder(tobeCopied);
+                        app.deleteFolder(tobeCopied, null);
                         app.updateFolder(folder, true, null);
                     }
                 });