Author: mattryan
Date: Fri Jan 8 20:50:54 2021
New Revision: 1885277
URL: http://svn.apache.org/viewvc?rev=1885277&view=rev
Log:
OAK-9304 : Specify charset in special character handling for DB
Content-Disposition header
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java?rev=1885277&r1=1885276&r2=1885277&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java
Fri Jan 8 20:50:54 2021
@@ -19,6 +19,7 @@
package org.apache.jackrabbit.oak.plugins.blob.datastore.directaccess;
+import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Set;
@@ -157,7 +158,11 @@ public class DataRecordDownloadOptions {
private String formatContentDispositionHeader(@NotNull final String
dispositionType,
@NotNull final String
fileName,
@Nullable final String
rfc8187EncodedFileName) {
- String iso_8859_1_fileName = new
String(Charsets.ISO_8859_1.encode(fileName).array()).replace("\"", "\\\"");
+ Charset ISO_8859_1 = Charsets.ISO_8859_1;
+ String iso_8859_1_fileName = new String(
+ ISO_8859_1.encode(fileName).array(),
+ ISO_8859_1
+ ).replace("\"", "\\\"");
return null != rfc8187EncodedFileName ?
String.format("%s; filename=\"%s\"; filename*=UTF-8''%s",
dispositionType, iso_8859_1_fileName,
rfc8187EncodedFileName) :
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java?rev=1885277&r1=1885276&r2=1885277&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java
Fri Jan 8 20:50:54 2021
@@ -44,6 +44,7 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Charsets;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -176,26 +177,31 @@ public abstract class AbstractDataRecord
@Test
public void testGetDownloadURIWithCustomHeadersIT() throws
DataStoreException, IOException {
+ String umlautFilename = "Uml\u00e4utfile.png";
+ String umlautFilename_ISO_8859_1 = new String(
+ Charsets.ISO_8859_1.encode(umlautFilename).array(),
+ Charsets.ISO_8859_1
+ );
List<String> fileNames = Lists.newArrayList(
"image.png",
"beautiful landscape.png",
"\"filename-with-double-quotes\".png",
"filename-with-one\"double-quote.jpg",
- "UmlaÌutfile.png"
+ umlautFilename
);
List<String> iso_8859_1_fileNames = Lists.newArrayList(
"image.png",
"beautiful landscape.png",
"\\\"filename-with-double-quotes\\\".png",
"filename-with-one\\\"double-quote.jpg",
- "Umla?utfile.png"
+ umlautFilename_ISO_8859_1
);
List<String> rfc8187_fileNames = Lists.newArrayList(
"image.png",
"beautiful%20landscape.png",
"%22filename-with-double-quotes%22.png",
"filename-with-one%22double-quote.jpg",
- "Umla%CC%88utfile.png"
+ "Uml%C3%A4utfile.png"
);
DataRecord record = null;
Modified:
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java?rev=1885277&r1=1885276&r2=1885277&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java
Fri Jan 8 20:50:54 2021
@@ -24,6 +24,7 @@ import java.util.List;
import org.apache.jackrabbit.oak.api.blob.BlobDownloadOptions;
import org.junit.Test;
+import com.google.common.base.Charsets;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
@@ -261,13 +262,18 @@ public class DataRecordDownloadOptionsTe
@Test
public void testGetContentDispositionWithSpecialCharacterFilenames() {
+ String umlautFilename = "Uml\u00e4utfile.jpg";
+ String umlautFilename_ISO_8859_1 = new String(
+ Charsets.ISO_8859_1.encode(umlautFilename).array(),
+ Charsets.ISO_8859_1
+ );
List<String> filenames = Lists.newArrayList(
"image.png",
"text.txt",
"filename with spaces.jpg",
"\"filename-with-double-quotes\".jpg",
"filename-with-one\"double-quote.jpg",
- "UmlaÌutfile.jpg"
+ umlautFilename
);
List<String> iso_8859_1_filenames = Lists.newArrayList(
"image.png",
@@ -275,7 +281,7 @@ public class DataRecordDownloadOptionsTe
"filename with spaces.jpg",
"\\\"filename-with-double-quotes\\\".jpg",
"filename-with-one\\\"double-quote.jpg",
- "Umla?utfile.jpg"
+ umlautFilename_ISO_8859_1
);
List<String> rfc8187_filenames = Lists.newArrayList(
"image.png",
@@ -283,7 +289,7 @@ public class DataRecordDownloadOptionsTe
"filename%20with%20spaces.jpg",
"%22filename-with-double-quotes%22.jpg",
"filename-with-one%22double-quote.jpg",
- "Umla%CC%88utfile.jpg"
+ "Uml%C3%A4utfile.jpg"
);
for (String dispositionType :
Lists.newArrayList(DISPOSITION_TYPE_INLINE, DISPOSITION_TYPE_ATTACHMENT)) {