raw.jsp revision 1186
a0fb6a0980359165a4459723f52d5d7b5725f9c6Tinderbox User<%--
663272199096ed57917f2bfb1d748a0a622b7b24Tinderbox User$Id$
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox UserCDDL HEADER START
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark AndrewsThe contents of this file are subject to the terms of the
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark AndrewsCommon Development and Distribution License (the "License").
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark AndrewsYou may not use this file except in compliance with the License.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserSee LICENSE.txt included in this distribution for the specific
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrewslanguage governing permissions and limitations under the License.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserWhen distributing Covered Code, include this CDDL HEADER in each
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrewsfile and include the License file at LICENSE.txt.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserIf applicable, add the following below this CDDL HEADER, with the
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userfields enclosed by brackets "[]" replaced with your own identifying
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrewsinformation: Portions Copyright [yyyy] [name of copyright owner]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserCDDL HEADER END
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserCopyright 2008 Sun Microsystems, Inc. All rights reserved.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserUse is subject to license terms.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox UserPortions Copyright 2011 Jens Elkner.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User--%><%@page import="
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userjava.io.File,
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userjava.io.FileInputStream,
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userjava.io.FileNotFoundException,
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userjava.io.InputStream,
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrewsjava.io.OutputStream,
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrewsorg.opensolaris.opengrok.configuration.RuntimeEnvironment,
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrewsorg.opensolaris.opengrok.history.HistoryGuru,
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userorg.opensolaris.opengrok.web.PageConfig"
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User%><%@
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrewsinclude file="pageconfig.jspf"
dec590a3deb8e87380a8bd3a77d535dba3729bf6Tinderbox User
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews%><%
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User/* ---------------------- raw.jsp start --------------------- */
0a330c717a298b60fb357999baac7c08dfc29046Tinderbox User{
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User cfg = PageConfig.get(request);
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews String redir = cfg.canProcess();
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews if (redir == null || redir.length() > 0) {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews if (redir != null) {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews response.sendRedirect(redir);
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User } else {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews response.sendError(HttpServletResponse.SC_NOT_FOUND);
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews }
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews return;
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews }
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews File f = cfg.getResourceFile();
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User String revision = cfg.getRequestedRevision();
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews if (revision.length() == 0) {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews revision = null;
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews }
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews InputStream in = null;
a0fb6a0980359165a4459723f52d5d7b5725f9c6Tinderbox User try {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews if (revision != null) {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews in = HistoryGuru.getInstance().getRevision(f.getParent(),
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews f.getName(), revision.substring(2));
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews } else {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews long flast = cfg.getLastModified();
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews if (request.getDateHeader("If-Modified-Since") >= flast) {
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews return;
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews }
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews in = new FileInputStream(f);
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews response.setContentLength((int) f.length());
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews response.setDateHeader("Last-Modified", f.lastModified());
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews }
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User } catch (Exception e) {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews response.sendError(HttpServletResponse.SC_NOT_FOUND);
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews return ;
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews }
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User String mimeType = getServletContext().getMimeType(f.getAbsolutePath());
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User response.setContentType(mimeType);
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews try {
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews response.setHeader("content-disposition", "attachment; filename="
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User + f.getName());
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews OutputStream o = response.getOutputStream();
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User byte[] buffer = new byte[8192];
a0fb6a0980359165a4459723f52d5d7b5725f9c6Tinderbox User int nr;
1cefb9df3fa34d08734f29005cfafa6be5cf3e93Mark Andrews while ((nr = in.read(buffer)) > 0) {
o.write(buffer, 0, nr);
}
o.flush();
o.close();
} finally {
in.close();
}
}
/* ---------------------- raw.jsp end-------------------- */
%>