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 2011/08/26 10:56:53 UTC
svn commit: r1162032 - in /chemistry/opencmis/trunk:
chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/
chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencm...
Author: fmui
Date: Fri Aug 26 08:56:52 2011
New Revision: 1162032
URL: http://svn.apache.org/viewvc?rev=1162032&view=rev
Log:
added more TCK test (relationships, multifiling, unfiling, policy checks)
Added:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteRelationshipTest.java (with props)
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/FilingTestGroup.java (with props)
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/MultifilingTest.java (with props)
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/UnfilingTest.java (with props)
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/TestParameters.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/control/ACLSmokeTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CRUDTestGroup.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CopyTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java Fri Aug 26 08:56:52 2011
@@ -32,6 +32,7 @@ import java.io.InputStreamReader;
import java.io.Reader;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
@@ -44,6 +45,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.api.FileableCmisObject;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.ItemIterable;
+import org.apache.chemistry.opencmis.client.api.ObjectId;
import org.apache.chemistry.opencmis.client.api.OperationContext;
import org.apache.chemistry.opencmis.client.api.Policy;
import org.apache.chemistry.opencmis.client.api.Property;
@@ -59,6 +61,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.AllowableActions;
import org.apache.chemistry.opencmis.commons.data.ContentStream;
+import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
import org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
@@ -75,6 +78,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.enums.Updatability;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
import org.apache.chemistry.opencmis.tck.CmisTestResult;
@@ -375,6 +379,51 @@ public abstract class AbstractSessionTes
}
/**
+ * Creates a relationship.
+ */
+ protected Relationship createRelationship(Session session, String name, ObjectId source, ObjectId target) {
+ String objectTypeId = getParameters().get(TestParameters.DEFAULT_RELATIONSHIP_TYPE);
+ if (objectTypeId == null) {
+ objectTypeId = TestParameters.DEFAULT_RELATIONSHIP_TYPE_VALUE;
+ }
+
+ return createRelationship(session, name, source, target, objectTypeId);
+ }
+
+ /**
+ * Creates a relationship.
+ */
+ protected Relationship createRelationship(Session session, String name, ObjectId source, ObjectId target,
+ String objectTypeId) {
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.put(PropertyIds.NAME, name);
+ properties.put(PropertyIds.OBJECT_TYPE_ID, objectTypeId);
+ properties.put(PropertyIds.SOURCE_ID, source.getId());
+ properties.put(PropertyIds.TARGET_ID, target.getId());
+
+ ObjectId relId;
+ Relationship result = null;
+
+ try {
+ relId = session.createRelationship(properties);
+ result = (Relationship) session.getObject(relId, SELECT_ALL_NO_CACHE_OC);
+ } catch (Exception e) {
+ addResult(createResult(UNEXPECTED_EXCEPTION,
+ "Relationship could not be created! Exception: " + e.getMessage(), e, true));
+ }
+
+ try {
+ // check the new relationship
+ addResult(checkObject(session, result, getAllProperties(result), "New document object spec compliance"));
+ } catch (CmisBaseException e) {
+ addResult(createResult(UNEXPECTED_EXCEPTION,
+ "Newly created document is invalid! Exception: " + e.getMessage(), e, true));
+ }
+
+ return result;
+ }
+
+ /**
* Deletes an object and checks if it is deleted.
*/
protected void deleteObject(CmisObject object) {
@@ -771,6 +820,30 @@ public abstract class AbstractSessionTes
addResult(results, checkACL(session, object.getAcl(), "ACL"));
}
+ // check policies
+ if (hasPolicies(session)) {
+ try {
+ List<ObjectData> appliedPolicies = session.getBinding().getPolicyService()
+ .getAppliedPolicies(session.getRepositoryInfo().getId(), object.getId(), "*", null);
+
+ if (appliedPolicies == null) {
+ appliedPolicies = Collections.emptyList();
+ }
+
+ List<Policy> objectPolicies = object.getPolicies();
+ if (objectPolicies == null) {
+ objectPolicies = Collections.emptyList();
+ }
+
+ f = createResult(FAILURE,
+ "The number of policies returned by getAppliedPolicies() and the number of object policies don't match!");
+ addResult(results, assertEquals(appliedPolicies.size(), objectPolicies.size(), null, f));
+ } catch (CmisNotSupportedException e) {
+ addResult(results,
+ createResult(WARNING, "getAppliedPolicies() not supported for object: " + object.getId()));
+ }
+ }
+
// check relationships
checkRelationships(session, results, object);
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/TestParameters.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/TestParameters.java?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/TestParameters.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/TestParameters.java Fri Aug 26 08:56:52 2011
@@ -25,6 +25,9 @@ public class TestParameters {
public static final String DEFAULT_DOCUMENT_TYPE = "org.apache.chemistry.opencmis.tck.default.documentType";
public static final String DEFAULT_DOCUMENT_TYPE_VALUE = "cmis:document";
+ public static final String DEFAULT_RELATIONSHIP_TYPE = "org.apache.chemistry.opencmis.tck.default.relationshipType";
+ public static final String DEFAULT_RELATIONSHIP_TYPE_VALUE = "cmis:relationship";
+
public static final String DEFAULT_TEST_FOLDER_PARENT = "org.apache.chemistry.opencmis.tck.default.testFolderParent";
public static final String DEFAULT_TEST_FOLDER_PARENT_VALUE = "/";
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/control/ACLSmokeTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/control/ACLSmokeTest.java?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/control/ACLSmokeTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/control/ACLSmokeTest.java Fri Aug 26 08:56:52 2011
@@ -45,7 +45,7 @@ public class ACLSmokeTest extends Abstra
public void init(Map<String, String> parameters) {
super.init(parameters);
setName("ACL Test");
- setDescription("Creates an object and check if the cmis:read ACE is applied!");
+ setDescription("Creates a document and checks its ACL.");
}
@Override
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CRUDTestGroup.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CRUDTestGroup.java?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CRUDTestGroup.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CRUDTestGroup.java Fri Aug 26 08:56:52 2011
@@ -35,6 +35,7 @@ public class CRUDTestGroup extends Abstr
addTest(new CreateAndDeleteFolderTest());
addTest(new CreateAndDeleteDocumentTest());
+ addTest(new CreateAndDeleteRelationshipTest());
addTest(new UpdateSmokeTest());
addTest(new SetAndDeleteContentTest());
addTest(new CopyTest());
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CopyTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CopyTest.java?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CopyTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CopyTest.java Fri Aug 26 08:56:52 2011
@@ -82,6 +82,9 @@ public class CopyTest extends AbstractSe
int count2 = countFolderChildren(folder2);
f = createResult(FAILURE, "Target folder should have exactly one child but has " + count2 + " children!");
addResult(assertEquals(1, count2, null, f));
+
+ deleteObject(doc2);
+ deleteObject(doc1);
} finally {
// clean up
deleteTestFolder();
Added: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteRelationshipTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteRelationshipTest.java?rev=1162032&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteRelationshipTest.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteRelationshipTest.java Fri Aug 26 08:56:52 2011
@@ -0,0 +1,152 @@
+/*
+ * 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.crud;
+
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.Document;
+import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.client.api.Relationship;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
+import org.apache.chemistry.opencmis.tck.CmisTestResult;
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
+
+/**
+ * Simple folder test.
+ */
+public class CreateAndDeleteRelationshipTest extends AbstractSessionTest {
+
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Create and Delete Relationship Test");
+ setDescription("Creates a relationship between two documents, checks the newly created relationship finally deletes the created relationship.");
+ }
+
+ @Override
+ public void run(Session session) {
+ CmisTestResult f;
+ boolean found;
+
+ if (hasRelationships(session)) {
+ // create a test folder
+ Folder testFolder = createTestFolder(session);
+
+ try {
+ // create documents
+ Document doc1 = createDocument(session, testFolder, "doc1.txt", "doc1");
+ Document doc2 = createDocument(session, testFolder, "doc2.txt", "doc2");
+
+ // create relationship
+ Relationship rel = createRelationship(session, "rel1", doc1, doc2);
+
+ f = createResult(FAILURE, "Source document id does not match relationship source id!");
+ addResult(assertEquals(doc1.getId(), rel.getSourceId().getId(), null, f));
+
+ f = createResult(FAILURE, "Target document id does not match relationship target id!");
+ addResult(assertEquals(doc2.getId(), rel.getTarget().getId(), null, f));
+
+ // check the source document
+ doc1.refresh();
+ List<Relationship> doc1rels = doc1.getRelationships();
+
+ f = createResult(FAILURE, "Source document has no relationships but must have at least one!");
+ addResult(assertListNotEmpty(doc1rels, null, f));
+
+ if (doc1rels != null) {
+ found = false;
+ for (Relationship r : doc1rels) {
+ if (rel.getId().equals(r.getId())) {
+ found = true;
+ break;
+ }
+ }
+
+ f = createResult(FAILURE,
+ "Newly created relationship not found in the relationships of the source document!");
+ addResult(assertIsTrue(found, null, f));
+ }
+
+ found = false;
+ for (Relationship r : session.getRelationships(doc1, true, RelationshipDirection.SOURCE, null,
+ SELECT_ALL_NO_CACHE_OC)) {
+ if (rel.getId().equals(r.getId())) {
+ found = true;
+ break;
+ }
+ }
+
+ f = createResult(
+ FAILURE,
+ "Newly created relationship not found in the relationships returned by getObjectRelationships() for the source document!");
+ addResult(assertIsTrue(found, null, f));
+
+ // check the target document
+ doc2.refresh();
+ List<Relationship> doc2rels = doc2.getRelationships();
+
+ f = createResult(FAILURE, "Target document has no relationships but must have at least one!");
+ addResult(assertListNotEmpty(doc2rels, null, f));
+
+ if (doc2rels != null) {
+ found = false;
+ for (Relationship r : doc2rels) {
+ if (rel.getId().equals(r.getId())) {
+ found = true;
+ break;
+ }
+ }
+
+ f = createResult(FAILURE,
+ "Newly created relationship not found in the relationships of the target document!");
+ addResult(assertIsTrue(found, null, f));
+ }
+
+ found = false;
+ for (Relationship r : session.getRelationships(doc2, true, RelationshipDirection.TARGET, null,
+ SELECT_ALL_NO_CACHE_OC)) {
+ if (rel.getId().equals(r.getId())) {
+ found = true;
+ break;
+ }
+ }
+
+ f = createResult(
+ FAILURE,
+ "Newly created relationship not found in the relationships returned by getObjectRelationships() for the target document!");
+ addResult(assertIsTrue(found, null, f));
+
+ // remove
+ deleteObject(rel);
+ deleteObject(doc2);
+ deleteObject(doc1);
+ } finally {
+ // delete the test folder
+ deleteTestFolder();
+ }
+ } else {
+ addResult(createResult(SKIPPED, "Relationships not supported. Test Skipped!"));
+ }
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteRelationshipTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/FilingTestGroup.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/FilingTestGroup.java?rev=1162032&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/FilingTestGroup.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/FilingTestGroup.java Fri Aug 26 08:56:52 2011
@@ -0,0 +1,39 @@
+/*
+ * 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.filing;
+
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTestGroup;
+
+/**
+ * This test group contains multifiling and unfiling tests.
+ */
+public class FilingTestGroup extends AbstractSessionTestGroup {
+ @Override
+ public void init(Map<String, String> parameters) throws Exception {
+ super.init(parameters);
+
+ setName("Filing Test Group");
+ setDescription("Multifiling anf Unfiling tests.");
+
+ addTest(new MultifilingTest());
+ addTest(new UnfilingTest());
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/FilingTestGroup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/MultifilingTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/MultifilingTest.java?rev=1162032&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/MultifilingTest.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/MultifilingTest.java Fri Aug 26 08:56:52 2011
@@ -0,0 +1,137 @@
+/*
+ * 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.filing;
+
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
+
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.Document;
+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.tck.CmisTestResult;
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
+
+/**
+ * Multifiling test.
+ */
+public class MultifilingTest extends AbstractSessionTest {
+
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Multifiling Test");
+ setDescription("Creates two folders and a document in one of the folders, "
+ + "adds the document to the second folder and then removes it again for the second folder.");
+ }
+
+ @Override
+ public void run(Session session) {
+ if (supportsMultifiling(session)) {
+ CmisTestResult f;
+
+ int count1;
+ int count2;
+ int parents;
+
+ try {
+ // create folders
+ Folder testFolder = createTestFolder(session);
+ Folder folder1 = createFolder(session, testFolder, "folder1");
+ Folder folder2 = createFolder(session, testFolder, "folder2");
+
+ // create document
+ Document doc1 = createDocument(session, folder1, "testdoc.txt", "multifiling test");
+
+ addResult(checkChildren(session, folder1, "Folder 1 after createDocument()"));
+ addResult(checkChildren(session, folder2, "Folder 2 after createDocument()"));
+
+ count1 = countFolderChildren(folder1);
+ f = createResult(FAILURE, "Folder 1 should have exactly one child but has " + count1 + " children!");
+ addResult(assertEquals(1, count1, null, f));
+
+ count2 = countFolderChildren(folder2);
+ f = createResult(FAILURE, "Folder 2 should not have children but has " + count2 + " children!");
+ addResult(assertEquals(0, count2, null, f));
+
+ parents = doc1.getParents().size();
+ f = createResult(FAILURE, "Document should have one parent but has " + parents + " parents!");
+ addResult(assertEquals(1, parents, null, f));
+
+ // add to other folder
+ doc1.addToFolder(folder2, true);
+
+ addResult(checkChildren(session, folder1, "Folder 1 after addToFolder()"));
+ addResult(checkChildren(session, folder2, "Folder 2 after addToFolder()"));
+
+ count1 = countFolderChildren(folder1);
+ f = createResult(FAILURE, "Folder 1 should have exactly one child but has " + count1 + " children!");
+ addResult(assertEquals(1, count1, null, f));
+
+ count2 = countFolderChildren(folder2);
+ f = createResult(FAILURE, "Folder 2 should have exactly one child but has " + count2 + " children!");
+ addResult(assertEquals(1, count2, null, f));
+
+ parents = doc1.getParents().size();
+ f = createResult(FAILURE, "Document should have two parents but has " + parents + " parents!");
+ addResult(assertEquals(2, parents, null, f));
+
+ // remove from first folder
+ doc1.removeFromFolder(folder2);
+
+ addResult(checkChildren(session, folder1, "Folder 1 after removeFromFolder()"));
+ addResult(checkChildren(session, folder2, "Folder 2 after removeFromFolder()"));
+
+ count1 = countFolderChildren(folder1);
+ f = createResult(FAILURE, "Folder 1 should have exactly one child but has " + count1 + " children!");
+ addResult(assertEquals(1, count1, null, f));
+
+ count2 = countFolderChildren(folder2);
+ f = createResult(FAILURE, "Folder 2 should not have children but has " + count2 + " children!");
+ addResult(assertEquals(0, count2, null, f));
+
+ parents = doc1.getParents().size();
+ f = createResult(FAILURE, "Document should have one parent but has " + parents + " parents!");
+ addResult(assertEquals(1, parents, null, f));
+
+ // delete everything
+ deleteObject(doc1);
+ deleteObject(folder2);
+ deleteObject(folder1);
+ } finally {
+ // clean up
+ deleteTestFolder();
+ }
+ } else {
+ addResult(createResult(SKIPPED, "Multifling not supported. Test Skipped!"));
+ }
+ }
+
+ protected boolean supportsMultifiling(Session session) {
+ RepositoryInfo repository = session.getRepositoryInfo();
+
+ if (repository.getCapabilities().isMultifilingSupported() == null) {
+ return false;
+ }
+
+ return repository.getCapabilities().isMultifilingSupported().booleanValue();
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/MultifilingTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/UnfilingTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/UnfilingTest.java?rev=1162032&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/UnfilingTest.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/UnfilingTest.java Fri Aug 26 08:56:52 2011
@@ -0,0 +1,118 @@
+/*
+ * 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.filing;
+
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
+
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.api.Document;
+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.tck.CmisTestResult;
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
+
+/**
+ * Unfiling test.
+ */
+public class UnfilingTest extends AbstractSessionTest {
+
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Unfiling Test");
+ setDescription("Creates a folder and a document, removes the document from the folder and then adds it again.");
+ }
+
+ @Override
+ public void run(Session session) {
+ if (supportsUnfiling(session)) {
+ CmisTestResult f;
+
+ int count;
+ int parents;
+
+ try {
+ // create folders
+ Folder testFolder = createTestFolder(session);
+ Folder folder1 = createFolder(session, testFolder, "folder1");
+
+ // create document
+ Document doc1 = createDocument(session, folder1, "testdoc.txt", "unfiling test");
+
+ addResult(checkChildren(session, folder1, "Folder after createDocument()"));
+
+ count = countFolderChildren(folder1);
+ f = createResult(FAILURE, "Folder should have exactly one child but has " + count + " children!");
+ addResult(assertEquals(1, count, null, f));
+
+ parents = doc1.getParents().size();
+ f = createResult(FAILURE, "Document should have one parent but has " + parents + " parents!");
+ addResult(assertEquals(1, parents, null, f));
+
+ // remove from folder
+ doc1.removeFromFolder(folder1);
+
+ addResult(checkChildren(session, folder1, "Folder after removeFromFolder()"));
+
+ count = countFolderChildren(folder1);
+ f = createResult(FAILURE, "Folder should have no children but has " + count + " children!");
+ addResult(assertEquals(0, count, null, f));
+
+ parents = doc1.getParents().size();
+ f = createResult(FAILURE, "Document should not have no parents but has " + parents + " parents!");
+ addResult(assertEquals(0, parents, null, f));
+
+ // add to folder again
+ doc1.addToFolder(folder1, true);
+
+ addResult(checkChildren(session, folder1, "Folder after addToFolder()"));
+
+ count = countFolderChildren(folder1);
+ f = createResult(FAILURE, "Folder should have exactly one child but has " + count + " children!");
+ addResult(assertEquals(1, count, null, f));
+
+ parents = doc1.getParents().size();
+ f = createResult(FAILURE, "Document should have one parent but has " + parents + " parents!");
+ addResult(assertEquals(1, parents, null, f));
+
+ // delete everything
+ deleteObject(doc1);
+ deleteObject(folder1);
+ } finally {
+ // clean up
+ deleteTestFolder();
+ }
+ } else {
+ addResult(createResult(SKIPPED, "Unfiling not supported. Test Skipped!"));
+ }
+ }
+
+ protected boolean supportsUnfiling(Session session) {
+ RepositoryInfo repository = session.getRepositoryInfo();
+
+ if (repository.getCapabilities().isUnfilingSupported() == null) {
+ return false;
+ }
+
+ return repository.getCapabilities().isUnfilingSupported().booleanValue();
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/filing/UnfilingTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt Fri Aug 26 08:56:52 2011
@@ -24,5 +24,6 @@
org.apache.chemistry.opencmis.tck.tests.basics.BasicsTestGroup
org.apache.chemistry.opencmis.tck.tests.crud.CRUDTestGroup
org.apache.chemistry.opencmis.tck.tests.versioning.VersioningTestGroup
+org.apache.chemistry.opencmis.tck.tests.filing.FilingTestGroup
org.apache.chemistry.opencmis.tck.tests.control.ControlTestGroup
org.apache.chemistry.opencmis.tck.tests.query.QueryTestGroup
\ No newline at end of file
Modified: 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/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/TckDialog.java Fri Aug 26 08:56:52 2011
@@ -52,7 +52,6 @@ import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.SwingWorker;
@@ -192,6 +191,10 @@ public class TckDialog {
BaseTypeId.CMIS_DOCUMENT.value(), TestParameters.DEFAULT_DOCUMENT_TYPE_VALUE);
configPanel.add(Box.createRigidArea(new Dimension(1, 10)));
+ final JComboBox relationshipComboBox = addComboBox(configPanel, "Test relationship type:",
+ BaseTypeId.CMIS_RELATIONSHIP.value(), TestParameters.DEFAULT_RELATIONSHIP_TYPE_VALUE);
+ configPanel.add(Box.createRigidArea(new Dimension(1, 10)));
+
configPanel.add(new JLabel("Test folder path:"));
final JTextField testParentFolderField = new JTextField(TestParameters.DEFAULT_TEST_FOLDER_PARENT_VALUE);
testParentFolderField.setMaximumSize(new Dimension(Short.MAX_VALUE, 10));
@@ -225,6 +228,10 @@ public class TckDialog {
parameters.put(TestParameters.DEFAULT_FOLDER_TYPE, (String) folderComboBox.getSelectedItem());
parameters.put(TestParameters.DEFAULT_DOCUMENT_TYPE,
(String) documentComboBox.getSelectedItem());
+ if (relationshipComboBox.isEnabled()) {
+ parameters.put(TestParameters.DEFAULT_RELATIONSHIP_TYPE,
+ (String) relationshipComboBox.getSelectedItem());
+ }
parameters.put(TestParameters.DEFAULT_TEST_FOLDER_PARENT, testParentFolderField.getText());
runner.setParameters(parameters);
@@ -278,6 +285,7 @@ public class TckDialog {
comboBox.setSelectedItem(defaultTypeId);
comboBox.setAlignmentX(Component.LEFT_ALIGNMENT);
comboBox.setMaximumSize(new Dimension(Short.MAX_VALUE, 10));
+ comboBox.setEnabled(typeIds.length > 0);
panel.add(comboBox);
return comboBox;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java?rev=1162032&r1=1162031&r2=1162032&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientModel.java Fri Aug 26 08:56:52 2011
@@ -48,6 +48,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.enums.CapabilityQuery;
import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.impl.MimeTypes;
public class ClientModel {
@@ -250,10 +251,16 @@ public class ClientModel {
public synchronized List<ObjectType> getCreateableTypes(String rootTypeId) {
List<ObjectType> result = new ArrayList<ObjectType>();
+ ObjectType rootType = null;
+ try {
+ rootType = clientSession.getSession().getTypeDefinition(rootTypeId);
+ } catch (CmisObjectNotFoundException e) {
+ return result;
+ }
+
List<Tree<ObjectType>> types = clientSession.getSession().getTypeDescendants(rootTypeId, -1, false);
addType(types, result);
- ObjectType rootType = clientSession.getSession().getTypeDefinition(rootTypeId);
boolean isCreatable = (rootType.isCreatable() == null ? true : rootType.isCreatable().booleanValue());
if (isCreatable) {
result.add(rootType);