You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2010/10/30 15:00:58 UTC

svn commit: r1029053 - in /incubator/chemistry/opencmis/trunk: chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chem...

Author: fmui
Date: Sat Oct 30 13:00:57 2010
New Revision: 1029053

URL: http://svn.apache.org/viewvc?rev=1029053&view=rev
Log:
- added TCK button to CMIS Workbench

Added:
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java   (with props)
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/tck.png   (with props)
Modified:
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/pom.xml
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java Sat Oct 30 13:00:57 2010
@@ -42,6 +42,7 @@ public abstract class AbstractRunner {
 
     private Map<String, String> parameters;
     private List<CmisTestGroup> groups = new ArrayList<CmisTestGroup>();
+    private boolean isCanceled = false;
 
     // --- parameters ---
 
@@ -113,7 +114,7 @@ public abstract class AbstractRunner {
 
     // --- groups ---
 
-    public void loadDefaultTCKGroups() throws Exception {
+    public void loadDefaultTckGroups() throws Exception {
         loadGroups(this.getClass().getResourceAsStream(DEFAULT_TCK_GROUPS));
     }
 
@@ -206,7 +207,13 @@ public abstract class AbstractRunner {
      * Runs all configured groups.
      */
     public void run(CmisTestProgressMonitor monitor) throws Exception {
+        isCanceled = false;
+
         for (CmisTestGroup group : groups) {
+            if (isCanceled) {
+                break;
+            }
+
             if ((group == null) || (!group.isEnabled())) {
                 continue;
             }
@@ -215,4 +222,12 @@ public abstract class AbstractRunner {
             group.run();
         }
     }
+
+    public synchronized boolean isCanceled() {
+        return isCanceled;
+    }
+
+    public synchronized void cancel() {
+        isCanceled = true;
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java Sat Oct 30 13:00:57 2010
@@ -82,7 +82,7 @@ public class CmisTckAntTask extends Task
             }
 
             if (groups == null) {
-                runner.loadDefaultTCKGroups();
+                runner.loadDefaultTckGroups();
             } else {
                 runner.loadGroups(groups);
             }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java Sat Oct 30 13:00:57 2010
@@ -42,7 +42,7 @@ public class ConsoleRunner extends Abstr
         }
 
         if (args.length < 2) {
-            loadDefaultTCKGroups();
+            loadDefaultTckGroups();
         } else {
             loadGroups(new File(args[1]));
         }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java Sat Oct 30 13:00:57 2010
@@ -31,7 +31,7 @@ public class BasicsTestGroup extends Abs
     public void init(Map<String, String> parameters) throws Exception {
         super.init(parameters);
 
-        setName("Basics");
+        setName("Basics Test Group");
 
         addTest(new RepositoryInfoTest());
         addTest(new RootFolderTest());

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java Sat Oct 30 13:00:57 2010
@@ -39,7 +39,7 @@ public class RepositoryInfoTest extends 
     @Override
     public void init(Map<String, String> parameters) {
         super.init(parameters);
-        setName("Repository Info");
+        setName("Repository Info Test");
     }
 
     @Override

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java Sat Oct 30 13:00:57 2010
@@ -42,7 +42,7 @@ public class TypesTest extends AbstractS
     @Override
     public void init(Map<String, String> parameters) {
         super.init(parameters);
-        setName("Types");
+        setName("Types Test");
     }
 
     @Override

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/pom.xml
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/pom.xml?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/pom.xml (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/pom.xml Sat Oct 30 13:00:57 2010
@@ -191,9 +191,14 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.chemistry.opencmis</groupId>
+            <groupId>${project.groupId}</groupId>
             <artifactId>chemistry-opencmis-client-impl</artifactId>
-            <version>0.2.0-incubating-SNAPSHOT</version>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>chemistry-opencmis-test-tck</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.codehaus.groovy</groupId>

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientFrame.java Sat Oct 30 13:00:57 2010
@@ -68,10 +68,11 @@ public class ClientFrame extends JFrame 
     private static final int BUTTON_QUERY = 3;
     private static final int BUTTON_CHANGELOG = 4;
     private static final int BUTTON_CONSOLE = 5;
-    private static final int BUTTON_CREATE_DOCUMENT = 6;
-    private static final int BUTTON_CREATE_FOLDER = 7;
-    private static final int BUTTON_LOG = 8;
-    private static final int BUTTON_INFO = 9;
+    private static final int BUTTON_TCK = 6;
+    private static final int BUTTON_CREATE_DOCUMENT = 7;
+    private static final int BUTTON_CREATE_FOLDER = 8;
+    private static final int BUTTON_LOG = 9;
+    private static final int BUTTON_INFO = 10;
 
     private static final String PREFS_X = "x";
     private static final String PREFS_Y = "y";
@@ -125,7 +126,7 @@ public class ClientFrame extends JFrame 
 
         toolBar = new JToolBar("CMIS Toolbar", JToolBar.HORIZONTAL);
 
-        toolbarButton = new JButton[10];
+        toolbarButton = new JButton[11];
 
         toolbarButton[BUTTON_CONNECT] = new JButton("Connection", ClientHelper.getIcon("connect.png"));
         toolbarButton[BUTTON_CONNECT].addActionListener(new ActionListener() {
@@ -202,6 +203,16 @@ public class ClientFrame extends JFrame 
             toolbarConsolePopup.add(menuItem);
         }
 
+        toolbarButton[BUTTON_TCK] = new JButton("TCK", ClientHelper.getIcon("tck.png"));
+        toolbarButton[BUTTON_TCK].setEnabled(false);
+        toolbarButton[BUTTON_TCK].addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                new TckDialog(thisFrame, model);
+            }
+        });
+
+        toolBar.add(toolbarButton[BUTTON_TCK]);
+
         toolBar.addSeparator();
 
         toolbarButton[BUTTON_CREATE_DOCUMENT] = new JButton("Create Document", ClientHelper.getIcon("newdocument.png"));
@@ -290,6 +301,7 @@ public class ClientFrame extends JFrame 
                 toolbarButton[BUTTON_QUERY].setEnabled(model.supportsQuery());
                 toolbarButton[BUTTON_CHANGELOG].setEnabled(model.supportsChangeLog());
                 toolbarButton[BUTTON_CONSOLE].setEnabled(true);
+                toolbarButton[BUTTON_TCK].setEnabled(true);
                 toolbarButton[BUTTON_CREATE_DOCUMENT].setEnabled(true);
                 toolbarButton[BUTTON_CREATE_FOLDER].setEnabled(true);
 
@@ -300,6 +312,7 @@ public class ClientFrame extends JFrame 
                 toolbarButton[BUTTON_QUERY].setEnabled(false);
                 toolbarButton[BUTTON_CHANGELOG].setEnabled(false);
                 toolbarButton[BUTTON_CONSOLE].setEnabled(false);
+                toolbarButton[BUTTON_TCK].setEnabled(false);
                 toolbarButton[BUTTON_CREATE_DOCUMENT].setEnabled(false);
                 toolbarButton[BUTTON_CREATE_FOLDER].setEnabled(false);
 

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java?rev=1029053&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java Sat Oct 30 13:00:57 2010
@@ -0,0 +1,313 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.workbench;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Desktop;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JTree;
+import javax.swing.SwingWorker;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.tck.CmisTest;
+import org.apache.chemistry.opencmis.tck.CmisTestGroup;
+import org.apache.chemistry.opencmis.tck.CmisTestProgressMonitor;
+import org.apache.chemistry.opencmis.tck.report.HtmlReport;
+import org.apache.chemistry.opencmis.tck.runner.AbstractRunner;
+import org.apache.chemistry.opencmis.workbench.model.ClientModel;
+
+/**
+ * TCK dialog and runner.
+ */
+public class TckDialog {
+
+    private Frame owner;
+    private TckDialogRunner runner;
+
+    private JProgressBar groupsProgressBar;
+    private JProgressBar testsProgressBar;
+
+    public TckDialog(Frame owner, ClientModel model) {
+        this.owner = owner;
+        this.runner = new TckDialogRunner(model);
+
+        try {
+            runner.loadDefaultTckGroups();
+        } catch (Exception e) {
+            JOptionPane.showMessageDialog(owner, "Error: " + e.getMessage(), "TCK Error", JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+
+        JOptionPane.showMessageDialog(owner, "The TCK is brand new and incomplete. Don't trust the results, yet!",
+                "TCK Warning", JOptionPane.WARNING_MESSAGE);
+
+        new TckSelectDialog();
+    }
+
+    private class TckSelectDialog extends JDialog {
+
+        private static final long serialVersionUID = 1L;
+
+        public TckSelectDialog() {
+            super(owner, "TCK", true);
+
+            createGUI();
+        }
+
+        private void createGUI() {
+            setPreferredSize(new Dimension(300, 500));
+            setMinimumSize(new Dimension(300, 500));
+
+            setLayout(new BorderLayout());
+
+            DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Groups");
+
+            for (CmisTestGroup group : runner.getGroups()) {
+                DefaultMutableTreeNode groupNode = new DefaultMutableTreeNode(group.getName());
+                rootNode.add(groupNode);
+                for (CmisTest test : group.getTests()) {
+                    DefaultMutableTreeNode testNode = new DefaultMutableTreeNode(test.getName());
+                    groupNode.add(testNode);
+                }
+            }
+
+            JTree groupTree = new JTree(rootNode);
+            groupTree.setRootVisible(false);
+
+            for (int i = 0; i < groupTree.getRowCount(); i++) {
+                groupTree.expandRow(i);
+            }
+
+            add(groupTree, BorderLayout.CENTER);
+
+            JButton runButton = new JButton("Run TCK");
+            runButton.setDefaultCapable(true);
+            runButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent event) {
+                    int answer = JOptionPane.showConfirmDialog(owner,
+                            "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 hundred calls!\n"
+                                    + "\nAre you sure you want to proceed?", "TCK", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);
+
+                    if (answer == JOptionPane.YES_OPTION) {
+                        dispose();
+                        new TckRunDialog();
+                    }
+                }
+            });
+
+            add(runButton, BorderLayout.PAGE_END);
+
+            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+            pack();
+            setLocationRelativeTo(null);
+            setVisible(true);
+        }
+    }
+
+    private class TckRunDialog extends JDialog {
+
+        private static final long serialVersionUID = 1L;
+
+        private TckTask task;
+
+        public TckRunDialog() {
+            super(owner, "TCK");
+
+            createGUI();
+
+            task = new TckTask(this, runner);
+            task.execute();
+        }
+
+        private void createGUI() {
+            setPreferredSize(new Dimension(500, 200));
+            setMinimumSize(new Dimension(500, 200));
+
+            setLayout(new BorderLayout());
+
+            JPanel progressPanel = new JPanel();
+            progressPanel.setLayout(new BoxLayout(progressPanel, BoxLayout.Y_AXIS));
+            progressPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+            progressPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+            JLabel groupsLabel = new JLabel("Groups:");
+            groupsLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
+            progressPanel.add(groupsLabel);
+
+            groupsProgressBar = new JProgressBar();
+            groupsProgressBar.setMinimumSize(new Dimension(500, 30));
+            groupsProgressBar.setPreferredSize(new Dimension(500, 30));
+            groupsProgressBar.setMaximumSize(new Dimension(Short.MAX_VALUE, 30));
+            groupsProgressBar.setAlignmentX(Component.LEFT_ALIGNMENT);
+            groupsProgressBar.setAlignmentY(Component.CENTER_ALIGNMENT);
+            progressPanel.add(groupsProgressBar);
+
+            progressPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+            JLabel testsLabel = new JLabel("Tests:");
+            testsLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
+            progressPanel.add(testsLabel);
+
+            testsProgressBar = new JProgressBar();
+            testsProgressBar.setMinimumSize(new Dimension(500, 30));
+            testsProgressBar.setPreferredSize(new Dimension(500, 30));
+            testsProgressBar.setMaximumSize(new Dimension(Short.MAX_VALUE, 30));
+            testsProgressBar.setAlignmentX(Component.LEFT_ALIGNMENT);
+            testsProgressBar.setAlignmentY(Component.CENTER_ALIGNMENT);
+            progressPanel.add(testsProgressBar);
+
+            progressPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+
+            add(progressPanel, BorderLayout.CENTER);
+
+            JButton cancelButton = new JButton("Cancel");
+            cancelButton.setDefaultCapable(true);
+            cancelButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent event) {
+                    task.cancel(true);
+                }
+            });
+
+            add(cancelButton, BorderLayout.PAGE_END);
+
+            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+            pack();
+            setLocationRelativeTo(null);
+            setVisible(true);
+        }
+    }
+
+    private class TckDialogRunner extends AbstractRunner {
+        public TckDialogRunner(ClientModel model) {
+            Map<String, String> parameters = new HashMap<String, String>(model.getClientSession()
+                    .getSessionParameters());
+            parameters.put(SessionParameter.REPOSITORY_ID, model.getClientSession().getSession().getRepositoryInfo()
+                    .getId());
+
+            setParameters(parameters);
+        }
+    }
+
+    private class DialogProgressMonitor implements CmisTestProgressMonitor {
+
+        public DialogProgressMonitor(int numberOfGroups) {
+            groupsProgressBar.setStringPainted(true);
+            groupsProgressBar.setMinimum(0);
+            groupsProgressBar.setMaximum(numberOfGroups);
+            groupsProgressBar.setValue(0);
+        }
+
+        public void startGroup(CmisTestGroup group) {
+            groupsProgressBar.setString(group.getName());
+
+            testsProgressBar.setStringPainted(true);
+            testsProgressBar.setMinimum(0);
+            testsProgressBar.setMaximum(group.getTests().size());
+            testsProgressBar.setValue(0);
+        }
+
+        public void endGroup(CmisTestGroup group) {
+            groupsProgressBar.setString("");
+            groupsProgressBar.setValue(testsProgressBar.getValue() + 1);
+        }
+
+        public void startTest(CmisTest test) {
+            testsProgressBar.setString(test.getName());
+        }
+
+        public void endTest(CmisTest test) {
+            testsProgressBar.setString("");
+            testsProgressBar.setValue(testsProgressBar.getValue() + 1);
+        }
+
+        public void message(String msg) {
+        }
+    }
+
+    class TckTask extends SwingWorker<Void, Void> {
+        private JDialog dialog;
+        private TckDialogRunner runner;
+
+        public TckTask(JDialog dialog, TckDialogRunner runner) {
+            this.dialog = dialog;
+            this.runner = runner;
+        }
+
+        @Override
+        public Void doInBackground() {
+            try {
+                runner.run(new DialogProgressMonitor(runner.getGroups().size()));
+            } catch (InterruptedException ie) {
+                runner.cancel();
+            } catch (Exception e) {
+                JOptionPane
+                        .showMessageDialog(owner, "Error: " + e.getMessage(), "TCK Error", JOptionPane.ERROR_MESSAGE);
+            }
+
+            return null;
+        }
+
+        @Override
+        public void done() {
+            try {
+                // create report
+                File tempReportFile = File.createTempFile("cmistck", ".html");
+                tempReportFile.deleteOnExit();
+
+                HtmlReport report = new HtmlReport();
+                report.createReport(runner.getParameters(), runner.getGroups(), tempReportFile);
+
+                // show report
+                Desktop desktop = Desktop.getDesktop();
+                if (!desktop.isSupported(Desktop.Action.OPEN)) {
+                    JOptionPane.showMessageDialog(owner, "Report: " + tempReportFile.getAbsolutePath(), "Report",
+                            JOptionPane.INFORMATION_MESSAGE);
+                } else {
+                    desktop.open(tempReportFile);
+                }
+            } catch (Exception e) {
+                JOptionPane.showMessageDialog(owner, "Error: " + e.getMessage(), "Report Error",
+                        JOptionPane.ERROR_MESSAGE);
+            } finally {
+                dialog.dispose();
+            }
+        }
+    }
+}

Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java?rev=1029053&r1=1029052&r2=1029053&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java Sat Oct 30 13:00:57 2010
@@ -20,6 +20,7 @@ package org.apache.chemistry.opencmis.wo
 
 import java.net.Authenticator;
 import java.security.cert.X509Certificate;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -157,6 +158,10 @@ public class ClientSession {
         return session;
     }
 
+    public Map<String, String> getSessionParameters() {
+        return Collections.unmodifiableMap(sessionParameters);
+    }
+
     public OperationContext getObjectOperationContext() {
         return objectOperationContext;
     }

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/tck.png
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/tck.png?rev=1029053&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/resources/images/tck.png
------------------------------------------------------------------------------
    svn:mime-type = image/png