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/27 17:43:25 UTC
svn commit: r1028010 [2/2] - in /incubator/chemistry/opencmis/trunk:
chemistry-opencmis-test/chemistry-opencmis-test-tck/
chemistry-opencmis-test/chemistry-opencmis-test-tck/src/
chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/ chemistry-o...
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/report/XmlReport.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/report/XmlReport.java?rev=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/report/XmlReport.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/report/XmlReport.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,129 @@
+/*
+ * 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.tck.report;
+
+import java.io.Writer;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.chemistry.opencmis.tck.CmisTest;
+import org.apache.chemistry.opencmis.tck.CmisTestGroup;
+import org.apache.chemistry.opencmis.tck.CmisTestResult;
+
+/**
+ * XML Report.
+ */
+public class XmlReport extends AbstractCmisTestReport {
+ private static final String TAG_REPORT = "report";
+ private static final String TAG_PARAMETERS = "parameters";
+ private static final String TAG_PARAMETER = "parameter";
+ private static final String TAG_GROUP = "group";
+ private static final String TAG_TEST = "test";
+ private static final String TAG_RESULT = "result";
+
+ private static final String ATTR_KEY = "key";
+ private static final String ATTR_VALUE = "value";
+ private static final String ATTR_NAME = "name";
+ private static final String ATTR_TIME = "time";
+ private static final String ATTR_STATUS = "status";
+ private static final String ATTR_MESSAGE = "message";
+
+ public XmlReport() {
+ }
+
+ @Override
+ public void createReport(Map<String, String> parameters, List<CmisTestGroup> groups, Writer writer)
+ throws Exception {
+ XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ XMLStreamWriter xml = factory.createXMLStreamWriter(writer);
+
+ // start doc
+ xml.writeStartDocument();
+
+ xml.writeStartElement(TAG_REPORT);
+
+ if (parameters != null) {
+ xml.writeStartElement(TAG_PARAMETERS);
+
+ for (Map.Entry<String, String> p : (new TreeMap<String, String>(parameters)).entrySet()) {
+ xml.writeStartElement(TAG_PARAMETER);
+ xml.writeAttribute(ATTR_KEY, p.getKey());
+ xml.writeAttribute(ATTR_VALUE, p.getValue());
+ xml.writeEndElement();
+ }
+
+ xml.writeEndElement();
+ }
+
+ if (groups != null) {
+ for (CmisTestGroup group : groups) {
+ printGroupResults(group, xml);
+ }
+ }
+
+ xml.writeEndElement();
+
+ // end document
+ xml.writeEndDocument();
+ xml.flush();
+ }
+
+ private void printGroupResults(CmisTestGroup group, XMLStreamWriter xml) throws Exception {
+ xml.writeStartElement(TAG_GROUP);
+ xml.writeAttribute(ATTR_NAME, group.getName());
+
+ if (group.getTests() != null) {
+ for (CmisTest test : group.getTests()) {
+ printTestResults(test, xml);
+ }
+ }
+
+ xml.writeEndElement();
+ }
+
+ private void printTestResults(CmisTest test, XMLStreamWriter xml) throws Exception {
+ xml.writeStartElement(TAG_TEST);
+ xml.writeAttribute(ATTR_NAME, test.getName());
+ xml.writeAttribute(ATTR_TIME, "" + test.getTime());
+
+ if (test.getResults() != null) {
+ for (CmisTestResult result : test.getResults()) {
+ printResult(result, xml);
+ }
+ }
+
+ xml.writeEndElement();
+ }
+
+ private void printResult(CmisTestResult result, XMLStreamWriter xml) throws Exception {
+ xml.writeStartElement(TAG_RESULT);
+ xml.writeAttribute(ATTR_STATUS, result.getStatus().toString());
+ xml.writeAttribute(ATTR_MESSAGE, result.getMessage());
+
+ for (CmisTestResult child : result.getChildren()) {
+ printResult(child, xml);
+ }
+
+ xml.writeEndElement();
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/report/XmlReport.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,218 @@
+/*
+ * 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.tck.runner;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+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.impl.WrapperCmisTestGroup;
+
+/**
+ * Base class for runners.
+ */
+public abstract class AbstractRunner {
+ public static final String OVERRIDE_KEY = "org.apache.chemistry";
+ public static final String DEFAULT_TCK_GROUPS = "/cmis-tck-groups.txt";
+
+ private Map<String, String> parameters;
+ private List<CmisTestGroup> groups = new ArrayList<CmisTestGroup>();
+
+ // --- parameters ---
+
+ public void setParameters(Map<String, String> orgParameters) {
+ this.parameters = new HashMap<String, String>();
+ if (orgParameters != null) {
+ this.parameters.putAll(orgParameters);
+ }
+
+ // override with system properties
+ for (String key : System.getProperties().stringPropertyNames()) {
+ if (!key.startsWith(OVERRIDE_KEY)) {
+ continue;
+ }
+
+ parameters.put(key, System.getProperties().getProperty(key));
+ }
+
+ }
+
+ public void loadParameters(File file) throws Exception {
+ if ((file == null) || (!file.isFile())) {
+ throw new IllegalArgumentException("File not found!");
+ }
+
+ loadParameters(new FileInputStream(file));
+ }
+
+ public void loadParameters(InputStream stream) throws Exception {
+ if (stream == null) {
+ throw new IllegalArgumentException("Stream is null!");
+ }
+
+ BufferedReader reader = null;
+ Map<String, String> loadParams = new HashMap<String, String>();
+
+ try {
+ reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
+
+ String line;
+ while ((line = reader.readLine()) != null) {
+ line = line.trim();
+ if (line.startsWith("#") || (line.length() == 0)) {
+ continue;
+ }
+
+ int x = line.indexOf('=');
+ if (x < 0) {
+ loadParams.put(line.trim(), "");
+ } else {
+ loadParams.put(line.substring(0, x).trim(), line.substring(x + 1).trim());
+ }
+ }
+
+ setParameters(loadParams);
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (Exception e) {
+ }
+ }
+ }
+ }
+
+ public Map<String, String> getParameters() {
+ return parameters;
+ }
+
+ // --- groups ---
+
+ public void loadDefaultTCKGroups() throws Exception {
+ loadGroups(this.getClass().getResourceAsStream(DEFAULT_TCK_GROUPS));
+ }
+
+ public void loadGroups(File file) throws Exception {
+ if ((file == null) || (!file.isFile())) {
+ throw new IllegalArgumentException("File not found!");
+ }
+
+ loadGroups(new FileInputStream(file));
+ }
+
+ public void loadGroups(InputStream stream) throws Exception {
+ if (stream == null) {
+ throw new IllegalArgumentException("Stream is null!");
+ }
+
+ BufferedReader reader = null;
+
+ try {
+ reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
+
+ String line;
+ while ((line = reader.readLine()) != null) {
+ line = line.trim();
+ if (line.startsWith("#") || (line.length() == 0)) {
+ continue;
+ }
+
+ addGroup(line);
+ }
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (Exception e) {
+ }
+ }
+ }
+ }
+
+ public void addGroups(String[] groupClasses) throws Exception {
+ if (groupClasses == null) {
+ return;
+ }
+
+ for (String groupClass : groupClasses) {
+ addGroup(groupClass);
+ }
+ }
+
+ public void addGroup(String groupClass) throws Exception {
+ if (groupClass == null) {
+ return;
+ }
+
+ groupClass = groupClass.trim();
+ if (groupClass.length() == 0) {
+ return;
+ }
+
+ Class<?> clazz = Class.forName(groupClass);
+ Object o = clazz.newInstance();
+ CmisTestGroup group = null;
+
+ if (o instanceof CmisTestGroup) {
+ group = (CmisTestGroup) o;
+ } else if (o instanceof CmisTest) {
+ group = new WrapperCmisTestGroup((CmisTest) o);
+ } else {
+ throw new Exception("Not a CmisTestGroup or CmisTest class!");
+ }
+
+ group.init(parameters);
+ addGroup(group);
+ }
+
+ public void addGroup(CmisTestGroup group) {
+ if (group != null) {
+ groups.add(group);
+ }
+ }
+
+ public List<CmisTestGroup> getGroups() {
+ return groups;
+ }
+
+ // --- run ---
+
+ /**
+ * Runs all configured groups.
+ */
+ public void run(CmisTestProgressMonitor monitor) throws Exception {
+ for (CmisTestGroup group : groups) {
+ if ((group == null) || (!group.isEnabled())) {
+ continue;
+ }
+
+ group.setProgressMonitor(monitor);
+ group.run();
+ }
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/AbstractRunner.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,151 @@
+/*
+ * 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.tck.runner;
+
+import java.io.File;
+
+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.CmisTestReport;
+import org.apache.chemistry.opencmis.tck.report.HtmlReport;
+import org.apache.chemistry.opencmis.tck.report.TextReport;
+import org.apache.chemistry.opencmis.tck.report.XmlReport;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ * CMIS TCK Ant Task.
+ */
+public class CmisTckAntTask extends Task {
+ private final static String REPORT_TEXT = "text";
+ private final static String REPORT_XML = "xml";
+ private final static String REPORT_HTML = "html";
+
+ private final static String DEFAULT_REPORT_NAME = "cmis-tck-report";
+
+ private File parameters;
+ private File groups;
+ private File output;
+ private String format;
+
+ @Override
+ public void init() throws BuildException {
+ super.init();
+ parameters = null;
+ groups = null;
+ output = null;
+ format = REPORT_TEXT;
+ }
+
+ public void setParameters(File parameters) {
+ this.parameters = parameters;
+ }
+
+ public void setGroups(File groups) {
+ this.groups = groups;
+ }
+
+ public void setOutput(File output) {
+ this.output = output;
+ }
+
+ public void setFormat(String format) {
+ this.format = format;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ try {
+ AntRunner runner = new AntRunner();
+
+ if (parameters == null) {
+ runner.setParameters(null);
+ } else {
+ runner.loadParameters(parameters);
+ }
+
+ if (groups == null) {
+ runner.loadDefaultTCKGroups();
+ } else {
+ runner.loadGroups(groups);
+ }
+
+ CmisTestReport report = null;
+
+ if (format == null) {
+ report = new TextReport();
+ if (output == null) {
+ output = new File(DEFAULT_REPORT_NAME + ".txt");
+ }
+ } else {
+ format = format.trim().toLowerCase();
+ if (REPORT_TEXT.equals(format)) {
+ report = new TextReport();
+ if (output == null) {
+ output = new File(DEFAULT_REPORT_NAME + ".txt");
+ }
+ } else if (REPORT_XML.equals(format)) {
+ report = new XmlReport();
+ if (output == null) {
+ output = new File(DEFAULT_REPORT_NAME + ".xml");
+ }
+ } else if (REPORT_HTML.equals(format)) {
+ report = new HtmlReport();
+ if (output == null) {
+ output = new File(DEFAULT_REPORT_NAME + ".html");
+ }
+ } else {
+ throw new Exception("Unknown format!");
+ }
+ }
+
+ runner.run(new AntProgressMonitor());
+
+ log("CMIS TCK Report: " + output.getAbsolutePath());
+ report.createReport(runner.getParameters(), runner.getGroups(), output);
+ } catch (Exception e) {
+ throw new BuildException("OpenCMIS TCK run failed!", e);
+ }
+ }
+
+ private class AntRunner extends AbstractRunner {
+
+ }
+
+ private class AntProgressMonitor implements CmisTestProgressMonitor {
+ public void startGroup(CmisTestGroup group) {
+ log(group.getName() + " (" + group.getTests().size() + " tests)");
+ }
+
+ public void endGroup(CmisTestGroup group) {
+ }
+
+ public void startTest(CmisTest test) {
+ log(" " + test.getName());
+ }
+
+ public void endTest(CmisTest test) {
+ }
+
+ public void message(String msg) {
+ log(msg);
+ }
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,80 @@
+/*
+ * 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.tck.runner;
+
+import java.io.File;
+import java.io.PrintWriter;
+
+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.CmisTestReport;
+import org.apache.chemistry.opencmis.tck.report.TextReport;
+
+/**
+ * Console Runner.
+ *
+ * This runner can be started for a console and accepts two parameters: OpenCMIS
+ * Session parameters file name and group list file name.
+ */
+public class ConsoleRunner extends AbstractRunner {
+ public ConsoleRunner(String[] args) throws Exception {
+ if (args.length < 1) {
+ setParameters(null);
+ } else {
+ loadParameters(new File(args[0]));
+ }
+
+ if (args.length < 2) {
+ loadDefaultTCKGroups();
+ } else {
+ loadGroups(new File(args[1]));
+ }
+
+ run(new ConsoleProgressMonitor());
+
+ CmisTestReport report = new TextReport();
+ report.createReport(getParameters(), getGroups(), new PrintWriter(System.out));
+ }
+
+ private static class ConsoleProgressMonitor implements CmisTestProgressMonitor {
+ public void startGroup(CmisTestGroup group) {
+ System.out.println(group.getName() + " (" + group.getTests().size() + " tests)");
+ }
+
+ public void endGroup(CmisTestGroup group) {
+ System.out.println();
+ }
+
+ public void startTest(CmisTest test) {
+ System.out.print(".");
+ }
+
+ public void endTest(CmisTest test) {
+ }
+
+ public void message(String msg) {
+ System.out.println(msg);
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ new ConsoleRunner(args);
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/ConsoleRunner.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,40 @@
+/*
+ * 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.tck.tests.basics;
+
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTestGroup;
+
+/**
+ * This test group contains tests that check the CMIS basics such the repository
+ * info or types.
+ */
+public class BasicsTestGroup extends AbstractSessionTestGroup {
+ @Override
+ public void init(Map<String, String> parameters) throws Exception {
+ super.init(parameters);
+
+ setName("Basics");
+
+ addTest(new RepositoryInfoTest());
+ addTest(new RootFolderTest());
+ addTest(new TypesTest());
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,266 @@
+/*
+ * 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.tck.tests.basics;
+
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.OK;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
+
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.commons.data.AclCapabilities;
+import org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.definitions.PermissionDefinition;
+import org.apache.chemistry.opencmis.tck.CmisTestResult;
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
+
+/**
+ * Repository info test.
+ */
+public class RepositoryInfoTest extends AbstractSessionTest {
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Repository Info");
+ }
+
+ @Override
+ public void run(Session session) {
+ CmisTestResult success;
+ CmisTestResult failure;
+
+ RepositoryInfo ri = getRepositoryInfo(session);
+
+ // id
+ success = createResult(OK, "Repository id: " + ri.getId());
+ failure = createResult(FAILURE, "Repository id is not set!", true);
+ addResult(assertStringNotEmpty(ri.getId(), success, failure));
+
+ // name
+ failure = createResult(FAILURE, "Repository name is not set!");
+ addResult(assertNotNull(ri.getName(), null, failure));
+
+ success = createResult(OK, "Repository name: " + ri.getName());
+ failure = createResult(WARNING, "Repository name is empty!");
+ addResult(assertStringNotEmpty(ri.getName(), success, failure));
+
+ // description
+ failure = createResult(FAILURE, "Repository description is not set!");
+ addResult(assertNotNull(ri.getDescription(), null, failure));
+
+ success = createResult(OK, "Repository description: " + ri.getDescription());
+ failure = createResult(WARNING, "Repository description is empty!");
+ addResult(assertStringNotEmpty(ri.getDescription(), success, failure));
+
+ // vendor
+ failure = createResult(FAILURE, "Vendor name is not set!");
+ addResult(assertStringNotEmpty(ri.getVendorName(), null, failure));
+
+ success = createResult(OK, "Vendor name: " + ri.getVendorName());
+ failure = createResult(WARNING, "Vendor name is empty!");
+ addResult(assertStringNotEmpty(ri.getVendorName(), success, failure));
+
+ // product name
+ failure = createResult(FAILURE, "Product name is not set!");
+ addResult(assertStringNotEmpty(ri.getProductName(), null, failure));
+
+ success = createResult(OK, "Product name: " + ri.getProductName());
+ failure = createResult(WARNING, "Product name is empty!");
+ addResult(assertStringNotEmpty(ri.getProductName(), success, failure));
+
+ // product version
+ failure = createResult(FAILURE, "Product version is not set!");
+ addResult(assertStringNotEmpty(ri.getProductVersion(), null, failure));
+
+ success = createResult(OK, "Product version: " + ri.getProductVersion());
+ failure = createResult(WARNING, "Product version is empty!");
+ addResult(assertStringNotEmpty(ri.getProductVersion(), success, failure));
+
+ // CMIS version supported
+ success = createResult(OK, "CMIS Version Supported: " + ri.getCmisVersionSupported());
+ failure = createResult(FAILURE, "CMIS Version Supported is not set!");
+ addResult(assertStringNotEmpty(ri.getCmisVersionSupported(), success, failure));
+
+ failure = createResult(FAILURE, "CMIS Version Supported is not '1.0'!");
+ addResult(assertEquals("1.0", ri.getCmisVersionSupported(), null, failure));
+
+ // root folder
+ success = createResult(OK, "Root folder id: " + ri.getRootFolderId());
+ failure = createResult(FAILURE, "Root folder id is not set!");
+ addResult(assertStringNotEmpty(ri.getRootFolderId(), success, failure));
+
+ // thin client uri
+ success = createResult(OK, "Thin client URI: " + ri.getThinClientUri());
+ failure = createResult(WARNING, "Thin client URI is not set!");
+ addResult(assertStringNotEmpty(ri.getThinClientUri(), success, failure));
+
+ // principal id anonymous
+ success = createResult(OK, "Principal Id anonymous: " + ri.getPrincipalIdAnonymous());
+ failure = createResult(WARNING, "Principal Id anonymous is not set!");
+ addResult(assertStringNotEmpty(ri.getPrincipalIdAnonymous(), success, failure));
+
+ // principal id anyone
+ success = createResult(OK, "Principal Id anyone: " + ri.getPrincipalIdAnyone());
+ failure = createResult(WARNING, "Principal Id anyone is not set!");
+ addResult(assertStringNotEmpty(ri.getPrincipalIdAnyone(), success, failure));
+
+ // latest change log token
+ success = createResult(OK, "Latest change log token: " + ri.getLatestChangeLogToken());
+ failure = createResult(WARNING, "Latest change log token is not set!");
+ addResult(assertStringNotEmpty(ri.getLatestChangeLogToken(), success, failure));
+
+ // changes incomplete
+ success = createResult(OK, "Changes Incomplete: " + ri.getChangesIncomplete());
+ failure = createResult(WARNING, "Changes Incomplete is not set!");
+ addResult(assertNotNull(ri.getChangesIncomplete(), success, failure));
+
+ // changes on type
+ success = createResult(OK, "Changes on type: " + ri.getChangesOnType());
+ failure = createResult(WARNING, "Changes on type is not set!");
+ addResult(assertNotNull(ri.getChangesOnType(), success, failure));
+
+ if (ri.getChangesOnType() != null) {
+ failure = createResult(WARNING, "Changes on type has more than 4 entries!");
+ addResult(assertIsTrue(ri.getChangesOnType().size() < 5, null, failure));
+ }
+
+ // capabilities
+ if (ri.getCapabilities() == null) {
+ addResult(createResult(FAILURE, "Capabilities are not set!"));
+ } else {
+ RepositoryCapabilities cap = ri.getCapabilities();
+
+ // ACL capability
+ success = createResult(OK, "ACL capability: " + cap.getAclCapability());
+ failure = createResult(FAILURE, "ACL capability is not set!");
+ addResult(assertNotNull(cap.getAclCapability(), success, failure));
+
+ // changes capability
+ success = createResult(OK, "Changes capability: " + cap.getChangesCapability());
+ failure = createResult(WARNING, "Changes capability is not set!");
+ addResult(assertNotNull(cap.getChangesCapability(), success, failure));
+
+ // content stream updates capability
+ success = createResult(OK, "Content stream updates capability: " + cap.getContentStreamUpdatesCapability());
+ failure = createResult(FAILURE, "Content stream updates is not set!");
+ addResult(assertNotNull(cap.getContentStreamUpdatesCapability(), success, failure));
+
+ // get descendants capability
+ success = createResult(OK, "Get descendants capability: " + cap.isGetDescendantsSupported());
+ failure = createResult(FAILURE, "Get descendants capability is not set!");
+ addResult(assertNotNull(cap.isGetDescendantsSupported(), success, failure));
+
+ // get folder tree capability
+ success = createResult(OK, "Get folder tree capability: " + cap.isGetFolderTreeSupported());
+ failure = createResult(FAILURE, "Get folder tree capability is not set!");
+ addResult(assertNotNull(cap.isGetFolderTreeSupported(), success, failure));
+
+ // multifiling capability
+ success = createResult(OK, "Multifiling capability: " + cap.isMultifilingSupported());
+ failure = createResult(FAILURE, "Multifiling capability is not set!");
+ addResult(assertNotNull(cap.isMultifilingSupported(), success, failure));
+
+ // unfiling capability
+ success = createResult(OK, "Unfiling capability: " + cap.isUnfilingSupported());
+ failure = createResult(FAILURE, "Unfiling capability is not set!");
+ addResult(assertNotNull(cap.isUnfilingSupported(), success, failure));
+
+ // version specific filing capability
+ success = createResult(OK, "Version specific filing capability: " + cap.isVersionSpecificFilingSupported());
+ failure = createResult(FAILURE, "Version specific filing capability is not set!");
+ addResult(assertNotNull(cap.isVersionSpecificFilingSupported(), success, failure));
+
+ // query capability
+ success = createResult(OK, "Query capability: " + cap.getQueryCapability());
+ failure = createResult(FAILURE, "Query capability is not set!");
+ addResult(assertNotNull(cap.getQueryCapability(), success, failure));
+
+ // JOIN capability
+ success = createResult(OK, "JOIN capability: " + cap.getJoinCapability());
+ failure = createResult(FAILURE, "JOIN capability is not set!");
+ addResult(assertNotNull(cap.getJoinCapability(), success, failure));
+
+ // all versions searchable capability
+ success = createResult(OK, "All versions searchable capability: " + cap.isAllVersionsSearchableSupported());
+ failure = createResult(FAILURE, "All versions searchable capability is not set!");
+ addResult(assertNotNull(cap.isAllVersionsSearchableSupported(), success, failure));
+
+ // PWC searchable capability
+ success = createResult(OK, "PWC searchable capability: " + cap.isPwcSearchableSupported());
+ failure = createResult(FAILURE, "PWC searchable capability is not set!");
+ addResult(assertNotNull(cap.isPwcSearchableSupported(), success, failure));
+
+ // PWC updatable capability
+ success = createResult(OK, "PWC updatable capability: " + cap.isPwcUpdatableSupported());
+ failure = createResult(FAILURE, "PWC updatable capability is not set!");
+ addResult(assertNotNull(cap.isPwcUpdatableSupported(), success, failure));
+
+ // renditions capability
+ success = createResult(OK, "Renditions capability: " + cap.getRenditionsCapability());
+ failure = createResult(FAILURE, "Renditions capability is not set!");
+ addResult(assertNotNull(cap.getRenditionsCapability(), success, failure));
+ }
+
+ // ACL capabilities
+ if (ri.getAclCapabilities() == null) {
+ addResult(createResult(WARNING, "ACL capabilities are not set!"));
+ } else {
+ AclCapabilities aclCap = ri.getAclCapabilities();
+
+ // supported permissions
+ success = createResult(OK, "Supported permissions: " + aclCap.getSupportedPermissions());
+ failure = createResult(WARNING, "Supported permissions are not set!");
+ addResult(assertNotNull(aclCap.getSupportedPermissions(), success, failure));
+
+ // ACL propagation
+ success = createResult(OK, "ACL propagation: " + aclCap.getAclPropagation());
+ failure = createResult(WARNING, "ACL propagation is not set!");
+ addResult(assertNotNull(aclCap.getAclPropagation(), success, failure));
+
+ // permissions
+ success = createResult(OK, "Permissions: "
+ + (aclCap.getPermissions() == null ? "?" : aclCap.getPermissions().size()));
+ failure = createResult(FAILURE, "Permissions are not set!");
+ addResult(assertNotNull(aclCap.getPermissions(), success, failure));
+
+ if (aclCap.getPermissions() != null) {
+ int i = 0;
+ for (PermissionDefinition permDef : aclCap.getPermissions()) {
+ failure = createResult(FAILURE, "Permission #" + i + " is not set!");
+ addResult(assertNotNull(permDef, null, failure));
+
+ if (permDef != null) {
+ failure = createResult(FAILURE, "Id of permission #" + i + " is not set!");
+ addResult(assertStringNotEmpty(permDef.getId(), null, failure));
+ }
+
+ i++;
+ }
+ }
+
+ // permission mapping
+ success = createResult(OK, "Permission mapping: "
+ + (aclCap.getPermissionMapping() == null ? "?" : aclCap.getPermissionMapping().size()));
+ failure = createResult(WARNING, "Permission mapping is not set!");
+ addResult(assertNotNull(aclCap.getPermissionMapping(), success, failure));
+ }
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.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/RootFolderTest.java?rev=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,90 @@
+/*
+ * 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.tck.tests.basics;
+
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.OK;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
+
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.enums.Action;
+import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.tck.CmisTestResult;
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
+
+/**
+ * Basic root folder tests.
+ */
+public class RootFolderTest extends AbstractSessionTest {
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Root Folder Test");
+ }
+
+ @Override
+ public void run(Session session) throws Exception {
+ CmisTestResult success;
+ CmisTestResult failure;
+
+ // check root folder id
+ RepositoryInfo ri = getRepositoryInfo(session);
+
+ success = createResult(OK, "Root folder id: " + ri.getRootFolderId());
+ failure = createResult(FAILURE, "Root folder id is not set!");
+ addResult(assertStringNotEmpty(ri.getRootFolderId(), success, failure));
+
+ // get the root folder
+ Folder rootFolder = session.getRootFolder();
+
+ addResult(checkObject(rootFolder, "Root folder object spec compliance"));
+
+ if (rootFolder == null) {
+ return;
+ }
+
+ // folder and path
+ failure = createResult(FAILURE,
+ "Root folder id in the repository info doesn't match the root folder object id!");
+ addResult(assertEquals(ri.getRootFolderId(), rootFolder.getId(), null, failure));
+
+ failure = createResult(FAILURE, "Root folder is not a cmis:folder!");
+ addResult(assertEquals(BaseTypeId.CMIS_FOLDER, rootFolder.getBaseTypeId(), null, failure));
+
+ failure = createResult(FAILURE, "Root folder path is not '/'!");
+ addResult(assertEquals("/", rootFolder.getPath(), null, failure));
+
+ failure = createResult(FAILURE, "Root folder has parents!");
+ addResult(assertEquals(0, rootFolder.getParents().size(), null, failure));
+
+ // allowable actions
+ failure = createResult(FAILURE, "Root folder has CAN_GET_FOLDER_PARENT allowable action!");
+ addResult(assertNotAllowableAction(rootFolder, Action.CAN_GET_FOLDER_PARENT, null, failure));
+
+ failure = createResult(WARNING, "Root folder has no CAN_GET_CHILDREN allowable action!");
+ addResult(assertNotAllowableAction(rootFolder, Action.CAN_GET_CHILDREN, null, failure));
+
+ // simple children test
+ addResult(checkChildren(rootFolder, "Root folder children check"));
+ }
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/RootFolderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java Wed Oct 27 15:43:24 2010
@@ -0,0 +1,117 @@
+/*
+ * 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.tck.tests.basics;
+
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.ObjectType;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.client.api.Tree;
+import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
+import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
+import org.apache.chemistry.opencmis.tck.CmisTestResult;
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
+
+/**
+ * Types test.
+ */
+public class TypesTest extends AbstractSessionTest {
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Types");
+ }
+
+ @Override
+ public void run(Session session) {
+ CmisTestResult failure;
+
+ // document
+ try {
+ TypeDefinition documentType = session.getTypeDefinition(BaseTypeId.CMIS_DOCUMENT.value());
+ addResult(checkTypeDefinition(documentType, "Document type spec compliance."));
+
+ failure = createResult(FAILURE, "Document type has the wrong base type: " + documentType.getBaseTypeId());
+ addResult(assertEquals(BaseTypeId.CMIS_DOCUMENT, documentType.getBaseTypeId(), null, failure));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(FAILURE, "Document type not available!", e, false));
+ }
+
+ // folder
+ try {
+ TypeDefinition folderType = session.getTypeDefinition(BaseTypeId.CMIS_FOLDER.value());
+
+ addResult(checkTypeDefinition(folderType, "Folder type spec compliance."));
+
+ failure = createResult(FAILURE, "Folder type has the wrong base type: " + folderType.getBaseTypeId());
+ addResult(assertEquals(BaseTypeId.CMIS_FOLDER, folderType.getBaseTypeId(), null, failure));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(FAILURE, "Folder type not available!", e, false));
+ }
+
+ // relationship
+ try {
+ TypeDefinition relationshipType = session.getTypeDefinition(BaseTypeId.CMIS_RELATIONSHIP.value());
+ addResult(checkTypeDefinition(relationshipType, "Relationship type spec compliance."));
+
+ failure = createResult(FAILURE,
+ "Relationship type has the wrong base type: " + relationshipType.getBaseTypeId());
+ addResult(assertEquals(BaseTypeId.CMIS_RELATIONSHIP, relationshipType.getBaseTypeId(), null, failure));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(WARNING, "Relationship type not available!", e, false));
+ }
+
+ // policy
+ try {
+ TypeDefinition policyType = session.getTypeDefinition(BaseTypeId.CMIS_POLICY.value());
+ addResult(checkTypeDefinition(policyType, "Policy type spec compliance."));
+
+ failure = createResult(FAILURE, "Policy type has the wrong base type: " + policyType.getBaseTypeId());
+ addResult(assertEquals(BaseTypeId.CMIS_POLICY, policyType.getBaseTypeId(), null, failure));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(WARNING, "Policy type not available!", e, false));
+ }
+
+ runTypeChecks(session.getTypeDescendants(null, -1, true));
+ }
+
+ private void runTypeChecks(List<Tree<ObjectType>> types) {
+ if (types == null) {
+ return;
+ }
+
+ CmisTestResult failure;
+
+ for (Tree<ObjectType> tree : types) {
+ failure = createResult(FAILURE, "Types tree contains null leaf!");
+ addResult(assertNotNull(tree, null, failure));
+
+ if (tree != null) {
+ addResult(checkTypeDefinition(tree.getItem(), "Type spec compliance: " + tree.getItem().getId()));
+ runTypeChecks(tree.getChildren());
+ }
+ }
+ }
+
+}
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt?rev=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt Wed Oct 27 15:43:24 2010
@@ -0,0 +1,24 @@
+#
+# 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.
+#
+
+###############################################################
+# TCK group class list.
+###############################################################
+
+org.apache.chemistry.opencmis.tck.tests.basics.BasicsTestGroup
\ No newline at end of file
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-build.xml
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-build.xml?rev=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-build.xml (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-build.xml Wed Oct 27 15:43:24 2010
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+ <!--
+ Licensed 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.
+ -->
+
+ <!--
+ CMIS TCK ant task example.
+ -->
+
+<project name="CMISTCKExample" default="main" basedir=".">
+
+ <target name="main">
+ <path id="opencmistck">
+ <fileset dir="/path/to/opencmis/jars">
+ <include name="**/*.jar"/>
+ </fileset>
+ </path>
+
+ <taskdef name="cmistck" classname="org.apache.chemistry.opencmis.tck.runner.CmisTckAntTask">
+ <classpath refid="opencmistck"/>
+ </taskdef>
+
+ <!--
+ parameters: OpenCMIS session parameters file (see sample-parameters.properties)
+ output: report file
+ format: text, xml, or html
+ -->
+
+ <cmistck parameters="/path/to/opencmis-parameters.properties" output="/path/to/output.txt" format="text" />
+
+ </target>
+
+</project>
\ No newline at end of file
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-build.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-parameters.properties
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-parameters.properties?rev=1028010&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-parameters.properties (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-parameters.properties Wed Oct 27 15:43:24 2010
@@ -0,0 +1,23 @@
+#
+# 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.
+#
+
+org.apache.chemistry.opencmis.binding.spi.type=atompub
+org.apache.chemistry.opencmis.binding.atompub.url=http://localhost:8080/opencmis/atom
+org.apache.chemistry.opencmis.user=test
+org.apache.chemistry.opencmis.password=test
\ No newline at end of file
Propchange: incubator/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/sample-parameters.properties
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.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/MIMETypes.java?rev=1028010&r1=1028009&r2=1028010&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/MIMETypes.java Wed Oct 27 15:43:24 2010
@@ -385,6 +385,6 @@ public class MIMETypes {
mimeType = mimeType.trim().toLowerCase();
String extension = MIME2EXT.get(mimeType);
- return (extension == null ? "" : "." + extension);
+ return ((extension == null || extension.length() == 0) ? "" : "." + extension);
}
}