Author: fmui
Date: Tue Aug 26 17:16:17 2014
New Revision: 1620662
URL: http://svn.apache.org/r1620662
Log:
TCK: added test for path segments and added another convenience method to the
Session interface
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Session.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/SessionImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.java
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Session.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/Session.java?rev=1620662&r1=1620661&r2=1620662&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Session.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/api/Session.java
Tue Aug 26 17:16:17 2014
@@ -483,6 +483,56 @@ public interface Session extends Seriali
CmisObject getObjectByPath(String path, OperationContext context);
/**
+ * Returns a CMIS object from the session cache. If the object is not in
the
+ * cache or the cache is turned off per default {@link OperationContext},
it
+ * will load the object from the repository and puts it into the cache.
+ * <p>
+ * This method might return a stale object if the object has been found in
+ * the cache and has been changed in or removed from the repository. Use
+ * {@link CmisObject#refresh()} and {@link CmisObject#refreshIfOld(long)}
to
+ * update the object if necessary.
+ *
+ * @param parentPath
+ * the path of the parent folder
+ * @param name
+ * the (path segment) name of the object in the folder
+ *
+ * @return the requested object
+ *
+ * @throws CmisObjectNotFoundException
+ * if an object with the given ID doesn't exist
+ *
+ * @cmis 1.0
+ */
+ CmisObject getObjectByPath(String parentPath, String name);
+
+ /**
+ * Returns a CMIS object from the session cache. If the object is not in
the
+ * cache or the given {@link OperationContext} has caching turned off, it
+ * will load the object from the repository and puts it into the cache.
+ * <p>
+ * This method might return a stale object if the object has been found in
+ * the cache and has been changed in or removed from the repository. Use
+ * {@link CmisObject#refresh()} and {@link CmisObject#refreshIfOld(long)}
to
+ * update the object if necessary.
+ *
+ * @param parentPath
+ * the path of the parent folder
+ * @param name
+ * the (path segment) name of the object in the folder
+ * @param context
+ * the {@link OperationContext} to use
+ *
+ * @return the requested object
+ *
+ * @throws CmisObjectNotFoundException
+ * if an object with the given ID doesn't exist
+ *
+ * @cmis 1.0
+ */
+ CmisObject getObjectByPath(String parentPath, String name,
OperationContext context);
+
+ /**
* Returns the latest version in a version series.
*
* @param objectId
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/SessionImpl.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/SessionImpl.java?rev=1620662&r1=1620661&r2=1620662&view=diff
==============================================================================
---
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/SessionImpl.java
(original)
+++
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/SessionImpl.java
Tue Aug 26 17:16:17 2014
@@ -567,6 +567,31 @@ public class SessionImpl implements Sess
return result;
}
+ public CmisObject getObjectByPath(String parentPath, String name) {
+ return getObjectByPath(parentPath, name, getDefaultContext());
+ }
+
+ public CmisObject getObjectByPath(String parentPath, String name,
OperationContext context) {
+ if (parentPath == null || parentPath.length() < 1) {
+ throw new IllegalArgumentException("Parent path must be set!");
+ }
+ if (parentPath.charAt(0) != '/') {
+ throw new IllegalArgumentException("Parent path must start with a
'/'!");
+ }
+ if (name == null || name.length() < 1) {
+ throw new IllegalArgumentException("Name must be set!");
+ }
+
+ StringBuilder path = new StringBuilder();
+ path.append(parentPath);
+ if (!parentPath.endsWith("/")) {
+ path.append('/');
+ }
+ path.append(name);
+
+ return getObjectByPath(path.toString(), context);
+ }
+
public Document getLatestDocumentVersion(ObjectId objectId) {
return getLatestDocumentVersion(objectId, false, getDefaultContext());
}
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=1620662&r1=1620661&r2=1620662&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 Aug 26 17:16:17 2014
@@ -70,6 +70,8 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.ContentStream;
import org.apache.chemistry.opencmis.commons.data.NewTypeSettableAttributes;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
+import org.apache.chemistry.opencmis.commons.data.ObjectInFolderData;
+import org.apache.chemistry.opencmis.commons.data.ObjectInFolderList;
import org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
import
org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
@@ -1887,6 +1889,31 @@ public abstract class AbstractSessionTes
addResult(results, createResult(INFO, "Repository doesn't support
Order By for getChildren()."));
}
+ // test path segments
+
+ ObjectInFolderList pathSegementChildren = session
+ .getBinding()
+ .getNavigationService()
+ .getChildren(session.getRepositoryInfo().getId(),
folder.getId(), "cmis:objectId,cmis:name", null,
+ null, null, null, Boolean.TRUE,
BigInteger.valueOf(10), BigInteger.ZERO, null);
+
+ for (ObjectInFolderData objectInFolder :
pathSegementChildren.getObjects()) {
+ String pathSegement = objectInFolder.getPathSegment();
+ String objectId = (String)
objectInFolder.getObject().getProperties().getProperties()
+ .get(PropertyIds.OBJECT_ID).getFirstValue();
+
+ if (pathSegement == null) {
+ addResult(results, createResult(FAILURE, "getChildren omitted
path segement! Id: " + objectId));
+ } else {
+ CmisObject pathSegementChild =
session.getObjectByPath(folder.getPath(), pathSegement);
+
+ f = createResult(FAILURE,
+ "Combining the path of the parent folder and the path
segement of a child returns a different object! Id: "
+ + objectId);
+ addResult(results, assertEquals(objectId,
pathSegementChild.getId(), null, f));
+ }
+ }
+
// getDescendants
if (isGetDescendantsSupported(session)) {