Ease the job of the clients by expanding string arrays to object arrays:
authorpastith <devnull@localhost>
Fri, 27 Feb 2009 13:24:24 +0000 (13:24 +0000)
committerpastith <devnull@localhost>
Fri, 27 Feb 2009 13:24:24 +0000 (13:24 +0000)
- GET on the 'others' namespace returns the username of the user sharing the resource
- GET on the 'groups' namespace returns the name of the group
- GET on files and folders returns the parent folder as well

gss/src/gr/ebs/gss/client/domain/FileHeaderDTO.java
gss/src/gr/ebs/gss/server/domain/FileHeader.java
gss/src/gr/ebs/gss/server/rest/FilesHandler.java
gss/src/gr/ebs/gss/server/rest/GroupsHandler.java
gss/src/gr/ebs/gss/server/rest/OthersHandler.java

index 507ab4d..d7bd91b 100644 (file)
@@ -74,6 +74,11 @@ public class FileHeaderDTO implements Serializable {
        private UserDTO owner;
 
        /**
+        * The folder that contains this file.
+        */
+       private FolderDTO folder;
+
+       /**
         * The size of the file
         */
        private long fileSize;
@@ -384,4 +389,24 @@ public class FileHeaderDTO implements Serializable {
        public String getURI() {
                return PATH_GSS + owner.getUsername() + PATH_FILES + getPath();
        }
+
+
+       /**
+        * Retrieve the folder.
+        *
+        * @return the folder
+        */
+       public FolderDTO getFolder() {
+               return folder;
+       }
+
+
+       /**
+        * Modify the folder.
+        *
+        * @param aFolder the folder to set
+        */
+       public void setFolder(FolderDTO aFolder) {
+               folder = aFolder;
+       }
 }
index 7b1769b..19737f1 100644 (file)
@@ -424,6 +424,7 @@ public final class FileHeader  implements Serializable{
                f.setId(id);\r
                f.setName(name);\r
                f.setPath(getPath());\r
+               f.setFolder(folder.getDTO());\r
                f.setVersioned(versioned);\r
                f.setVersion(currentBody.getVersion());\r
                f.setOwner(owner.getDTO());\r
index 76ba14b..20a808c 100644 (file)
@@ -1234,6 +1234,8 @@ public class FilesHandler extends RequestHandler {
                                        put("createdBy", folder.getAuditInfo().getCreatedBy().getUsername()).
                                        put("creationDate", folder.getAuditInfo().getCreationDate().getTime()).
                                        put("deleted", folder.isDeleted());
+                       if (folder.getParent() != null)
+                               json.put("parent", folder.getParent().getURI());
                        if (folder.getAuditInfo().getModifiedBy() != null)
                                json.put("modifiedBy", folder.getAuditInfo().getModifiedBy().getUsername()).
                                                put("modificationDate", folder.getAuditInfo().getModificationDate().getTime());
@@ -1304,6 +1306,7 @@ public class FilesHandler extends RequestHandler {
                                        put("version", oldBody != null ? oldBody.getVersion() : file.getVersion()).
                                        put("readForAll", file.isReadForAll()).
                                        put("tags", file.getTags()).
+                                       put("folder", file.getFolder().getURI()).
                                        put("deleted", file.isDeleted());
                        if (oldBody != null)
                                json.put("createdBy", oldBody.getAuditInfo().getCreatedBy().getUsername()).
index 9a384fd..0dcb4d8 100644 (file)
@@ -69,11 +69,19 @@ public class GroupsHandler extends RequestHandler {
                resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
                return;
        }
-       if (path.equals("/")) {
-               // Request to serve all groups
-               List<GroupDTO> groups;
+       if (path.equals("/"))
+                       // Request to serve all groups
                try {
-                       groups = getService().getGroups(owner.getId());
+               List<GroupDTO> groups = getService().getGroups(owner.getId());
+               JSONArray json = new JSONArray();
+               for (GroupDTO group: groups) {
+                       JSONObject j = new JSONObject();
+                       j.put("name", group.getName()).
+                               put("uri", parentUrl + group.getName());
+                               json.put(j);
+               }
+
+               sendJson(req, resp, json.toString());
                } catch (ObjectNotFoundException e) {
                        logger.error("User not found", e);
                        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -82,13 +90,12 @@ public class GroupsHandler extends RequestHandler {
                        logger.error("", e);
                        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                        return;
-               }
-               JSONArray json = new JSONArray();
-               for (GroupDTO group: groups)
-                       json.put(parentUrl + group.getName());
-
-               sendJson(req, resp, json.toString());
-       } else {
+               } catch (JSONException e) {
+                       logger.error("", e);
+                       resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                       return;
+                       }
+               else {
                // Chop any trailing slash
                path = path.endsWith("/")? path.substring(0, path.length()-1): path;
                // Chop any leading slash
index a936bc0..734b8f8 100644 (file)
@@ -75,8 +75,12 @@ public class OthersHandler extends RequestHandler {
                        JSONArray json = new JSONArray();
 
                List<UserDTO> others = getService().getUsersSharingFoldersForUser(owner.getId());
-                       for (UserDTO u: others)
-                               json.put(parentUrl + u.getUsername());
+                       for (UserDTO u: others) {
+                               JSONObject j = new JSONObject();
+                               j.put("username", u.getUsername()).
+                                       put("uri", parentUrl + u.getUsername());
+                               json.put(j);
+                       }
 
                sendJson(req, resp, json.toString());
                } catch (ObjectNotFoundException e) {
@@ -87,6 +91,10 @@ public class OthersHandler extends RequestHandler {
                        logger.error("", e);
                        resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                        return;
+                       } catch (JSONException e) {
+                               logger.error("", e);
+                               resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+                               return;
                        }
                else
                        try {