@@ -22,6 +22,8 @@ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
22
22
23
23
Portions Copyright 2011 Jens Elkner.
24
24
--%> <%@page import="
25
+ java.io.ByteArrayInputStream,
26
+ java.io.OutputStream,
25
27
java.io.BufferedReader,
26
28
java.io.FileNotFoundException,
27
29
java.io.InputStream,
@@ -66,6 +68,25 @@ include file="mast.jsp"
66
68
<p ><%= data. errorMsg % > </p >
67
69
</div ><%
68
70
71
+ } else if (data. type == DiffType . TEXT
72
+ && request. getParameter(" action" ) != null
73
+ && request. getParameter(" action" ). equals(" download" )) {
74
+ response. resetBuffer(); // reset buffer to clean it from the header html
75
+ try (OutputStream o = response. getOutputStream()) {
76
+ for (int i = 0 ; i < data. revision. size(); i++ ) {
77
+ Delta d = data. revision. getDelta(i);
78
+ try (InputStream in = new ByteArrayInputStream (d. toString(). getBytes(" UTF-8" ))) {
79
+ response. setHeader(" content-disposition" , " attachment; filename="
80
+ + cfg. getResourceFile(). getName() + " @" + data. rev[0 ]
81
+ + " -" + data. rev[1 ] + " .diff" );
82
+ byte [] buffer = new byte [8192 ];
83
+ int nr;
84
+ while ((nr = in. read(buffer)) > 0 ) {
85
+ o. write(buffer, 0 , nr);
86
+ }
87
+ }
88
+ }
89
+ }
69
90
} else if (data. genre == Genre . IMAGE ) {
70
91
71
92
String link = request. getContextPath() + Prefix . DOWNLOAD_P
@@ -157,7 +178,8 @@ include file="mast.jsp"
157
178
<span > <a href =" <%= reqURI % > ?r1=<%= rp1 % >& ; r2=<%= rp2
158
179
% >& ; format=<%= type. getAbbrev() % >& ; full=0" >compact</a ></span ><%
159
180
}
160
- % > <span ><a href =" #" id =" toggle-jumper" >jumper</a ></span ><%
181
+ % > <span ><a href =" #" id =" toggle-jumper" >jumper</a ></span >
182
+ <span ><a href =" <%= reqURI % > ?r1=<%= rp1 % >& ; r2=<%= rp2 % >& ; format=<%= DiffType . TEXT % >& ; action=download" >download diff</a ></span ><%
161
183
% > </div >
162
184
</div >
163
185
0 commit comments