list.jsp revision 477
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenCDDL HEADER START
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenThe contents of this file are subject to the terms of the
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenCommon Development and Distribution License (the "License").
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenYou may not use this file except in compliance with the License.
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenSee LICENSE.txt included in this distribution for the specific
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainenlanguage governing permissions and limitations under the License.
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenWhen distributing Covered Code, include this CDDL HEADER in each
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainenfile and include the License file at LICENSE.txt.
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenIf applicable, add the following below this CDDL HEADER, with the
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainenfields enclosed by brackets "[]" replaced with your own identifying
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Siraineninformation: Portions Copyright [yyyy] [name of copyright owner]
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenCDDL HEADER END
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenCopyright 2005 Sun Microsystems, Inc. All rights reserved.
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenUse is subject to license terms.
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen--%><%@ page import = "javax.servlet.*,
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainenorg.opensolaris.opengrok.configuration.Project,
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainenorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen%><%@include file="mast.jsp"%><%
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo SirainenString rev = null;
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainenif(!isDir && ef != null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen } catch (IOException e) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen // verify that the current path is part of the selected project
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen Project activeProject = Project.getProject(resourceFile);
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (activeProject != null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen String project = null;
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen Cookie[] cookies = request.getCookies();
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (cookies != null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen for (Cookie cookie : cookies) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (cookie.getName().equals("OpenGrok/project")) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen boolean set = false;
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (project != null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen boolean found = false;
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen for (String aproj : project.split(" ")) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (activeProject.getPath().equalsIgnoreCase(aproj)) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen found = true;
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (!found) {
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen Cookie cookie = new Cookie("OpenGrok/project", activeProject.getPath());
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen cookie.setPath(context + "/");
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen // If requesting a Directory listing -------------
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen DirectoryListing dl = new DirectoryListing(ef);
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen String[] files = resourceFile.list();
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (files != null) {
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen Arrays.sort(files, String.CASE_INSENSITIVE_ORDER);
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen List<String> readMes = dl.listTo(resourceFile, out, path, files);
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if(readMes != null && readMes.size() > 0) {
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen File xdir = new File(environment.getDataRootPath() + "/xref" + path);
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen char[] buf = new char[8192];
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen for (String readme : readMes) {
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo Sirainen File readmeFile = new File(xdir, readme + ".gz");
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen Reader br = null;
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (environment.isCompressXref() && readmeFile.exists()) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen br = new InputStreamReader(new GZIPInputStream(new FileInputStream(readmeFile)));
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen readmeFile = new File(xdir, readme);
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen br = new FileReader(readmeFile);
eef20a55e19a239244b14963d716cf0d070fe1bbTimo Sirainen if (br != null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen %><h3><%=readme%></h3><div id="src"><pre><%
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen while((len = br.read(buf)) > 0) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen %></pre></div><%
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen } catch(IOException e) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen OpenGrokLogger.getLogger().log(Level.WARNING, "An error occured while reading/writing readme:", e);
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (br != null) {
e93184a9055c2530366dfe617e07199603c399ddMartti Rannanjärvi } catch (IOException e) {
e93184a9055c2530366dfe617e07199603c399ddMartti Rannanjärvi OpenGrokLogger.getLogger().log(Level.WARNING, "An error occured while closing file:", e);
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen } else if ((rev = request.getParameter("r")) != null && !rev.equals("")) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen // Else if requesting a previous revision -------------
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (noHistory) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen response.sendError(404, "Revision not found");
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen FileAnalyzerFactory a = AnalyzerGuru.find(basename);
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (g == Genre.PLAIN|| g == Genre.HTML || g == null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen InputStream in = null;
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen in = HistoryGuru.getInstance().getRevision(resourceFile.getParent(), basename, rev);
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen } catch (Exception e) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen response.sendError(404, "Revision not found");
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (in != null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (g == null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen if (g == Genre.DATA || g == Genre.XREFABLE || g == null) {
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen %><div id="src">Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
83942ac160cdfb922c3a2f29ddfae2a13ebf8b5dTimo Sirainen %><div id="src"><span class="pagetitle"><%=basename%> revision <%=rev%> </span><pre><%
if (g == Genre.PLAIN) {
Annotation annotation = annotate ? HistoryGuru.getInstance().annotate(resourceFile, rev) : null;
} else if (g == Genre.IMAGE) {
} else if (g == Genre.HTML) {
while((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
%> <h3 class="error">IO Error</h3> <p> <%=e.getMessage() %> </p> <%
in.close();
} else if(g == Genre.IMAGE) {
%><div id="src"> Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
File xrefSource = new File(environment.getDataRootFile(), "/xref");
if (xrefFile.exists()) {
while((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
br.close();
FileAnalyzerFactory a = AnalyzerGuru.find(basename);
Genre g = AnalyzerGuru.getGenre(a);
a = AnalyzerGuru.find(bin);
g = AnalyzerGuru.getGenre(a);
if (g == Genre.IMAGE) {
} else if( g == Genre.HTML) {
while((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
} else if(g == Genre.PLAIN) {
Annotation annotation = annotate ? HistoryGuru.getInstance().annotate(resourceFile, rev) : null;
%><%@include file="foot.jspf"%><%
ef.close();