[exo-jcr-commits] exo-jcr SVN: r227 - in jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav: command and 3 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Oct 5 10:06:55 EDT 2009
Author: dkatayev
Date: 2009-10-05 10:06:55 -0400 (Mon, 05 Oct 2009)
New Revision: 227
Modified:
jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java
jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/PropFindCommand.java
jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/propfind/PropFindResponseEntity.java
jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/CollectionResource.java
jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/xml/PropertyWriteUtil.java
Log:
EXOJCR-169 Support for specific characters added
Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java 2009-10-05 13:26:34 UTC (rev 226)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java 2009-10-05 14:06:55 UTC (rev 227)
@@ -69,8 +69,10 @@
import org.exoplatform.services.rest.resource.ResourceContainer;
import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
@@ -1151,7 +1153,42 @@
{
return repoPath.substring(0, repoPath.length() - 1);
}
- return repoPath;
+
+ String[] pathElements = repoPath.split("/");
+ StringBuffer escapedPath = new StringBuffer();
+ for (String element : pathElements)
+ {
+ try
+ {
+ if (element.contains(":"))
+ {
+ element = element.replaceAll(":", URLEncoder.encode(":", "UTF-8"));
+ }
+ if (element.contains("["))
+ {
+ element = element.replaceAll("\\[", URLEncoder.encode("[", "UTF-8"));
+ }
+ if (element.contains("]"))
+ {
+ element = element.replaceAll("]", URLEncoder.encode("]", "UTF-8"));
+ }
+ if (element.contains("'"))
+ {
+ element = element.replaceAll("'", URLEncoder.encode("'", "UTF-8"));
+ }
+ if (element.contains("\""))
+ {
+ element = element.replaceAll("\"", URLEncoder.encode("\"", "UTF-8"));
+ }
+ escapedPath.append(element + "/");
+ }
+ catch (Exception e)
+ {
+ log.warn(e.getMessage());
+ }
+ }
+
+ return escapedPath.toString().substring(0, escapedPath.length() - 1);
}
/**
Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/PropFindCommand.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/PropFindCommand.java 2009-10-05 13:26:34 UTC (rev 226)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/PropFindCommand.java 2009-10-05 14:06:55 UTC (rev 227)
@@ -64,7 +64,7 @@
private static Log log = ExoLogger.getLogger(PropFindCommand.class);
/**
- * Webdav Propfind methos implementation.
+ * Webdav Propfind method implementation.
*
* @param session current session
* @param path resource path
Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/propfind/PropFindResponseEntity.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/propfind/PropFindResponseEntity.java 2009-10-05 13:26:34 UTC (rev 226)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/propfind/PropFindResponseEntity.java 2009-10-05 14:06:55 UTC (rev 227)
@@ -30,7 +30,9 @@
import java.io.IOException;
import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
+import java.net.URLDecoder;
import java.util.Set;
import javax.jcr.RepositoryException;
@@ -150,21 +152,23 @@
* @throws RepositoryException {@link RepositoryException}
* @throws IllegalResourceTypeException {@link IllegalResourceTypeException}
* @throws URISyntaxException {@link URISyntaxException}
+ * @throws UnsupportedEncodingException
*/
private void traverseResources(Resource resource, int counter) throws XMLStreamException, RepositoryException,
- IllegalResourceTypeException, URISyntaxException
+ IllegalResourceTypeException, URISyntaxException, UnsupportedEncodingException
{
xmlStreamWriter.writeStartElement("DAV:", "response");
xmlStreamWriter.writeStartElement("DAV:", "href");
+ String href = URLDecoder.decode(resource.getIdentifier().toASCIIString(), "UTF-8");
if (resource.isCollection())
{
- xmlStreamWriter.writeCharacters(resource.getIdentifier().toASCIIString() + "/");
+ xmlStreamWriter.writeCharacters(href + "/");
}
else
{
- xmlStreamWriter.writeCharacters(resource.getIdentifier().toASCIIString());
+ xmlStreamWriter.writeCharacters(href);
}
xmlStreamWriter.writeEndElement();
@@ -177,11 +181,6 @@
int d = depth;
- if (depth == -1)
- {
-
- }
-
if (resource.isCollection())
{
if (counter < d)
Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/CollectionResource.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/CollectionResource.java 2009-10-05 13:26:34 UTC (rev 226)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/CollectionResource.java 2009-10-05 14:06:55 UTC (rev 227)
@@ -29,7 +29,9 @@
import java.io.InputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
+import java.io.UnsupportedEncodingException;
import java.net.URI;
+import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
@@ -418,7 +420,7 @@
writer.writeStartElement(XML_NODE);
writer.writeAttribute(PREFIX_XMLNS, PREFIX_LINK);
writer.writeAttribute(XLINK_XMLNS, XLINK_LINK);
- String itemName = node.getName();
+ String itemName = URLDecoder.decode(node.getName(), "UTF-8");
writer.writeAttribute(XML_NAME, itemName);
String itemPath = node.getPath();
writer.writeAttribute(XML_HREF, rootHref + itemPath);
@@ -437,8 +439,8 @@
{
Node childNode = ni.nextNode();
writer.writeStartElement(XML_NODE);
- writer.writeAttribute(XML_NAME, childNode.getName());
- String childNodeHref = rootHref + childNode.getPath();
+ writer.writeAttribute(XML_NAME, URLDecoder.decode(childNode.getName(), "UTF-8"));
+ String childNodeHref = rootHref + URLDecoder.decode(childNode.getPath(), "UTF-8");
writer.writeAttribute(XML_HREF, childNodeHref);
writer.writeEndElement();
}
@@ -453,6 +455,10 @@
{
LOG.error("Error has occured while xml processing : ", e);
}
+ catch (UnsupportedEncodingException e)
+ {
+ LOG.warn(e.getMessage());
+ }
finally
{
try
Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/xml/PropertyWriteUtil.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/xml/PropertyWriteUtil.java 2009-10-05 13:26:34 UTC (rev 226)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/xml/PropertyWriteUtil.java 2009-10-05 14:06:55 UTC (rev 227)
@@ -20,6 +20,8 @@
import org.exoplatform.common.util.HierarchicalProperty;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -132,7 +134,14 @@
writeAttributes(xmlStreamWriter, prop);
- xmlStreamWriter.writeCharacters(prop.getValue());
+ try
+ {
+ xmlStreamWriter.writeCharacters(URLDecoder.decode(prop.getValue(), "UTF-8"));
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ e.printStackTrace();
+ }
xmlStreamWriter.writeEndElement();
}
}
More information about the exo-jcr-commits
mailing list