Skip to content

Commit 8353f0f

Browse files
authored
Merge pull request #1283 from tulinkry/downloadable-diff
allowing users to download the diff
2 parents 2613410 + 31ba4e9 commit 8353f0f

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

web/diff.jsp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
2222
2323
Portions Copyright 2011 Jens Elkner.
2424
--%><%@page import="
25+
java.io.ByteArrayInputStream,
26+
java.io.OutputStream,
2527
java.io.BufferedReader,
2628
java.io.FileNotFoundException,
2729
java.io.InputStream,
@@ -66,6 +68,25 @@ include file="mast.jsp"
6668
<p><%= data.errorMsg %></p>
6769
</div><%
6870
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+
}
6990
} else if (data.genre == Genre.IMAGE) {
7091
7192
String link = request.getContextPath() + Prefix.DOWNLOAD_P
@@ -157,7 +178,8 @@ include file="mast.jsp"
157178
<span> <a href="<%= reqURI %>?r1=<%= rp1 %>&amp;r2=<%= rp2
158179
%>&amp;format=<%= type.getAbbrev() %>&amp;full=0">compact</a></span><%
159180
}
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 %>&amp;r2=<%= rp2 %>&amp;format=<%= DiffType.TEXT %>&amp;action=download">download diff</a></span><%
161183
%></div>
162184
</div>
163185

0 commit comments

Comments
 (0)