[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