Move the definition of the API URL root to gss.properties.
authorpastith <devnull@localhost>
Thu, 23 Apr 2009 14:10:43 +0000 (14:10 +0000)
committerpastith <devnull@localhost>
Thu, 23 Apr 2009 14:10:43 +0000 (14:10 +0000)
gss/jboss/conf/gss.properties
gss/src/gr/ebs/gss/server/domain/dto/FileHeaderDTO.java
gss/src/gr/ebs/gss/server/domain/dto/FolderDTO.java
gss/src/gr/ebs/gss/server/rest/FilesHandler.java
gss/src/gr/ebs/gss/server/rest/RequestHandler.java
gss/src/gr/ebs/gss/server/rest/SearchHandler.java
gss/src/gr/ebs/gss/server/rest/SharedHandler.java
gss/src/gr/ebs/gss/server/rest/TrashHandler.java

index b4b957c..473c624 100644 (file)
@@ -1,3 +1,5 @@
+restUrl=http://localhost:8080/gss/rest/
+
 version=1.0.0-beta
 
 fileRepositoryPath=/tmp/gss-root
index b85f06b..46c6c3d 100644 (file)
@@ -29,11 +29,6 @@ import com.google.gwt.i18n.client.NumberFormat;
 public class FileHeaderDTO implements Serializable {
 
        /**
-        * The preamble of every REST API URI.
-        */
-       public static final String PATH_GSS = "http://gss.grnet.gr/gss/rest/";
-
-       /**
         * The path for the resource manipulation subsystem.
         */
        public static final String PATH_FILES = "/files";
@@ -381,13 +376,14 @@ public class FileHeaderDTO implements Serializable {
 
 
        /**
-        * Retrieve the URI for this resource. This unique identifier can
-        * be used to refer to the resource from various GSS clients.
+        * Retrieve the URI for this resource, relative to the REST API root URI.
+        * This unique identifier can be used to refer to the resource from
+        * various GSS clients.
         *
         * @return the URI
         */
        public String getURI() {
-               return PATH_GSS + owner.getUsername() + PATH_FILES + getPath();
+               return owner.getUsername() + PATH_FILES + getPath();
        }
 
 
index b54867e..7017bd7 100644 (file)
@@ -205,13 +205,14 @@ public class FolderDTO implements Serializable {
        }
 
        /**
-        * Retrieve the URI for this resource. This unique identifier can
-        * be used to refer to the resource from various GSS clients.
+        * Retrieve the URI for this resource, relative to the REST API root URI.
+        * This unique identifier can be used to refer to the resource from
+        * various GSS clients.
         *
         * @return the URI
         */
        public String getURI() {
-               return FileHeaderDTO.PATH_GSS + owner.getUsername() + FileHeaderDTO.PATH_FILES + getPath();
+               return owner.getUsername() + FileHeaderDTO.PATH_FILES + getPath();
        }
 
 }
index b29eccb..64b1071 100644 (file)
@@ -1608,7 +1608,7 @@ public class FilesHandler extends RequestHandler {
                                        put("deleted", folder.isDeleted());
                        if (folder.getParent() != null) {
                                JSONObject j = new JSONObject();
-                               j.put("uri", folder.getParent().getURI());
+                               j.put("uri", getApiRoot() + folder.getParent().getURI());
                                j.put("name", folder.getParent().getName());
                                json.put("parent", j);
                        }
@@ -1687,10 +1687,10 @@ public class FilesHandler extends RequestHandler {
                                        put("readForAll", file.isReadForAll()).
                                        put("tags", file.getTags()).
                                        put("path",URLEncoder.encode(file.getFolder().getPath(),"UTF-8")).
-                               put("uri", file.getURI()).
+                               put("uri", getApiRoot() + file.getURI()).
                                        put("deleted", file.isDeleted());
                        JSONObject j = new JSONObject();
-                       j.put("uri", file.getFolder().getURI()).
+                       j.put("uri", getApiRoot() + file.getFolder().getURI()).
                                        put("name", URLEncoder.encode(file.getFolder().getName(),"UTF-8"));
                        json.put("folder", j);
                        if (oldBody != null)
index f256179..6281fa6 100644 (file)
@@ -21,6 +21,7 @@ package gr.ebs.gss.server.rest;
 import gr.ebs.gss.client.exceptions.InsufficientPermissionsException;
 import gr.ebs.gss.client.exceptions.ObjectNotFoundException;
 import gr.ebs.gss.client.exceptions.RpcException;
+import gr.ebs.gss.server.configuration.GSSConfigurationFactory;
 import gr.ebs.gss.server.domain.User;
 import gr.ebs.gss.server.domain.dto.FileHeaderDTO;
 import gr.ebs.gss.server.webdav.Webdav;
@@ -43,6 +44,9 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.DataConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -176,6 +180,22 @@ public class RequestHandler extends Webdav {
        private static Log logger = LogFactory.getLog(RequestHandler.class);
 
        /**
+        * Gss configuration
+        */
+       private static DataConfiguration conf = null;
+
+       static {
+               try {
+                       conf = GSSConfigurationFactory.getConfiguration();
+               }
+               catch (ConfigurationException e) {
+                       // Use empty configuration, so we get no NPE but default values
+                       conf = new DataConfiguration(new BaseConfiguration());
+                       logger.error("Error in ExternalAPI initialization! GSS is running with default values!", e);
+               }
+       }
+
+       /**
         * Create a mapping between paths and allowed HTTP methods for fast lookup.
         */
        private final Map<String, String> methodsAllowed = new HashMap<String, String>(7);
@@ -195,6 +215,13 @@ public class RequestHandler extends Webdav {
                methodsAllowed.put(PATH_TRASH, METHOD_GET + ", " + METHOD_DELETE);
        }
 
+       /**
+        * Return the root of every API request URL.
+        */
+       protected String getApiRoot() {
+               return conf.getString("restUrl", "http://localhost:8080/gss/rest/");
+       }
+
        @Override
        public void service(final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException {
         String method = request.getMethod();
index 827ed2b..60bf20b 100644 (file)
@@ -75,9 +75,9 @@ public class SearchHandler extends RequestHandler {
                                        put("size", f.getFileSize()).
                                        put("path", f.getFolder().getPath()).
                                        put("creationDate", f.getAuditInfo().getCreationDate().getTime()).
-                                       put("uri", f.getURI());
+                                       put("uri", getApiRoot() + f.getURI());
                                JSONObject jf = new JSONObject();
-                               jf.put("uri", f.getFolder().getURI()).
+                               jf.put("uri", getApiRoot() + f.getFolder().getURI()).
                                                put("name", URLEncoder.encode(f.getFolder().getName(),"UTF-8"));
                                j.put("folder", jf);
                                json.put(j);
index e4ef91a..fd173d0 100644 (file)
@@ -86,7 +86,7 @@ public class SharedHandler extends RequestHandler {
                                j.put("name", f.getName()).
                                        put("uri", parentUrl + f.getPath());
                                if (f.getParent() != null)
-                                       j.put("parent", f.getParent().getURI());
+                                       j.put("parent", getApiRoot() + f.getParent().getURI());
                                subfolders.add(j);
                        }
                        json.put("folders", subfolders);
@@ -105,7 +105,7 @@ public class SharedHandler extends RequestHandler {
                                        put("creationDate", f.getAuditInfo().getCreationDate().getTime()).
                                        put("uri", parentUrl + f.getPath());
                                JSONObject jf = new JSONObject();
-                               jf.put("uri", f.getFolder().getURI()).
+                               jf.put("uri", getApiRoot() + f.getFolder().getURI()).
                                                put("name", URLEncoder.encode(f.getFolder().getName(),"UTF-8"));
                                j.put("folder", jf);
                                files.add(j);
index 6b83543..53c3def 100644 (file)
@@ -108,7 +108,7 @@ public class TrashHandler extends RequestHandler {
                        j.put("name", f.getName()).
                                put("uri", parentUrl + f.getPath());
                        if (f.getParent() != null)
-                               j.put("parent", f.getParent().getURI());
+                               j.put("parent", getApiRoot() + f.getParent().getURI());
                                trashFolders.add(j);
                }
                json.put("folders", trashFolders);
@@ -125,7 +125,7 @@ public class TrashHandler extends RequestHandler {
                                        put("creationDate", f.getAuditInfo().getCreationDate().getTime()).
                                put("uri", parentUrl + f.getPath());
                                JSONObject p = new JSONObject();
-                               p.put("uri", f.getFolder().getURI()).
+                               p.put("uri", getApiRoot() + f.getFolder().getURI()).
                                                put("name", URLEncoder.encode(f.getFolder().getName(),"UTF-8"));
                                j.put("folder", p);
                                trashFiles.add(j);