You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2018/06/19 13:04:18 UTC

svn commit: r1833835 - in /jackrabbit/trunk: jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AddNodeTest.java jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java

Author: reschke
Date: Tue Jun 19 13:04:18 2018
New Revision: 1833835

URL: http://svn.apache.org/viewvc?rev=1833835&view=rev
Log:
JCR-4317: davex remoting fails for non-ASCII characters in node names

Modified:
    jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AddNodeTest.java
    jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AddNodeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AddNodeTest.java?rev=1833835&r1=1833834&r2=1833835&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AddNodeTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AddNodeTest.java Tue Jun 19 13:04:18 2018
@@ -16,26 +16,20 @@
  */
 package org.apache.jackrabbit.jcr2spi;
 
-import org.apache.jackrabbit.test.AbstractJCRTest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.io.ByteArrayInputStream;
 
 import javax.jcr.Node;
-import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.lock.LockException;
 
+import org.apache.jackrabbit.test.AbstractJCRTest;
+
 /**
  * <code>AddNodeTest</code>...
  */
 public class AddNodeTest extends AbstractJCRTest {
 
     /**
-     * logger instance
-     */
-    private static final Logger log = LoggerFactory.getLogger(AddNodeTest.class);
-
-    /**
      * Writing to a locked node must throw LockException even if the lock
      * isn't detected withing Jcr2Spi.
      *
@@ -48,7 +42,7 @@ public class AddNodeTest extends Abstrac
             Node node = s.getNode(testRootNode.getPath());
             Node n = node.addNode(nodeName1);
             n.setProperty(propertyName1, "value");
-            
+
             testRootNode.lock(true, true);
 
             s.save();
@@ -58,4 +52,26 @@ public class AddNodeTest extends Abstrac
             s.logout();
         }
     }
+
+    public void testAddNodeNonASCII() throws Exception {
+        String testName = "test - \u20ac";
+        Session s = getHelper().getSuperuserSession();
+        try {
+            Node node = s.getNode(testRootNode.getPath());
+            Node n = node.addNode(testName, "nt:file");
+            Node c = n.addNode("jcr:content", "nt:resource");
+            c.setProperty("jcr:data", s.getValueFactory().createBinary(new ByteArrayInputStream("hello world".getBytes("UTF-8"))));
+            s.save();
+        } finally {
+            s.logout();
+        }
+
+        Session s2 = getHelper().getReadOnlySession();
+        try {
+            Node node = s2.getNode(testRootNode.getPath()).getNode(testName);
+            assertEquals(testName, node.getName());
+        } finally {
+            s2.logout();
+        }
+    }
 }
\ No newline at end of file

Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java?rev=1833835&r1=1833834&r2=1833835&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java Tue Jun 19 13:04:18 2018
@@ -40,6 +40,7 @@ import org.apache.http.client.methods.Ht
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.entity.ContentType;
 import org.apache.http.entity.mime.FormBodyPart;
+import org.apache.http.entity.mime.HttpMultipartMode;
 import org.apache.http.entity.mime.MultipartEntityBuilder;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.jackrabbit.JcrConstants;
@@ -615,7 +616,8 @@ public class RepositoryServiceImpl exten
             // engine has a form-size restriction (JCR-3726)
             Utils.addPart(PARAM_DIFF, buf.toString(), parts);
 
-            MultipartEntityBuilder b = MultipartEntityBuilder.create();
+            // JCR-4317: need RFC6532 mode so that values are encoded in UTF-8
+            MultipartEntityBuilder b = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
             for (FormBodyPart p : parts) {
                 b.addPart(p.getName(), p.getBody());
             }