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 2010/03/09 10:06:23 UTC
svn commit: r920743 -
/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
Author: fmui
Date: Tue Mar 9 09:06:23 2010
New Revision: 920743
URL: http://svn.apache.org/viewvc?rev=920743&view=rev
Log:
a better getPath() implementation
Modified:
incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java?rev=920743&r1=920742&r2=920743&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentFolderImpl.java Tue Mar 9 09:06:23 2010
@@ -21,6 +21,7 @@ package org.apache.opencmis.client.runti
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
@@ -54,6 +55,7 @@ import org.apache.opencmis.commons.provi
import org.apache.opencmis.commons.provider.ObjectList;
import org.apache.opencmis.commons.provider.PropertiesData;
import org.apache.opencmis.commons.provider.PropertyData;
+import org.apache.opencmis.commons.provider.PropertyStringData;
import org.apache.opencmis.commons.provider.ProviderObjectFactory;
public class PersistentFolderImpl extends AbstractPersistentFilableCmisObject implements Folder {
@@ -361,8 +363,7 @@ public class PersistentFolderImpl extend
return null;
}
- List<Folder> parents = getParents();
-
+ List<Folder> parents = super.getParents();
if ((parents == null) || (parents.isEmpty())) {
return null;
}
@@ -376,16 +377,43 @@ public class PersistentFolderImpl extend
* @see org.apache.opencmis.client.api.Folder#getPath()
*/
public String getPath() {
- if (isRootFolder()) {
- return "/";
+ // get the path property
+ String path = getPropertyValue(PropertyIds.CMIS_PATH);
+
+ // if the path property isn't set, get it
+ if (path == null) {
+ String objectId = getObjectId();
+ ObjectData objectData = getProvider().getObjectService().getObject(getRepositoryId(),
+ objectId, PropertyIds.CMIS_PATH, false, IncludeRelationships.NONE, "cmis:none", false,
+ false, null);
+
+ if ((objectData.getProperties() != null)
+ && (objectData.getProperties().getProperties() != null)) {
+ PropertyData<?> pathProperty = objectData.getProperties().getProperties().get(
+ PropertyIds.CMIS_PATH);
+
+ if (pathProperty instanceof PropertyStringData) {
+ path = ((PropertyStringData) pathProperty).getFirstValue();
+ }
+ }
}
- List<String> paths = getPaths();
- if ((paths == null) || (paths.isEmpty())) {
- return null;
+ // we still don't know the path ... it's not a CMIS compliant repository
+ if (path == null) {
+ throw new CmisRuntimeException("Repository didn't return " + PropertyIds.CMIS_PATH + "!");
}
- return paths.get(0);
+ return path;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.runtime.AbstractPersistentFilableCmisObject#getPaths()
+ */
+ @Override
+ public List<String> getPaths() {
+ return Collections.singletonList(getPath());
}
/**