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",
-                "Umlä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",
-                "Umlä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)) {


Reply via email to