Author: fmui
Date: Mon Nov 9 08:54:49 2015
New Revision: 1713348
URL: http://svn.apache.org/viewvc?rev=1713348&view=rev
Log:
added Latest Accessible State ID to client API, TCK, and Workbench
Added:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/LatestAccessibleStateIdTest.java
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/DocumentProperties.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/DocumentImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningTestGroup.java
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/DocumentProperties.java
URL:
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/DocumentProperties.java?rev=1713348&r1=1713347&r2=1713348&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/DocumentProperties.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/DocumentProperties.java
Mon Nov 9 08:54:49 2015
@@ -220,4 +220,15 @@ public interface DocumentProperties {
* @cmis Extension
*/
List<ContentStreamHash> getContentStreamHashes();
+
+ /**
+ * Returns the latest accessible state ID or {@code null} if the repository
+ * does not support the Latest State Identifier feature extension (CMIS
+ * property {@code cmis:latestAccessibleStateId }).
+ *
+ * @return the latest accessible state ID or {@code null}
+ *
+ * @cmis Extension
+ */
+ String getLatestAccessibleStateId();
}
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/DocumentImpl.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/DocumentImpl.java?rev=1713348&r1=1713347&r2=1713348&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/DocumentImpl.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/DocumentImpl.java
Mon Nov 9 08:54:49 2015
@@ -158,6 +158,11 @@ public class DocumentImpl extends Abstra
return result;
}
+ @Override
+ public String getLatestAccessibleStateId() {
+ return getPropertyValue(PropertyIds.LATEST_ACCESSIBLE_STATE_ID);
+ }
+
// operations
@Override
Added:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/LatestAccessibleStateIdTest.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/LatestAccessibleStateIdTest.java?rev=1713348&view=auto
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/LatestAccessibleStateIdTest.java
(added)
+++
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/LatestAccessibleStateIdTest.java
Mon Nov 9 08:54:49 2015
@@ -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.versioning;
+
+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.CmisObject;
+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.PropertyIds;
+import
org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
+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 LatestAccessibleStateIdTest extends AbstractSessionTest {
+
+ @Override
+ public void init(Map<String, String> parameters) {
+ super.init(parameters);
+ setName("Latest Accessible State ID Test");
+ setDescription("Creates a document and tries to get it with its Latest
Accessible State ID.");
+ }
+
+ @Override
+ public void run(Session session) {
+ CmisTestResult f;
+
+ try {
+ // create folder and document
+ Folder testFolder = createTestFolder(session);
+ Document doc = createDocument(session, testFolder,
"lateststate.txt", "latest state");
+ DocumentTypeDefinition docType = (DocumentTypeDefinition)
doc.getType();
+
+ if
(!docType.getPropertyDefinitions().containsKey(PropertyIds.LATEST_ACCESSIBLE_STATE_ID))
{
+ addResult(createResult(SKIPPED,
+ "Repository does not support the Latest State
Identifier feature extension. Test skipped!"));
+ doc.delete(true);
+ return;
+ }
+
+ // check latest accessible state ID
+ f = createResult(FAILURE, "Latest Accessible State ID is not
set!");
+ addResult(assertStringNotEmpty(doc.getLatestAccessibleStateId(),
null, f));
+
+ // get document with latest accessible state ID
+ try {
+ CmisObject latestStateObject =
session.getObject(doc.getLatestAccessibleStateId(),
+ SELECT_ALL_NO_CACHE_OC);
+
+ if (latestStateObject instanceof Document) {
+ f = createResult(FAILURE,
+ "Latest Accessible State IDs of the orignal and
the retrieved document don't match!");
+ addResult(assertEquals(doc.getLatestAccessibleStateId(),
+ ((Document)
latestStateObject).getLatestAccessibleStateId(), null, f));
+ } else {
+ addResult(createResult(FAILURE,
+ "Object retrieved with the Latest Accessible State
ID is not a document!"));
+ }
+ } catch (CmisObjectNotFoundException onf) {
+ addResult(createResult(FAILURE, "Document could not be
retrieved with the Latest Accessible State ID!"));
+ }
+
+ doc.delete(true);
+ } finally {
+ // delete the test folder
+ deleteTestFolder();
+ }
+ }
+}
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningTestGroup.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/VersioningTestGroup.java?rev=1713348&r1=1713347&r2=1713348&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningTestGroup.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/versioning/VersioningTestGroup.java
Mon Nov 9 08:54:49 2015
@@ -37,5 +37,6 @@ public class VersioningTestGroup extends
addTest(new VersionDeleteTest());
addTest(new VersioningStateCreateTest());
addTest(new CheckedOutTest());
+ addTest(new LatestAccessibleStateIdTest());
}
}
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
URL:
http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java?rev=1713348&r1=1713347&r2=1713348&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
Mon Nov 9 08:54:49 2015
@@ -74,6 +74,7 @@ public class ObjectPanel extends InfoPan
private JTextField nameField;
private JTextField idField;
+ private JTextField latestAccessibleStateIdField;
private JTextField typeField;
private BaseTypeLabel basetypeField;
private InfoList secondaryTypesList;
@@ -118,6 +119,7 @@ public class ObjectPanel extends InfoPan
if (object == null) {
nameField.setText("");
idField.setText("");
+ latestAccessibleStateIdField.setText("");
typeField.setText("");
basetypeField.setValue(null);
secondaryTypesList.removeAll();
@@ -135,6 +137,7 @@ public class ObjectPanel extends InfoPan
try {
nameField.setText(object.getName());
idField.setText(object.getId());
+
typeField.setText(object.getType().getId());
basetypeField.setValue(object.getBaseTypeId());
@@ -151,6 +154,8 @@ public class ObjectPanel extends InfoPan
if (object instanceof Document) {
Document doc = (Document) object;
+
latestAccessibleStateIdField.setText(doc.getLatestAccessibleStateId());
+
try {
versionLabelField.setText(doc.getVersionLabel());
} catch (Exception e) {
@@ -165,6 +170,7 @@ public class ObjectPanel extends InfoPan
pwcField.setText("(not checked out)");
}
} else {
+ latestAccessibleStateIdField.setText("");
pwcField.setText("");
versionLabelField.setText("");
}
@@ -250,7 +256,8 @@ public class ObjectPanel extends InfoPan
setupGUI();
nameField = addLine("Name:", true);
- idField = addId("Id:");
+ idField = addId("Object ID:");
+ latestAccessibleStateIdField = addId("Latest State ID:");
typeField = addLine("Type:");
basetypeField = addBaseTypeLabel("Base Type:");
secondaryTypesList = addComponent("Secondary Types:", new InfoList());