CMIS-1048: Workbench: fixed delete on a folder

git-svn-id: https://svn.apache.org/repos/asf/chemistry/opencmis/trunk@1815011 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java
index 45db5bb..226a600 100644
--- a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java
+++ b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/FolderTable.java
@@ -56,6 +56,7 @@
 import org.apache.chemistry.opencmis.client.api.Folder;
 import org.apache.chemistry.opencmis.commons.enums.Action;
 import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
 import org.apache.chemistry.opencmis.workbench.icons.CheckedOutIcon;
 import org.apache.chemistry.opencmis.workbench.icons.DocumentIcon;
 import org.apache.chemistry.opencmis.workbench.icons.FolderIcon;
@@ -153,13 +154,25 @@
                             JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
 
                     if (answer == JOptionPane.YES_OPTION) {
-                        DeleteWorker worker = new DeleteWorker(FolderTable.this, model.getCurrentObject()) {
-                            @Override
-                            protected void done() {
-                                super.done();
-                                LoadFolderWorker.reloadFolder(FolderTable.this, model);
-                            }
-                        };
+                        DeleteWorker worker = null;
+                        if (model.getCurrentObject() instanceof Folder) {
+                            worker = new DeleteWorker(FolderTable.this, (Folder) model.getCurrentObject(), true,
+                                    UnfileObject.DELETE, true) {
+                                @Override
+                                protected void done() {
+                                    super.done();
+                                    LoadFolderWorker.reloadFolder(FolderTable.this, model);
+                                }
+                            };
+                        } else {
+                            worker = new DeleteWorker(FolderTable.this, model.getCurrentObject()) {
+                                @Override
+                                protected void done() {
+                                    super.done();
+                                    LoadFolderWorker.reloadFolder(FolderTable.this, model);
+                                }
+                            };
+                        }
                         worker.executeTask();
                     }
                 }
diff --git a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java
index 6dd2c06..f8cf72d 100644
--- a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java
+++ b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java
@@ -254,19 +254,17 @@
             mainPanel.add(configPanel, BorderLayout.LINE_END);
             add(mainPanel, BorderLayout.CENTER);
 
-            final JButton runButton = new JButton("Run TCK", new TckIcon(ClientHelper.BUTTON_ICON_SIZE,
-                    ClientHelper.BUTTON_ICON_SIZE));
+            final JButton runButton = new JButton("Run TCK",
+                    new TckIcon(ClientHelper.BUTTON_ICON_SIZE, ClientHelper.BUTTON_ICON_SIZE));
             runButton.setDefaultCapable(true);
             runButton.addActionListener(new ActionListener() {
                 @Override
                 public void actionPerformed(ActionEvent event) {
-                    int answer = JOptionPane
-                            .showConfirmDialog(
-                            		TckSelectDialog.this,
-                                    "Running the TCK may take a long time and may add, remove and alter data in the repository!\n"
-                                            + "It also puts at a strain on the repository, performing several thousand calls!\n"
-                                            + "\nAre you sure you want to proceed?", "TCK", JOptionPane.YES_NO_OPTION,
-                                    JOptionPane.WARNING_MESSAGE);
+                    int answer = JOptionPane.showConfirmDialog(TckSelectDialog.this,
+                            "Running the TCK may take a long time and may add, remove and alter data in the repository!\n"
+                                    + "It also puts at a strain on the repository, performing several thousand calls!\n"
+                                    + "\nAre you sure you want to proceed?",
+                            "TCK", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
 
                     if (answer == JOptionPane.YES_OPTION) {
                         Map<String, String> parameters = runner.getParameters();
@@ -614,10 +612,10 @@
 
     private static class TckDialogRunner extends AbstractRunner {
         public TckDialogRunner(ClientModel model, TckDialog tckDialog) {
-            Map<String, String> parameters = new HashMap<String, String>(model.getClientSession()
-                    .getSessionParameters());
-            parameters.put(SessionParameter.REPOSITORY_ID, model.getClientSession().getSession().getRepositoryInfo()
-                    .getId());
+            Map<String, String> parameters = new HashMap<String, String>(
+                    model.getClientSession().getSessionParameters());
+            parameters.put(SessionParameter.REPOSITORY_ID,
+                    model.getClientSession().getSession().getRepositoryInfo().getId());
 
             setParameters(parameters);
         }
@@ -728,8 +726,8 @@
             } catch (InterruptedException ie) {
                 runner.cancel();
             } catch (Exception e) {
-                JOptionPane
-                        .showMessageDialog(owner, "Error: " + e.getMessage(), "TCK Error", JOptionPane.ERROR_MESSAGE);
+                JOptionPane.showMessageDialog(owner, "Error: " + e.getMessage(), "TCK Error",
+                        JOptionPane.ERROR_MESSAGE);
             }
 
             return null;
diff --git a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/worker/DeleteWorker.java b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/worker/DeleteWorker.java
index 0027af5..fc219d7 100644
--- a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/worker/DeleteWorker.java
+++ b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/worker/DeleteWorker.java
@@ -34,6 +34,7 @@
     private boolean allversions;
     private UnfileObject unfile;
     private boolean continueOnFailure;
+    private boolean deleteTree;
 
     // out
     private List<String> failedIds;
@@ -49,6 +50,7 @@
         this.allversions = allversions;
         this.unfile = UnfileObject.DELETE;
         this.continueOnFailure = true;
+        this.deleteTree = false;
     }
 
     public DeleteWorker(Component comp, Folder folder, boolean allversions, UnfileObject unfile,
@@ -59,6 +61,7 @@
         this.allversions = allversions;
         this.unfile = unfile;
         this.continueOnFailure = continueOnFailure;
+        this.deleteTree = true;
     }
 
     @Override
@@ -73,7 +76,7 @@
 
     @Override
     protected Object doInBackground() throws Exception {
-        if (cmisObject instanceof Folder) {
+        if (cmisObject instanceof Folder && deleteTree) {
             failedIds = ((Folder) cmisObject).deleteTree(allversions, unfile, continueOnFailure);
         } else {
             cmisObject.delete(allversions);