list.jsp revision daba8f127bde81db38efd27fa72e7a0554de4987
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterCDDL HEADER START
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterThe contents of this file are subject to the terms of the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterCommon Development and Distribution License (the "License").
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterYou may not use this file except in compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterSee LICENSE.txt included in this distribution for the specific
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterlanguage governing permissions and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterWhen distributing Covered Code, include this CDDL HEADER in each
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterfile and include the License file at LICENSE.txt.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterIf applicable, add the following below this CDDL HEADER, with the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterfields enclosed by brackets "[]" replaced with your own identifying
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterinformation: Portions Copyright [yyyy] [name of copyright owner]
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterCDDL HEADER END
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterCopyright 2005 Sun Microsystems, Inc. All rights reserved.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterUse is subject to license terms.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterident "%Z%%M% %I% %E% SMI"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster--%><%@ page import = "javax.servlet.*,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%><%@include file="mast.jsp"%><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan FosterString rev = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterif(!isDir && ef != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (IOException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isDir) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // verify that the current path is part of the selected project
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Project activeProject = Project.getProject(resourceFile);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (activeProject != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String project = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Cookie[] cookies = request.getCookies();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (cookies != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (Cookie cookie : cookies) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (cookie.getName().equals("OpenGrok/project")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean add = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (project != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean found = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (String aproj : project.split(" ")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (activeProject.getPath().equalsIgnoreCase(aproj)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster found = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!found) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (project == null || project.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster project = project + " " + activeProject.getPath();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // update the cookie
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Cookie cookie = new Cookie("OpenGrok/project", project);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cookie.setPath(context + "/");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // If requesting a Directory listing -------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DirectoryListing dl = new DirectoryListing(ef);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] files = resourceFile.list();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (files != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Arrays.sort(files, String.CASE_INSENSITIVE_ORDER);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ArrayList readMes = dl.listTo(resourceFile, out, path, files);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(readMes != null && readMes.size() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster File xdir = new File(environment.getDataRootPath() + "/xref" + path);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster char[] buf = new char[8192];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(int i = 0; i< readMes.size(); i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BufferedReader br = new BufferedReader(new FileReader(new File(xdir, (String)readMes.get(i))));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int len = 0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><h3><%=(String)readMes.get(i)%></h3><div id="src"><pre><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while((len = br.read(buf)) > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %></pre></div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(IOException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if ((rev = request.getParameter("r")) != null && !rev.equals("")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster// Else if requesting a previous revision -------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(noHistory) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response.sendError(404, "Revision not found");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (rev.matches("^[0-9]+(\\.[0-9]+)*$")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Class a = AnalyzerGuru.find(basename);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (g == Genre.PLAIN|| g == Genre.HTML || g == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InputStream in = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster in = HistoryGuru.getInstance().getRevision(resourceFile.getParent(), basename, rev);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response.sendError(404, "Revision not found");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(in != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (g == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (g == Genre.DATA || g == Genre.XREFABLE || g == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %> <div id="src">Binary file [Click <a href="<%=context%>/raw<%=uriEncodedName%>?r=<%=rev%>">here</a> to download] </div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><div id="src"><span class="pagetitle"><%=basename%> revision <%=rev%> </span><pre>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Annotation annotation = annotate ?
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HistoryGuru.getInstance().annotate(resourceFile, rev) : null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AnalyzerGuru.writeXref(a, in, out, annotation);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster} else if (g == Genre.IMAGE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster} else if (g == Genre.HTML) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster char[] buf = new char[8192];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Reader br = new InputStreamReader(in);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int len = 0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while((len = br.read(buf)) > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %> Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">download <%=basename%></a><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (IOException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %> <h3 class="error">IO Error</h3> <p> <%=e.getMessage() %> </p> <%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %></pre></div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %> <h3 class="error">Error reading file</h3> <%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(g == Genre.IMAGE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><div id="src"><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/></div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><div id="src"> Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><h3 class="error">Error: Invalid Revision Number!</h3><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster// requesting cross referenced file -------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String xrefSource = environment.getDataRootPath() + "/xref";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String resourceXFile = xrefSource + path;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster File xrefFile = new File(resourceXFile);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(xrefFile.exists() && !annotate) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster char[] buf = new char[8192];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BufferedReader br = new BufferedReader(new FileReader(resourceXFile));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int len = 0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><div id="src"><pre><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while((len = br.read(buf)) > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %></pre></div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BufferedInputStream bin = new BufferedInputStream(new FileInputStream(resourceFile));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Class a = AnalyzerGuru.find(basename);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(g == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><div id="src"><img src="<%=context%>/raw<%=path%>"/></div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if( g == Genre.HTML) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster char[] buf = new char[8192];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Reader br = new InputStreamReader(bin);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int len = 0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while((len = br.read(buf)) > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(g == Genre.PLAIN) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %><div id="src"><pre><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Annotation annotation = annotate ?
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HistoryGuru.getInstance().annotate(resourceFile, rev) : null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AnalyzerGuru.writeXref(a, bin, out, annotation);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %></pre></div><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster %> Click <a href="<%=context%>/raw<%=uriEncodedName%>">download <%=basename%></a><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster%><%@include file="foot.jspf"%><%
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterif(ef != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (IOException e) {