- String prefix = folder.getPrefix();\r
- String path = app.getApiPath() + app.getUsername() + "/" + folder.getContainer() + (prefix.length() == 0 ? "" : "/" + prefix);\r
- DeleteRequest deleteFolder = new DeleteRequest(path) {\r
- @Override\r
- public void onSuccess(Resource result) {\r
- app.updateFolder(folder.getParent());\r
+ String path = app.getApiPath() + app.getUsername() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + folder.getPrefix();\r
+ RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);\r
+ builder.setHeader("If-Modified-Since", "0");\r
+ builder.setHeader("X-Auth-Token", app.getToken());\r
+ try {\r
+ builder.sendRequest("", new RequestCallback() {\r
+ @Override\r
+ public void onResponseReceived(Request request, Response response) {\r
+ if (response.getStatusCode() == Response.SC_OK) {\r
+ JSONValue json = JSONParser.parseStrict(response.getText());\r
+ JSONArray array = json.isArray();\r
+ int i = 0;\r
+ if (array != null) {\r
+ deleteObject(i, array);\r
+ }\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void onError(Request request, Throwable exception) {\r
+ GSS.get().displayError("System error unable to delete folder: " + exception.getMessage());\r
+ }\r
+ });\r
+ }\r
+ catch (RequestException e) {\r
+ }\r
+ }\r
+\r
+ private void deleteObject(final int i, final JSONArray array) {\r
+ if (i < array.size()) {\r
+ JSONObject o = array.get(i).isObject();\r
+ if (o != null && !o.containsKey("subdir")) {\r
+ JSONString name = o.get("name").isString();\r
+ String path = app.getApiPath() + app.getUsername() + "/" + folder.getContainer() + "/" + name.stringValue();\r
+ DeleteRequest delete = new DeleteRequest(path) {\r
+ @Override\r
+ public void onSuccess(Resource result) {\r
+ deleteObject(i + 1, array);\r
+ }\r
+\r
+ @Override\r
+ public void onError(Throwable t) {\r
+ GWT.log("", t);\r
+ GSS.get().displayError("System error unable to delete folder: " + t.getMessage());\r
+ }\r
+ };\r
+ delete.setHeader("X-Auth-Token", app.getToken());\r
+ Scheduler.get().scheduleDeferred(delete);\r