list.jsp revision 0
48c0c81cd6fabac9d3386406d97633780365b839coar<%--
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantzCDDL HEADER START
2a6c49cfaef5979a5a06098f3ce987cd76769409manoj
2a6c49cfaef5979a5a06098f3ce987cd76769409manojThe contents of this file are subject to the terms of the
2a6c49cfaef5979a5a06098f3ce987cd76769409manojCommon Development and Distribution License (the "License").
8163c8f6e2a9a8e4aba318d874c54a3155d57e21jerenkrantzYou may not use this file except in compliance with the License.
0bd0176ce9f4321eeb506aa372d0bcc84befbf4cstriker
d8028365066fca602bf35d014530a1802114378crbbSee LICENSE.txt included in this distribution for the specific
c25203fdca093d4504c51b4cd974ff60d5aa4fb1wrowelanguage governing permissions and limitations under the License.
c25203fdca093d4504c51b4cd974ff60d5aa4fb1wrowe
c25203fdca093d4504c51b4cd974ff60d5aa4fb1wroweWhen distributing Covered Code, include this CDDL HEADER in each
d89c116f82699294ca744125723651c554bc5925wrowefile and include the License file at LICENSE.txt.
4214e98fc9045e5010e66f9a967bd6d68f40d342aaronIf applicable, add the following below this CDDL HEADER, with the
8721697e2aece27b0e738519329f7976c72b27bfjerenkrantzfields enclosed by brackets "[]" replaced with your own identifying
c25203fdca093d4504c51b4cd974ff60d5aa4fb1wroweinformation: Portions Copyright [yyyy] [name of copyright owner]
91cacb801f6c0215b38322f6d2fc58cbfedfecfbjerenkrantz
91cacb801f6c0215b38322f6d2fc58cbfedfecfbjerenkrantzCDDL HEADER END
df14f0d3a5191cdd7c4bb5b03acd135d43a6f51brbb
df14f0d3a5191cdd7c4bb5b03acd135d43a6f51brbbCopyright 2005 Sun Microsystems, Inc. All rights reserved.
ab71b233b3a36489e44a7b061c48293be0b17788jwoolleyUse is subject to license terms.
571760de5e60c0b459cb11be45507b923cd023eejwoolley
571760de5e60c0b459cb11be45507b923cd023eejwoolleyident "%Z%%M% %I% %E% SMI"
9180a5933673ffb1af633c255ceee029340f3b1erbb
bcb6e1be6041dfeb549c8ea8d37f97ad4e90a0c3rbb--%><%@ page import = "javax.servlet.*,
9bd71e35f5d26d26d23fe3a677401828e842ed72wrowejava.lang.*,
2900ab946a2d76b73a14cebfe2985d253f01c967stoddardjavax.servlet.http.*,
a548c09e6a8ca1b059d0e93b5256c6ccb2b3c3cdrbbjava.util.*,
a548c09e6a8ca1b059d0e93b5256c6ccb2b3c3cdrbbjava.io.*,
a548c09e6a8ca1b059d0e93b5256c6ccb2b3c3cdrbbjava.text.*,
b876b7bcf0ce3d232da723246d709e8dbbfe8762rbborg.opensolaris.opengrok.analysis.*,
cf6bf6c34c936e6a6fe731dbce4a5c3c8bf8e9a3gsteinorg.opensolaris.opengrok.index.*,
35330e0d79ceb8027223bbb8330a381b1f989d6etrawickorg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
6f6f4a4bca281779d196acbdd5c017bb90858305trawickorg.opensolaris.opengrok.web.*,
8dd4618c4709236b4ea297d7250d282e463ce2d8rbborg.opensolaris.opengrok.history.*
09bd86d0db1114ee23eda0a6eb76ca055877a1cftrawick"
2deb319e6b3de239f45c16a3e9e836d44f1f7108rbb%><%@include file="mast.jsp"%><%
bd929c73ef04789b7183b840d8db6e01d03a4d86rbbString rev = null;
70f6f32765cfaadd6da8de6f0fea97ddd72d8fadmanojif(!isDir && ef != null) {
2a6c49cfaef5979a5a06098f3ce987cd76769409manoj try {
af4c982a7cf4515f124935f99a329744035fc699slive ef.close();
af4c982a7cf4515f124935f99a329744035fc699slive } catch (IOException e) {
af4c982a7cf4515f124935f99a329744035fc699slive }
af4c982a7cf4515f124935f99a329744035fc699slive ef = null;
af4c982a7cf4515f124935f99a329744035fc699slive}
af4c982a7cf4515f124935f99a329744035fc699slive
af4c982a7cf4515f124935f99a329744035fc699sliveif (valid) {
10270f6f94b2069d0d357805c140a9897449b9ccianh if (isDir) {
4b62424416882687387923b3130b96241503cbe0jerenkrantz// If requesting a Directory listing -------------
5ca8e11fadb6f7a8d9d0367c1800205c99d4bcd6jerenkrantz DirectoryListing dl = new DirectoryListing(IgnoredNames.ignore, ef);
630f5fc1277582643fe0f831a4830e15127bd047jwoolley String[] files = resourceFile.list();
630f5fc1277582643fe0f831a4830e15127bd047jwoolley if (files != null) {
5ca8e11fadb6f7a8d9d0367c1800205c99d4bcd6jerenkrantz Arrays.sort(files, String.CASE_INSENSITIVE_ORDER);
45b0e1c775c1cfed6473c9e5304179ccb9609f53stoddard ArrayList readMes = dl.listTo(resourceFile, out, path, files);
dbec4658981e4f9127e8676457c28d42932be7cdtrawick if(readMes != null && readMes.size() > 0) {
5221a7188270ea10c4f0f8ad0a4367638894f9fbbrianp File xdir = new File(getServletContext().getInitParameter("DATA_ROOT") + "/xref" + path);
5ebc546d1a3f1e4435a6838243ff912c2f53f806jerenkrantz if(xdir.exists() && xdir.isDirectory()) {
5ebc546d1a3f1e4435a6838243ff912c2f53f806jerenkrantz char[] buf = new char[8192];
5ebc546d1a3f1e4435a6838243ff912c2f53f806jerenkrantz for(int i = 0; i< readMes.size(); i++) {
5221a7188270ea10c4f0f8ad0a4367638894f9fbbrianp try {
5221a7188270ea10c4f0f8ad0a4367638894f9fbbrianp BufferedReader br = new BufferedReader(new FileReader(new File(xdir, (String)readMes.get(i))));
d415c14da6d37345738e160f785dbe8458095068jwoolley int len = 0;
d415c14da6d37345738e160f785dbe8458095068jwoolley %><h3><%=(String)readMes.get(i)%></h3><div id="src"><pre><%
d415c14da6d37345738e160f785dbe8458095068jwoolley while((len = br.read(buf)) > 0) {
d415c14da6d37345738e160f785dbe8458095068jwoolley out.write(buf, 0, len);
d415c14da6d37345738e160f785dbe8458095068jwoolley }
d415c14da6d37345738e160f785dbe8458095068jwoolley %></pre></div><%
9fc8bca7967297a4e83f0aff24760e48d7ae8f19brianp br.close();
dee038ed61c64813e50d1ed34334fe2d5ab815fcjerenkrantz } catch(IOException e) {
d415c14da6d37345738e160f785dbe8458095068jwoolley }
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz }
dee038ed61c64813e50d1ed34334fe2d5ab815fcjerenkrantz }
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz }
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz }
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz } else if ((rev = request.getParameter("r")) != null && !rev.equals("")) {
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz// Else if requesting a previous revision -------------
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz if(noHistory) {
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz response.sendError(404, "Revision not found");
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz } else if (rev.matches("^[0-9]+(\\.[0-9]+)*$")) {
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz Class a = AnalyzerGuru.find(basename);
56b2562cb4041a21bc313fde3204beabdb758800jwoolley Genre g = AnalyzerGuru.getGenre(a);
56b2562cb4041a21bc313fde3204beabdb758800jwoolley if (g == Genre.PLAIN|| g == Genre.HTML || g == null) {
56b2562cb4041a21bc313fde3204beabdb758800jwoolley InputStream in = null;
56b2562cb4041a21bc313fde3204beabdb758800jwoolley try{
56b2562cb4041a21bc313fde3204beabdb758800jwoolley in = HistoryGuru.getInstance().getRevision(resourceFile.getParent(), basename, rev);
dee038ed61c64813e50d1ed34334fe2d5ab815fcjerenkrantz } catch (Exception e) {
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz response.sendError(404, "Revision not found");
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz }
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz if(in != null) {
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz try {
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz if (g == null) {
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz a = AnalyzerGuru.find(in);
1b7e9aeb9867a1c94e24e8ae491d2dfcd0d225e3jerenkrantz g = AnalyzerGuru.getGenre(a);
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz }
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz if (g == Genre.DATA || g == Genre.XREFABLE || g == null) {
f17588e04d2412bf1345783ed1d173322d728d6ftrawick %> <div id="src">Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
f17588e04d2412bf1345783ed1d173322d728d6ftrawick } else {
f17588e04d2412bf1345783ed1d173322d728d6ftrawick %><div id="src"><span class="pagetitle"><%=basename%> revision <%=rev%> </span><pre>
f17588e04d2412bf1345783ed1d173322d728d6ftrawick<%
f17588e04d2412bf1345783ed1d173322d728d6ftrawickif (g == Genre.PLAIN) {
f17588e04d2412bf1345783ed1d173322d728d6ftrawick System.setProperty("urlPrefix", context+"/s?");
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe AnalyzerGuru.writeXref(a, in, out);
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz} else if (g == Genre.IMAGE) {
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz %><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/><%
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz} else if (g == Genre.HTML) {
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe char[] buf = new char[8192];
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz Reader br = new InputStreamReader(in);
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz int len = 0;
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz while((len = br.read(buf)) > 0) {
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz out.write(buf, 0, len);
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz }
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz} else {
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz %> Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">download <%=basename%></a><%
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz}
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz }
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz } catch (IOException e) {
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz %> <h3 class="error">IO Error</h3> <%
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz }
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe %></pre></div><%
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz in.close();
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz } else {
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz %> <h3 class="error">Error reading file</h3> <%
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz }
ddd44b06b04507cae083c52451e28f54f0bdb5afstoddard
1af5c0e25a649bb298e25ddfa5418fa18bdcb107aaron } else if(g == Genre.IMAGE) {
82455c2e3b6991846fbcbf0c9e41f57dbc681217brianp %><div id="src"><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/></div><%
82455c2e3b6991846fbcbf0c9e41f57dbc681217brianp } else {
f4cb04eb78da02a38fcdd87489dc7b660107d55fjerenkrantz %><div id="src"> Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
1b3f48fd6b1ccb8745f908e40156c5a85ca3c347jerenkrantz }
b05930e6008f69bd323abe0c10f81f40ffd27983brianp
630f5fc1277582643fe0f831a4830e15127bd047jwoolley } else {
630f5fc1277582643fe0f831a4830e15127bd047jwoolley %><h3 class="error">Error: Invalid Revision Number!</h3><%
630f5fc1277582643fe0f831a4830e15127bd047jwoolley }
630f5fc1277582643fe0f831a4830e15127bd047jwoolley } else {
56b2562cb4041a21bc313fde3204beabdb758800jwoolley// requesting cross referenced file -------------
56b2562cb4041a21bc313fde3204beabdb758800jwoolley
56b2562cb4041a21bc313fde3204beabdb758800jwoolley String xrefSource = getServletContext().getInitParameter("DATA_ROOT") + "/xref";
56b2562cb4041a21bc313fde3204beabdb758800jwoolley String resourceXFile = xrefSource + path;
56b2562cb4041a21bc313fde3204beabdb758800jwoolley File xrefFile = new File(resourceXFile);
56b2562cb4041a21bc313fde3204beabdb758800jwoolley if(xrefFile.exists()) {
56b2562cb4041a21bc313fde3204beabdb758800jwoolley char[] buf = new char[8192];
56b2562cb4041a21bc313fde3204beabdb758800jwoolley BufferedReader br = new BufferedReader(new FileReader(resourceXFile));
b05930e6008f69bd323abe0c10f81f40ffd27983brianp int len = 0;
b05930e6008f69bd323abe0c10f81f40ffd27983brianp %><div id="src"><pre><%
b05930e6008f69bd323abe0c10f81f40ffd27983brianp while((len = br.read(buf)) > 0) {
b05930e6008f69bd323abe0c10f81f40ffd27983brianp out.write(buf, 0, len);
b05930e6008f69bd323abe0c10f81f40ffd27983brianp }
15304e476fb32988bf988864ddacc5375b9a6080stoddard %></pre></div><%
15304e476fb32988bf988864ddacc5375b9a6080stoddard br.close();
8c8fbb8546af54582539898be704411a60058d85trawick } else {
4c7dab038d90d7feb67ef8ddbfacc77be8c9dbf0jwoolley BufferedInputStream bin = new BufferedInputStream(new FileInputStream(resourceFile));
4c7dab038d90d7feb67ef8ddbfacc77be8c9dbf0jwoolley Class a = AnalyzerGuru.find(basename);
4c7dab038d90d7feb67ef8ddbfacc77be8c9dbf0jwoolley Genre g = AnalyzerGuru.getGenre(a);
4c7dab038d90d7feb67ef8ddbfacc77be8c9dbf0jwoolley if(g == null) {
bb2a72a6e2327ae4f177c9d26e9d433033cfc27eaaron a = AnalyzerGuru.find(bin);
8c8fbb8546af54582539898be704411a60058d85trawick g = AnalyzerGuru.getGenre(a);
8c8fbb8546af54582539898be704411a60058d85trawick }
8c8fbb8546af54582539898be704411a60058d85trawick if (g == Genre.IMAGE) {
f9b8e29cfca92cf0a996e8ab17fa1a1f447cecc7stoddard %><div id="src"><img src="<%=context%>/raw<%=path%>"/></div><%
f9b8e29cfca92cf0a996e8ab17fa1a1f447cecc7stoddard } else if( g == Genre.HTML) {
f9b8e29cfca92cf0a996e8ab17fa1a1f447cecc7stoddard char[] buf = new char[8192];
a23b1c5a74208b03884c09a6f9dd5d6c97fa6415trawick Reader br = new InputStreamReader(bin);
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe int len = 0;
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe while((len = br.read(buf)) > 0) {
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe out.write(buf, 0, len);
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe }
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe } else if(g == Genre.PLAIN) {
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe %><div id="src"><pre><%
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe System.setProperty("urlPrefix", context+"/s?");
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe AnalyzerGuru.writeXref(a, bin, out);
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe %></pre></div><%
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe } else {
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe %> Click <a href="<%=context%>/raw<%=path%>">download <%=basename%></a><%
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe }
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe }
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe }
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe%><%@include file="foot.html"%><%
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe}
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewroweif(ef != null) {
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe try {
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe ef.close();
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe } catch (IOException e) {
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe }
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe}
2fb49a1d25f38421a68d31b4cbb5d9293fdeafbewrowe%>
638a9edaf48cf003cd40ac25ee8c25f572107414stoddard