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/06/18 17:28:33 UTC
svn commit: r1494175 - in /chemistry/opencmis/trunk:
chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/
chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/a...
Author: fmui
Date: Tue Jun 18 15:28:32 2013
New Revision: 1494175
URL: http://svn.apache.org/r1494175
Log:
TCK: versioning tests improvements (breaks the TCK run during the build until a bug is fixed in the InMemory repository)
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/ObjectFactoryImpl.java
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/tests/types/SecondaryTypesTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/CheckedOutTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningSmokeTest.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/ObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/ObjectFactoryImpl.java?rev=1494175&r1=1494174&r2=1494175&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/ObjectFactoryImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/repository/ObjectFactoryImpl.java Tue Jun 18 15:28:32 2013
@@ -349,7 +349,7 @@ public class ObjectFactoryImpl implement
if (!(secondaryType instanceof SecondaryType)) {
throw new IllegalArgumentException(
"Secondary types property contains a type that is not a secondary type: "
- + secondaryType.getId());
+ + secondaryTypeId);
}
allSecondaryTypes.add((SecondaryType) secondaryType);
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=1494175&r1=1494174&r2=1494175&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 Tue Jun 18 15:28:32 2013
@@ -2041,6 +2041,15 @@ public abstract class AbstractSessionTes
f = createResult(FAILURE, "Query name contains invalid character: ')'");
addResult(results, assertIsTrue(queryName.indexOf(')') < 0, null, f));
+
+ f = createResult(FAILURE, "Query name contains invalid character: '\\t'");
+ addResult(results, assertIsTrue(queryName.indexOf('\t') < 0, null, f));
+
+ f = createResult(FAILURE, "Query name contains invalid character: '\\n'");
+ addResult(results, assertIsTrue(queryName.indexOf('\n') < 0, null, f));
+
+ f = createResult(FAILURE, "Query name contains invalid character: '\\r'");
+ addResult(results, assertIsTrue(queryName.indexOf('\r') < 0, null, f));
}
CmisTestResultImpl result = createResult(getWorst(results), message);
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/SecondaryTypesTest.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/SecondaryTypesTest.java?rev=1494175&r1=1494174&r2=1494175&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/SecondaryTypesTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/types/SecondaryTypesTest.java Tue Jun 18 15:28:32 2013
@@ -36,7 +36,9 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.api.SecondaryType;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
+import org.apache.chemistry.opencmis.commons.enums.Action;
import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
import org.apache.chemistry.opencmis.commons.enums.Updatability;
import org.apache.chemistry.opencmis.tck.CmisTestResult;
@@ -93,14 +95,22 @@ public class SecondaryTypesTest extends
private void createDocumentAndAttachSecondaryType(Session session, Folder testFolder, ObjectType secondaryTestType) {
Document doc = createDocument(session, testFolder, "createandattach.txt", "Secondary Type Test");
+ Document workDoc = doc;
try {
+ // test if check out is required
+ boolean checkedout = false;
+ if (needsCheckOut(doc)) {
+ workDoc = (Document) session.getObject(doc.checkOut(), SELECT_ALL_NO_CACHE_OC);
+ checkedout = true;
+ }
+
// -- attach secondary type
List<String> secondaryTypes = new ArrayList<String>();
// copy already attached secondary types, if there are any
- if (doc.getSecondaryTypes() != null) {
- for (SecondaryType secType : doc.getSecondaryTypes()) {
+ if (workDoc.getSecondaryTypes() != null) {
+ for (SecondaryType secType : workDoc.getSecondaryTypes()) {
secondaryTypes.add(secType.getId());
}
}
@@ -112,7 +122,7 @@ public class SecondaryTypesTest extends
properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, secondaryTypes);
// attach secondary type
- ObjectId newId = doc.updateProperties(properties);
+ ObjectId newId = workDoc.updateProperties(properties);
Document newDoc = (Document) session.getObject(newId, SELECT_ALL_NO_CACHE_OC);
// check if the secondary type is there
@@ -123,6 +133,10 @@ public class SecondaryTypesTest extends
detachSecondaryType(session, newDoc, secondaryTestType);
}
+ // cancel a possible check out
+ if (checkedout) {
+ workDoc.cancelCheckOut();
+ }
} finally {
deleteObject(doc);
}
@@ -137,7 +151,7 @@ public class SecondaryTypesTest extends
boolean found = checkSecondaryType(doc, secondaryTestType);
// detach secondary type
- if (found) {
+ if (found && !needsCheckOut(doc)) {
detachSecondaryType(session, doc, secondaryTestType);
}
} finally {
@@ -145,6 +159,16 @@ public class SecondaryTypesTest extends
}
}
+ private boolean needsCheckOut(Document doc) {
+ DocumentTypeDefinition type = (DocumentTypeDefinition) doc.getType();
+ PropertyDefinition<?> secTypeIdsPropDef = type.getPropertyDefinitions().get(
+ PropertyIds.SECONDARY_OBJECT_TYPE_IDS);
+
+ return secTypeIdsPropDef.getUpdatability() == Updatability.WHENCHECKEDOUT
+ || (!doc.getAllowableActions().getAllowableActions().contains(Action.CAN_UPDATE_PROPERTIES) && Boolean.TRUE
+ .equals(type.isVersionable()));
+ }
+
private boolean checkSecondaryType(Document doc, ObjectType secondaryTestType) {
CmisTestResult f;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/CheckedOutTest.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/versioning/CheckedOutTest.java?rev=1494175&r1=1494174&r2=1494175&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/CheckedOutTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/CheckedOutTest.java Tue Jun 18 15:28:32 2013
@@ -29,6 +29,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.api.ObjectId;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
+import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
import org.apache.chemistry.opencmis.tck.CmisTestResult;
import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
@@ -111,11 +112,20 @@ public class CheckedOutTest extends Abst
addResult(checkObject(session, pwc, propertiesToCheck, "PWC check: " + (pwc == null ? "?" : pwc.getId())));
if (pwc != null) {
- f = createResult(WARNING, "PWC is not the latest version! Id: " + pwc.getId()
- + " (Note: The words of the CMIS specification define that the PWC is the latest version."
- + " But that is not the intention of the spec and will be changed in CMIS 1.1."
- + " Thus this a warning, not an error.)");
- addResult(assertIsTrue(pwc.isLatestVersion(), null, f));
+ if (session.getRepositoryInfo().getCmisVersion() == CmisVersion.CMIS_1_0) {
+ f = createResult(WARNING, "PWC is not the latest version! Id: " + pwc.getId()
+ + " (Note: The words of the CMIS specification define that the PWC is the latest version."
+ + " But that is not the intention of the spec and will be changed in CMIS 1.1."
+ + " Thus this a warning, not an error.)");
+ addResult(assertIsTrue(pwc.isLatestVersion(), null, f));
+ } else {
+ f = createResult(FAILURE, "The property value of 'cmis:isLatestVersion' is TRUE for a PWC! Id: "
+ + pwc.getId());
+ addResult(assertIsFalse(pwc.isLatestVersion(), null, f));
+ f = createResult(FAILURE,
+ "The property value of 'cmis:isLatestMajorVersion' is TRUE for a PWC! Id: " + pwc.getId());
+ addResult(assertIsFalse(pwc.isLatestMajorVersion(), null, f));
+ }
if (lastName != null && pwc.getName() != null) {
if (pwc.getName().compareToIgnoreCase(lastName) < 0) {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningSmokeTest.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/versioning/VersioningSmokeTest.java?rev=1494175&r1=1494174&r2=1494175&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningSmokeTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningSmokeTest.java Tue Jun 18 15:28:32 2013
@@ -174,20 +174,47 @@ public class VersioningSmokeTest extends
private CmisTestResult checkVersionSeries(Session session, List<Document> versions, String[] properties,
String message) {
List<CmisTestResult> results = new ArrayList<CmisTestResult>();
+ CmisTestResult f;
+ // make sure there is only one latest version
+ // and zero or one latest major version
int countLatest = 0;
+ int countLatestMajor = 0;
+ String latestId = null;
for (Document version : versions) {
addResult(results, checkObject(session, version, properties, "Version object check: " + version.getId()));
if (Boolean.TRUE.equals(version.isLatestVersion())) {
countLatest++;
+ latestId = version.getId();
+ }
+
+ if (Boolean.TRUE.equals(version.isLatestMajorVersion())) {
+ countLatestMajor++;
}
}
- CmisTestResult f = createResult(FAILURE, "A version series should have one latest version, but it has "
- + countLatest + "!");
+ f = createResult(FAILURE, "The version series must have exactly one latest version, but it has " + countLatest
+ + "!");
addResult(results, assertEquals(1, countLatest, null, f));
+ f = createResult(FAILURE, "The version series must have zero or one latest major version, but it has "
+ + countLatestMajor + "!");
+ addResult(results, assertIsTrue(countLatestMajor < 2, null, f));
+
+ // check getObjectOfLatestVersion()
+ if (countLatest == 1) {
+ Document latestVersion = versions.get(0).getObjectOfLatestVersion(false);
+ addResult(
+ results,
+ checkObject(session, latestVersion, properties,
+ "Latest version object check: " + latestVersion.getId()));
+
+ f = createResult(FAILURE,
+ "The version that is flagged as latest version is not returned by getObjectOfLatestVersion()!");
+ addResult(results, assertEquals(latestId, latestVersion.getId(), null, f));
+ }
+
CmisTestResultImpl result = createResult(getWorst(results), message);
result.getChildren().addAll(results);