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