mast.jsp revision 0
0N/A<%--
0N/ACDDL HEADER START
1276N/A
0N/AThe contents of this file are subject to the terms of the
1519N/ACommon Development and Distribution License (the "License").
0N/AYou may not use this file except in compliance with the License.
0N/A
919N/ASee LICENSE.txt included in this distribution for the specific
919N/Alanguage governing permissions and limitations under the License.
919N/A
919N/AWhen distributing Covered Code, include this CDDL HEADER in each
919N/Afile and include the License file at LICENSE.txt.
919N/AIf applicable, add the following below this CDDL HEADER, with the
919N/Afields enclosed by brackets "[]" replaced with your own identifying
919N/Ainformation: Portions Copyright [yyyy] [name of copyright owner]
919N/A
919N/ACDDL HEADER END
919N/A
919N/ACopyright 2005 Sun Microsystems, Inc. All rights reserved.
919N/AUse is subject to license terms.
919N/A
919N/Aident "%Z%%M% %I% %E% SMI"
919N/A
919N/A--%><%@ page import = "javax.servlet.*,
0N/Ajava.lang.*,
0N/Ajavax.servlet.http.*,
0N/Ajava.util.*,
156N/Ajava.io.*,
493N/Ajava.text.*,
0N/Aorg.opensolaris.opengrok.index.*
0N/A"
1549N/A%><%@ page session="false" %><%@ page errorPage="error.jsp"%><%
0N/AString context = request.getContextPath();
911N/AString servlet = request.getServletPath();
1549N/AString reqURI = request.getRequestURI();
1549N/AString path = request.getPathInfo();
1549N/Aif (path == null) path = "";
911N/AString rawSource = getServletContext().getInitParameter("SRC_ROOT");
0N/AString resourcePath = rawSource + path;
1549N/AFile resourceFile = new File(resourcePath);
0N/AresourcePath = resourceFile.getAbsolutePath();
156N/Aboolean valid;
156N/Aboolean noHistory = true;
0N/AString basename = resourceFile.getName();
70N/Aif("/".equals(path)) {
1072N/A basename = "Cross Reference";
493N/A}
156N/Aboolean isDir = false;
1224N/AEftarFileReader ef = null;
1224N/AString parent = null;
0N/AString parentBasename = resourceFile.getParentFile().getName();
970N/Aif(resourcePath.length() < rawSource.length()
970N/A|| IgnoredNames.ignore.contains(basename)
970N/A|| IgnoredNames.ignore.contains(parentBasename)
0N/A|| !resourcePath.startsWith(rawSource)) {
0N/A valid = false;
0N/A response.sendError(404);
965N/A} else if (!resourceFile.canRead() && resourcePath.startsWith(rawSource)) {
0N/A String newPath = rawSource + "/on/" + path;
156N/A File newFile = new File(newPath);
173N/A if(newFile.canRead()) {
0N/A if(newFile.isDirectory() && servlet.startsWith("/xref") && !path.endsWith("/")) {
970N/A response.sendRedirect(context + servlet + "/on" + path + "/");
970N/A } else {
970N/A response.sendRedirect(context + servlet + "/on" + path);
156N/A }
156N/A }
valid = false;
response.sendError(404);
} else {
valid = true;
path = resourcePath.substring(rawSource.length());
if (File.separatorChar == '\\') {
path = path.replace('\\','/');
}
isDir = resourceFile.isDirectory();
if (isDir && !servlet.startsWith("/xref") && !servlet.startsWith("/hist")) { //if it is an existing directory perhaps people wanted directory xref
if(!reqURI.endsWith("/")) {
response.sendRedirect(context + "/xref" + path + "/");
} else {
response.sendRedirect(context + "/xref" + path);
}
} if (isDir && !reqURI.endsWith("/")) {
response.sendRedirect(context + servlet + path +"/");
} else {
long flast = resourceFile.lastModified();
String dtag = "";
if (request.getDateHeader("If-Modified-Since") >= flast ) {
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
valid = false;
} else {
response.setDateHeader("Last-Modified", flast);
int lastSlash = path.lastIndexOf('/');
parent = (lastSlash != -1) ? path.substring(0, lastSlash) : "";
int pLastSlash = parent.lastIndexOf('/');
parentBasename = pLastSlash != -1 ? parent.substring(pLastSlash+1) : parent;
noHistory = !(isDir || HistoryGuru.getInstance().hasHistory(rawSource + "/" + parent));
try{
ef = new EftarFileReader(getServletContext().getInitParameter("DATA_ROOT") + "/index/dtags.eftar");
dtag = ef.get(path);
if(servlet.startsWith("/xr")) {
} else {
if(ef != null) {
try {
ef.close();
} catch (IOException e) {
} finally {
ef = null;
}
}
}
} catch (Exception e) {
dtag = "";
}
%><?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title><%=basename%></title>
<link rel="icon" href="<%=context%>/img/icon.png" type="image/png"/>
<link rel="stylesheet" type="text/css" href="<%=context%>/style.css"/>
<link rel="stylesheet" type="text/css" href="<%=context%>/print.css" media="print" />
<link rel="alternate stylesheet" type="text/css" media="all" title="Paper White" href="<%=context%>/print.css"/>
</head>
<body><div id="page">
<form action="<%=context%>/search">
<div id="header">
<%= getServletContext().getInitParameter("HEADER") %>
<div id="pagetitle"><b id="filename"><%=basename%><%= isDir ? "/" : "" %></b><br/><%=dtag%></div>
</div>
<div id="Masthead"><tt><a href="<%=context%>/xref/">xref</a>: <%=org.opensolaris.opengrok.web.Util.breadcrumbPath(context + "/xref", path)%><%= isDir ? "/" : "" %></tt></div>
<div id="bar"><a href="<%=context%>" id="home">Home</a> |
<%
if ((!isDir && noHistory) || servlet.startsWith("/hi")) {
%> <span class="c" id="history">History</span> |<%
} else {
%><a id="history" href="<%=context%>/history<%=path%>">History</a> |<%
}
if (!isDir) {
%> <a id="download" href="<%=context%>/raw<%=path%>">Download</a> | <%
}
%> <input id="search" name="q" class="q"/>
<input type="submit" value="Search" class="submit"/><%
if(isDir) {
if(path.length() > 0) {
%><input type="checkbox" name="path" value="<%=path%>"/> only in <b><%=basename%></b><%
}
} else {
%><input type="checkbox" name="path" value="<%=parent%>"/> only in <b><%=parentBasename%></b><%
}
%></div></form><%
} // date check
} // not a directory redirect
}
%>