mast.jsp revision 865ea0b94260b721a2f6ec872b914d6e0b4d3e08
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassCDDL HEADER START
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassThe contents of this file are subject to the terms of the
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassCommon Development and Distribution License (the "License").
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassYou may not use this file except in compliance with the License.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassSee LICENSE.txt included in this distribution for the specific
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glasslanguage governing permissions and limitations under the License.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassWhen distributing Covered Code, include this CDDL HEADER in each
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassfile and include the License file at LICENSE.txt.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassIf applicable, add the following below this CDDL HEADER, with the
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassfields enclosed by brackets "[]" replaced with your own identifying
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassinformation: Portions Copyright [yyyy] [name of copyright owner]
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassCDDL HEADER END
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassCopyright 2005 Sun Microsystems, Inc. All rights reserved.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassUse is subject to license terms.
4106577eb9389768607e9d9a51f614faa6bdb8bcEric Ferraiuoloident "%Z%%M% %I% %E% SMI"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass--%><%@ page import = "javax.servlet.*,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass%><%@ page session="false" %><%@ page errorPage="error.jsp"%><%
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString context = request.getContextPath();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString servlet = request.getServletPath();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString reqURI = request.getRequestURI();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString path = request.getPathInfo();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassif (path == null) path = "";
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassRuntimeEnvironment environment = RuntimeEnvironment.getInstance();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString rawSource = environment.getSourceRootPath();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString resourcePath = rawSource + path;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassFile resourceFile = new File(resourcePath);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassboolean valid = true;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassboolean noHistory = true;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassboolean noAnnotation = true;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassboolean annotate = false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString basename = resourceFile.getName();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassboolean isDir = false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassEftarFileReader ef = null;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString parent = null;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassString parentBasename = resourceFile.getParentFile().getName();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav GlassIgnoredNames ignoredNames = environment.getIgnoredNames();
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass|| ignoredNames.ignore(parentBasename)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass|| !resourcePath.startsWith(rawSource)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass valid = false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass} else if (!resourceFile.canRead() && resourcePath.startsWith(rawSource)) {
c0d83403b13f02bc6fdcf62a712de150a7f974e2Dav Glass String newPath = rawSource + "/on/" + path;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass File newFile = new File(newPath);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(newFile.isDirectory() && servlet.startsWith("/xref") && !path.endsWith("/")) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response.sendRedirect(context + servlet + "/on" + path + "/");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response.sendRedirect(context + servlet + "/on" + path);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass valid = false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass valid = true;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass path = resourcePath.substring(rawSource.length());
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if ("".equals(path)) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass path = path.replace('\\','/');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (isDir && !servlet.startsWith("/xref") && !servlet.startsWith("/hist")) { //if it is an existing directory perhaps people wanted directory xref
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response.sendRedirect(context + "/xref" + path + "/");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response.sendRedirect(context + "/xref" + path);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass } if (isDir && !reqURI.endsWith("/")) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response.sendRedirect(context + servlet + path +"/");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass String dtag = "";
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (request.getDateHeader("If-Modified-Since") >= flast ) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass valid = false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass response.setDateHeader("Last-Modified", flast);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass int lastSlash = path.lastIndexOf('/');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass parent = (lastSlash != -1) ? path.substring(0, lastSlash) : "";
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass int pLastSlash = parent.lastIndexOf('/');
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass parentBasename = pLastSlash != -1 ? parent.substring(pLastSlash+1) : parent;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass noHistory = !(isDir || HistoryGuru.getInstance().hasHistory(rawSource + "/" + parent));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass noAnnotation = isDir ||
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass !HistoryGuru.getInstance().hasAnnotation(resourceFile);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass annotate = !noAnnotation &&
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass ef = new EftarFileReader(environment.getDataRootPath() + "/index/dtags.eftar");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass dtag = ef.get(path);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(ef != null) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass } catch (IOException e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass } catch (Exception e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass%><?xml version="1.0" encoding="iso-8859-1"?>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass <meta name="robots" content="noindex,nofollow">
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass <title>Cross Reference: <%=path%></title>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass <link rel="icon" href="<%=context%>/img/icon.png" type="image/png"/>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass <link rel="stylesheet" type="text/css" href="<%=context%>/style.css"/>
<link rel="alternate stylesheet" type="text/css" media="all" title="Paper White" href="<%=context%>/print.css"/>
<div id="Masthead"><tt><a href="<%=context%>/xref/">xref</a>: <%=org.opensolaris.opengrok.web.Util.breadcrumbPath(context + "/xref", path)%></tt></div>
if ((!isDir && noHistory) || servlet.startsWith("/hi")) {
String rev = request.getParameter("r");
} else if (rev.length() > 0) {
String rev = request.getParameter("r");
if (rev == null || rev.equals("")) {
if(path.length() > 0) {