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