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());


Reply via email to