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 2013/03/13 14:32:50 UTC
svn commit: r1455931 - in /chemistry/opencmis/trunk:
chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/
chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apa...
Author: fmui
Date: Wed Mar 13 13:32:49 2013
New Revision: 1455931
URL: http://svn.apache.org/r1455931
Log:
minore fixes and TCK reorganization
Added:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/BaseTypesTest.java (with props)
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/TypesTestGroup.java (with props)
Removed:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/TypesTest.java
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/FileShareRepository.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteDocumentTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/resources/cmis-tck-groups.txt
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java?rev=1455931&r1=1455930&r2=1455931&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java Wed Mar 13 13:32:49 2013
@@ -649,16 +649,21 @@ public class XMLConverter {
public static void writeObject(XMLStreamWriter writer, CmisVersion cmisVersion, String namespace, ObjectData source)
throws XMLStreamException {
- writeObject(writer, cmisVersion, TAG_OBJECT, namespace, source);
+ writeObject(writer, cmisVersion, false, TAG_OBJECT, namespace, source);
}
- public static void writeObject(XMLStreamWriter writer, CmisVersion cmisVersion, String name, String namespace,
- ObjectData source) throws XMLStreamException {
+ public static void writeObject(XMLStreamWriter writer, CmisVersion cmisVersion, boolean root, String name,
+ String namespace, ObjectData source) throws XMLStreamException {
if (source == null) {
return;
}
- writer.writeStartElement(namespace, name);
+ if (root) {
+ writer.writeStartElement(PREFIX_CMIS, name, NAMESPACE_CMIS);
+ writer.writeNamespace(PREFIX_CMIS, NAMESPACE_CMIS);
+ } else {
+ writer.writeStartElement(namespace, name);
+ }
if (source.getProperties() != null) {
Properties properties = source.getProperties();
@@ -680,7 +685,7 @@ public class XMLConverter {
if (source.getRelationships() != null) {
for (ObjectData rel : source.getRelationships()) {
if (rel != null) {
- writeObject(writer, cmisVersion, TAG_OBJECT_RELATIONSHIP, NAMESPACE_CMIS, rel);
+ writeObject(writer, cmisVersion, false, TAG_OBJECT_RELATIONSHIP, NAMESPACE_CMIS, rel);
}
}
}
@@ -833,7 +838,7 @@ public class XMLConverter {
}
if (root) {
- writer.writeStartElement(NAMESPACE_CMIS, "allowableActions");
+ writer.writeStartElement(PREFIX_CMIS, "allowableActions", NAMESPACE_CMIS);
writer.writeNamespace(PREFIX_CMIS, NAMESPACE_CMIS);
} else {
writer.writeStartElement(PREFIX_CMIS, TAG_OBJECT_ALLOWABLE_ACTIONS, NAMESPACE_CMIS);
@@ -861,7 +866,7 @@ public class XMLConverter {
}
if (root) {
- writer.writeStartElement(NAMESPACE_CMIS, "acl");
+ writer.writeStartElement(PREFIX_CMIS, "acl", NAMESPACE_CMIS);
writer.writeNamespace(PREFIX_CMIS, NAMESPACE_CMIS);
} else {
writer.writeStartElement(PREFIX_CMIS, TAG_OBJECT_ACL, NAMESPACE_CMIS);
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.java?rev=1455931&r1=1455930&r2=1455931&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.java Wed Mar 13 13:32:49 2013
@@ -90,8 +90,8 @@ public class AtomEntry extends AtomDocum
writeContent(contentSrc, contentType);
- XMLConverter.writeObject(getWriter(), cmisVersion, XMLConstants.TAG_OBJECT, XMLConstants.NAMESPACE_RESTATOM,
- object);
+ XMLConverter.writeObject(getWriter(), cmisVersion, false, XMLConstants.TAG_OBJECT,
+ XMLConstants.NAMESPACE_RESTATOM, object);
writePathSegment(pathSegment);
writeRelativePathSegment(relativePathSegment);
@@ -113,8 +113,8 @@ public class AtomEntry extends AtomDocum
writeTitle(object.getId());
writeUpdated(now);
- XMLConverter.writeObject(getWriter(), cmisVersion, XMLConstants.TAG_OBJECT, XMLConstants.NAMESPACE_RESTATOM,
- object);
+ XMLConverter.writeObject(getWriter(), cmisVersion, false, XMLConstants.TAG_OBJECT,
+ XMLConstants.NAMESPACE_RESTATOM, object);
}
/**
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.java?rev=1455931&r1=1455930&r2=1455931&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/DiscoveryService.java Wed Mar 13 13:32:49 2013
@@ -207,7 +207,7 @@ public final class DiscoveryService {
entry.writeUpdated(now);
// write query result object
- XMLConverter.writeObject(entry.getWriter(), cmisVersion, XMLConstants.TAG_OBJECT,
+ XMLConverter.writeObject(entry.getWriter(), cmisVersion, false, XMLConstants.TAG_OBJECT,
XMLConstants.NAMESPACE_RESTATOM, result);
// we are done
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/FileShareRepository.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/FileShareRepository.java?rev=1455931&r1=1455930&r2=1455931&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/FileShareRepository.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/FileShareRepository.java Wed Mar 13 13:32:49 2013
@@ -1415,6 +1415,10 @@ public class FileShareRepository {
// change token - always null
addPropertyString(result, typeId, filter, PropertyIds.CHANGE_TOKEN, null);
+ // CMIS 1.1 properties
+ addPropertyString(result, typeId, filter, PropertyIds.DESCRIPTION, null);
+ addPropertyIdList(result, typeId, filter, PropertyIds.SECONDARY_OBJECT_TYPE_IDS, null);
+
// directory or file
if (file.isDirectory()) {
// base type and type name
@@ -1507,7 +1511,7 @@ public class FileShareRepository {
ObjectData obj = null;
InputStream stream = null;
try {
- stream = new BufferedInputStream(new FileInputStream(file));
+ stream = new BufferedInputStream(new FileInputStream(propFile));
XMLStreamReader parser = XMLUtils.createParser(stream);
XMLUtils.findNextStartElemenet(parser);
obj = XMLConverter.convertObject(parser);
@@ -1575,7 +1579,7 @@ public class FileShareRepository {
}
// add it
- properties.addProperty(prop);
+ properties.replaceProperty(prop);
}
}
@@ -1871,7 +1875,7 @@ public class FileShareRepository {
addAction(aas, Action.CAN_GET_OBJECT_PARENTS, !isRoot);
addAction(aas, Action.CAN_GET_PROPERTIES, true);
addAction(aas, Action.CAN_UPDATE_PROPERTIES, !userReadOnly && !isReadOnly);
- addAction(aas, Action.CAN_MOVE_OBJECT, !userReadOnly);
+ addAction(aas, Action.CAN_MOVE_OBJECT, !userReadOnly && !isRoot);
addAction(aas, Action.CAN_DELETE_OBJECT, !userReadOnly && !isReadOnly && !isRoot);
addAction(aas, Action.CAN_GET_ACL, true);
@@ -1953,8 +1957,9 @@ public class FileShareRepository {
try {
stream = new BufferedOutputStream(new FileOutputStream(propFile));
XMLStreamWriter writer = XMLUtils.createWriter(stream);
- XMLConverter.writeObject(writer, CmisVersion.CMIS_1_1, XMLConstants.NAMESPACE_CMIS, object);
- writer.close();
+ XMLUtils.startXmlDocument(writer);
+ XMLConverter.writeObject(writer, CmisVersion.CMIS_1_1, true, "object", XMLConstants.NAMESPACE_CMIS, object);
+ XMLUtils.endXmlDocument(writer);
} catch (Exception e) {
throw new CmisStorageException("Couldn't store properties!", e);
} finally {
Modified: 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/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java?rev=1455931&r1=1455930&r2=1455931&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/BasicsTestGroup.java Wed Mar 13 13:32:49 2013
@@ -37,6 +37,5 @@ public class BasicsTestGroup extends Abs
addTest(new SecurityTest());
addTest(new RepositoryInfoTest());
addTest(new RootFolderTest());
- addTest(new TypesTest());
}
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteDocumentTest.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/CreateAndDeleteDocumentTest.java?rev=1455931&r1=1455930&r2=1455931&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteDocumentTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/CreateAndDeleteDocumentTest.java Wed Mar 13 13:32:49 2013
@@ -19,6 +19,7 @@
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.INFO;
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
import java.io.IOException;
@@ -31,6 +32,7 @@ import java.util.Set;
import org.apache.chemistry.opencmis.client.api.CmisObject;
import org.apache.chemistry.opencmis.client.api.Document;
+import org.apache.chemistry.opencmis.client.api.DocumentType;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.ItemIterable;
import org.apache.chemistry.opencmis.client.api.Session;
@@ -99,7 +101,13 @@ public class CreateAndDeleteDocumentTest
}
// check version series ids
- f = createResult(FAILURE, "Although the created documents are independent, some share a Version Series Id!");
+ if (Boolean.TRUE.equals(((DocumentType) documents.values().iterator().next().getType()).isVersionable())) {
+ f = createResult(FAILURE,
+ "Although the created documents are independent, some documents share a Version Series Id!");
+ } else {
+ f = createResult(INFO, "Some documents share the same Version Series Id.");
+ }
+
addResult(assertEquals(numOfDocuments, versionSeriesIds.size(), null, f));
// check paging
Added: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/BaseTypesTest.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/types/BaseTypesTest.java?rev=1455931&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/BaseTypesTest.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/BaseTypesTest.java Wed Mar 13 13:32:49 2013
@@ -0,0 +1,259 @@
+/*
+ * 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.types;
+
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.chemistry.opencmis.client.api.ItemIterable;
+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.enums.CmisVersion;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
+import org.apache.chemistry.opencmis.tck.CmisTestResult;
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
+
+public class BaseTypesTest extends AbstractSessionTest {
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Types Test");
+ setDescription("Checks all types exposed by the repository for specification compliance.");
+ }
+
+ @Override
+ public void run(Session session) {
+ CmisTestResult failure;
+
+ // check base types
+ Set<String> cmisTypes = new HashSet<String>();
+ cmisTypes.add(BaseTypeId.CMIS_DOCUMENT.value());
+ cmisTypes.add(BaseTypeId.CMIS_FOLDER.value());
+ cmisTypes.add(BaseTypeId.CMIS_RELATIONSHIP.value());
+ cmisTypes.add(BaseTypeId.CMIS_POLICY.value());
+
+ if (session.getRepositoryInfo().getCmisVersion() != CmisVersion.CMIS_1_0) {
+ cmisTypes.add(BaseTypeId.CMIS_ITEM.value());
+ cmisTypes.add(BaseTypeId.CMIS_SECONDARY.value());
+ }
+
+ for (TypeDefinition typeDef : session.getTypeChildren(null, false)) {
+ String typeId = typeDef.getId();
+
+ if (typeId == null || !cmisTypes.contains(typeId)) {
+ addResult(createResult(FAILURE, "Base type has an invalid id: " + typeId));
+ }
+
+ if (typeDef.getPropertyDefinitions() != null) {
+ addResult(createResult(WARNING, "Property type definitions were not requested but delivered. Type id: "
+ + typeId));
+ }
+ }
+
+ // document
+ try {
+ TypeDefinition documentType = session.getTypeDefinition(BaseTypeId.CMIS_DOCUMENT.value());
+ addResult(checkTypeDefinition(session, 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(session, 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(session, 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(session, 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 (CmisInvalidArgumentException e) {
+ addResult(createResult(WARNING, "Policy type not available!", e, false));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(WARNING, "Policy type not available!", e, false));
+ }
+
+ // CMIS 1.1 types
+ if (session.getRepositoryInfo().getCmisVersion() == CmisVersion.CMIS_1_1) {
+ // item
+ try {
+ TypeDefinition itemType = session.getTypeDefinition(BaseTypeId.CMIS_ITEM.value());
+ addResult(checkTypeDefinition(session, itemType, "Item type spec compliance."));
+
+ failure = createResult(FAILURE, "Item type has the wrong base type: " + itemType.getBaseTypeId());
+ addResult(assertEquals(BaseTypeId.CMIS_ITEM, itemType.getBaseTypeId(), null, failure));
+ } catch (CmisInvalidArgumentException e) {
+ addResult(createResult(WARNING, "Item type not available!", e, false));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(WARNING, "Item type not available!", e, false));
+ }
+
+ // secondary type
+ try {
+ TypeDefinition secondaryType = session.getTypeDefinition(BaseTypeId.CMIS_SECONDARY.value());
+ addResult(checkTypeDefinition(session, secondaryType, "Secondary type spec compliance."));
+
+ failure = createResult(FAILURE,
+ "Secondary type has the wrong base type: " + secondaryType.getBaseTypeId());
+ addResult(assertEquals(BaseTypeId.CMIS_SECONDARY, secondaryType.getBaseTypeId(), null, failure));
+ } catch (CmisInvalidArgumentException e) {
+ addResult(createResult(WARNING, "Secondary type not available!", e, false));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(WARNING, "Secondary type not available!", e, false));
+ }
+ }
+
+ int numOfTypes = runTypeChecks(session, session.getTypeDescendants(null, -1, true));
+
+ addResult(createInfoResult("Checked " + numOfTypes + " type definitions."));
+ }
+
+ private int runTypeChecks(Session session, List<Tree<ObjectType>> types) {
+ if (types == null) {
+ return 0;
+ }
+
+ int numOfTypes = 0;
+ CmisTestResult failure;
+
+ for (Tree<ObjectType> tree : types) {
+ failure = createResult(FAILURE, "Types tree contains null leaf!");
+ addResult(assertNotNull(tree, null, failure));
+
+ if (tree != null) {
+ numOfTypes++;
+
+ addResult(checkTypeDefinition(session, tree.getItem(), "Type spec compliance: "
+ + tree.getItem().getId()));
+
+ // clear the cache to ensure that the type definition is
+ // reloaded from the repository
+ session.clear();
+
+ try {
+ TypeDefinition reloadedType = session.getTypeDefinition(tree.getItem().getId());
+
+ addResult(checkTypeDefinition(session, reloadedType, "Type spec compliance: "
+ + (reloadedType == null ? "?" : reloadedType.getId())));
+
+ failure = createResult(FAILURE,
+ "Type fetched via getTypeDescendants() is does not macth type fetched via getTypeDefinition(): "
+ + tree.getItem().getId());
+ addResult(assertEquals(tree.getItem(), reloadedType, null, failure));
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(FAILURE,
+ "Type fetched via getTypeDescendants() is not available via getTypeDefinition(): "
+ + tree.getItem().getId(), e, false));
+ }
+
+ // clear the cache again to ensure that the type definition
+ // children are reloaded from the repository
+ session.clear();
+
+ try {
+ ItemIterable<ObjectType> reloadedTypeChildren = session.getTypeChildren(tree.getItem().getId(),
+ true);
+
+ // check type children
+ Map<String, ObjectType> typeChilden = new HashMap<String, ObjectType>();
+ for (ObjectType childType : reloadedTypeChildren) {
+ addResult(checkTypeDefinition(session, childType, "Type spec compliance: "
+ + (childType == null ? "?" : childType.getId())));
+
+ if (childType != null) {
+ typeChilden.put(childType.getId(), childType);
+ }
+ }
+
+ // compare type children and type descendants
+ if (tree.getChildren() == null) {
+ failure = createResult(FAILURE,
+ "Type children fetched via getTypeDescendants() don't match type children fetched via getTypeChildren(): "
+ + tree.getItem().getId());
+ addResult(assertEquals(0, typeChilden.size(), null, failure));
+ } else {
+ // collect the children
+ Map<String, ObjectType> typeDescendants = new HashMap<String, ObjectType>();
+ for (Tree<ObjectType> childType : tree.getChildren()) {
+ if ((childType != null) && (childType.getItem() != null)) {
+ typeDescendants.put(childType.getItem().getId(), childType.getItem());
+ }
+ }
+
+ failure = createResult(FAILURE,
+ "Type children fetched via getTypeDescendants() don't match type children fetched via getTypeChildren(): "
+ + tree.getItem().getId());
+ addResult(assertEquals(typeDescendants.size(), typeChilden.size(), null, failure));
+
+ for (ObjectType compareType : typeDescendants.values()) {
+ failure = createResult(FAILURE,
+ "Type fetched via getTypeDescendants() doesn't match type fetched via getTypeChildren(): "
+ + tree.getItem().getId());
+ addResult(assertEquals(compareType, typeChilden.get(compareType.getId()), null, failure));
+ }
+ }
+ } catch (CmisObjectNotFoundException e) {
+ addResult(createResult(FAILURE,
+ "Type children fetched via getTypeDescendants() is not available via getTypeChildren(): "
+ + tree.getItem().getId(), e, false));
+ }
+
+ numOfTypes += runTypeChecks(session, tree.getChildren());
+ }
+ }
+
+ return numOfTypes;
+ }
+
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/BaseTypesTest.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/types/TypesTestGroup.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/types/TypesTestGroup.java?rev=1455931&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/TypesTestGroup.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/TypesTestGroup.java Wed Mar 13 13:32:49 2013
@@ -0,0 +1,38 @@
+/*
+ * 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.types;
+
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTestGroup;
+
+/**
+ * This test group contains tests that check type operations.
+ */
+public class TypesTestGroup extends AbstractSessionTestGroup {
+ @Override
+ public void init(Map<String, String> parameters) throws Exception {
+ super.init(parameters);
+
+ setName("Types Test Group");
+ setDescription("Types tests.");
+
+ addTest(new BaseTypesTest());
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/TypesTestGroup.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=1455931&r1=1455930&r2=1455931&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 Wed Mar 13 13:32:49 2013
@@ -22,6 +22,7 @@
###############################################################
org.apache.chemistry.opencmis.tck.tests.basics.BasicsTestGroup
+org.apache.chemistry.opencmis.tck.tests.types.TypesTestGroup
org.apache.chemistry.opencmis.tck.tests.crud.CRUDTestGroup
org.apache.chemistry.opencmis.tck.tests.versioning.VersioningTestGroup
org.apache.chemistry.opencmis.tck.tests.filing.FilingTestGroup