From: Christos Stathis Date: Wed, 23 Nov 2011 14:23:49 +0000 (+0200) Subject: Fixed problem with header name encoding in tags and groups X-Git-Tag: v0.1~67 X-Git-Url: https://code.grnet.gr/git/pithos-web-client/commitdiff_plain/ea94470aabd55eccdd2a50d4606b0c246f7bda9c Fixed problem with header name encoding in tags and groups --- diff --git a/src/gr/grnet/pithos/web/client/FilePropertiesDialog.java b/src/gr/grnet/pithos/web/client/FilePropertiesDialog.java index f232e1e..92de14a 100644 --- a/src/gr/grnet/pithos/web/client/FilePropertiesDialog.java +++ b/src/gr/grnet/pithos/web/client/FilePropertiesDialog.java @@ -52,6 +52,7 @@ import com.google.gwt.core.client.Scheduler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; 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.resources.client.ImageResource; import com.google.gwt.user.client.Window; @@ -447,12 +448,13 @@ public class FilePropertiesDialog extends AbstractPropertiesDialog { } }; updateFile.setHeader("X-Auth-Token", app.getToken()); + for (String t : file.getTags()) { + updateFile.setHeader("X-Object-Meta-" + URL.encodePathSegment(t.trim()), "~"); + } if (newTags != null) for (String t : newTags) if (t.length() > 0) - updateFile.setHeader("X-Object-Meta-" + t.trim(), "true"); - for (String t : file.getTags()) - updateFile.setHeader("X-Object-Meta-" + t.trim(), "~"); + updateFile.setHeader("X-Object-Meta-" + URL.encodePathSegment(t.trim()), "true"); if (published != null) updateFile.setHeader("X-Object-Public", published.toString()); if (newPermissions != null) { diff --git a/src/gr/grnet/pithos/web/client/commands/AddUserCommand.java b/src/gr/grnet/pithos/web/client/commands/AddUserCommand.java index b8611a9..c82874c 100644 --- a/src/gr/grnet/pithos/web/client/commands/AddUserCommand.java +++ b/src/gr/grnet/pithos/web/client/commands/AddUserCommand.java @@ -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); } } diff --git a/src/gr/grnet/pithos/web/client/commands/DeleteGroupCommand.java b/src/gr/grnet/pithos/web/client/commands/DeleteGroupCommand.java index acc7d9a..d87b679 100644 --- a/src/gr/grnet/pithos/web/client/commands/DeleteGroupCommand.java +++ b/src/gr/grnet/pithos/web/client/commands/DeleteGroupCommand.java @@ -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); } } diff --git a/src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java b/src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java index 9a24373..d084938 100644 --- a/src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java +++ b/src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java @@ -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); } } diff --git a/src/gr/grnet/pithos/web/client/foldertree/AccountResource.java b/src/gr/grnet/pithos/web/client/foldertree/AccountResource.java index d61fd73..e6283e1 100644 --- a/src/gr/grnet/pithos/web/client/foldertree/AccountResource.java +++ b/src/gr/grnet/pithos/web/client/foldertree/AccountResource.java @@ -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) diff --git a/src/gr/grnet/pithos/web/client/foldertree/File.java b/src/gr/grnet/pithos/web/client/foldertree/File.java index 438ba0f..3a5c8e5 100644 --- a/src/gr/grnet/pithos/web/client/foldertree/File.java +++ b/src/gr/grnet/pithos/web/client/foldertree/File.java @@ -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); diff --git a/src/gr/grnet/pithos/web/client/foldertree/Folder.java b/src/gr/grnet/pithos/web/client/foldertree/Folder.java index 4f8d985..00edbbf 100644 --- a/src/gr/grnet/pithos/web/client/foldertree/Folder.java +++ b/src/gr/grnet/pithos/web/client/foldertree/Folder.java @@ -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()); } } diff --git a/src/gr/grnet/pithos/web/client/rest/PostRequest.java b/src/gr/grnet/pithos/web/client/rest/PostRequest.java index 71dcf22..a9b6ae7 100644 --- a/src/gr/grnet/pithos/web/client/rest/PostRequest.java +++ b/src/gr/grnet/pithos/web/client/rest/PostRequest.java @@ -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); } }