]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/acr/directory/DirectoryContentProvider.java
Refactor WebDav implementation
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / directory / DirectoryContentProvider.java
index c1ded945a61b9ac29b0f97f631b47e25c889e9ff..aab5d6dc06a56ab69cdd533a800450c38f01c8a9 100644 (file)
@@ -17,8 +17,8 @@ import org.argeo.api.acr.spi.ProvidedSession;
 import org.argeo.cms.CmsUserManager;
 import org.argeo.cms.acr.AbstractContent;
 import org.argeo.cms.acr.ContentUtils;
-import org.argeo.osgi.useradmin.HierarchyUnit;
 import org.argeo.osgi.useradmin.UserDirectory;
+import org.argeo.util.directory.HierarchyUnit;
 import org.osgi.service.useradmin.User;
 
 public class DirectoryContentProvider implements ContentProvider {
@@ -39,16 +39,17 @@ public class DirectoryContentProvider implements ContentProvider {
                List<String> segments = ContentUtils.toPathSegments(relativePath);
                if (segments.size() == 0)
                        return new UserManagerContent(session);
-               String userDirectoryDn = segments.get(0);
+               String userDirectoryName = segments.get(0);
                UserDirectory userDirectory = null;
                userDirectories: for (UserDirectory ud : userManager.getUserDirectories()) {
-                       if (userDirectoryDn.equals(ud.getGlobalId())) {
+                       if (userDirectoryName.equals(ud.getName())) {
                                userDirectory = ud;
                                break userDirectories;
                        }
                }
                if (userDirectory == null)
-                       throw new ContentNotFoundException("Cannot find user directory " + userDirectoryDn);
+                       throw new ContentNotFoundException(session, mountPath + "/" + relativePath,
+                                       "Cannot find user directory " + userDirectoryName);
                if (segments.size() == 1) {
                        return new DirectoryContent(session, this, userDirectory);
                } else {
@@ -71,8 +72,9 @@ public class DirectoryContentProvider implements ContentProvider {
                        }
                        HierarchyUnit hierarchyUnit = userDirectory.getHierarchyUnit(pathWithinUserDirectory);
                        if (hierarchyUnit == null)
-                               throw new ContentNotFoundException(
-                                               "Cannot find " + pathWithinUserDirectory + " within " + userDirectoryDn);
+                               throw new ContentNotFoundException(session,
+                                               mountPath + "/" + relativePath + "/" + pathWithinUserDirectory,
+                                               "Cannot find " + pathWithinUserDirectory + " within " + userDirectoryName);
                        return new HierarchyUnitContent(session, this, hierarchyUnit);
                }
        }
@@ -110,6 +112,9 @@ public class DirectoryContentProvider implements ContentProvider {
                return new UserManagerContent(session);
        }
 
+       /*
+        * COMMON UTILITIES
+        */
        class UserManagerContent extends AbstractContent {
 
                public UserManagerContent(ProvidedSession session) {