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 2020/06/10 19:04:43 UTC

svn commit: r1878725 - in /jackrabbit/trunk: jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java

Author: reschke
Date: Wed Jun 10 19:04:43 2020
New Revision: 1878725

URL: http://svn.apache.org/viewvc?rev=1878725&view=rev
Log:
JCR-4583: remove XML serialization workaround for ancient Java versions

Added:
    jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java

Added: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java?rev=1878725&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java Wed Jun 10 19:04:43 2020
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.server;
+
+import java.io.IOException;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.util.EntityUtils;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.MultiStatusResponse;
+import org.apache.jackrabbit.webdav.client.methods.HttpPropfind;
+import org.apache.jackrabbit.webdav.client.methods.HttpProppatch;
+import org.apache.jackrabbit.webdav.property.DavProperty;
+import org.apache.jackrabbit.webdav.property.DavPropertyName;
+import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
+import org.apache.jackrabbit.webdav.property.DavPropertySet;
+import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
+import org.apache.jackrabbit.webdav.xml.Namespace;
+
+public class ProppatchTest extends WebDAVTestBase {
+
+    public void testPropPatchSurrogate() throws IOException, DavException {
+
+        String testuri = this.root + "ppsurrogate";
+
+        try {
+            int status;
+
+            HttpPut put = new HttpPut(testuri);
+            put.setEntity(new StringEntity("1"));
+            status = this.client.execute(put, this.context).getStatusLine().getStatusCode();
+            assertEquals("status: " + status, 201, status);
+
+            DavPropertyName name = DavPropertyName.create("foobar", Namespace.EMPTY_NAMESPACE);
+            DavPropertySet props = new DavPropertySet();
+            DavProperty<String> foobar = new DefaultDavProperty<>(name, "\uD83D\uDCA9");
+            props.add(foobar);
+            HttpProppatch proppatch = new HttpProppatch(testuri, props, new DavPropertyNameSet());
+            HttpResponse resp = this.client.execute(proppatch, this.context);
+            status = resp.getStatusLine().getStatusCode();
+            assertEquals(207, status);
+            EntityUtils.consume(resp.getEntity());
+
+            DavPropertyNameSet names = new DavPropertyNameSet();
+            names.add(name);
+            HttpPropfind propfind = new HttpPropfind(testuri, names, 0);
+            resp = this.client.execute(propfind, this.context);
+            status = resp.getStatusLine().getStatusCode();
+            assertEquals(207, status);
+            MultiStatusResponse[] responses = propfind.getResponseBodyAsMultiStatus(resp).getResponses();
+            assertEquals(1, responses.length);
+
+            MultiStatusResponse response = responses[0];
+            DavPropertySet found = response.getProperties(200);
+
+            DavProperty<?> f = found.get(name);
+            assertEquals("\uD83D\uDCA9", f.getValue());
+        } finally {
+            delete(testuri);
+        }
+    }
+
+}

Propchange: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ProppatchTest.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java?rev=1878725&r1=1878724&r2=1878725&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java Wed Jun 10 19:04:43 2020
@@ -138,13 +138,7 @@ public class WebdavResponseImpl implemen
             try {
                 Document doc = DomUtil.createDocument();
                 doc.appendChild(serializable.toXml(doc));
-
-                // JCR-2636: Need to use an explicit OutputStreamWriter
-                // instead of relying on the built-in UTF-8 serialization
-                // to avoid problems with surrogate pairs on Sun JRE 1.5.
-                Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
-                DomUtil.transformDocument(doc, writer);
-                writer.flush();
+                DomUtil.transformDocument(doc, out);
 
                 // TODO: Should this be application/xml? See JCR-1621
                 httpResponse.setContentType("text/xml; charset=UTF-8");