Fixed problem with header name encoding in tags and groups
authorChristos Stathis <chstath@ebs.gr>
Wed, 23 Nov 2011 14:23:49 +0000 (16:23 +0200)
committerChristos Stathis <chstath@ebs.gr>
Wed, 23 Nov 2011 14:23:49 +0000 (16:23 +0200)
src/gr/grnet/pithos/web/client/FilePropertiesDialog.java
src/gr/grnet/pithos/web/client/commands/AddUserCommand.java
src/gr/grnet/pithos/web/client/commands/DeleteGroupCommand.java
src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java
src/gr/grnet/pithos/web/client/foldertree/AccountResource.java
src/gr/grnet/pithos/web/client/foldertree/File.java
src/gr/grnet/pithos/web/client/foldertree/Folder.java
src/gr/grnet/pithos/web/client/rest/PostRequest.java

index f232e1e..92de14a 100644 (file)
@@ -52,6 +52,7 @@ import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.event.dom.client.ClickEvent;\r
 import com.google.gwt.event.dom.client.ClickHandler;\r
 import com.google.gwt.http.client.Response;\r
+import com.google.gwt.http.client.URL;\r
 import com.google.gwt.i18n.client.DateTimeFormat;\r
 import com.google.gwt.resources.client.ImageResource;\r
 import com.google.gwt.user.client.Window;\r
@@ -447,12 +448,13 @@ public class FilePropertiesDialog extends AbstractPropertiesDialog {
                                }\r
             };\r
             updateFile.setHeader("X-Auth-Token", app.getToken());\r
+            for (String t : file.getTags()) {\r
+                       updateFile.setHeader("X-Object-Meta-" + URL.encodePathSegment(t.trim()), "~");\r
+            }\r
             if (newTags != null)\r
                 for (String t : newTags)\r
                        if (t.length() > 0)\r
-                               updateFile.setHeader("X-Object-Meta-" + t.trim(), "true");\r
-                for (String t : file.getTags())\r
-                       updateFile.setHeader("X-Object-Meta-" + t.trim(), "~");\r
+                               updateFile.setHeader("X-Object-Meta-" + URL.encodePathSegment(t.trim()), "true");\r
             if (published != null)\r
                 updateFile.setHeader("X-Object-Public", published.toString());\r
             if (newPermissions != null) {\r
index b8611a9..c82874c 100644 (file)
@@ -43,6 +43,7 @@ import gr.grnet.pithos.web.client.rest.RestException;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.http.client.Response;
+import com.google.gwt.http.client.URL;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.PopupPanel;
@@ -101,7 +102,7 @@ public class AddUserCommand implements Command {
                        String groupMembers = "";
                        for (String u : group.getMembers())
                                groupMembers += (u + ",");
-                       updateGroup.setHeader("X-Account-Group-" + group.getName(), groupMembers);
+                       updateGroup.setHeader("X-Account-Group-" + URL.encodePathSegment(group.getName()), groupMembers);
                        Scheduler.get().scheduleDeferred(updateGroup);
         }
        }
index acc7d9a..d87b679 100644 (file)
@@ -43,6 +43,7 @@ import gr.grnet.pithos.web.client.rest.RestException;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.http.client.Response;
+import com.google.gwt.http.client.URL;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.PopupPanel;
@@ -97,7 +98,7 @@ public class DeleteGroupCommand implements Command {
                                }
                        };
                        updateGroup.setHeader("X-Auth-Token", app.getToken());
-                       updateGroup.setHeader("X-Account-Group-" + group.getName(), "~");
+                       updateGroup.setHeader("X-Account-Group-" + URL.encodePathSegment(group.getName()), "~");
                        Scheduler.get().scheduleDeferred(updateGroup);
         }
        }
index 9a24373..d084938 100644 (file)
@@ -44,6 +44,7 @@ import gr.grnet.pithos.web.client.rest.RestException;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.http.client.Response;
+import com.google.gwt.http.client.URL;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.ui.PopupPanel;
 
@@ -104,7 +105,7 @@ public class RemoveUserCommand implements Command {
                }
                else
                        groupMembers = "~";
-               updateGroup.setHeader("X-Account-Group-" + group.getName(), groupMembers);
+               updateGroup.setHeader("X-Account-Group-" + URL.encodePathSegment(group.getName()), groupMembers);
                Scheduler.get().scheduleDeferred(updateGroup);
        }
 }
index d61fd73..e6283e1 100644 (file)
@@ -44,6 +44,7 @@ import java.util.List;
 
 import com.google.gwt.http.client.Header;
 import com.google.gwt.http.client.Response;
+import com.google.gwt.http.client.URL;
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
 import com.google.gwt.i18n.client.NumberFormat;
@@ -143,7 +144,7 @@ public class AccountResource extends Resource {
                if (h != null) {
                        String name = h.getName();
                        if (name.startsWith("X-Account-Group-")) {
-                           String groupName = name.substring("X-Account-Group-".length()).trim().toLowerCase();
+                           String groupName = URL.decodePathSegment(name.substring("X-Account-Group-".length())).trim().toLowerCase();
                            Group g = new Group(groupName);
                            String[] members = h.getValue().split(",");
                            for (String s : members)
index 438ba0f..3a5c8e5 100644 (file)
@@ -43,6 +43,7 @@ import java.util.Set;
 
 import com.google.gwt.http.client.Header;
 import com.google.gwt.http.client.Response;
+import com.google.gwt.http.client.URL;
 import com.google.gwt.i18n.client.NumberFormat;
 import com.google.gwt.json.client.JSONObject;
 
@@ -167,7 +168,7 @@ public class File extends Resource {
 
         for (String key : o.keySet())
             if (key.startsWith("x_object_meta_"))
-                tags.add(key.substring("x_object_meta_".length()).trim().toLowerCase());
+                tags.add(URL.decodePathSegment(key.substring("x_object_meta_".length())).trim().toLowerCase());
 
         
     }
@@ -223,7 +224,7 @@ public class File extends Resource {
         for (Header h : response.getHeaders()) {
             String header = h.getName();
             if (header.startsWith("X-Object-Meta-"))
-                tags.add(header.substring("X-Object-Meta-".length()).trim().toLowerCase());
+                tags.add(URL.decodePathSegment(header.substring("X-Object-Meta-".length())).trim().toLowerCase());
             else if (header.equals("X-Object-Sharing")) {
                 String rawPermissions = h.getValue();
                 parsePermissions(rawPermissions);
index 4f8d985..00edbbf 100644 (file)
@@ -45,6 +45,7 @@ import java.util.Set;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.http.client.Response;
+import com.google.gwt.http.client.URL;
 import com.google.gwt.i18n.client.DateTimeFormat;
 import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
 import com.google.gwt.json.client.JSONArray;
@@ -163,7 +164,7 @@ public class Folder extends Resource {
         header = response.getHeader("X-Container-Object-Meta");
         if (header != null && header.length() > 0) {
             for (String t : header.split(",")) {
-                tags.add(t.toLowerCase().trim());
+                tags.add(URL.decodePathSegment(t.toLowerCase()).trim());
             }
         }
 
index 71dcf22..a9b6ae7 100644 (file)
@@ -35,6 +35,7 @@
 
 package gr.grnet.pithos.web.client.rest;
 
+import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.http.client.Request;
 import com.google.gwt.http.client.RequestBuilder;
@@ -105,6 +106,7 @@ public abstract class PostRequest implements ScheduledCommand {
             });
         }
         catch (RequestException e) {
+               GWT.log("", e);
         }
     }