list.jsp revision 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync<%--
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCDDL HEADER START
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThe contents of this file are subject to the terms of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCommon Development and Distribution License (the "License").
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncYou may not use this file except in compliance with the License.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSee LICENSE.txt included in this distribution for the specific
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynclanguage governing permissions and limitations under the License.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWhen distributing Covered Code, include this CDDL HEADER in each
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfile and include the License file at LICENSE.txt.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIf applicable, add the following below this CDDL HEADER, with the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfields enclosed by brackets "[]" replaced with your own identifying
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncinformation: Portions Copyright [yyyy] [name of copyright owner]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCDDL HEADER END
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright 2005 Sun Microsystems, Inc. All rights reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUse is subject to license terms.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncident "%Z%%M% %I% %E% SMI"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync--%><%@ page import = "javax.servlet.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncjava.lang.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncjavax.servlet.http.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncjava.util.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncjava.io.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncjava.text.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncorg.opensolaris.opengrok.analysis.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncorg.opensolaris.opengrok.index.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncorg.opensolaris.opengrok.web.*,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncorg.opensolaris.opengrok.history.*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync%><%@include file="mast.jsp"%><%
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncString rev = null;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif(!isDir && ef != null) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync try {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ef.close();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } catch (IOException e) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ef = null;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif (valid) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (isDir) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// If requesting a Directory listing -------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DirectoryListing dl = new DirectoryListing(IgnoredNames.ignore, ef);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync String[] files = resourceFile.list();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (files != null) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Arrays.sort(files, String.CASE_INSENSITIVE_ORDER);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ArrayList readMes = dl.listTo(resourceFile, out, path, files);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if(readMes != null && readMes.size() > 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync File xdir = new File(getServletContext().getInitParameter("DATA_ROOT") + "/xref" + path);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if(xdir.exists() && xdir.isDirectory()) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char[] buf = new char[8192];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for(int i = 0; i< readMes.size(); i++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync try {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BufferedReader br = new BufferedReader(new FileReader(new File(xdir, (String)readMes.get(i))));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int len = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync %><h3><%=(String)readMes.get(i)%></h3><div id="src"><pre><%
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while((len = br.read(buf)) > 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync out.write(buf, 0, len);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync %></pre></div><%
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync br.close();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } catch(IOException e) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if ((rev = request.getParameter("r")) != null && !rev.equals("")) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Else if requesting a previous revision -------------
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if(noHistory) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync response.sendError(404, "Revision not found");
} else if (rev.matches("^[0-9]+(\\.[0-9]+)*$")) {
Class a = AnalyzerGuru.find(basename);
Genre g = AnalyzerGuru.getGenre(a);
if (g == Genre.PLAIN|| g == Genre.HTML || g == null) {
InputStream in = null;
try{
in = HistoryGuru.getInstance().getRevision(resourceFile.getParent(), basename, rev);
} catch (Exception e) {
response.sendError(404, "Revision not found");
}
if(in != null) {
try {
if (g == null) {
a = AnalyzerGuru.find(in);
g = AnalyzerGuru.getGenre(a);
}
if (g == Genre.DATA || g == Genre.XREFABLE || g == null) {
%> <div id="src">Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
} else {
%><div id="src"><span class="pagetitle"><%=basename%> revision <%=rev%> </span><pre>
<%
if (g == Genre.PLAIN) {
System.setProperty("urlPrefix", context+"/s?");
AnalyzerGuru.writeXref(a, in, out);
} else if (g == Genre.IMAGE) {
%><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/><%
} else if (g == Genre.HTML) {
char[] buf = new char[8192];
Reader br = new InputStreamReader(in);
int len = 0;
while((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
}
} else {
%> Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">download <%=basename%></a><%
}
}
} catch (IOException e) {
%> <h3 class="error">IO Error</h3> <%
}
%></pre></div><%
in.close();
} else {
%> <h3 class="error">Error reading file</h3> <%
}
} else if(g == Genre.IMAGE) {
%><div id="src"><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/></div><%
} else {
%><div id="src"> Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
}
} else {
%><h3 class="error">Error: Invalid Revision Number!</h3><%
}
} else {
// requesting cross referenced file -------------
String xrefSource = getServletContext().getInitParameter("DATA_ROOT") + "/xref";
String resourceXFile = xrefSource + path;
File xrefFile = new File(resourceXFile);
if(xrefFile.exists()) {
char[] buf = new char[8192];
BufferedReader br = new BufferedReader(new FileReader(resourceXFile));
int len = 0;
%><div id="src"><pre><%
while((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
}
%></pre></div><%
br.close();
} else {
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(resourceFile));
Class a = AnalyzerGuru.find(basename);
Genre g = AnalyzerGuru.getGenre(a);
if(g == null) {
a = AnalyzerGuru.find(bin);
g = AnalyzerGuru.getGenre(a);
}
if (g == Genre.IMAGE) {
%><div id="src"><img src="<%=context%>/raw<%=path%>"/></div><%
} else if( g == Genre.HTML) {
char[] buf = new char[8192];
Reader br = new InputStreamReader(bin);
int len = 0;
while((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
}
} else if(g == Genre.PLAIN) {
%><div id="src"><pre><%
System.setProperty("urlPrefix", context+"/s?");
AnalyzerGuru.writeXref(a, bin, out);
%></pre></div><%
} else {
%> Click <a href="<%=context%>/raw<%=path%>">download <%=basename%></a><%
}
}
}
%><%@include file="foot.html"%><%
}
if(ef != null) {
try {
ef.close();
} catch (IOException e) {
}
}
%>