Author: deepal
Date: Tue Jan 29 00:18:59 2008
New Revision: 13112

Log:

fixing REGISTRY-120

Modified:
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
   
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
   
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
   (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/AtomRegistry.java
   Tue Jan 29 00:18:59 2008
@@ -46,6 +46,8 @@
 import java.util.Date;
 import java.util.Iterator;
 import java.util.Map;
+import java.net.URLDecoder;
+import java.io.UnsupportedEncodingException;
 
 public class AtomRegistry extends AbstractProvider implements Provider, 
APPConstants {
 
@@ -499,6 +501,7 @@
         }
         feed.addSimpleExtension(new QName("mediaType"), 
resource.getMediaType());
         feed.addSimpleExtension(new QName("parentPath"), 
resource.getParentPath());
+        path = RemoteRegistry.encodeURL(path);
         String href = baseURI + "atom" + path;
         feed.addLink(href);
         feed.addLink(href, "self");
@@ -653,6 +656,11 @@
         String path = request.getBaseUri().getPath();
         String uri = request.getUri().toString();
         uri = uri.replaceAll(path + "atom", "");
+        try {
+            uri = URLDecoder.decode(uri,"UTF-8");
+        } catch (UnsupportedEncodingException e) {
+
+        }
         return (uri.length() == 0) ? "/" : uri;
     }
 

Modified: 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
==============================================================================
--- 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
 (original)
+++ 
trunk/registry/modules/core/src/main/java/org/wso2/registry/app/RemoteRegistry.java
 Tue Jan 29 00:18:59 2008
@@ -34,12 +34,10 @@
 import org.wso2.registry.i18n.Messages;
 
 import javax.xml.namespace.QName;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.net.URL;
 import java.net.URLConnection;
+import java.net.URLEncoder;
 import java.util.*;
 
 public class RemoteRegistry implements Registry, RegistryConstants, 
APPConstants {
@@ -89,7 +87,7 @@
     public Resource get(String path) throws RegistryException {
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
-        ClientResponse clientResponse = abderaClient.get(baseURI + path, 
getAuthorization());
+        ClientResponse clientResponse = abderaClient.get(baseURI + 
encodeURL(path), getAuthorization());
         if (clientResponse.getType() == Response.ResponseType.CLIENT_ERROR ||
             clientResponse.getType() == Response.ResponseType.SERVER_ERROR) {
             throw new ResourceNotFoundException(path);
@@ -204,7 +202,7 @@
     public boolean resourceExists(String path) throws RegistryException {
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
-        ClientResponse response = abderaClient.head(baseURI + path, 
getAuthorization());
+        ClientResponse response = abderaClient.head(baseURI + encodeURL(path), 
getAuthorization());
         return (response.getType() == Response.ResponseType.SUCCESS);
     }
 
@@ -250,7 +248,7 @@
         RequestOptions requestOptions = getAuthorization();
         requestOptions.setSlug(relativePath);
 
-        ClientResponse resp = abderaClient.post(baseURI + parentPath, entry, 
requestOptions);
+        ClientResponse resp = abderaClient.post(baseURI + 
encodeURL(parentPath), entry, requestOptions);
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.add", suggestedPath));
         } else {
@@ -321,14 +319,14 @@
         RequestOptions opts = getAuthorization();
         opts.setSlug(suggestedPath);
         opts.setContentType(IMPORT_MEDIATYPE);
-        ClientResponse response = abderaClient.post(baseURI + postData, bis, 
opts);
+        ClientResponse response = abderaClient.post(baseURI + 
encodeURL(postData), bis, opts);
         return response.getLocation().toString();
     }
 
     public void delete(String path) throws RegistryException {
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
-        ClientResponse resp = abderaClient.delete(baseURI + path, 
getAuthorization());
+        ClientResponse resp = abderaClient.delete(baseURI + encodeURL(path), 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.deleted", path));
         } else {
@@ -343,9 +341,9 @@
         AbderaClient abderaClient = new AbderaClient(abdera);
         Entry entry = abdera.getFactory().newEntry();
         entry.setContent(newPath);
-        ClientResponse resp = abderaClient.post(baseURI + currentPath +
+        ClientResponse resp = abderaClient.post(baseURI + 
encodeURL(currentPath +
                                                 URL_SEPARATOR +
-                                                PARAMETER_RENAME, entry, 
getAuthorization());
+                                                PARAMETER_RENAME), entry, 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.rename", currentPath));
         } else {
@@ -358,9 +356,9 @@
     public String[] getVersions(String path) throws RegistryException {
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
-        ClientResponse clientResponse = abderaClient.get(baseURI + path +
+        ClientResponse clientResponse = abderaClient.get(baseURI + 
encodeURL(path +
                                                          URL_SEPARATOR +
-                                                         PARAMETER_VERSION, 
getAuthorization());
+                                                         PARAMETER_VERSION), 
getAuthorization());
         Document introspection =
                 clientResponse.getDocument();
         Feed feed = (Feed)introspection.getRoot();
@@ -380,9 +378,9 @@
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
         Entry entry = abdera.getFactory().newEntry();
-        ClientResponse resp = abderaClient.put(baseURI + versionPath +
+        ClientResponse resp = abderaClient.put(baseURI + encodeURL(versionPath 
+
                                                URL_SEPARATOR +
-                                               PARAMETER_RESTORE, entry, 
getAuthorization());
+                                               PARAMETER_RESTORE), entry, 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.restoreded", versionPath));
         } else {
@@ -396,9 +394,9 @@
         AbderaClient abderaClient = new AbderaClient(abdera);
         Entry entry = abdera.getFactory().newEntry();
         entry.setContent(tag);
-        ClientResponse resp = abderaClient.put(baseURI + resourcePath +
+        ClientResponse resp = abderaClient.put(baseURI + 
encodeURL(resourcePath +
                                                URL_SEPARATOR +
-                                               PARAMETER_TAGS, entry, 
getAuthorization());
+                                               PARAMETER_TAGS), entry, 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.tagged", resourcePath));
         } else {
@@ -454,9 +452,9 @@
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
         ClientResponse clientResponse = abderaClient.get(baseURI +
-                                                         resourcePath +
+                                                         
encodeURL(resourcePath +
                                                          URL_SEPARATOR +
-                                                         PARAMETER_TAGS, 
getAuthorization());
+                                                         PARAMETER_TAGS), 
getAuthorization());
         Document introspection =
                 clientResponse.getDocument();
         Feed feed = (Feed)introspection.getRoot();
@@ -480,9 +478,9 @@
         AbderaClient abderaClient = new AbderaClient(abdera);
         Entry entry = abdera.getFactory().newEntry();
         entry.setContent(tag);
-        ClientResponse resp = abderaClient.put(baseURI + path +
+        ClientResponse resp = abderaClient.put(baseURI + encodeURL(path +
                                                URL_SEPARATOR +
-                                               PARAMETER_TAGS_REMOVED, entry, 
getAuthorization());
+                                               PARAMETER_TAGS_REMOVED), entry, 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("tag.removed", path));
         } else {
@@ -498,9 +496,9 @@
         entry.setUpdated(comment.getTime());
         entry.addAuthor(comment.getUser());
         entry.setContent(comment.getText());
-        ClientResponse resp = abderaClient.post(baseURI + resourcePath +
+        ClientResponse resp = abderaClient.post(baseURI + 
encodeURL(resourcePath +
                                                 URL_SEPARATOR +
-                                                PARAMETER_COMMENTS, entry, 
getAuthorization());
+                                                PARAMETER_COMMENTS), entry, 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.commented", resourcePath));
             return resp.getLocation().toString();
@@ -516,9 +514,9 @@
         AbderaClient abderaClient = new AbderaClient(abdera);
         Entry entry = abdera.getFactory().newEntry();
         entry.setContent(text);
-        ClientResponse resp = abderaClient.put(baseURI + commentPath +
+        ClientResponse resp = abderaClient.put(baseURI + encodeURL(commentPath 
+
                                                URL_SEPARATOR +
-                                               PARAMETER_COMMENTS, entry, 
getAuthorization());
+                                               PARAMETER_COMMENTS), entry, 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.commented", commentPath));
         } else {
@@ -530,9 +528,9 @@
     public Comment[] getComments(String resourcePath) throws RegistryException 
{
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
-        ClientResponse clientResponse = abderaClient.get(baseURI + 
resourcePath +
+        ClientResponse clientResponse = abderaClient.get(baseURI + 
encodeURL(resourcePath +
                                                          URL_SEPARATOR +
-                                                         PARAMETER_COMMENTS, 
getAuthorization());
+                                                         PARAMETER_COMMENTS), 
getAuthorization());
         Document introspection = clientResponse.getDocument();
         Element element = introspection.getRoot();
         Feed feed = (Feed)element;
@@ -568,9 +566,9 @@
         Entry entry = abdera.getFactory().newEntry();
         entry.setContent("" + rating);
         entry.setSummary(PARAMETER_RATINGS);
-        ClientResponse resp = abderaClient.put(baseURI + resourcePath +
+        ClientResponse resp = abderaClient.put(baseURI + 
encodeURL(resourcePath +
                                                URL_SEPARATOR +
-                                               PARAMETER_RATINGS, entry, 
getAuthorization());
+                                               PARAMETER_RATINGS), entry, 
getAuthorization());
         if (resp.getType() == Response.ResponseType.SUCCESS) {
             log.info(Messages.getMessage("resource.rated", resourcePath));
         } else {
@@ -582,8 +580,8 @@
     public float getAverageRating(String resourcePath) throws 
RegistryException {
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
-        ClientResponse clientResponse = abderaClient.get(baseURI + 
resourcePath +
-                                                         URL_SEPARATOR + 
PARAMETER_RATINGS,
+        ClientResponse clientResponse = abderaClient.get(baseURI + 
encodeURL(resourcePath +
+                                                         URL_SEPARATOR + 
PARAMETER_RATINGS),
                                                          getAuthorization());
         Document introspection = clientResponse.getDocument();
         Feed feed = (Feed)introspection.getRoot();
@@ -595,8 +593,8 @@
         Abdera abdera = new Abdera();
         AbderaClient abderaClient = new AbderaClient(abdera);
         ClientResponse clientResponse =
-                abderaClient.get(baseURI + path + URL_SEPARATOR +
-                                 PARAMETER_RATINGS + ":" + userName, 
getAuthorization());
+                abderaClient.get(baseURI + encodeURL(path + URL_SEPARATOR +
+                                 PARAMETER_RATINGS + ":" + userName), 
getAuthorization());
         Document introspection =
                 clientResponse.getDocument();
         Feed feed = (Feed)introspection.getRoot();
@@ -609,9 +607,9 @@
         AbderaClient abderaClient = new AbderaClient(abdera);
         RequestOptions requestOptions = getAuthorization();
         requestOptions.setHeader("parameters", 
encodeParametersAsString(parameters));
-        ClientResponse resp = abderaClient.get(baseURI + path +
+        ClientResponse resp = abderaClient.get(baseURI + encodeURL(path +
                                                URL_SEPARATOR +
-                                               PARAMETER_QUERY, 
requestOptions);
+                                               PARAMETER_QUERY), 
requestOptions);
         Document introspection =
                 resp.getDocument();
         Feed feed = (Feed)introspection.getRoot();
@@ -668,8 +666,8 @@
         requestOptions.addDateHeader("FromDate", from);
         requestOptions.addHeader("Action", "" + action);
         requestOptions.addHeader("Author", userName);
-        ClientResponse resp = abderaClient.get(baseURI + resourcePath +
-                                               URL_SEPARATOR + PARAMETER_LOGS, 
requestOptions);
+        ClientResponse resp = abderaClient.get(baseURI + 
encodeURL(resourcePath +
+                                               URL_SEPARATOR + 
PARAMETER_LOGS), requestOptions);
         Document introspection =
                 resp.getDocument();
         Feed feed = (Feed)introspection.getRoot();
@@ -702,4 +700,12 @@
         return requestOptions;
     }
 
+    public static String encodeURL(String path){
+        try {
+            return URLEncoder.encode(path,"UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            return path;
+        }
+    }
+
 }

Modified: 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java
==============================================================================
--- 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java
   (original)
+++ 
trunk/registry/modules/core/src/test/java/org/wso2/registry/app/JettyBasedServerTest.java
   Tue Jan 29 00:18:59 2008
@@ -44,6 +44,12 @@
         }
     }
 
+    public void testResourceWithSpaces() throws Exception {
+        Resource r1 = new Resource();
+        registry.put("/ws/my resource" ,r1);
+        r1 = registry.get("/ws/my resource");
+        assertNotNull(r1);
+    }
 
     public void testAddComment() {
         try {

_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev

Reply via email to