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");