You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ij...@apache.org on 2018/12/10 01:02:24 UTC

nifi git commit: NIFI-5881: Enable to export the template for non-ascii name

Repository: nifi
Updated Branches:
  refs/heads/master ecbed6a78 -> e76c54234


NIFI-5881: Enable to export the template for non-ascii name

This closes #3210.

Signed-off-by: Koji Kawamura <ij...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/e76c5423
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/e76c5423
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/e76c5423

Branch: refs/heads/master
Commit: e76c54234dc8997e22aa0227f969b5808eccacbf
Parents: ecbed6a
Author: Kemix Koo <ke...@163.com>
Authored: Fri Dec 7 16:31:36 2018 +0800
Committer: Koji Kawamura <ij...@apache.org>
Committed: Mon Dec 10 09:51:46 2018 +0900

----------------------------------------------------------------------
 .../org/apache/nifi/web/api/TemplateResource.java   | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/e76c5423/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java
index 4a3de4f..cd3605c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/TemplateResource.java
@@ -43,9 +43,13 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
+import java.nio.charset.Charset;
 import java.util.Set;
 
 /**
@@ -142,14 +146,22 @@ public class TemplateResource extends ApplicationResource {
             attachmentName = attachmentName.replaceAll("\\s", "_");
         }
 
+        final Charset utf8 = StandardCharsets.UTF_8;
+        try {
+            attachmentName = URLEncoder.encode(attachmentName, utf8.name());
+        } catch (UnsupportedEncodingException e) {
+            //
+        }
+
         // generate the response
         /*
          * Here instead of relying on default JAXB marshalling we are simply
          * serializing template to String (formatted, indented etc) and sending
          * it as part of the response.
          */
-        String serializedTemplate = new String(TemplateSerializer.serialize(template), StandardCharsets.UTF_8);
-        return generateOkResponse(serializedTemplate).header("Content-Disposition", String.format("attachment; filename=\"%s.xml\"", attachmentName)).build();
+        String serializedTemplate = new String(TemplateSerializer.serialize(template), utf8);
+        String filename = attachmentName + ".xml";
+        return generateOkResponse(serializedTemplate).encoding(utf8.name()).header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename* = " + utf8.name() + "''" + filename).build();
     }
 
     /**